HTTPS 加密过程详解
HTTPS 详解及其加密过程流程框架
HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的详细解析:
一、HTTPS 的核心组成
HTTPS 由两部分构成:HTTP + SSL/TLS。
• HTTP:负责应用层数据传输,但默认不加密。
• SSL/TLS:工作在传输层与应用层之间,提供加密、身份验证和数据完整性保护。
核心安全特性:
1. 机密性:数据加密传输,防止窃听。
2. 完整性:通过哈希算法(如 SHA-256)检测数据篡改。
3. 身份验证:数字证书验证服务器身份,防止中间人攻击。
二、加密过程流程框架(TLS 握手阶段)
1. 客户端发起请求(Client Hello)
• 客户端向服务器发送支持的 TLS 版本、加密套件列表(如 AES、RSA)和一个随机数 Client Random,用于后续密钥生成。
2. 服务器响应(Server Hello)
• 服务器选择双方均支持的 TLS 版本和加密套件,并返回 Server Random 和 数字证书(包含公钥、域名、CA 签名等信息)。
3. 客户端验证证书
• 证书合法性检查:
◦ 验证颁发机构(CA)是否受信任(如 Let's Encrypt、VeriSign)。
◦ 检查证书有效期和域名是否匹配。
◦ 若验证失败,浏览器提示风险(如“证书不受信任”)。
• 生成预主密钥:客户端生成随机数 Pre-Master Secret,用服务器公钥加密后发送。
4. 服务器解密预主密钥
• 服务器使用私钥解密 Pre-Master Secret,结合 Client Random 和 Server Random,生成对称加密的 会话密钥(Session Key)。
5. 完成握手(Finished)
• 客户端和服务器交换 Finished 消息,使用会话密钥加密验证握手完整性。
• 验证通过后,后续通信全部采用 对称加密(如 AES)传输数据。
三、加密算法与密钥管理
1. 非对称加密(RSA/ECDHE):
• 用于握手阶段安全交换 会话密钥(如 Pre-Master Secret)。
• 公钥加密,私钥解密,防止中间人窃取密钥。
2. 对称加密(AES/ChaCha20):
• 会话密钥生成后,采用对称加密传输数据,效率更高。
3. 哈希算法(HMAC/SHA-256):
• 生成消息摘要,验证数据完整性。
四、安全机制与优化
1. 前向保密(Forward Secrecy):
• 使用 ECDHE 算法动态生成会话密钥,即使私钥泄露,历史通信仍无法解密。
2. 防止重放攻击:
• 通过 序列号 和 随机数 标记数据包,避免攻击者重复发送旧数据。
3. 性能优化(TLS 1.3):
• 简化握手流程至 1-RTT(单次往返),减少延迟。
五、注意事项
1. 并非绝对安全:
• 若用户主动接受伪造证书(如点击“继续访问不安全网站”),仍可能遭受中间人攻击。
2. 证书成本:
• 权威 CA 证书需付费,但 Let's Encrypt 等机构提供免费证书。
流程图总结
客户端 → 发送 Client Hello(TLS 版本、加密套件、Client Random)
服务器 → 返回 Server Hello(证书、Server Random)
客户端 → 验证证书 → 生成 Pre-Master Secret → 公钥加密发送
服务器 → 私钥解密 → 生成会话密钥 → Finished 消息确认
后续通信 → 对称加密传输数据
通过 HTTPS,数据传输的安全性从协议层面得到保障,成为现代互联网(如支付、登录等场景)的基石。
HTTP 与 HTTPS 的区别
HTTP(HyperText Transfer Protocol) 和 HTTPS(HyperText Transfer Protocol Secure) 是用于在客户端和服务器之间传输数据的协议。它们的主要区别在于安全性:
1. 安全性:
• HTTP:数据以明文形式传输,容易被窃听和篡改。
• HTTPS:数据通过加密传输,确保数据的机密性、完整性和真实性。
2. 端口:
• HTTP:默认使用端口 80。
• HTTPS:默认使用端口 443。
3. 协议层:
• HTTP:工作在应用层。
• HTTPS:在 HTTP 的基础上增加了 SSL/TLS 协议,工作在传输层和应用层之间。
4. 证书:
• HTTP:不需要证书。
• HTTPS:需要 SSL/TLS 证书,由受信任的证书颁发机构(CA)签发。
5. 性能:
• HTTP:由于没有加密和解密过程,性能较好。
• HTTPS:由于加密和解密过程,性能稍差,但现代硬件和优化技术已经大大减少了这种差异。
HTTPS 加密过程详解
HTTPS 的加密过程主要依赖于 SSL/TLS 协议,以下是其工作流程:
1. 客户端发起请求:
• 客户端(通常是浏览器)向服务器发起 HTTPS 请求,请求建立安全连接。
2. 服务器响应并发送证书:
• 服务器响应客户端的请求,并发送其 SSL/TLS 证书。证书中包含服务器的公钥和证书颁发机构(CA)的签名。
3. 客户端验证证书:
• 客户端验证证书的有效性,包括检查证书是否由受信任的 CA 签发、证书是否在有效期内、以及证书中的域名是否与请求的域名匹配。
4. 生成会话密钥:
• 如果证书验证通过,客户端生成一个随机的 对称密钥(也称为会话密钥),并使用服务器的公钥加密后发送给服务器。
5. 服务器解密会话密钥:
• 服务器使用自己的私钥解密客户端发送的加密会话密钥。
6. 建立加密通信:
• 客户端和服务器都拥有相同的会话密钥,之后的所有通信都使用这个对称密钥进行加密和解密。
7. 安全数据传输:
• 客户端和服务器之间的所有数据传输都通过对称加密算法进行加密,确保数据的机密性和完整性。
总结
• HTTP 是一种不安全的协议,适合不需要加密的场景。
• HTTPS 在 HTTP 的基础上增加了 SSL/TLS 加密,适合需要保护数据安全的场景,如在线支付、登录等。
• HTTPS 的加密过程 主要包括证书验证、会话密钥的生成和交换,以及后续的对称加密通信。
通过 HTTPS,用户可以确保其数据在传输过程中不会被窃听或篡改,从而提高了网络通信的安全性。
HTTPS 加密过程在网络中的详解
HTTPS 的加密过程主要依赖于 SSL/TLS 协议,它确保了客户端与服务器之间的通信是加密的、安全的。以下是 HTTPS 加密过程在网络中的详细步骤:
1. 客户端发起 HTTPS 请求
• 用户在浏览器中输入一个 HTTPS URL(如 https://example.com),浏览器(客户端)向服务器发起连接请求。
• 客户端会明确表示支持哪些 SSL/TLS 版本和加密套件(如 TLS 1.2、TLS 1.3 等)。
2. 服务器响应并发送证书
• 服务器收到请求后,会返回以下信息:
◦ SSL/TLS 证书:包含服务器的公钥、域名、证书颁发机构(CA)信息等。
◦ 支持的加密套件:服务器选择与客户端协商的加密算法(如 RSA、ECDHE 等)。
• 证书由受信任的 CA 签发,用于验证服务器的身份。
3. 客户端验证证书
• 客户端(浏览器)收到证书后,会进行以下验证:
◦ 证书是否由受信任的 CA 签发:检查证书链是否可信。
◦ 证书是否在有效期内:确保证书未过期。
◦ 证书中的域名是否匹配:验证证书中的域名与请求的域名一致。
• 如果验证失败,浏览器会提示用户证书不安全。
4. 密钥交换(Key Exchange)
• 验证通过后,客户端和服务器开始协商加密密钥。常见的密钥交换方式包括:
◦ RSA:客户端生成一个随机的对称密钥(会话密钥),并用服务器的公钥加密后发送给服务器。
◦ ECDHE(Elliptic Curve Diffie-Hellman Ephemeral):客户端和服务器通过 Diffie-Hellman 算法协商出一个共享密钥,该密钥仅用于当前会话。
• 这一过程确保只有客户端和服务器知道会话密钥。
5. 建立加密通信
• 客户端和服务器使用协商出的对称密钥(会话密钥)进行加密通信。
• 对称加密算法(如 AES、ChaCha20)用于加密数据,确保数据的机密性。
• 同时,使用 HMAC(Hash-based Message Authentication Code)或 AEAD(Authenticated Encryption with Associated Data)确保数据的完整性。
6. 安全数据传输
• 客户端和服务器之间的所有数据(如 HTTP 请求和响应)都通过对称加密算法加密。
• 即使数据被截获,攻击者也无法解密或篡改数据。
7. 会话结束
• 当会话结束时,会话密钥会被销毁,确保每次会话的密钥都是唯一的。
• 如果客户端再次发起请求,会重新进行上述密钥交换过程。
关键点总结
1. 证书的作用:
• 证书用于验证服务器的身份,确保客户端连接的是真正的服务器,而不是中间人攻击者。
2. 对称加密与非对称加密:
• 非对称加密(如 RSA、ECDHE):用于密钥交换,确保会话密钥的安全传输。
• 对称加密(如 AES):用于实际数据传输,效率更高。
3. 安全性:
• HTTPS 通过加密和证书验证,防止了数据窃听、篡改和中间人攻击。
4. 性能优化:
• 现代 TLS 协议(如 TLS 1.3)优化了握手过程,减少了延迟,提高了性能。
示例流程
1. 用户访问 https://example.com。
2. 浏览器向服务器发起 HTTPS 请求。
3. 服务器返回证书和公钥。
4. 浏览器验证证书,生成会话密钥,并用服务器的公钥加密后发送给服务器。
5. 服务器用私钥解密,得到会话密钥。
6. 浏览器和服务器使用会话密钥加密通信。
7. 用户与网站之间的所有数据传输都是加密的。
通过 HTTPS,网络通信的安全性得到了极大提升,成为现代互联网的标配协议。
相关文章:
HTTPS 加密过程详解
HTTPS 详解及其加密过程流程框架 HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的…...
lua垃圾回收
lua垃圾回收 lua 垃圾回收 lua 垃圾回收 collectgarbage(“count”)获取当前lua脚本占用内存字节数(单位为KB)。 collectgarbage(“collect”)执行一次垃圾回收。 xxxnil 将变量置为空,会释放内存。 lua中的机制和c#中回收机制很类似 解除羁绊(置为空)。 --垃圾回…...
springboot继承使用mybatis-plus举例相关配置,包括分页插件以及封装分页类
以下是使用 MyBatis-Plus 分页插件的完整配置和封装步骤,包括日志输出、驼峰转下划线、逻辑删除以及分页属性类的封装。 1. 引入依赖 确保在 pom.xml 中已经引入 MyBatis-Plus 的依赖: <XML> <dependency><groupId>com.baomidou<…...
智能汽车以太网系统测试:聚焦ETH链路高负载性能表现
引言 在智能汽车高速发展的今天,车载以太网作为车辆信息交互的“神经网络”,承担着传输海量数据的关键使命。它不仅能够满足车辆对高带宽、低延迟和高可靠性的通信需求,还为自动驾驶、智能座舱等复杂功能提供了强大的技术支持。然而…...
学习笔记:黑马程序员JavaWeb开发教程(2025.3.21)
10.7 案例-员工管理-分页查询-分析 形参的默认值可以使用注解来设置:RequestParam(default “1”) 10.8 案例-员工管理-分页查询-PageHelper插件 分页插件PageHelper帮助完成有关分页的所有操作,我们只要正常使用查询语句就可以了。插件会自动…...
计算机网络精讲day1——计算机网络的性能指标(上)
性能指标1:速率 概念1:比特 英文全称是binary digit,意思是一个二进制数字,因此一个比特就是二进制数字中的1或0,比特也是信息论中使用的信息量单位。 概念2:速率 网络中的速率指的是数据的传送速率&#…...
gin-路由handler封装思路
约束handler入参和返回为func(ctx, req) (resp, error)。通过反射,封装handler,在调用前后写入入参和返回的处理。 package testingimport ("context""fmt""reflect""strings""testing" )type ReqPa…...
【实战案例】用STAR+3W模型拆解电商支付系统设计文档
各位开发者朋友,上次分享了结构化写作的黄金公式后,很多同学反馈需要更具象的落地方法。今天通过真实电商支付系统案例,手把手教你用STAR3W模型写出可执行的设计文档! 结构化写作的「黄金公式」 STAR原则 3W模型 Situation&…...
计算机组成原理和计算机网络常见单位分类及换算
计算机组成原理(主要用于存储、内存、缓存等) 计算机网络(主要用于传输速率) 直观对比...
线性筛法求素数
时间复杂度 o(n) int cnt, primes[N];//cnt用来记录素数的下标 bool st[N];//用来标记合数 int minp[N];//最小质因数 void get_primes(int n) {for(int i 2;i < n;i )//从2开始找数 {if(!st[i])//如果这个数没有被筛出去过,说明是一…...
触动精灵对某东cookie读取并解密--记lua调用C语言
在Mac上构建Lua扩展模块:AES解密与Base64解码实战 今天我要分享一个实用技术:如何在Mac系统上为Lua编写和编译C扩展模块,特别是实现一个某东iOS PIN码解密功能的扩展。这对于需要在Lua环境中执行高性能计算或使用底层系统功能的开发者非常有…...
GEO:在AI时代抢占DeepSeekC位?
前言:当SEO遇见AGI——一场静默的流量革命 在生成式AI日均处理53亿次查询的今天,传统SEO的「关键词-排名-点击」逻辑正在崩塌。DeepSeek、ChatGPT、豆包等大模型用动态生成的答案,悄然截流了68%的搜索需求。更残酷的是:当用户问&q…...
【设计模式】策略模式
以下是格式优化后的Markdown文档,仅调整代码缩进,保持内容不变: 四、策略模式 策略(Strategy) 模式是一种行为型模式,其实现过程与模板方法模式非常类似——都 是以扩展的方式支持未来的变化。本章通过对一个具体范例的逐步重构…...
第J6周:ResNeXt-50实战解析
文章目录 一、前期准备1.设置GPU2.导入数据3.查看数据 二、数据预处理1.加载数据2.可视化数据3.再次检查数据4.配置数据集 四、模型复现1. 分组卷积模块2. 定义残差模块3. 堆叠残差单元4. 搭建ResNext-50网络5. 查看模型摘要 五、训练模型六、结果可视化总结: &…...
调试 ResNet18 cpp实现中的段错误(SIGSEGV)问题
调试 ResNet18 cpp实现中的段错误(SIGSEGV)问题 问题分析 您的程序在运行时遇到了段错误(SIGSEGV),GDB显示错误发生在main()函数的第一行(resnet18_allo_test.cpp:33)。这种情况看起来很奇怪&…...
详细介绍IDI_APPLICATION和IDC_ARROW
书籍:《windows程序设计(第五版)》 环境:visual studio 2022 内容:HELLOWIN程序 说明:以下内容大部分来自腾讯元宝。 IDI_APPLICATION 与 IDC_ARROW 详解 1. IDC_ARROW(光标资源标识符) 定义与…...
curl库+openssl库windows编译
一、工具准备 Visual Studio 2008:确保安装了 C 开发工具。 Git:用于克隆 cURL 的源码。 Perl:可以从 ActiveState Perl 下载并安装。 NASM(可选):如果需要汇编优化,可以从NASM 官方网站 下载并…...
今日行情明日机会——20250321
后续投资机会分析 结合2025年3月21日盘面数据(涨停56家,跌停31家),市场呈现结构性分化行情,海洋经济成为绝对主线,机器人概念局部活跃,人工智能表现较弱。以下是具体方向与策略建议:…...
repo init 错误 Permission denied (publickey)
一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig (此步骤是公司要求,设置gerrit地址为一个别名之类的,有的公司不需要) 然后出现下面的错误,最后发现忘记设置git的用户名和邮箱 1. git config --globa…...
STM32 模拟SPI 模式0
SPI 模式 0 的时钟极性(CPOL)为 0,时钟相位(CPHA)为 0。CPOL 0 意味着时钟信号空闲时为低电平,CPHA 0 表示在时钟信号的第一个跳变沿(上升沿)进行数据采样。 #include "stm3…...
MySQL实现全量同步和增量同步到SQL Server或其他关系型库
在将MySQL中的两张表同步到SQL Server的过程中,全量同步和增量同步各有其优缺点。全量同步简单直接但可能耗时较长且资源消耗大,而增量同步则更加高效但需要额外的逻辑来处理数据的变更。以下是对这两种同步方式的详细解释及代码示例的完善。 完整代码示…...
详细解析GetOpenFileName()
书籍:《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境:visual studio 2022 内容:【例2.34】打开文件对话框和另存为。 说明:以下内容大部分来自腾讯元宝。 GetOpenFileName() 是 Windows API 中用于显示标准文件打开…...
FPGA----完美解决Windows下[XSIM 43-3409][XSIM 43-3915]错误
大家好久不见,今天开始又要重操旧业了!最近会更新很多关于petalinux的踩坑日记,敬请期待! 先更新一个常见问题,使用Vivado仿真时C编译器报错问题。如下所示 ERROR: [XSIM 43-3409] Failed to compile generated C fi…...
LeetCode Hot100 刷题路线(Python版)
目录 1. LeetCode Hot100 刷题笔记(1)—— 哈希、双指针、滑动窗口 2. LeetCode Hot100 刷题笔记(2)—— 子串、普通数组、矩阵 3. LeetCode Hot100 刷题笔记(3)—— 链表 4. LeetCode Hot100 刷题笔记&…...
宇树科技纯技能要求总结
一、嵌入式开发与硬件设计 核心技能 嵌入式开发: 精通C/C,熟悉STM32、ARM开发熟悉Linux BSP开发及驱动框架(SPI/UART/USB/FLASH/Camera/GPS/LCD)掌握主流平台(英伟达、全志、瑞芯微等) 硬件设计:…...
Docker学习笔记(十)搭建Docker私有仓库
一、环境配置 1、宿主机系统:macOS Sequoia(版本15.2) 2、虚拟机VMware Fusion版本:专业版 13.6.2 (24409261) 3、虚拟机系统:AlmaLinux-9-latest-x86_64-boot.iso 二、安装Harbor开源企业级Docker镜像 Harbor 是一个开源的企业级 Docker…...
FastAPI WebSocket 无法获取真实 IP 错误记录
FastAPI WebSocket 无法获取真实 IP 错误记录 问题描述 在使用 FastAPI WebSocket 服务时,发现无法获取设备的真实 Remote IP,所有连接均显示为内网地址 10.x.x.1。以下是完整的排查过程及解决方案。 排查步骤 1. 基础信息检查 • 现象复现࿱…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当前页数据示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当…...
【Linux】快速上手Makeflie CMake
🦄个人主页:修修修也 🎏所属专栏:Linux ⚙️操作环境:Xshell (操作系统:Ubuntu 22.04 server 64bit) 目录 📌快速上手Makefile 基本结构 变量 自动变量 常用目标 📌快速上手CMake CMake与Makefile的关系 CMake的使用步骤 常用命令…...
Python连接数据库进行增删改查
更多优质文章 _>_>_>_>_>✍✈✉戳我 目录 1.导入相关库 2.创建连接 3.插入数据 4.删除数据 5.修改数据 6.查询数据 7.更多干货 1.导入相关库 import pymysql -----pip install pymysql #下载库 2.创建连接 conn pymysql.connect(hostlocalho…...
数据库的两种模式
数据库的 严格模式(Strict Mode) 和 宽松模式(Non-Strict Mode) 是数据库管理系统(DBMS)中用于控制数据验证和处理方式的两种不同模式。它们的主要区别在于对数据完整性、一致性和错误处理的严格程度。 1. …...
【css酷炫效果】纯CSS实现立体旋转立方体
【css酷炫效果】纯CSS实现立体旋转立方体 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492014 缘 创作随缘,不定时更新。 创作背景 刚看到csdn出活动了&am…...
Cursor与Coze结合开发电影推荐系统:一次高效的技术实践
1 项目背景 有个想法,和朋友打算一起看电影,但是不知道看什么(吃饭也是),于是在豆瓣高分电影榜单中选择出来一些感兴趣的电影,随机挑选一部“天意之选”。为此,我尝试结合Cursor(智…...
【总结篇】java多线程,新建线程有几种写法,以及每种写法的优劣势
java多线程 新建线程有几种写法,以及每种写法的优劣势 [1/5]java多线程 新建线程有几种写法–继承Thread类以及他的优劣势[2/5]java多线程-新建线程有几种写法–实现Runnable接口以及他的优劣势[3/5]java多线程 新建线程有几种写法–实现Callable接口结合FutureTask使用以及他的…...
idea问题(三)pom文件显示删除线
一、问题 1、现象 2、原因 分析原因和出现的流程:创建子模块的时候因为名称错误了,并且通过修改模块模块名称后,又删除了模块,因删除不干净。再次建立了同名模块,会让IDEA认为你再次新建的项目是已经被删除的项目。 …...
python爬虫概述
0x00 python爬虫概述 以豆瓣的选电影模块为例,当查看源代码搜索猫猫的奇幻漂流瓶是搜不到的 这时服务器的工作方式应该是这样的 客户端浏览器第一次访问其实服务器端是返回的一个框架(html代码) 当客户端浏览器第二次通过脚本等方式进行访问时服务器端才返回的数据…...
实现拖拽图片验证的基本步骤
前端部分 UI 设计: 显示一个滑块和一张背景图(通常是带缺口的图片)。滑块可以是拼图的一块或简单的方块。 拖拽功能: 监听滑块的 mousedown、mousemove、mouseup 事件,实现拖拽效果。 验证逻辑: 计算滑块最…...
conda报错activate没办法激活环境
遇到激活环境报错 # >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<< Traceback (most recent call last): File …...
numpy学习笔记3:三维数组 np.ones((2, 3, 4)) 的详细解释
numpy学习笔记3:三维数组 np.ones((2, 3, 4)) 的详细解释 以下是关于三维数组 np.ones((2, 3, 4)) 的详细解释: 1. 三维数组的形状 形状 (2, 3, 4) 表示: 最外层维度:2 个“层”(或“块”); …...
论文笔记(七十三)Gemini Robotics: Bringing AI into the Physical World
Gemini Robotics: Bringing AI into the Physical World 文章概括1. 引言2. Gemini 2.0的具身推理2.1. 具身推理问答(ERQA)基准测试2.2. Gemini 2.0的具身推理能力2.3. Gemini 2.0支持零样本和少样本机器人控制 3. 使用 Gemini Robotics 执行机器人动作3…...
不用 Tomcat?SpringBoot 项目用啥代替?
在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。 同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使…...
ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面
ChatTTS(Chat Text To Speech),专为对话场景设计的文本生成语音(TTS)模型,适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。支持中文和英文,还可以穿插笑声、说话间的停顿、以…...
嵌入式笔记 | 正点原子STM32F103ZET6 4 | 中断补充
1. 外设引脚重映射 1.1 定义 在STM32中,每个外设的引脚都有默认的GPIO端口,但有些引脚可以通过重映射寄存器将功能映射到其他端口。这种机制称为引脚重映射,主要用于解决引脚复用冲突或优化PCB布线。 1.2 重映射的类型 部分重映射&#x…...
spring循环依赖
Spring 通过三级缓存机制解决单例 Bean 的循环依赖问题,其核心思想是提前暴露未完全初始化的 Bean 引用。以下是详细流程和原理: 1. 循环依赖的场景 假设两个 Bean 相互依赖: BeanA 依赖 BeanBBeanB 依赖 BeanA 如果没有特殊处理ÿ…...
算法刷题区域部分反转
不断创建数组,相加,利用cpp内字符串相加的性质即可。具体代码如下: class Solution { public: string reverseStr(string s, int k) { int size s.size(); int count size / (2*k); string a; int i 0; for ( i 0; i < count; i)…...
使用【docker】+【shell】脚本半自动化部署微服务项目
一.前言 以下是一个基于 Docker Shell脚本 的半自动化部署方案,包含镜像构建、容器管理、网络配置和日志监控等核心功能,适用于大多数Web应用或微服务项目。 二.目录结构 三.脚本代码实现 1.Shell脚本实现 (deploy.sh) #!/bin/bash# 设置颜…...
关于“碰一碰发视频”系统的技术开发文档框架
以下是关于“碰一碰发视频”系统的技术开发文档框架,涵盖核心功能、技术选型、开发流程和关键模块设计,帮助您快速搭建一站式解决方案 --- 随着短视频平台的兴起,用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣,…...
Java面试黄金宝典5
1. ConcurrentHashMap 和 HashTable 有哪些区别 原理 HashTable:它继承自 Dictionary 类,是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如,在调用 put、get 等方法时ÿ…...
【FastGPT】利用知识库创建AI智能助手
【FastGPT】利用知识库创建AI智能助手 摘要创建知识库上传文档创建应用准备提示词准备开场白关联知识库AI回答效果 摘要 关于FastGPT的部署,官方提供了docker-compose方式的部署文档,如果使用的是podman和podman-compose的同学,可以参考这篇…...
尚硅谷爬虫(解析_xpath的基本使用)笔记
1、xpath的基本使用 创建一个简单的HTML: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><ul><li>北京</li><li&…...