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

Java【网络原理】(5)深入浅出HTTPS:状态码与SSL/TLS加密全解析


目录

1.前言

2.正文

2.1状态码

2.2HTTP与HTTPS的关系

2.3SSL协议

2.3.1对称加密

2.3.2非对称加密

2.3.3中间人攻击

2.3.4校验机制

2.3.4.1证书

2.3.4.2数字签名

1. 数字签名的生成过程

2. 数字签名的验证过程

2.4TLS协议(握手过程)

3.小结


1.前言

哈喽大家好吖,今天继续来给大家网络原理相关方面的讲解,主要内容包括状态码以及HTTPS中加密的全过程,让我们开始吧。

2.正文

2.1状态码

想必大家都遇到过这个画面:

这个耳熟能详的“404”,就是状态码啦。

状态码(HTTP与HTTPS互通)是服务器与客户端通信的“语言”,用3位数字直观反馈请求结果。它不仅是开发调试的核心工具,也是优化用户体验和排查问题的关键线索。

HTTP状态码https://baike.baidu.com/item/http%e7%8a%b6%e6%80%81%e7%a0%81/5053660


HTTP状态码按首位数字分为5类:

类别范围含义核心逻辑
1xx100-199信息性状态请求已被接收,需客户端继续操作
2xx200-299成功响应请求被正确处理并返回预期结果
3xx300-399重定向资源位置变化,需客户端跳转
4xx400-499客户端错误请求语法错误或权限不足
5xx500-599服务器错误服务器无法完成合法请求

在我前面SpringMVC的博文中,状态码为我们的调试工作发挥了举足轻重的作用,下面我们介绍几个比较重要的状态码。

 2xx:成功响应:

  • 200 OK
    默认成功状态,适用于GET、POST等请求。
    常见误区:

    • POST请求成功后,部分开发者误用200而非201(资源已创建)。

    • 删除操作成功后,建议返回204(无内容)而非200。

  • 201 Created
    场景:资源创建成功(如提交表单生成新订单)。
    响应头要求:必须包含 Location 字段指向新资源地址。

  • 204 No Content
    场景:请求成功但无需返回内容(如删除资源、提交无返回的表单)。
    技术细节:响应体必须为空,浏览器不会刷新页面。


4xx:客户端错误:

  • 400 Bad Request
    通用错误:请求语法错误(如JSON格式错误、缺少必填参数)。
    开发技巧:后端应返回具体错误信息(如 { "error": "Invalid email format" })。

  • 401 Unauthorized
    未认证:需身份验证(如未登录用户访问个人中心)。
    响应头要求:必须包含 WWW-Authenticate 字段定义认证方式。

  • 403 Forbidden
    无权限:身份已认证,但无权访问资源(如普通用户访问管理员页面)。
    与401的区别:401是“未证明身份”,403是“身份已知但权限不足”。

  • 404 Not Found
    资源不存在:URL路径错误或资源已被删除。
    SEO影响:过多404错误会降低网站排名,建议配置自定义404页面引导用户。

  • 429 Too Many Requests
    限流防护:客户端请求频率过高(如API防刷机制)。
    响应头要求:应包含 Retry-After 告知重试时间。


5xx:服务器错误:

  • 500 Internal Server Error
    通用服务端错误:代码异常(如未捕获的Exception、数据库连接失败)。
    开发建议:记录详细日志(如错误堆栈、请求参数),避免直接返回原始错误给客户端。

  • 502 Bad Gateway
    网关错误:代理服务器(如Nginx)无法从上游服务器(如Node.js)获取响应。
    常见原因:上游服务崩溃、防火墙拦截、请求超时。

  • 503 Service Unavailable
    服务不可用:服务器临时过载或维护(如电商大促时流量激增)。
    优化方案:返回 Retry-After 头,配合负载均衡和熔断机制。

  • 504 Gateway Timeout
    网关超时:代理服务器等待上游响应超时。
    排查方向:检查后端服务性能、数据库查询效率、网络延迟。


 2.2HTTP与HTTPS的关系

通俗理解:

HTTP(HyperText Transfer Protocol):

一种明文传输协议,数据在客户端与服务器之间以未加密形式传输,如同寄送明信片,内容对所有人可见

HTTPS(HTTP Secure):

HTTP的安全升级版,通过 SSL/TLS协议 对传输内容加密,如同将明信片装入防拆封的保险箱


横向对比HTTP与HTTPS协议:

1)数据传输安全性:

  • HTTP:数据以明文传输,容易被窃听、篡改。
  • HTTPS:通过 SSL/TLS 协议对数据进行加密传输,提供数据机密性和完整性保障。

2)端口号:

  • HTTP:默认使用端口 80。
  • HTTPS:默认使用端口 443。

3)性能:

  • HTTP:无加密过程,连接建立速度稍快。
  • HTTPS:基于 HTTP上又加了SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来实现的加密传输,加解密过程增加了计算开销,握手时间较长,但现代硬件和协议优化已使性能差距减小。 

下文我们就要展开本文的重中之重,加密的全过程了。 


2.3SSL协议

2.3.1对称加密

定义:

对称加密是一种加密方式,加密和解密使用同一个密钥。就像用同一把钥匙锁门和开门,只有持有钥匙的人才能操作。

具体步骤

  • 客户端与服务器通过TLS握手协商出一个会话密钥(Session Key)。
  • 双方使用该密钥对HTTP报文进行对称加密传输。
  • 会话结束后密钥销毁,下次连接生成新密钥。

 对称加密效率较高,但相反的安全性不足:


2.3.2非对称加密

定义

非对称加密使用一对数学关联的密钥

  • 公钥(Public Key):公开给所有人,用于加密数据(如同信箱的投递口)

  • 私钥(Private Key):严格保密,用于解密数据(如同信箱的专属钥匙)

核心特性

  1. 公钥加密 → 私钥解密:任何人都能用公钥加密数据,但只有私钥持有者能解密。

  2. 私钥签名 → 公钥验签:私钥可生成数字签名,公钥可验证签名真实性。

对称加密,成本是比较高的,不适合加密大量的数据。大量的业务数据仍然通过对称密钥来加密
对称密钥,如果数据量小则通过非对称加密的方式来传输 。

当前的场景有三个密钥:

  1. 客户端生成的对称密钥。
  2. 服务器生成的公钥,可以给所有设备告知。
  3. 服务器生成的私钥,只有自己知道 。

上述这样的流程存在重大安全隐患,黑客可以通过特殊手段,来获取到对称密钥~~ 破坏后续传输的安全性~那就是中间人攻击 。


2.3.3中间人攻击

定义

中间人攻击(Man-in-the-Middle Attack, MITM)指攻击者秘密介入通信双方之间,窃听、拦截甚至篡改数据,而通信双方对此毫无察觉。

核心原理

  1. 伪装身份:攻击者伪造通信一方的身份(如伪装成服务器或路由器)。

  2. 劫持通信:将双方的流量引导至攻击者控制的节点。

  3. 操纵数据:解密、查看或修改数据后转发给真实接收方。

通俗理解

  • 正常通信:A → 快递员 → B

  • 中间人攻击:A → 伪装成快递员的黑客 → B

虽然服务器私钥并没有被黑客获取,但请求与相应都被黑客一览无余,所以为了安全,引入了一些校验机制,其中包括证书与数字签名。 


2.3.4校验机制

在HTTPS通信中,校验机制需解决两个核心问题:

  1. 身份真实性:确保通信的服务器是合法的(防止中间人伪造)。

  2. 数据完整性:确保传输的证书和数据未被篡改。

解决方案

  • 证书 → 证明服务器身份

  • 数字签名 → 验证证书的合法性

2.3.4.1证书

一个标准的证书包含以下关键信息:

字段作用
Subject(主体)证书持有者的信息(如域名、组织名称)
Public Key服务器的公钥(用于加密数据或验证签名)
Issuer(颁发者)签发证书的权威机构(CA,如Let's Encrypt、DigiCert)
有效期证书的有效起止时间

证书颁发流程:

  1. 生成密钥对:服务器生成公钥和私钥。

  2. CSR(证书签名请求):服务器向CA提交包含公钥、域名等信息的CSR文件。

  3. CA验证身份:CA通过DNS记录、文件验证或邮件验证确认申请者对域名的控制权。

  4. 签发证书:CA用私钥对证书内容签名,生成最终证书。

先讲解完证书的概念,到下文数字签名介绍完后会讲解客户端拿到证书和数字签名会做些什么 


2.3.4.2数字签名

数字签名,本质上是一个校验和。

1. 数字签名的生成过程

  • 计算哈希值:对证书内容(除签名外)使用哈希算法生成摘要。

  • 私钥加密哈希值:CA用私钥对哈希值加密,生成数字签名。

2. 数字签名的验证过程

  • 解密签名:浏览器用CA的公钥解密签名,得到哈希值H1。

  • 重新计算哈希值:对收到的证书内容计算哈希值H2。

  • 比对哈希值:若H1=H2,则证书未被篡改;否则判定为伪造证书。

如果校验和一样,则说明收到的数据是原始数据。

验证逻辑

  • 只有CA的私钥能生成合法签名 → 签名合法则证书可信。

  • 哈希值匹配 → 证书内容未被篡改。

客户端如何确保拿到的 pub2是公证机构的 pub2,而不是黑客伪造的 pub2 呢??
pub2就不是通过网络传输的,而是操作系统中内置的~(安装好系统,系统就内置了一系列知名公正机构的公钥)只要安装正版系统,不是黑客搞的盗版系统就可以信任 pub2 是正确合法的~

如果黑客想要直接修改证书中的公钥为自己的公钥,此时就会导致客户端计算的校验和和解密出来的原始校验和就对不上。
此时客户端就会报错,浏览器就会弹出一个红色的页面,告诉你该网站不安全,是否要继续访问。


2.4TLS协议(握手过程)

概念

TLS(Transport Layer Security)是SSL的继任者,用于在互联网上建立加密通信通道,解决三大核心问题:

  1. 保密性:数据加密传输(防窃听)。

  2. 完整性:数据未被篡改(防篡改)。

  3. 真实性:验证通信方身份(防伪装)。

握手流程解析:

  1. 客户端发送 ClientHello 消息给服务器,包含客户端支持的 SSL/TLS 版本、加密套件列表以及一个随机数(Client Random)
  2. 服务器响应 ServerHello 消息,包含服务器选定的 SSL/TLS 版本、加密套件以及另一个随机数(Server Random)
  3. 服务器发送证书(Certificate)给客户端,证书包含服务器的公钥以及由受信任的证书颁发机构(CA)签名的数字证书。
  4. 如果服务器需要客户端认证,则请求客户端证书(Client Certificate Request)。
  5. 服务器发送 ServerHelloDone 消息,表示握手的初步消息已经发完。
  6. 客户端验证服务器证书,如果证书有效,它会生成一个预主密钥(Pre-Master Secret),并使用服务器的公钥加密这个预主密钥,把它发送给服务器。
  7. 服务器使用私钥解密预主密钥,客户端和服务器使用约定好的算法计算出主密钥(MasterSecret)。
  8. 客户端发送 ChangeCipherSpec 消息,表示后续的通信将使用协商好的密钥和加密算法。
  9. 客户端发送 Finished 消息,包含使用主密钥计算的握手消息摘要,以确认握手的完整性。
  10. 服务器发送 ChangeCipherSpec 消息,也表示后续通信将使用协商好的密钥和加密算法.。
  11. 服务器发送 Finished 消息,包含使用主密钥计算的握手消息摘要,双方握手完成,后续通信开始使用对称加密进行。

(部分内容参考面试鸭)

握手过程中的安全机制

1. 防中间人攻击

  • 证书验证:确保服务器公钥未被伪造。

  • 签名验证:Server Key Exchange消息中的参数由服务器私钥签名。

2. 前向保密(Perfect Forward Secrecy, PFS)

  • 原理:每次会话使用临时密钥(如ECDHE),即使长期私钥泄露,历史通信仍安全。

  • 启用条件:使用ECDHE密钥交换算法。

3. 防重放攻击

  • 随机数(Client/Server Random):确保每次会话密钥唯一。

  • Finished消息:验证握手过程完整性。

3.小结

今天的分享到这里就结束了,喜欢的小伙伴点点赞点点关注,你的支持就是对我最大的鼓励,大家加油!

相关文章:

Java【网络原理】(5)深入浅出HTTPS:状态码与SSL/TLS加密全解析

目录 1.前言 2.正文 2.1状态码 2.2HTTP与HTTPS的关系 2.3SSL协议 2.3.1对称加密 2.3.2非对称加密 2.3.3中间人攻击 2.3.4校验机制 2.3.4.1证书 2.3.4.2数字签名 1. 数字签名的生成过程 2. 数字签名的验证过程 2.4TLS协议(握手过程) 3.小结…...

《全球短剧正版授权通道,助力平台出海与流量变现》

正版短剧片源授权,全方位赋能您的内容运营 短剧作为短视频领域的一种重要形式,凭借其紧凑的剧情、鲜明的角色和引人入胜的叙事方式,赢得了广大观众的喜爱。 然而,在短剧市场蓬勃发展的同时,版权问题也日益凸显。为了保…...

17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--ELK

在微服务中,日志是非常重要的组成部分。它不仅可以帮助我们排查问题,还可以帮助我们分析系统的性能和使用情况。ELK(Elasticsearch、Logstash、Kibana)是一个强大的日志分析工具,可以帮助我们收集、存储和分析日志数据…...

Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 0.准备 1)防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config (很不好的…...

DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南

引言 在数字化转型的浪潮中,数据已成为企业的核心资产。然而,数据孤岛、冗余和不一致问题严重制约了数据价值的释放。DAMA(数据管理协会)提出的参考数据(Reference Data)与主数据(Master Data&…...

Python+OpenCV打造AR/VR基础框架:从原理到实战的全链路解析

引言:重新定义数字与现实的边界 在元宇宙概念持续升温的当下,AR(增强现实)与VR(虚拟现实)技术正成为连接物理世界与数字世界的桥梁。Python凭借其丰富的计算机视觉生态(尤其是OpenCV库&#xf…...

PaddleOCR本地部署

构建TestPaddle目录: TestPaddle/ └── PaddleOCR ├── ocr_server.py ├── ch_PP-OCRv4_det_infer.tar ├── ch_PP-OCRv4_rec_infer.tar └── 001.jpg1、安装PaddleOCR 安装 PaddleOCR git clone https://github.com/PaddlePaddle/PaddleOCR.git cd …...

Spring事务融入(REQUIRED)具体实现步骤解析

Spring事务融入(REQUIRED传播行为)是Spring事务管理中最核心的机制,下面我将深入剖析其具体实现步骤和关键代码逻辑。 1. 整体流程概览 事务融入(REQUIRED)的核心逻辑是: 检查当前线程是否存在事务 存在则融入(加入)该事务 不存在则创建新事务 2. …...

Java 开发者 Linux 学习指南

目录 一、引言:为什么 Java 开发者必须掌握 Linux 二、Linux 基础:核心概念与常用命令 (一)文件系统与目录结构 (二)权限体系与用户管理 (三)进程管理与监控 三、在 Linux 上安…...

2025年PMP 学习七 -第5章 项目范围管理 (5.4,5.5,5.6 )

2025年PMP 学习七 -第5章 项目范围管理 5.4 创建 WBS 1.定义与作用 定义把项目可交付成果和项目工作分解成较小的,更易于管理的组件作用对所要交付的内容提供一个结构化的视图 2.输入,输出,工具与技术 3. 创建WBS的依据(输入&…...

【LangChain全景指南】构建下一代AI应用的开发框架

目录 🌟 前言🏗️ 技术背景与价值🚧 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🧩 关键技术模块说明⚖️ 技术选…...

Linux系统:虚拟文件系统与文件缓冲区(语言级内核级)

本节重点 初步理解一切皆文件理解文件缓冲区的分类用户级文件缓冲区与内核级文件缓冲区用户级文件缓冲区的刷新机制两级缓冲区的分层协作 一、虚拟文件系统 1.1 理解“一切皆文件” 我们都知道操作系统访问不同的外部设备(显示器、磁盘、键盘、鼠标、网卡&#…...

Linux进程间信号

目录 信号入门 生活角度中的信号 技术应用角度的信号 信号的发送与记录 信号处理常见方式概述 产生信号 通过终端按键产生 通过系统函数向进程发信号 由软件条件产生信号 由硬件异常产生信号 阻塞信号 信号其他相关常见概念 在内核中的表示 sigset_t 信号集操作…...

数据分析2

五、文件 CSV Comma-Separated Value,逗号分割值。CSV文件以纯文本形式存储表格数据(数字和文本)。 CSV记录间以某种换行符分隔,每条记录由字段组成,字段间以其他字符或字符串分割,最常用逗号或制表符。…...

每日一题:两个仓库的最低配送费用问题

文章目录 两个仓库的最低配送费用问题一、问题描述二、解题思路(一)初始假设(二)差值定义(三)选择最优(四)计算答案 三、代码实现四、代码分析(一)输入处理&a…...

SemanticSplitterNodeParser 和 Sentence-BERT 的区别和联系是什么

这涉及到文本切分(chunking)与语义向量(embedding)之间的关系。我们来详细对比: ✅ 1. SemanticSplitterNodeParser 是什么? SemanticSplitterNodeParser 是 llama-index 提供的一种 语义感知的文本切分工…...

Fabric系列 - SoftHSM 软件模拟HSM

在 fabric-ca-server 上使用软件模拟的 HSM(密码卡) 功能 安装 SoftHSMv2 教程 SoftHSMv2 默认的配置文件 /etc/softhsm2.conf默认的token目录 /var/lib/softhsm/tokens/ 初始化和启动fabric-ca-server,需要设置一个管理员用户的名称和密码 初始化令牌 # 初始…...

简易图片编辑工具,支持抠图和替换背景

软件介绍 Photo Retouch是一款由微软官方商店推出的免费图片处理软件,具有抠图、换背景、修复等功能,操作便捷且效率极高,非常值得尝试。 功能详解 这款软件提供五大功能,包括删除物体、快速修复、一键抠图、背景调整和裁剪…...

CountDownLatch 并发编程中的同步利器

CountDownLatch 并发编程中的同步利器 文章目录 CountDownLatch 并发编程中的同步利器一、CountDownLatch 基础概念1.1 什么是 CountDownLatch?1.2 CountDownLatch 的核心方法1.3 基本使用示例 二、CountDownLatch 实战应用2.1 应用场景一:并行任务协调2…...

C++GO语言微服务之用户信息处理

目录 01 01-微服务实现用户注册-微服务端-上 02 02-微服务实现用户注册-微服务端-下 03 03-微服务实现用户注册-web端 04 04-微服务实现用户注册-web端-流程小结 05 05-获取地域信息-读MySQL写Redis入 06 06-获取地域信息-先查redis-没有读MySQL写入 01 07-Cookie简介 0…...

互联网大厂Java求职面试实战:Spring Boot微服务与数据库优化详解

💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

Linux基本指令(一)

目录 基本指令 pwd指令 cd指令 cd ..​编辑 cd ~ ls指令 ls -l ls -a ls -d touch指令 mkdir指令 rmdir指令 && rm 指令 操作系统是什么呢?一个好的操作系统要具备什么条件呢? 简单来说,操作系统是是一款做软硬件管理的软…...

Java—— 集合 List

List集合的特点 有序:存和取的元素顺序一致 有索引:可以通过索引操作元素 可重复:存储的元素可以重复 List集合的方法 Collection的方法List都继承了,可以使用Collection中的方法 此外,List集合因为有索引,…...

使用谱聚类将相似度矩阵分为2类

使用谱聚类将相似度矩阵分为2类的步骤如下: 构建相似度矩阵:提供的1717矩阵已满足对称性且对角线为1。 计算度矩阵:对每一行求和得到各节点的度,形成对角矩阵。 计算归一化拉普拉斯矩阵:采用对称归一化形式 LsymI−D…...

【Bootstrap V4系列】学习入门教程之 组件-表单(Forms)高级用法(二)

Bootstrap V4系列 学习入门教程之 组件-表单(Forms)高级用法(二) 表单(Forms)高级用法(二)一、Help text 帮助文本二、Disabled forms 禁用表单三、Validation 验证3.1 How it works…...

【许可证】Open Source Licenses

长期更新 扩展:shield.io装饰 开源许可证(Open Source Licenses)有很多种,每种都有不同的授权和限制,适用于不同目的。 默认的ISC🟰MIT License是否可商用是否要求开源衍生项目是否必须署名是否有专利授权…...

RT-Thread 深入系列 Part 7:RT-Thread vs 其他 RTOS 对比与选型指南

摘要 本文对比 RT-Thread、FreeRTOS、Zephyr、uC/OS、Mbed OS 等主流嵌入式操作系统,从功能特性、社区生态、学习成本、商业支持、安全性和典型应用场景六个维度进行详尽对比,并给出不同项目类型下的选型建议,帮助你为下一个嵌入式项目做出最合适的决策。 目录 功能特性对比…...

每天五分钟机器学习:KTT条件

本文重点 在前面的课程中,我们学习了拉格朗日乘数法求解等式约束下函数极值,如果约束不是等式而是不等式呢?此时就需要KTT条件出手了,KTT条件是拉格朗日乘数法的推广。KTT条件不仅统一了等式约束与不等式约束的优化问题求解范式,KTT条件给出了这类问题取得极值的一阶必要…...

金融学知识笔记

金融学知识笔记 一、引言 金融学它结合了数学、概率论、统计学、经济学和计算机科学等多学科的知识,用于解决金融领域中的各种问题,如金融衍生品定价、投资组合优化、风险管理和固定收益证券分析等。通过对金融学的学习,我们可以更好地理解…...

Web3 实战项目项目部署到 GitHub 和上线预览的完整指南

目录 🚀 一、部署到 GitHub ✅ 前置准备 🧱 部署步骤: 1. 创建一个 GitHub 仓库 2. 上传项目文件 方法一:使用 Git 命令行 方法二:直接上传 🌐 二、通过 GitHub Pages 免费上线 DApp(前端…...

嵌入式开发学习(阶段二 C语言基础)

C语言:第05天笔记 内容提要 分支结构 条件判断用if语句实现分支结构用switch语句实现分支结构 分支结构 条件判断 条件判断:根据某个条件成立与否,决定是否执行指定的操作。 条件判断的结果是逻辑值,也就是布尔类型值&#…...

【沉浸式求职学习day35】【Tomcat安装、配置】【Http简述】

😩😩😩,真的每天忙死,感觉自己精神上压力真的很大,希望我的努力能够激励到你们~ 沉浸式求职学习 Tomcat1.安装2.Tomcat启动和配置3.配置高难度面试题 4.发布一个web网站5.Http1.什么是HTTP2.两个时代3.Htt…...

基于大模型的新型隐球菌脑膜炎智能诊疗全流程系统设计与实现的技术方案文档

目录 一、术前风险预测系统1. 多模态融合模型架构2. 风险预测流程图(Mermaid)二、麻醉剂量预测系统1. 靶控输注(TCI)模型2. 麻醉方案优化流程图(Mermaid)三、术后并发症预测模型1. 时序预测模型(LSTM)2. 并发症预测流程图(Mermaid)四、健康教育管理模块1. 移动健康(…...

如何实现PLC远程编程

1. 什么是PLC编程 PLC编程是指为可编程逻辑控制器(Programmable Logic Controller,PLC)编写控制逻辑的过程。PLC是一种工业自动化控制设备,广泛应用于制造业、机械控制、流水线、电力系统等领域,用于替代传统的继电器…...

Go基于plugin的热更新初体验

背景 对于一个部署在生产环境的项目来说,我们希望当代码出现bug的时候,可以不用重启进程而达到动态修改代码的目的—— 这就是代码热部署! 使用java做游戏服务器,最大的好处是,当代码出现bug,可以直接热…...

【STM32 学习笔记】I2C通信协议

注:通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强, 不需要USART、CAN等通讯协议的外部收发设备,现在被广…...

RAG与语义搜索:让大模型成为测试工程师的智能助手

引言 AI大模型风头正劲,自动生成和理解文本的能力让无数行业焕发新生。测试工程师也不例外——谁不想让AI自动“看懂需求、理解接口、生成用例”?然而,很多人发现:直接丢问题给大模型,答案貌似“懂行”,细…...

Nakama:让游戏与应用更具互动性和即时性

在现代游戏和应用程序开发中,实现社交互动和实时功能已成为用户体验的核心需求。为满足这种需求,许多开发者正转向分布式服务器技术,在这些技术中,Nakama 构建起了一座桥梁。Nakama 是一个开源的分布式服务器,专门为社…...

[Spring AOP 7] 动态通知调用

动态通知调用 本笔记基于黑马程序员 Spring高级源码解读 更美观清晰的版本在:Github 注意:阅读本章内容之前,建议先熟悉静态通知调用的内容 在静态通知调用一节中,我们还有一个悬而未决的问题。 我们谈到了调用链MethodInvocation…...

Redis 集群

集群基本介绍 广义的集群,只要是多个机器构成了分布式系统,都可以称为是一个“集群”(主从模式,哨兵模式) 狭义的集群,Redis 提供的集群模式,在这个模式下主要解决的是存储空间不足的问题&…...

【Redis】基础命令数据结构

文章目录 基础命令keysexistsdelexpirettltype 数据结构和内部编码 在介绍数据类型前先介绍一下 Redis 的基础命令,方便理解 基础命令 keys 返回所有满足样式(pattern)的 key keys pattern 当前有如下 key PS:实际开发环境和生…...

C++(6):逻辑运算符

目录 1. 代码示例 示例 1:基础用法 示例 2:条件判断 2. 短路求值(Short-Circuit Evaluation) 代码示例 3. 实际应用场景 场景 1:输入合法性验证 场景 2:游戏状态判断 4. 注意事项 逻辑运算符用于组…...

项目管理从专家到小白

敏捷开发 Scrum 符合敏捷开发原则的一种典型且在全球使用最为广泛的框架。 三个角色 产品负责人Product Ower:专注于了解业务、客户和市场要求,然后相应地确定工程团队需要完成的工作的优先顺序。 敏捷教练Scrum Master:确保 Scrum 流程顺…...

AI绘画灵感觉醒指南:从灵感源泉到创意输出

目录 一、引言 二、灵感来源 2.1 现实生活 2.2 其他艺术作品 2.3 文学作品 三、灵感转化为输入提示 3.1 明确主题与核心元素 3.2 细化描述 3.3 使用修饰词与专业术语 3.4 组合与优化提示词 四、案例分析 4.1 从现实生活获取灵感 4.2 从其他艺术作品获取灵感 4.3 …...

【Java学习】枚举(匿名类详解)

目录 一、匿名类 1.形式 2.性质 2.1匿名性 2.1.1同步性 使用场景 2.1.2复用性 2.1.3向上转型 2.2实现性 3.传参 3.1构造传全参 3.1.1过程 3.1.2效果 2.1.4原子类构造无参 4.权限 二、枚举类 1.枚举常量 2.性质 2.1多态性 2.2单例性 2.2.1private保护 2.2…...

力扣题解:2、两数相加

个人认为,该题目可以看作合并两个链表的变种题,本题与21题不同的是,再处理两个结点时,对比的不是两者的大小,而是两者和是否大于10,加法计算中大于10要进位,所以我们需要声明一个用来标记是否进…...

PyTorch API 9 - masked, nested, 稀疏, 存储

文章目录 torch.randomtorch.masked简介动机什么是 MaskedTensor? 支持的运算符一元运算符二元运算符归约操作查看与选择函数 torch.nested简介构造方法数据布局与形状支持的操作查看嵌套张量的组成元素填充张量的相互转换形状操作注意力机制 与 torch.compile 的配…...

linux测试硬盘读写速度

#!/bin/bash # 文件名: disk_rate.sh # linux测试硬盘读写速度 TEST_FILE"disk_speed_test.tmp" TEST_SIZE"1024M" echo "开始测试磁盘写入速度..." WRITE_RESULT$(dd if/dev/zero of$TEST_FILE bs$TEST_SIZE count1 oflagdirect 2…...

单片机系统设计不同开发方式的优缺点(面包板,洞洞板,PCB板)

目录 快速验证代码逻辑 涉及具体电路较多 涉及高频电路 快速验证代码逻辑 面包板,无焊接,适合快速搭建临时电路。优点应该是使用方便,不需要焊接,可以随时更换元件。但缺点可能是不稳定,接触不良,不适合高…...

数字信号处理|| 快速傅里叶变换(FFT)

一、实验目的 (1)加深对快速傅里叶变换(FFT)基本理论的理解。 (2)了解使用快速傅里叶变换(FFT)计算有限长序列和无限长序列信号频谱的方法。 (3)掌握用MATLA…...