当前位置: 首页 > news >正文

SSL/TLS 和 SSH 介绍以及他们的区别

目录

  • SSL/TLS
    • SSL/TLS工作原理的核心步骤
      • 握手阶段(Handshake Protocol)
      • 加密通信阶段(Encrypted Communication Phase)
      • 会话恢复(Session Resumption)
  • SSH
    • SSH 加密机制的核心步骤
  • SSH 和 SSL 区别

SSL/TLS

干啥的? :SSL(Secure Sockets Layer) 和 TLS(Transport Layer Security) 是一种用于在网络通信中提供安全性的协议。它们的主要目的是在客户端(如浏览器)和服务器之间建立加密连接,确保数据传输的安全性和隐私性

SSL 是早期的安全协议,TLS 是 SSL 的继任者,修复了 SSL 中的许多安全漏洞。提供了更安全和高效的通信机制。
SSL有多个版本(SSL 1.0、2.0、3.0),但因安全性问题,SSL 3.0 及以下版本已被废弃。
TLS版本包括 TLS 1.0、1.1、1.2 和 1.3。当前推荐使用 TLS 1.2 或更高版本,因为它们提供了更好的安全性。

SSL/TLS工作原理的核心步骤

握手阶段(Handshake Protocol)

(1)客户端向服务器发送一个 ClientHello 消息,包含以下信息:
支持的 SSL/TLS 版本(如 TLS 1.2 或 TLS 1.3)。
支持的加密套件列表(Cipher Suites),包括加密算法和哈希算法。
客户端随机数(Client Random),用于后续密钥生成。
可选的扩展字段(如支持的压缩方法、ALPN 协议等)。

(2)服务器选择一个双方都支持的加密套件,并返回一个 ServerHello 消息,包含以下信息:
确定的 TLS 版本。
选定的加密套件。
随机数(Server Random),用于后续密钥生成。
可选的会话 ID(Session ID),用于会话恢复。

(3)服务器证书(Server Certificate)
服务器向客户端发送其数字证书,包含公钥和其他身份信息。

(4)客户端验证证书

(5)Server Key Exchange(可选)
如果选定的加密套件需要额外的密钥参数(如 Diffie-Hellman 参数),服务器会发送 Server Key Exchange 消息。

(6)Server Hello Done
服务器发送 Server Hello Done 消息,表示服务器已完成握手消息的发送。

(7)预主密钥交换(Key Exchange)

预主密钥(Pre-Master Secret)→ 主密钥(Master Secret)→ 会话密钥(Session Keys)
预主密钥的作用:作为初始的秘密值,提供一个随机且安全的变量因子生成主密钥。
主密钥的作用:作为中间密钥,提供更高的安全性和随机性扩展。
会话密钥的作用:实际用于数据加密和解密。
为啥不用预主密钥 直接生成 会话密钥,非要引入 主密钥呢?
1、增强安全性:预主密钥(Pre-Master Secret) + 客户端随机数(Client Random)+ 服务器随机数(Server Random)生成主密钥(Master Secret),增加了复杂性和不可预测性。
2、提供随机性扩展:预主密钥的长度通常是固定的(例如 48 字节),而主密钥可以通过 PRF 扩展为任意长度。
客户端随机数 + 服务器随机数 可以很容易被获取,生成主密钥为啥还用他?
虽然客户端随机数(Client Random)和服务器随机数(Server Random)在握手阶段会被明文传输,看似容易被获取,但它们在主密钥生成中的作用是不可替代的。
1、这些值本身是动态生成的,并且每次连接都会不同。这种动态性使得攻击者无法提前预测或重用之前的密钥生成过程。
2、客户端随机数和服务器随机数确保了每次连接的唯一性。如果攻击者试图重放之前的通信数据,新的随机数会使得生成的主密钥和会话密钥完全不同,从而阻止重放攻击。
3、支持前向安全性,即使长期密钥(如服务器私钥)被泄露,攻击者也无法推导出之前的主密钥和会话密钥。

常用密钥交换算法

RSA 密钥交换
原理:客户端生成一个随机的预主密钥(Pre-Master Secret)。使用服务器的公钥(从证书中提取)加密预主密钥,并发送给服务器。服务器使用自己的私钥解密,获得预主密钥。
优点:实现简单,易于部署。
缺点:如果服务器私钥泄露,所有历史通信都可能被解密。
Diffie-Hellman 密钥交换(DH 、ECDH、ECDHE)
Diffie-Hellman 加密协议介绍 (DH,DHE,ECDHE)

(8)生成会话密钥(Key Derivation)
计算主密钥(Master Secret)
预主密钥(Pre-Master Secret) + 客户端随机数(Client Random)+ 服务器随机数(Server Random),通过特定算法计算出主密钥(Master Secret)。

主密钥计算的位置
客户端 和 服务器 各自独立完成主密钥(Master Secret)的计算。
为什么不在一个地方计算?
安全性:如果主密钥只在一方计算,另一方需要通过网络接收主密钥,这会增加被窃听或篡改的风险。
如果不一致怎么办?
主密钥计算完成后,客户端和服务端会进一步使用主密钥派生出会话密钥,并用这些会话密钥加密后续的通信数据。如果主密钥不一致,生成的会话密钥会不同,加解密会出问题,从而检测到问题。

派生出会话密钥(Session Keys)
主密钥派生出其他秘钥
会话密钥 用于 数据加密
MAC密钥 用于 完整性验证

(9)更改加密状态(ChangeCipherSpec)
ChangeCipherSpec 消息本身非常简单,只包含一个字节的数据。其值固定为 0x01,表示“切换加密模式”的指令。
客户端和服务器分别发送 ChangeCipherSpec 是用来通知对方 “我已经准备好使用我们协商好的加密算法和密钥进行加密通信了。”

SSL/TLS 协议规定:
如果 ChangeCipherSpec 消息在网络中丢失或乱序,TCP 层会自动重传或重新排序。
客户端必须先发送 ChangeCipherSpec 和 Finished 消息。服务器在接收到这些消息后,才会发送自己的 ChangeCipherSpec 和 Finished 消息。

1、客户端发送 ChangeCipherSpec
客户端完成密钥协商后,发送 ChangeCipherSpec 消息,表示将切换到加密状态
2、客户端发送 Finished 消息
紧接着 ChangeCipherSpec,客户端发送加密的 Finished 消息。(Finished消息是第一个使用协商好的加密算法会话密钥保护的消息)
3、服务器接收并处理
服务器接收到客户端的 ChangeCipherSpec 后,切换到加密状态
服务器尝试解密客户端的 Finished 消息。如果解密成功且验证Finished消息成功,则说明:客户端已经完成了密钥协商且和服务端秘钥一致。且客户端发送了 ChangeCipherSpec 消息,并切换到了加密状态。
4、服务器发送 ChangeCipherSpec
服务器完成密钥协商后,发送 ChangeCipherSpec 消息给客户端,表示将切换到加密状态
5、服务器发送 Finished 消息:
紧接着 ChangeCipherSpec,服务器发送加密的 Finished 消息。
6、客户端接收并处理:
客户端接收到服务器的 ChangeCipherSpec 后,切换到加密状态
客户端尝试解密服务器的 Finished 消息。如果解密成功且验证Finished消息成功,则说明:服务器已经完成了密钥协商且和客户端秘钥一致。且服务端已经发送了 ChangeCipherSpec 消息,并切换到了加密状态。

服务器切换到加密状态的时机
第一次切换:当服务器接收到客户端的 ChangeCipherSpec 消息后,切换到加密状态以解密客户端的 Finished 消息。
第二次切换:当服务器发送自己的 ChangeCipherSpec 消息后,再次确认切换到加密状态以发送加密的 Finished 消息。
服务器的加密状态切换是双向的,既依赖于客户端的行为(接收到客户端的 ChangeCipherSpec),也依赖于自身的动作(发送自己的 ChangeCipherSpec)。这种设计确保了握手过程的安全性和一致性。
客户端切换到加密状态的时机
第一次切换:当客户端完成密钥协商后,发送自己的 ChangeCipherSpec 消息时,切换到加密状态以发送加密的 Finished 消息。
第二次切换:当客户端接收到服务器的 ChangeCipherSpec 消息后,再次确认切换到加密状态以解密服务器的加密消息。

如果一方没有收到对方的 ChangeCipherSpec 消息怎么办?
如果一方没有及时收到对方的 ChangeCipherSpec 消息,通常会有以下几种处理方式:
超时重传:如果一方在合理的时间内没有收到对方的 ChangeCipherSpec 消息,它可能会重新发送 ChangeCipherSpec 消息,或者触发握手超时机制,重新发起握手。
握手失败:如果多次重传后仍未收到对方的响应,握手将被视为失败,连接会被关闭。

(10)握手完成(Finished)
Finished 消息包含一个基于主密钥标签握手历史的哈希值,用于验证完整性,确保握手未被篡改。
标签是一个固定的字符串,客户端:“client finished”,服务器:“server finished”
握手消息(Handshake Messages)是指从 Client Hello 到 Change Cipher Spec 之间的所有握手消息的拼接内容。

具体流程
参考上文ChangeCipherSpec的流程,如果双方的 Finished 消息匹配,则握手成功,进入加密通信模式。

如何验证Finished消息?
1、客户端接收到服务器发送的 Finished 消息后,提取其中的 VerifyData。
2、客户端使用相同的 PRF 算法,结合(主密钥,标签,握手历史记录)重新计算 VerifyData:
3、如果客户端计算出的 VerifyData 与接收到的 VerifyData 一致,则说明:
服务器使用的主密钥正确。
握手过程中所有消息未被篡改。
同样地,服务器验证客户端的 Finished 消息也如上步骤。如果任一方的验证失败,握手将终止,连接会被关闭。

加密通信阶段(Encrypted Communication Phase)

(1)对称加密
使用握手阶段生成的会话密钥(Session Key)对数据进行加密和解密。
(2)消息认证码(MAC)
每条消息都附带一个 MAC,用于确保数据的完整性。
(3)重新协商(可选)
如果客户端和服务器希望在未来的连接中快速恢复会话,可以使用会话 ID 或会话票据(Session Ticket)机制。
会话恢复避免了重新执行完整的握手过程,从而提高了性能。

会话恢复(Session Resumption)

为了提高效率,SSL/TLS 提供了会话恢复机制,避免每次连接都重新进行完整的握手。
(1)会话 ID
在握手阶段,服务器分配一个唯一的会话 ID。
客户端可以在后续连接中使用该会话 ID 来恢复之前的会话。
(2)会话票据(Session Ticket)
服务器可以将加密的会话状态存储在客户端(称为会话票据)。
客户端在后续连接中提交会话票据以恢复会话。


SSH

Secure Shell Protocol(安全外壳协议),SSH 可以创建一个加密的“隧道”,将其他非加密协议(如 HTTP、SMTP)封装在其中,确保数据传输的安全性。

SSH 加密机制的核心步骤

1)建立 TCP 连接
客户端与服务器通过 TCP 协议建立初始连接。这是所有后续通信的基础。

2)版本协商
双方交换 SSH 协议版本信息(如 SSH-2.0),确保双方使用相同的协议版本。

3)算法协商
客户端和服务器协商以下参数:
密钥交换算法: 如 Diffie-Hellman(DH)、ECDH 等。
加密算法: 如 AES、ChaCha20 等。
MAC 算法: 如 HMAC-SHA256 等。
压缩算法: 如 zlib 等。

4)密钥交换
(1)生成共享密钥
使用 DH 或 ECDH 算法进行密钥交换。双方基于公钥密码学生成一个共享的秘密值(Shared Secret)。
(2)计算会话密钥
根据共享的秘密值、交换的随机数以及其他参数,派生出会话密钥(Session Key)。会话密钥用于后续的对称加密通信

如何验证共享秘密的一致性?
1、共享秘密被用来派生出会话密钥,如果双方能够成功解密对方的消息,则说明共享秘密一致。(这条能说明不能解密那么他们肯定是不一致的,但是能解密不一定就代表是一致的,因为不一定保证解密内容是对的的
2、消息认证码(MAC):每条消息附带一个 MAC 值,用于验证消息的完整性和共享秘密的一致性。(MAC能保证解密内容也是对的,结合第一条,既能解密,解密内容又是对的,这样就保证了共享秘密一定是一致的

4)客户端验证服务器的身份
1、服务器向客户端发送自己的公钥证书(通常是基于 RSA 或 ECDSA 的公钥)。
2、客户端验证服务器的公钥是否可信(通常通过 CA 或本地信任存储)。
3、如果验证失败,连接将被终止。

5)客户端向服务器证明自己的身份
密码认证: 用户输入密码,服务器验证密码是否正确。
公钥认证:
1、服务器生成一段随机数据(挑战数据),并将其发送给客户端。
2、客户端收到挑战数据后,用自己的私钥对这段数据进行签名。
3、客户端将签名发送回服务器。
4、服务器用客户端的公钥(私钥保存在客户端,公钥上传到服务器,这就是我们平时配置的公钥)解密签名,得到原始的哈希值。服务器重新计算挑战数据的哈希值,并与解密后的哈希值进行比较。如果两者一致,则证明签名有效,客户端身份验证成功。如果不一致,则验证失败。

为什么需要挑战数据?
防止重放攻击:每次认证过程中的数据都是唯一的,攻击者无法通过重放旧的签名来通过认证。
验证私钥持有者:只有拥有对应私钥的客户端才能生成有效的签名,从而证明自己是合法用户。

其他方式: 如键盘交互认证、GSSAPI 认证,单点登录(SSO)等。

6)加密通信
客户端和服务器开始使用协商好的对称加密算法和共享的秘钥(session key)加密所有后续通信。
具体包括:
数据加密: 所有传输的数据都经过对称加密,确保机密性。
消息认证: 每条消息都附带 MAC(消息认证码),确保数据的完整性和防止篡改。
序列号: 每条消息都有唯一的序列号,防止重放攻击。

SSH优点
安全性高,适合私有数据的传输。
提供灵活的身份验证方式。
支持双向通信(既可读取也可写入)。

SSH缺点
配置较复杂(私钥保存在客户端,公钥上传到服务器)。
可能受防火墙限制(需要开放 SSH 端口,默认为 22)。

SSH使用场景
1、远程登录:系统管理员可以通过 SSH 登录到远程服务器,执行各种管理任务。 主要因为:SSH确保在客户端与服务器之间传输的所有数据(包括登录凭据、命令和输出)都经过加密。即使网络环境不安全(如公共 Wi-Fi),也能保证通信的安全。
2、文件传输:SSH 提供了基于其加密通道的文件传输协议(SFTP),可以安全地上传或下载文件。 主要因为:和1原因一致。
3、SSH 支持端口转发功能 主要因为:SSH 协议本身提供了一个安全的加密通道,所有通过该通道传输的数据都会被加密。当使用端口转发时,SSH 将其他协议的流量(如 HTTP、SMTP)封装到其加密通道中进行传输。这种加密机制确保了转发的流量在传输过程中不会被窃听或篡改。

SSH 和 SSL 区别

SSL/TLSSSH
使用证书机制验证服务器身份使用证书机制验证服务器身份
密钥交换算法包括 RSA、DH、ECDH 等密钥交换算法包括 DH 或 ECDH
支持多种用户身份验证方式(如密码、公钥、键盘交互)
握手完成后进入加密通信阶段握手完成后进入加密通信阶段
中间层协议,可以封装任意应用层协议特定的应用场景(如远程登录、文件传输)
更注重大规模数据传输的性能优化更注重交互式会话的性能优化

相关文章:

SSL/TLS 和 SSH 介绍以及他们的区别

目录 SSL/TLS SSL/TLS工作原理的核心步骤握手阶段(Handshake Protocol)加密通信阶段(Encrypted Communication Phase)会话恢复(Session Resumption) SSH SSH 加密机制的核心步骤 SSH 和 SSL 区别 SSL/TLS …...

AudioTrack

AudioTrack是Android Audio系统提供给应用开发者(java/C)的API,用于操作音频播放的数据通路。MeidaPlayer在播放音乐时用到的是它,我们可以也可以直接使用AudioTrack进行音频播放。它是最基本的音频数据输出类。 AudioTrack.java…...

Windows安装Rust环境(详细教程)

一、 安装mingw64(C语言环境) Rust默认使用的C语言依赖Visual Studio,但该工具占用空间大安装也较为麻烦,可以选用轻便的mingw64包。 1.1 安装地址 (1) 下载地址1-GitHub:Releases niXman/mingw-builds-binaries GitHub (2) 下载地址2-W…...

监控IP,网站将异常情况通过飞书机器人发至指定群内

界面如下,丑是丑了点,但主打一个实用。 主要就是通过ping,就是一直在ping,当不通的时候,就根据你设置的报警时间,主要是利用飞书机器人来给飞书指定群里发异常信息报警。 直接上代码 import subprocess i…...

JVM 02

今天是2025/03/23 19:07 day 10 总路线请移步主页Java大纲相关文章 今天进行JVM 3,4 个模块的归纳 首先是JVM的相关内容概括的思维导图 3. 类加载机制 加载过程 加载(Loading) 通过类全限定名获取类的二进制字节流(如从JAR包、网络、动态…...

局域网设备访问虚拟机 挂载NFS

目录 引言:网络IP问题配置虚拟机网络有线网络:无线网络: NFS文件挂载服务端配置客户端连接 引言: 需求:局域网下树莓派设备想要访问电脑主机上的虚拟机。这样可以通过nfs挂载网络设备,有利于交叉编译环境调…...

零、ubuntu20.04 安装 anaconda

1.anaconda下载 地址:Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 选择:Anaconda3-2023.07-2-Linux-x86_64.sh 2.anaconda安装 选择下载目录,选在在终端中打开,然后在终端输入安装命…...

IntelliJ IDEA 将 Spring Boot 项目远程部署到服务器

使用 IntelliJ IDEA 将 Spring Boot 项目远程部署到服务器的详细步骤,涵盖多种常见方法: 方法一:通过 SSH Maven 插件直接部署 1. 服务器环境准备 确保服务器已安装: Java 运行环境(与项目 JDK 版本一致&#xff0…...

利用dify打造命令行助手

利用dify打造命令行助手 前言 我是mac os 的使用者。 如果说macos哪个工具我使用最频繁,最能提高效率的工作工具非zsh莫属(当然,我安装了iterm)。前不久,我要扩容线上的k8s集群。便想统计一下每个node上运行的pod数量。我不知道合适的命令&…...

前端面试整理

一、csshtml 二、js 三、vue 四、react 1.React 类组件与函数式组件核心区别 定义方式的不同,类组件用ES6的class,继承React.Component,而函数式组件用函数声明‌。 状态管理方面,类组件用this.state和setState,函…...

Perl语言的计算机网络

Perl语言在计算机网络中的应用 引言 在计算机科学的众多领域中,网络编程是一个极具挑战性和广泛应用的领域。在这其中,Perl语言以其强大的文本处理能力和简洁的语法,成为了网络编程的重要工具之一。自从1987年Larry Wall创造Perl以来&#…...

数据结构初阶-二叉树的应用

1.单值二叉树 题目链接:https://leetcode.cn/problems/univalued-binary-tree/description/ 题目思路:我们把根结点与左孩子和右孩子进行比较,只有左右子树都是单值二叉树的时候才为单值二叉树。但是我们需要先返回的是false,最…...

【赵渝强老师】在Docker中运行达梦数据库

Docker是一个客户端服务器(Client-Server)架构。Docker客户端和Docker守护进程交流,而Docker的守护进程是运作Docker的核心,起着非常重要的作用(如构建、运行和分发Docker容器等)。达梦官方提供了DM 8在Doc…...

掌握C#循环:for、while、break与continue详解及游戏案例

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

备份比赛数据【算法赛】

0备份比赛数据【算法赛】 - 蓝桥云课 问题描述 蓝桥杯大赛的组委会最近遇到了一个棘手的问题。他们有 N 台电脑需要备份比赛数据,每台电脑所需的备份时间分别为 A1​,A2​,…,AN​ 分钟。 备份必须按编号顺序依次进行,即先第 1 台,再第 2 …...

【算法笔记】图论基础(二):最短路、判环、二分图

目录 最短路松弛操作Dijkstra朴素Dijkstra时间复杂度算法过程例题 堆优化Dijkstra时间按复杂度算法过程例题 bellman-ford时间复杂度为什么dijkstra不能处理负权边?dijkstra的三个步骤:反例失效的原因 算法过程例题 spfa时间复杂度算法过程例题spfa求最短…...

【性能优化点滴】odygrd/quill 中一个简单的标记位作用--降低 IO 次数

在 StreamSink 类中,成员变量 _write_occurred 的作用是 跟踪自上次刷新(Flush)以来是否有写入操作发生,其核心目的是 优化 I/O 性能。以下是详细解析: _write_occurred 的作用 1. 避免不必要的刷新(Flush…...

Unity2022发布Webgl2微信小游戏部分真机黑屏

复现规律: Unity PlayerSetting中取消勾选ShowSplashScreen 分析: 在Unity中,Splash Screen(启动画面) 不仅是视觉上的加载动画,还承担了关键的引擎初始化、资源预加载和渲染环境准备等底层逻辑。禁用后导…...

TDengine 3.3.2.0 集群报错 Post “http://buildkitsandbox:6041/rest/sql“

原因: 初始化时处于内网环境下,Post “http://buildkitsandbox:6041/rest/sql“ 无法访问 修复: vi /etc/hosts将buildkitsandbox映射为本机节点 外网环境下初始化时没有该问题...

基于yolov11的中空圆柱形缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【背景介绍】 中空圆柱形缺陷检测在多个领域具有深远意义。在石油、天然气及化工行业,缺陷检测可预防泄漏事故,避免火灾、爆炸及环境污染,保障人员与财产安全。建筑、桥梁及航空航天领域则依赖此技术确保中空圆柱形结构的稳定性,…...

Python爬虫-爬取AliExpress商品搜索词排名数据

前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者以AliExpress平台为例。基于Python爬虫,通过某个指定的“搜索关键词”,批量获取该“搜索关键词”的商品排名数据。 具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。废…...

20250321在荣品的PRO-RK3566开发板的buildroot系统下使用ll命令【直接编译进IMG】

./buildroot/system/skeleton/etc/profile # some more ls aliases alias llls -alF alias lals -A alias lls -CF 20250321在荣品的PRO-RK3566开发板的buildroot系统下使用ll命令【直接编译进IMG】 2025/3/21 16:53 cd /etc/ echo "" >> # some more ls ali…...

Flink 自定义数据源:从理论到实践的全方位指南

目录 第一章:自定义数据源的基础概念 数据源是什么?它在 Flink 中扮演什么角色? Flink 的内置数据源:开箱即用的 “标配” 为什么需要自定义数据源?它的杀手锏在哪? 第二章:自定义数据源的实现之道 接口选择:从简单到高级,选对工具事半功倍 SourceFunction:入门…...

如何在 Java 中查找 PDF 页面大小(教程)

PDF 文件并未被 Java 直接支持。本教程将向您展示如何使用 JPedal Java PDF 库 以简单的步骤提取 PDF 文件的页面大小(高度和宽度)。页面大小可以以 厘米、英寸或像素 为单位获取。 为什么要使用第三方库处理 PDF 文件? PDF 文件是一种复杂…...

java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp

演示: 微信小程序:嘎嘎快充 http://server.s34.cn:1888/ 系统管理员 admin/123456 运营管理员 yyadmin/Yyadmin2024 运营商 operator/operator2024 系统特色: 多商户、汽车单车一体、互联互通、移动管理端(开发中) 另…...

使用Mastra.ai构建AI智能体:一次动手实践

Mastra框架提供了一种简洁高效的AI智能体构建方式。 本文将分享我使用Mastra.ai的实践经历。 我们将逐步完成环境搭建、探索框架核心功能,并构建一个能与工具交互的基础智能体。 过程中我会总结成功经验、遇到的问题以及收获的启示。 如果你对AI开发感兴趣,或正在寻找一个…...

Redis之大key问题

BigKey 常见面试题目 你会么&#xff1f; MoreKey 案例 大批量往redis里面插入2000W测试数据key Linux Bash下面执行&#xff0c;批量插入100W for((i1;i<100*10000;i)); do echo "set k$i v$i" >> /tmp/redisTest.txt ;done;生成100W条redis批量设置kv的…...

Excel第41套全国人口普查

2. 导入网页中的表格&#xff1a;数据-现有链接-考生文件夹&#xff1a;网页-找到表格-点击→变为√-导入删除外部链接关系&#xff1a;数据-点击链接-选中连接-删除-确定&#xff08;套用表格格式-也会是删除外部链接&#xff09;数值缩小10000倍&#xff08;除以10000即可&am…...

深度学习驱动的车牌识别:技术演进与未来挑战

一、引言 1.1 研究背景 在当今社会&#xff0c;智能交通系统的发展日益重要&#xff0c;而车牌识别作为其关键组成部分&#xff0c;发挥着至关重要的作用。车牌识别技术广泛应用于交通管理、停车场管理、安防监控等领域。在交通管理中&#xff0c;它可以用于车辆识别、交通违…...

PageHiOffice网页组件(WebOffice文档控件)开发集成技巧专题一

PageHiOffice网页组件作为最新一代的WebOffice文档控件&#xff0c;这是目前市场上唯一能做到在Chrome等最新版浏览器中实现内嵌网页运行的商用文档控件&#xff0c;是OA及ERP等系统处理各种文档的福音。从发布到完善已经超过3年&#xff0c;不管是功能性还是稳定性都已经有了长…...

A2 最佳学习方法

记录自己想法的最好理由是发现自己的想法&#xff0c;并将其组织成可传播的形式 (The best reason for recording what one thinks is to discover what one thinks and to organize it in transmittable form.) Prof Ackoff 经验之谈&#xff1a; 做培训或者写文章&#xff…...

从JVM底层揭开Java方法重载与重写的面纱:原理、区别与高频面试题突破

&#x1f31f;引言&#xff1a;一场由方法调用引发的"血案" 2018年&#xff0c;某电商平台在"双十一"大促期间遭遇严重系统故障。 技术团队排查发现&#xff0c;问题根源竟是一个继承体系中的方法重写未被正确处理&#xff0c;导致订单金额计算出现指数级…...

线程控制与线程操作

目录 线程的创建 tid pthread_self() 线程的退出 pthread_join 传参问题和返回值问题 pthread_exit 线程取消 线程分离 我们来学习线程的控制与线程操作 线程的创建 我们之前在线程的概念中就讲过了&#xff0c;我们可以通过pthread_create来创建一个或者多个子线程…...

Spring相关API

1是相对路径 2 是绝对路径 3 在注解时使用...

【GoLang】调用llm时提示词prompt的介绍以及使用方式

介绍 提示词是一种与大模型交互的对话格式&#xff0c;它以 JSON 格式定义了一个消息列表&#xff08;messages&#xff09;&#xff0c;包含了系统消息和用户消息。 我们向AI提问时&#xff0c;其实发给AI的都是提示词&#xff0c;别看我们只是简单输入了一句话&#xff0c;…...

[杂学笔记]锁为什么影响效率、I/O多路复用、三种I/O多路复用模型的区别、atomic原子操作类、MySQL的持久性是如何实现的

目录 1.锁为什么影响效率 2.I./O多路复用 3.三种I/O多路复用模型的区别 4.atomic原子操作类 介绍 常用函数 内存顺序含义 5.MySQL持久性的实现 1.锁为什么影响效率 线程阻塞与上下文切换&#xff1a;在多线程并发访问的场景下&#xff0c;只有一个线程能够进入临界区…...

AI Agent开发大全第八课-Stable Diffusion 3的本地安装全步骤

前言 就像我们前面几课所述,本系列是一门体系化的教学,它不像网上很多个别存在的单篇博客走“吃快餐”模式,而是从扎实的基础来带领大家一步步迈向AI开发高手。所以我们的AI课程设置是相当全面的,除了有牢固的基础知识外还有外面互联网上也搜不到的生产级实战。 前面讲过…...

Leetcode 刷题笔记 图论part05

卡码网 107 寻找存在的路径 初识并查集 并查集功能&#xff1a; 寻找根节点&#xff0c;函数: find(int u)&#xff0c;也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合&#xff0c;函数: join(int u, int v)&#xff0c;将两个节点连在同一个根节点上判断两…...

NSSRound(持续更新)

了解过PHP特性吗 这个题相当于是php特性大杂烩 先看源代码 <?php error_reporting(0); highlight_file(__FILE__); include("rce.php"); $checker_1 FALSE; $checker_2 FALSE; $checker_3 FALSE; $checker_4 FALSE; $num $_GET[num]; if (preg_match(&qu…...

Python虚拟环境:从入门到实战指南

目录 一、为什么需要Python虚拟环境&#xff1f; 二、如何创建Python虚拟环境&#xff1f; 1. 使用venv&#xff08;Python 3.3内置&#xff09; 2. 使用virtualenv&#xff08;第三方工具&#xff09; 3. 使用conda&#xff08;适合数据科学项目&#xff09; 三、虚拟环…...

Python实现小红书app版爬虫

简介&#xff1a;由于数据需求的日益增大&#xff0c;小红书网页版已经不能满足我们日常工作的需求&#xff0c;为此&#xff0c;小编特地开发了小红书手机版算法&#xff0c;方便大家获取更多的数据&#xff0c;提升工作效率。 手机版接口主要包括&#xff1a;搜素&#xff0…...

注册中心之Nacos相较Eureka的提升分析

1. 传统拉取模式的缺陷&#xff08;如Eureka&#xff09; 在类似Eureka的注册中心中&#xff0c;消费者需要定时&#xff08;如每30秒&#xff09;主动拉取服务列表&#xff08;Pull模式&#xff09;。如果此时某个服务突然宕机&#xff0c;消费者可能无法立即感知&#xff0c…...

高数下---8.1平面与直线

目录 平面的确定 直线的确定 若要求某一直线或平面就根据要素来求。 例题 平面中的特殊情况 平面中的解题思路 直线的解题思路 平面的确定 两要素 一 一点 二 倾斜角 即法向量 点法式 可化为一般式 Ax By Cz D 0; (A,B,C) 即法向量&#xff1b; 改变D 即…...

【AI速读】30分钟搭建持续集成:用Jenkins拯救你的项目

每个开发者都踩过的坑 你有没有这样的经历?花了一周时间改代码,自信满满准备提交,结果合并同事的更新后,项目突然编译失败,测试跑不通。你焦头烂额地排查问题,老板还在催进度……但明明不是你的错! 这种“集成地狱”几乎每个团队都遇到过。传统的手动集成方式(比如每周…...

centos 9 编译安装 rtpengine (快方式)-使用 debian12 系统自带

1&#xff1a;更新系统包 dnf update 2&#xff1a;启用EPEL仓库&#xff08;提供额外软件包) # 安装EPEL仓库 sudo dnf install epel-release -y# 检查EPEL仓库是否启用&#xff08;输出应包含epel&#xff09; dnf repolist# 启用CRB仓库 sudo dnf config-manager --set-e…...

Android第六次面试总结(okhttp篇)

OkHttp 是一个高效的 HTTP 客户端&#xff0c;它的工作流程包含多个步骤&#xff0c;从请求的创建、发送&#xff0c;到服务器响应的接收和处理&#xff0c;每个环节都有特定的逻辑和组件参与。以下是对 OkHttp 工作流程的详细说明&#xff1a; 1. 请求构建 在使用 OkHttp 发…...

ngx_http_escape_location_name

定义在 src\http\ngx_http.c static ngx_int_t ngx_http_escape_location_name(ngx_conf_t *cf, ngx_http_core_loc_conf_t *clcf) {u_char *p;size_t len;uintptr_t escape;escape 2 * ngx_escape_uri(NULL, clcf->name.data, clcf->name.len,NGX_ESCAPE_U…...

QT网络通信的接口与使用

文章目录 前言1.服务端实现流程1.1步骤 1&#xff1a;创建 QTcpServer 并监听端口1.2步骤 2&#xff1a;处理新连接请求1.3步骤 3&#xff1a;接收客户端数据1.4步骤 4&#xff1a;处理客户端断开 2.客户端实现流程2.1步骤 1&#xff1a;创建 QTcpSocket 并连接服务器2.2步骤 2…...

基于生成对抗网络(GAN)的图像超分辨率重建:技术与应用

图像超分辨率重建(Super-Resolution, SR)是计算机视觉领域的重要任务,旨在从低分辨率图像中恢复出高分辨率图像。这一技术在医学影像、卫星图像、视频增强等领域具有广泛的应用价值。传统的超分辨率方法依赖于插值或基于模型的重建,效果有限。近年来,生成对抗网络(GAN)通…...

【spring对bean Request和Session的管理流程】

在 Spring 框架中&#xff0c;除了常见的 单例&#xff08;Singleton&#xff09; 和 原型&#xff08;Prototype&#xff09; 作用域外&#xff0c;还支持 Request 和 Session 作用域。这两种作用域主要用于 Web 应用程序中&#xff0c;分别表示 Bean 的生命周期与 HTTP 请求或…...