网络原理 - 13(HTTP/HTTPS - 4 - HTTPS)
目录
HTTPS 是什么
不得不的策略 - 应对“运营商劫持”
“加密” 是什么
分类
对称加密
非对称加密
HTTPS 工作原理
1)引入对称加密
2) 引入非对称加密
中间人攻击
引入证书
证书的验证过程
完!
HTTPS 是什么
HTTPS 也是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层。
HTTP 协议内容都是按照文本的方式明文传输的,这就导致数据在传输的过程中出现一些被篡改的情况。
不得不的策略 - 应对“运营商劫持”
当我们下载一个“快玩游戏盒”,如果是像这样的情况,一般就是存在运营商劫持的情况~~~
当我们点击下载按钮,就会弹出 360 软件宝库的下载链接~~
如果未被劫持,点击下载按钮,就会直接弹出快玩游戏盒的下载链接~~
由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机),那么运营商的相关网络设备就可以解析出我们传输的内容,并进行篡改~~
当点击“下载按钮”,其实就是给服务器发送了一个 HTTP 请求,获取到的 HTTP 响应其实就包含了 APP 的下载连接,但是,如果被运营商劫持了之后,就会发现这个请求是要下载快玩游戏盒,那么就自动的把交给用户的响应的快玩游戏盒的下载连接给篡改成“360 软件宝库”的下载地址了~~
运营商为什么要进行劫持呢???
不止运营商可以劫持,其他的黑客也可以用类似的手段来进行劫持,窃取用户的隐私信息,或者篡改内容~~
试想一下,如果 hacker 在用户登录支付宝的时候,获取到了用户的账户余额,甚至获取到了用户的支付密码...
在互联网上,明文传输的比较危险的事情!!!
HTTPS 就是在 HTTP 的基础上进行了加密,进一步的来保证用户的信息安全,进一步的来保证用户的信息安全~~
“加密” 是什么
加密就是把 明文(要传输的信息)进行一系列变换,生成 密文。
解密就是要把 密文 再进行一系列变换,还原成 明文。
在这个加密和解密的过程中,往往需要一个或者多个中间的数据(密码本什么的),辅助进行这个过程,这样的数据称为 密钥。
分类
加密的方式有很多,但是整体上可以分成两大类:对称加密 和 非对称加密
对称加密
对称加密其实就是通过同一个“密钥”,把明文加密成密文,并且也能把密文解密成明文~~
一个简单的对称加密:按位异或
假设明文 a = 1234,密钥 key = 8888
则加密 a ^ key 得到的密文为 9834
然后针对密文 9834 再次进行运算 b ^ key ,得到的就是原来的明文 1234
(对于字符串的对称加密也是同理,每一个字符都可以表示成一个数字~~)
非对称加密
非对称加密要用到两个密钥,一个叫做“公钥”,一个叫做“私钥”。
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢的多。
在非对称加密中,使用的这两个密钥 k1,k2 是成对的。
可以使用 k1 来进行加密,此时就是 k2 解密。
也可以使用 k2 来进行加密,此时就是 k1 解密。
注意:这个特性是有一系列数学原理的,当手里只有一把的时候,是无法知道另一把是什么样的~
HTTPS 工作原理
只要针对 HTTPS 的数据进行解密,就能得到 HTTP 格式的数据。
我们前面提到的运营商劫持,无论是修改 referer 还是修改返回的连接(body),本质上都是明文传输惹的祸。
我们需要对数据引入加密,对传输的数据进行保护。其中,主要就是针对 header 和 body 进行加密
1)引入对称加密
通过对称加密的方式,针对传输的数据进行加密操作。这样,即使数据被截获,由于黑客不知道密钥是什么,因此就无法进行解密,也就不知道请求的真实内容是什么了~~
但这里还是存在问题的:
1. 对称加密的时候,客户端和服务器需要使用同一个密钥。
2. 不同的客户端,是需要不同的密钥的。(如果所有的客户端的密钥都相同,加密就形同虚设了,黑客还是很容易就拿到,从而还是会造成数据泄漏)
==》
这就意味着,每个客户端连接到服务器的时候,都需要自己生成一个随机的密钥,并且把这个密钥告知给服务器。(如果每个客户端的密钥都是一样的,那黑客只要也伪装成任意一个客户端向服务器发送一个请求,便可以得到密钥了)(也不一定是非得客户端生成,服务器生成也可以,但也是需要告诉客户端的~)
==》
这就是问题的关键所在!!!密钥需要从一方传输给另一方,但如果在传输过程中,一旦黑客拿到了这个密钥,就意味着我们的加密操作就没有任何意义了...
如上图所示,当客户端在告诉服务器:“咱俩的密钥是 888888”的时候,黑客就知道了客户端和服务器之间的密钥,那么当服务器给客户端返回 body 的时候,即使是密文,也会被黑客劫持数据。
==》
虽然我们也可以针对“咱俩密钥使用 888888” 进行密文传输,如果使用对称加密,引入 key2 针对 key1 进行加密,但这也意味着,我们也需要把 key2 传输给服务器,同样这个过程还是可能被黑客拿到,这样就形成了套娃了~~
2) 引入非对称加密
使用非对称加密,主要的目的就算为了对对称密钥进行加密,确保密钥的安全性!!!
服务器生成一对非对称密钥,私钥则由服务器自己持有,公钥可以告诉任何客户端。
客户端在连接上服务器之后,需要先从服务器这边拿到公钥,客户端生成对称密钥,将对称密钥通过非对称密钥的公钥进行加密,发送给服务器,服务器通过非对称密钥的私钥进行解密,获得对称密钥。此后客户端和服务器就可以通过对称密钥来进行通信了。(这里的各种密钥,本质上都只是一串数字/数字)
补充:不能使用非对称加密,来针对后续传输的各种 header body 等进行加密,而是只能使用非对称加密,去加密对称密钥。 ==》 非对称加密的加密解密成本是非常高的(消耗的 CPU 资源),远远高于对称加密的成本。一点点的使用,是完全没问题的,但是如果大规模使用,就难以承担了~~
中间人攻击
我们上述引入非对称加密后,整个过程似乎就非常安全了,看似防止了黑客的攻击,但是嘛,黑客也不是吃素的,为了获取利益,黑客们也是绞尽脑汁了~~
服务器可以创建出一对公钥和私钥,那黑客,也可以按照同样的方式,创建出一对公钥和私钥,来冒充自己是服务器~~
针对上述问题,要如何解决呢???
其实,仔细观察,最关键的问题是,客户端拿到公钥之后,如果有办法来进行验证,这个公钥到底是服务器发来的,还是黑客伪造的??
引入证书
证书是一个结构化的数据,里面包含很多属性,最终以字符串的形式提供。
证书中会包含一系列信息,比如:服务器的域名,服务器的相关信息,公钥,证书有效期等等......
证书,是搭建服务器的公司,从第三方的公证几个后进行申请的。
这样客户端就可以获得公钥了~~~
这里还有一个关键问题是:黑客在中间人攻击中,就伪造了一对公钥和私钥,那这次在返回证书的时候,能否对证书的内容进行修改,将其中的公钥再换成自己伪造的呢???
==》
不可以!!!客户端在拿到证书之后,会对证书进行验伪操作。(都叫证书了,肯定不好伪造~)
证书的验证过程
证书一般包含的内容有:服务器的域名,证书的有效时间,服务器的公钥,公证机构信息........其中最关键的一点是,证书中还会包含一项 -- 签名!!!
颁布证书的第三方公证机构,会在发布证书的时候,根据证书的其他的字段通过一系列算法,计算出一个校验和,然后公证机构,还会使用自己的私钥(注意:这里是公证机构的私钥,和服务器无关~)针对该校验和进行加密,此时就得到了证书的签名。
(市面上的公证机构一共也没有多少,这些公证机构都拥有自己的私钥,对应的公钥,一般都包含在常见的系统中了,例如 windows 里面就内置了大量的公钥。如果系统中没有内置,也可以进行额外的安装)
客户端在拿到证书之后,主要需要做两件事来验伪:
1)按照同样的校验和算法,把证书中的其他字段都重新计算一次,得到一个校验和 1
2)使用客户端这边内置的公证机构的公钥,对证书中的签名进行解密,得到一个校验和 2
此时,就可以将校验和 1 和 校验和 2 来进行对比了。如果一致,那么就说明,证书在由服务器送往客户端的过程中,没有被其他人修改过,就是原版证书,如果不一致,就说明证书被别人篡改了。
补充:我们这里的操作,是为了防止黑客对证书进行修改,而不是防止黑客知道,黑客中的系统也内置了公证机关的公钥,黑客也是可以解密的。
但是黑客是无法对里面的内容进行修改的。
1)如果黑客直接修改公钥,不修改签名,那么此时客户端所得到的两个校验和一定是不一样的~~
2)如果黑客修改了公钥,也尝试对签名进行重新生成的话,更是行不通的。他没有第三方公证机构的私钥呀!!!无法对签名进行重新修改。如果黑客使用自己的私钥来进行加密的话,客户端那边内置的公钥又无法解密~~~
3)黑客也向公证机构申请一份证书,然后将自己的证书替换成服务器的证书~~~也是不可以滴~~~有没有一种可能,证书中不仅仅只有签名的信息嘞,还会有服务器域名等等信息~~~当客户端拿到证书之后,都不需要进行校验和的对比,打眼一看就发现了~~~
当然,我们上述讨论的过程,所谓的安全,也并非是绝对安全,其本质上都是基于非对称加密体系的。非对称加密体系,也不是无懈可击的,只是要破解非对称加密体系,所需要耗费的成本,以目前的计算机算力来说,是非常非常大的,远远超出了截获信息所能获取到的利益,因此我们的数据就是安全的了。
但是随着算力的提升,如果黑客轻松就能破解出非对称加密体系...........密码学就要迎来一波大换血了~~
完!
相关文章:
网络原理 - 13(HTTP/HTTPS - 4 - HTTPS)
目录 HTTPS 是什么 不得不的策略 - 应对“运营商劫持” “加密” 是什么 分类 对称加密 非对称加密 HTTPS 工作原理 1)引入对称加密 2) 引入非对称加密 中间人攻击 引入证书 证书的验证过程 完! HTTPS 是什么 HTTPS 也是一个应…...
当MCP撞进云宇宙:多芯片封装如何重构云计算的“芯“未来?
当MCP撞进云宇宙:多芯片封装如何重构云计算的"芯"未来? 2024年3月,AMD发布了震撼业界的MI300A/B芯片——这颗为AI计算而生的"超级芯片",首次在单封装内集成了13个计算芯片(包括3D V-Cache缓存、CDNA3 GPU和Zen4 CPU),用多芯片封装(Multi-Chip Pac…...
Kotlin Flow流
一 Kotlin Flow 中的 stateIn 和 shareIn 一、简单比喻理解 想象一个水龙头(数据源)和几个水杯(数据接收者): 普通 Flow(冷流):每个水杯来接水时,都要重新打开水龙头从…...
虚拟局域网(VLAN)实验(Cisco Packet Tracer)-路由器、交换机的基本配置
好的,我们来根据你提供的文档,一步步地在 Cisco Packet Tracer 中完成这个跨交换机划分 VLAN 的实验。 实验目标: 配置两台交换机 SW1 和 SW2,划分 VLAN 10 和 VLAN 20,配置 Trunk 链路,并测试同 VLAN 和跨 VLAN 的连…...
【论文速递】2025年09周 (Robotics/Embodied AI/LLM)
目录 LLM-Microscope:揭示标点符号在Transformers的上下文中的隐藏作用英文摘要中文摘要 SurveyX:通过大型语言模型实现学术调查自动化英文摘要中文摘要 数学推理的自我奖励校正英文摘要中文摘要 VideoGrain:调整时空关注以进行多元透明视频编…...
自主机器人模拟系统
一、系统概述 本代码实现了一个基于Pygame的2D自主机器人模拟系统,具备以下核心功能: 双模式控制:支持手动控制(WASD键)和自动导航模式(鼠标左键设定目标) 智能路径规划:采用改进型…...
DeepSeek构建非农预测模型:量化关税滞后效应与非线性经济冲击传导
AI分析:非农数据前瞻与关税影响的滞后性 根据AI模型对多维度经济指标的交叉验证,4月非农就业报告或呈现“增速放缓但未失速”的特征。当前市场共识预期为新增就业13.3万人(前值22.8万),失业率维持4.2%,时薪…...
前端面经-VUE3篇--vue3基础知识(一)插值表达式、ref、reactive
一、计算属性(computed) 计算属性(Computed Properties)是 Vue 中一种特殊的响应式数据,它能基于已有的响应式数据动态计算出新的数据。 计算属性有以下特性: 自动缓存:只有当它依赖的响应式数据发生变化时ÿ…...
云原生后端架构的优势与最佳实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 在过去的几年里,随着云计算和容器化技术的迅猛发展,云原生架构逐渐成为现代企业和开发团队构建和运维应用系统的首选方式。云原生架构通过高度的自动化、弹性伸缩、微服务化等特点,使得企业能够在不断变化…...
力扣838.推多米诺随笔
“生活就像海洋,只有意志坚强的人,才能到达彼岸。”—— 马克思 题目 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立。在开始时,同时把一些多米诺骨牌向左或向右推。 每过一秒,倒向左边的多米诺骨牌会推动其左侧…...
aab转apk
一、 android34升级: 1、升级到安卓34(蓝牙、图片) 再蓝牙广播的地方加入Context.RECEIVER_EXPORTED 2、废弃了 BluetoothAdapter#enable() 和 BluetoothAdapter#disable(),需要修改 // 以前的蓝牙操作BluetoothManager bluetoo…...
LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用
文章目录 方法思路:前缀和 哈希表核心思想关键步骤 代码实现复杂度分析示例解析总结 题目描述 给定一个整数数组 nums 和一个整数 k,请统计并返回该数组中和为 k 的子数组的数量。 子数组是数组中连续的非空元素序列。 示例 输入:nums …...
【Hive入门】Hive性能调优:小文件问题与动态分区合并策略详解
目录 引言 1 Hive小文件问题概述 1.1 什么是小文件问题 1.2 小文件产生的原因 2 Hive小文件合并机制 2.1 hive.merge.smallfiles参数详解 2.2 小文件合并流程 2.3 合并策略选择 3 动态分区与小文件问题 3.1 动态分区原理 3.2 动态分区合并策略 3.3 动态分区合并流程…...
基于Springboot+Vue3.0的前后端分离的个人旅游足迹可视化平台
文章目录 0、前言1、前端开发1.1 登录注册页面1.2 首页1.3 足迹管理1.3.1 足迹列表1.3.2 添加足迹1.4 个人中心1.4.1 足迹成就1.4.2 个人信息1.4.3 我的计划2、后端开发2.1 用户接口开发2.2 足迹点接口2.3 旅游计划接口3、完整代码资料下载0、前言 项目亮点: 前端用户权限动态…...
安妮推广导航系统开心版多款主题网址推广赚钱软件推广变现一键统计免授权源码Annie
一、源码描述 这是一套推广导航源码(Annie),基于Funadmin框架(ThinkPHP8Layui ),内置多款主题,可以用于网址推广,或者用于软件推广,PC端软件手机端软件,后台…...
单片机-STM32部分:1、STM32介绍
飞书文档https://x509p6c8to.feishu.cn/wiki/CmpZwTgHhiQSHZkvzjdc6c4Yn1g STM32单片机不是一款芯片,而是一个系列的芯片? STM32系列单片机是ST(意法半导体)公司开发的一套32位微控制器基于Arm Cortex()-M处理器,它包…...
PHP-session
PHP中,session(会话)是一种在服务器上存储用户数据的方法,这些数据可以在多个页面请求或访问之间保持。Session提供了一种方式来跟踪用户状态,比如登录信息、购物车内容等。当用户首次访问网站时,服务器会创…...
php artisan resetPass 执行密码重置失败的原因?php artisan resetPass是什么 如何使用?-优雅草卓伊凡
php artisan resetPass 执行密码重置失败的原因?php artisan resetPass是什么 如何使用?-优雅草卓伊凡 可能的原因 命令不存在:如果你没有正确定义这个命令,Laravel 会报错而不是提示”重置密码失败”用户不存在:’a…...
AI大模型-微调和RAG方案选项
在搭建知识库的方向上,有两个落地方案:微调、RAG。两个方案的比对: 方案选型 微调 让大模型(LLM)去学习现有知识(调整大模型的参数,让它学习新的知识),最终生成一个新的…...
MySQL 第一讲---基础篇 安装
前言: 在当今数据驱动的时代,掌握数据库技术已成为开发者必备的核心技能。作为全球最受欢迎的开源关系型数据库,MySQL承载着淘宝双十一每秒50万次的交易请求,支撑着Facebook百亿级的数据存储,更是无数互联网企业的数据…...
【JavaScript-Day 1】从零开始:全面了解 JavaScript 是什么、为什么学以及它与 Java 的区别
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
C++ 复习
VS 修改 C 语言标准 右键项目-属性 输入输出 //引用头文件,用<>包裹起来的一般是系统提供的写好的代码 编译器会在专门的系统路径中去进行查找 #include <iostream> //自己写的代码文件一般都用""包裹起来 编译器会在当前文件所在的目录中査…...
数字智慧方案5877丨智慧交通项目方案(122页PPT)(文末有下载方式)
篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2301_78256053/89575494 资料解读:智慧交通项目方案 详细资料请看本解读文章的最后内容。 智慧交通项目方案是一个全面的设计框架,…...
如何封装一个线程安全、可复用的 HBase 查询模板
目录 一、前言:原生 HBase 查询的痛点 (一)连接管理混乱,容易造成资源泄露 (二)查询逻辑重复,缺乏统一的模板 (三)多线程/高并发下的线程安全性隐患 (四…...
VLM Qwen2.5VL GRPO训练微调 EasyR1 多机多卡训练(2)
在之前博客进行了简单的训练尝试:https://www.dong-blog.fun/post/2060 在本博客,将会深入进行多机多卡训练,以及调整训练奖励函数。 之前构建了镜像: docker build . -t kevinchina/deeplearning:r1 FROM hiyouga/verl:ngc-th2.6.0-cu126-vllm0.8.4-flashinfer0.2.2-cx…...
基于建造者模式的信号量与理解建造者模式
信号量是什么? AI解释:信号量(Semaphore)是操作系统中用于 进程同步与互斥 的经典工具,由荷兰计算机科学家 Edsger Dijkstra 在 1965 年提出。它本质上是一个 非负整数变量,通过原子操作(P 操作…...
笔试专题(十四)
文章目录 mari和shiny题解代码 体操队形题解代码 二叉树中的最大路径和题解代码 mari和shiny 题目链接 题解 1. 可以用多状态的线性dp 2. 细节处理:使用long long 存储个数 3. 空间优化:只需要考虑等于’s’,‘sh’,shy’的情况…...
2025年五一数学建模A题【支路车流量推测】原创论文讲解
大家好呀,从发布赛题一直到现在,总算完成了2025年五一数学建模A题【支路车流量推测】完整的成品论文。 给大家看一下目录吧: 摘 要: 一、问题重述 二.问题分析 2.1问题一 2.2问题二 2.3问题三 2.4问题四 2.5 …...
Linux系统:进程程序替换以及相关exec接口
本节重点 理解进程替换的相关概念与原理掌握相关程序替换接口程序替换与进程创建的区别程序替换的注意事项 一、概念与原理 进程程序替换是操作系统中实现多任务和资源复用的关键机制,允许进程在运行时动态加载并执行新程序。 1.1 定义 进程程序替换是指用新程…...
STM32复盘总结——芯片简介
1、stm32介绍 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器 STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等 STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器 目…...
安装深度环境anaconda+cuda+cudnn+pycharm+qt+MVS
下载anaconda,链接:link 默认电脑有显卡驱动,没有的话直接进NVIDIA官网:https://www.nvidia.cn/geforce/drivers/ 下载。 下载cuda 链接:https://developer.nvidia.com/cuda-toolkit-archive 下载cudnn安装包,链接:https://developer.nvidia.com/rdp/cudnn-archive 备注:…...
泰迪杯特等奖案例学习资料:基于多模态特征融合的图像文本检索系统设计
(第十二届泰迪杯数据挖掘挑战赛B题特等奖案例解析) 一、案例背景与核心挑战 1.1 应用场景与行业痛点 随着智能终端与社交媒体的普及,图像与文本数据呈现爆炸式增长,跨模态检索需求日益迫切。传统方法面临以下问题: 语义鸿沟:图像与文本的异构特征分布差异显著,导致跨模…...
进程与线程:05 内核级线程实现
内核级线程代码实现概述 这节课我们要讲内核级线程到底是怎么做出来的,实际上就是要深入探讨内核级线程的代码实现。 在前两节课中,我们学习了用户级线程和内核级线程是如何进行切换的,以及实现切换的核心要点。那两节课讲述的内容…...
Laravel 12 实现 API 登录令牌认证
Laravel 12 实现 API 登录令牌认证 在 Laravel 12 中实现基于令牌(Token)的 API 认证,可以使用 Laravel Sanctum 或 Laravel Passport。以下是两种方式的实现方法: 方法一:使用 Laravel Sanctum (轻量级 API 认证) 1. 安装 Sanctum compo…...
【Git】万字详解 Git 的原理与使用(上)
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 初识 Git1.1 Git 是什么?1.2 为什么要有 Git 2. 安装 Git2.1 Linux-Ubuntu 安装 Git2.2 Windo…...
Python高级爬虫之JS逆向+安卓逆向1.7节: 面向对象
目录 引言: 1.7.1 先理解面向过程 1.7.2 再理解面向对象 1.7.3 面向对象的三大特征 1.7.4 类属性,类方法,静态方法 1.7.5 构造函数,对象属性,对象方法 1.7.6 爬虫接单实现了雪糕自由 引言: 大神薯条老师的高级爬虫+安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初…...
SpringBoot基础(原理、项目搭建、yaml)
SpringBoot:javaweb的一个框架,基于Spring开发,SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷的开发新一代基于Spring框架的应用程序,它与Spring框架紧密结合用于提升Spring开发者体验的…...
MTV-SCA:基于多试向量的正弦余弦算法
3 正弦余弦算法 (SCA) 正弦余弦算法(SCA)是为全局优化而开发的,并受到两个函数,正弦和余弦的启发。与其他基于启发式种群的算法一样,SCA在问题的预设最小值和最大值边界内随机生成候选解。然后,通过应用方…...
STL之vector容器
vector的介绍 1.vector是可变大小数组的容器 2.像数组一样,采用连续的空间存储,也就意味着可以通过下标去访问,但它的大小可以动态改变 3.每次的插入都要开空间吗?开空间就要意味着先开临时空间,然后在拷贝旧的到新…...
Android学习总结之jetpack组件间的联系
在传统安卓开发中,UI 组件(Activity/Fragment)常面临三个核心问题: 生命周期混乱:手动管理 UI 与数据的绑定 / 解绑,易导致内存泄漏(如 Activity 销毁后回调仍在触发)。数据断层&am…...
linux的信号量初识
Linux下的信号量(Semaphore)深度解析 在多线程或多进程并发编程的领域中,确保对共享资源的安全访问和协调不同执行单元的同步至关重要。信号量(Semaphore)作为经典的同步原语之一,在 Linux 系统中扮演着核心角色。本文将深入探讨…...
【安装指南】Centos7 在 Docker 上安装 RabbitMQ4.0.x
目录 前置知识:RabbitMQ 的介绍 一、单机安装 RabbitMQ 4.0.7版本 1.1 在线拉取镜像 二、延迟插件的安装 2.1 安装延迟插件 步骤一:下载延迟插件 步骤二:将延迟插件放到插件目录 步骤三:启动延迟插件 步骤四:重启 RabbitMQ 服务 步骤五:验收成果 步骤六:手动…...
Android和iOS测试的区别有哪些?
作为移动端测试工程师,Android 和 iOS 的测试差异直接影响测试策略设计。本文从测试环境、工具链、兼容性、发布流程等维度全面解析,并附实战建议。 1. 测试环境差异 维度AndroidiOS设备碎片化高(厂商/分辨率/系统版本多样)低(仅苹果设备,版本集中)系统开放性开放(可Ro…...
spring中的@PostConstruct注解详解
基本概念 PostConstruct 是 Java EE 规范的一部分,后来也被纳入到 Spring 框架中。它是一个标记注解,用于指示一个方法应该在依赖注入完成后被自动调用。 主要特点 生命周期回调:PostConstruct 标记的方法会在对象初始化完成、依赖注入完成…...
大模型开发学习笔记
文章目录 大模型基础大模型的使用大模型训练的阶段大模型的特点及分类大模型的工作流程分词化(tokenization)与词表映射 大模型的应用 进阶agent的组成和概念planning规划子任务分解ReAct框架 memory记忆Tools工具\工具集的使用langchain认知框架ReAct框架plan-and-Execute计划…...
【android Framework 探究】pixel 5 内核编译
相关文章: 【android Framework 探究】android 13 aosp编译全记录 【android Framework 探究】android 13 aosp 全记录 - 烧录 一,环境 主机 -> Ubuntu 18.04.6 LTS 内存 -> 16GB 手机 -> pixel 5 代号redfin。kernel代号redbull 二…...
PowerBI实现点击空白处隐藏弹窗(详细教程)
PowerBI点击空白处隐藏弹窗 第五届PowerBI可视化大赛中亚军作品:金融企业智慧经营分析看板 有个功能挺好玩的:点击空白处隐藏弹窗,gif动图如下: 我们以一个案例分享下实现步骤: 第一步, 先添加一个显示按钮ÿ…...
【git】获取特定分支和所有分支
1 特定分支 1.1 克隆指定分支(默认只下载该分支) git clone -b <分支名> --single-branch <仓库URL> 示例(克隆 某一个 分支): git clone -b xxxxxx --single-branch xxxxxxx -b :指定分支…...
Windows配置grpc
Windows配置grpc 方法一1. 使用git下载grph下载速度慢可以使用国内镜像1.1 更新子模块 2. 使用Cmake进行编译2.1 GUI编译2.2 命令行直接编译 3. 使用Visual Studio 生成解决方法 方法二1. 安装 vcpkg3.配置vckg的环境变量2. 使用 vcpkg 安装 gRPC3. 安装 Protobuf4. 配置 CMake…...
【学习笔记】深入理解Java虚拟机学习笔记——第2章 Java内存区域与内存溢出异常
第2章 Java内存区域与内存溢出异常 2.1 概述 略 2.2 运行时数据区域 2.2.1 程序计数器 线程私有,记录执行的字节码位置 2.2.2 Java 虚拟机栈 线程私有,存储一个一个的栈帧,通过栈帧的出入栈来控制方法执行。 -栈帧:对应一个…...