计算机网络面经(一)
以下为个人总结,图源大部分会来自网络和JavaGuide
网络分层模型
OSI七层模型
各层的常见协议
- 应用层 用户接口 HTTP, FTP, SMTP, DNS
- 表示层 数据格式转换 SSL/TLS, JSON, JPEG
- 会话层 会话管理 NetBIOS, RPC, SSH
- 传输层 端到端通信 TCP, UDP, QUIC
- 网络层 路由寻址 IP, ICMP, OSPF, BGP
- 数据链路层 帧传输 Ethernet, Wi-Fi, ARP
- 物理层 比特流传输 Ethernet, USB, 光纤
层间通信
发送方(封装):
应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层
Message → 加密 → 会话ID → TCP头 → IP头 → 帧头/尾 → 比特流
接收方(解封装):
物理层 → 数据链路层 → 网络层 → 传输层 → 会话层 → 表示层 → 应用层
比特流 → 帧解析 → 路由检查 → 端口分配 → 会话恢复 → 解密 → 用户数据
TCP/IP四层模型
- 应用层 直接为用户应用提供服务。HTTP、FTP、DNS、SMTP、SSH。
- 传输层 提供端到端的可靠或不可靠数据传输。TCP、UDP。
- 网络层 实现主机到主机的逻辑寻址和路由。封装数据为IP数据报,包含源/目的IP地址。IP、ICMP、IGMP。
- 网络接口层 负责在物理网络中传输数据帧。 以太网、Wi-Fi、ARP。
层间通信
发送端:
应用层 → 传输层 → 网络层 → 网络接口层
应用层数据 → [TCP头]+数据 → [IP头]+TCP段 → [帧头]+IP包+[帧尾] → 网络传输
接收端:
网络接口层 → 网络层 →传输层 → 应用层
网络传输 → 移除帧头/尾 → 移除IP头 → 移除TCP头 → 应用层数据
TCP相关
TCP的三次握手
- 第一次握手(SYN)
客户端发送 SYN=1(同步标志位),并随机生成一个初始序列号 seq=x。
目的:向服务器发起连接请求,并告知自己的初始序列号。
此时客户端进入 SYN_SENT 状态。 - 第二次握手(SYN+ACK)
服务器收到 SYN 后,回复 SYN=1 和 ACK=1(确认标志位),同时生成自己的初始序列号 seq=y,并确认客户端的序列号 ack=x+1。
目的:确认客户端的 SYN,并告知自己的初始序列号。
此时服务器进入 SYN_RCVD 状态。 - 第三次握手(ACK)
客户端收到 SYN+ACK 后,发送 ACK=1,确认服务器的序列号 ack=y+1,并携带自己的序列号 seq=x+1(因为第一次握手的 SYN 占用一个序号)。
目的:确认服务器的 SYN,完成双向连接建立。
此时双方进入 ESTABLISHED 状态,可以开始数据传输。
为什么需要三次握手?
- 确认双方的收发能力
第一次握手:服务器确认客户端能发。
第二次握手:客户端确认服务器能收和发。
第三次握手:服务器确认客户端能收。 - 防止历史重复连接初始化导致的资源浪费
如果是两次握手,服务器可能因收到延迟的旧 SYN 请求而误建连接,而客户端实际不需要。 - 同步初始序列号(ISN)
双方通过三次握手交换初始序列号,确保数据按序传输。
两次握手可以吗?
不行,服务器无法确认客户端是否收到自己的 SYN+ACK,可能导致半连接(服务器已就绪,客户端未就绪)。
四次握手可以吗?
如果改成四次握手(例如:客户端再发一个 ACK 确认服务器的 ACK),实际上是冗余的,因为第三次握手已经能确保双方通信正常,额外的确认不会带来更多好处,只会增加延迟。
四次挥手
- 第一次挥手(FIN)
客户端发送 FIN=1(终止标志位)和序列号 seq=u,表示客户端没有数据要发送了,请求关闭连接。
客户端状态:FIN_WAIT_1(等待服务器的 ACK)。
注意:此时客户端仍可以接收数据(因为 TCP 是全双工的)。 - 第二次挥手(ACK)
服务器收到 FIN 后,回复 ACK=1 和确认号 ack=u+1,表示已收到客户端的关闭请求。
服务器状态:CLOSE_WAIT(等待服务器应用层处理完剩余数据)。
客户端状态:收到 ACK 后进入 FIN_WAIT_2(等待服务器的 FIN)。 - 第三次挥手(FIN)
服务器处理完剩余数据后,发送 FIN=1 和 seq=v(可能是新的序列号),表示服务器也没有数据要发送了,请求关闭连接。
服务器状态:LAST_ACK(等待客户端的最终 ACK)。 - 第四次挥手(ACK)
客户端收到 FIN 后,发送 ACK=1 和 ack=v+1,表示确认服务器的关闭请求。
客户端状态:进入 TIME_WAIT(等待 2MSL 后彻底关闭)。
服务器状态:收到 ACK 后立即关闭连接。
为什么需要四次挥手?
- TCP 是全双工的,双方可以独立关闭连接:
- 客户端主动关闭(第一次挥手)→ 服务器确认(第二次挥手).
- 服务器可能还有数据要发送,不能立即关闭。
- 服务器处理完数据后主动关闭(第三次挥手)→ 客户端确认(第四次挥手)。
如果改成三次挥手?
- 服务器没有需要发送的消息时,可能会退化为三次挥手。
- 但是如果将所有的四次挥手改为三次挥手会导致:
- 服务器无法在确认客户端 FIN 后继续发送剩余数据。
- 可能造成数据丢失或不完整关闭。
为什么客户端需要 TIME_WAIT 状态?
- 等待 2MSL(Maximum Segment Lifetime,报文最大生存时间),确保:
- 服务器收到最后的 ACK(如果丢失,服务器会重传 FIN)。
- 让网络中残留的旧 TCP 报文失效,避免影响新连接。
- 默认 2MSL 时间:Linux 通常为 60 秒,Windows 为 4 分钟。
为什么服务器需要 CLOSE_WAIT 状态?
- 允许服务器处理剩余数据
当客户端发送 FIN 请求关闭连接时,服务器可能仍有数据需要发送(如未传完的文件、数据库查询结果等)。
CLOSE_WAIT 状态让服务器有机会继续发送剩余数据,而不是立即关闭连接。 - 确保应用程序正确释放资源
服务器需要等待应用程序(如 HTTP 服务器、数据库服务)处理完所有逻辑后,主动调用 close() 或 shutdown() 来发送自己的 FIN。
如果直接跳过 CLOSE_WAIT,可能导致:数据丢失(如未发送完的响应)和资源泄漏(如未关闭的文件句柄、数据库连接)。
CLOSE_WAIT 可能引发的问题
连接泄漏(大量 CLOSE_WAIT 堆积)
原因:服务器应用程序未正确调用 close(),导致 CLOSE_WAIT 状态长期存在。
后果:占用系统资源(文件描述符、内存)。最终导致服务器无法接受新连接(Too many open files)。
TCP的拥塞控制
慢启动、拥塞避免、快重传、快恢复
- 慢启动(Slow Start)
目的:初始阶段快速探测可用带宽。
规则:初始拥塞窗口(cwnd)通常为 1 MSS(Maximum Segment Size)。每收到一个 ACK,cwnd 指数增长(cwnd *= 2)。直到 cwnd 达到慢启动阈值(ssthresh)或发生丢包。 - 拥塞避免(Congestion Avoidance)
目的:接近网络容量时转为线性增长,避免激进引发拥塞。
规则:当 cwnd >= ssthresh 时,每 RTT(往返时间)cwnd += 1 MSS。增长速率从指数变为线性。 - 快速重传(Fast Retransmit)
目的:避免等待超时,快速恢复丢失的包。
规则:如果发送方收到 3 个重复 ACK(DupACK),立即重传丢失的包。无需等待超时计时器(RTO)到期。 - 快速恢复(Fast Recovery)
目的:在快速重传后避免重置 cwnd,保持较高吞吐量。
规则:发生快速重传后,ssthresh = cwnd / 2,cwnd = ssthresh + 3 MSS。每收到一个 DupACK,cwnd += 1 MSS(允许发送新数据)。收到新数据的 ACK 后,退出快速恢复,进入拥塞避免阶段。
TCP和UDP的区别
- TCP:面向连接,需三次握手建立可靠通道。确保数据可靠传输(确认、重传、排序)。通过滑动窗口和拥塞算法(如慢启动)优化传输。头部较大(至少20字节),延迟较高。字节流模式,无固定边界。
- UDP:无连接,直接发送数据包。不保证可靠性,可能丢包或乱序。无控制机制,全速发送。头部仅8字节,开销小,延迟低。:保留数据报边界,接收与发送一致。
TCP的粘包和拆包
-
粘包 (Packet Sticking)
定义:发送方发送的多个数据包被接收方当作一个数据包接收 -
拆包 (Packet Splitting)
定义:发送方发送的一个数据包被接收方拆分成多个数据包接收
产生原因
-
共同原因
- TCP是面向流的协议:没有消息边界概念,数据被视为字节流
- 滑动窗口机制:为提高效率可能合并或拆分数据包
-
粘包特定原因
- Nagle算法:合并小包减少网络传输次数
- 发送方快速连续发送小包:内核缓冲区可能合并
-
拆包特定原因
- 数据包大于MSS(最大报文段长度):TCP必须拆分
- 数据包大于接收缓冲区:应用层读取时可能分多次
- 网络设备限制:某些网络设备对包大小有限制
解决方案
- 消息定长法:每个消息固定长度,不足补位
- 分隔符法:使用特殊字符作为消息边界
- 长度前缀法:在消息前添加长度字段,通常使用固定字节表示长度(如4字节)
HTTP相关
HTTP/1.0
- 特点
短连接:每个请求/响应后关闭 TCP 连接(高延迟)。
无状态:每次请求需携带完整头部(无 Host 字段,无法支持虚拟主机)。 - 基础功能:支持 GET、POST、HEAD 方法。
- 缺点
性能差:频繁建立 TCP 连接,高延迟。
无 Host 头:无法区分同一 IP 的不同域名。
HTTP/1.1
- 改进
持久连接(Keep-Alive):默认复用 TCP 连接,减少握手开销。
管道化(Pipelining):允许连续发送多个请求(但响应必须按序返回,易阻塞)。
Host 头:支持虚拟主机(一个 IP 托管多个网站)。
分块传输(Chunked Encoding):支持流式传输大文件。
缓存控制:新增 Cache-Control、ETag 等头部。 - 缺点
队头阻塞(Head-of-Line Blocking):同一连接中,前一个请求未完成会阻塞后续请求。
头部冗余:每次请求携带重复头部(如 Cookie、User-Agent)。
HTTP/2
- 改进
二进制协议:替代文本格式,解析更高效。
多路复用(Multiplexing):单个连接并行传输多个请求/响应,解决队头阻塞。
头部压缩(HPACK):减少冗余头部大小。
服务器推送(Server Push):服务器可主动推送资源(如 CSS/JS)。
流优先级:允许设置请求优先级。 - 缺点
仍依赖 TCP:TCP 层的队头阻塞问题未解决(如丢包导致所有流等待重传)。
握手延迟:TLS 非强制(但主流浏览器要求 HTTPS)。
HTTP/3
- 改进
基于 QUIC 协议:运行在 UDP 上,替代 TCP。
0-RTT 握手:减少连接建立时间。
内置加密:默认使用 TLS 1.3。
解决 TCP 队头阻塞:每个流独立传输,丢包不影响其他流。
改进的多路复用:更高效的资源并行加载。 - 缺点
部署复杂:需要服务器和客户端支持 QUIC(如 Cloudflare、Nginx 已支持)。
UDP 被某些网络限制:可能被防火墙拦截。
HTTPS(HTTP + TLS/SSL)
- 特点
加密传输:使用 TLS/SSL 加密数据,防止窃听和篡改。
身份验证:通过证书验证服务器身份。
混合加密:非对称加密(握手) + 对称加密(数据传输)。 - 与 HTTP 的关系
可搭配任何 HTTP 版本(如 HTTPS/1.1、HTTPS/2)。
HTTP/3 默认加密(QUIC 内置 TLS 1.3)。
HTTPS 连接建立流程
- TCP 三次握手
客户端与服务器建立 TCP 连接(SYN → SYN-ACK → ACK)。 - TLS 握手
- Client Hello:客户端发送支持的加密算法列表和随机数(Client Random)。
- Server Hello:服务器选择加密算法,返回随机数(Server Random)和数字证书(含公钥)。
- 验证证书:客户端用 CA 公钥验证证书真实性。
- 密钥交换:
- 客户端生成 Pre-Master Key,用服务器公钥加密后发送。
- 双方通过 Client Random + Server Random + Pre-Master Key 生成会话密钥(对称加密密钥)。
- 加密通信
使用会话密钥加密传输 HTTP 数据,防止窃听和篡改。
相关文章:
计算机网络面经(一)
以下为个人总结,图源大部分会来自网络和JavaGuide 网络分层模型 OSI七层模型 各层的常见协议 应用层 用户接口 HTTP, FTP, SMTP, DNS表示层 数据格式转换 SSL/TLS, JSON, JPEG会话层 会话管理 NetBIOS, RPC, SSH传输层 端到端通信 TCP, UDP, QUIC网络层 路由寻址…...
k8s日志管理
k8s日志管理 k8s查看日志查看集群中不是完全运行状态的pod查看deployment日志查看service日志进入pod的容器内查看日志 管理k8s组件日志kubectl logs查看日志原理 管理k8s应用日志收集k8s日志思路收集标准输出收集容器中日志文件 k8s查看节点状态失败k8s部署prometheus监控 k8s…...
Netty源码—10.Netty工具之时间轮二
大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务和执行任务 8.HashedWheelTimer的完整源码 9.HashedWheelTimer的总结…...
Baklib激活企业知识管理新动能
Baklib核心技术架构解析 Baklib的底层架构以模块化设计为核心,融合知识中台的核心理念,通过分布式存储引擎与智能语义分析系统构建三层技术体系。数据层采用多源异构数据接入协议,支持文档、音视频、代码片段等非结构化数据的实时解析与分类…...
CSP-J/S冲奖第21天:插入排序
一、插入排序概念 1.1 生活中的类比 • 扑克牌排序:就像整理手中的扑克牌,每次将一张牌插入到已排好序的牌中合适位置 • 动态演示: 初始序列:[5, 2, 4, 6, 1, 3] 排序过程: → [2, 5, 4, 6, 1, 3] → [2, 4, 5, 6, …...
Jest系列二之基础实践
Jest基础实践 官方文档地址:https://jest.nodejs.cn/docs 生命周期 在 Jest 中,生命周期方法大致分为两类:下面所罗列的生命周期方法,也是全局方法,不需要引入,直接就可以使用。 重复性的生命周期方法&…...
Scikit-learn全攻略:从入门到工业级应用
Scikit-learn全攻略:从入门到工业级应用 引言:Scikit-learn在机器学习生态系统中的核心地位 Scikit-learn作为Python最受欢迎的机器学习库,已成为数据科学家的标准工具集。根据2023年Kaggle调查报告,超过83%的数据专业人士在日常工作中使用Scikit-learn。本文将系统性地介…...
基于Python的图书馆信息管理系统研发
标题:基于Python的图书馆信息管理系统研发 内容:1.摘要 在数字化信息快速发展的背景下,传统图书馆管理方式效率低下,难以满足日益增长的信息管理需求。本研究旨在研发一款基于Python的图书馆信息管理系统,以提高图书馆信息管理的效率和准确性…...
Pytorch学习笔记(十七)Image and Video - Adversarial Example Generation
这篇博客瞄准的是 pytorch 官方教程中 Image and Video 章节的 Adversarial Example Generation 部分。 官网链接:https://pytorch.org/tutorials/beginner/fgsm_tutorial.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取码: …...
基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法
基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法 已经弃用的版本(Version 10.3-2021.10):gcc-arm-none-eabi:https://developer.arm.com/downloads/-/gnu-rmArm GNU Toolchain当前版本:https://developer.a…...
Ubuntu系统Docker安装失败
问题: 1. 删除错误的 Docker 源 sudo rm -rf /etc/apt/sources.list.d/docker.list sudo rm -rf /etc/apt/keyrings/docker.gpg 2. 重新添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | …...
鸿蒙学习手册(HarmonyOSNext_API16)_数据持久化②:键值型数据库
概述 键值型数据库就像一个大抽屉柜,每个抽屉都有一个唯一的标签(键),里面可以放任何东西(值)。当你需要存或取东西时,直接看标签拿对应的抽屉就行,不用管其他抽屉里有什么。这种简…...
多线程 - 线程安全 2 -- > 死锁问题
目录 小结复习: 线程安全: 如何解决线程安全问题? synchronized “死锁” 死锁的三种经典场景: 1. 一个线程,一把锁。 2.两个线程,两把锁。 3. N 个线程 M 把锁 完! 小结复习:…...
JavaScript函数详解
目录 一、函数的基础概念 1. 函数的定义方式 2. 函数的参数处理 3.匿名函数与立即执行函数 4.同名函数与函数提升 二、函数的作用域与闭包 1. 作用域(Scope) 2. 闭包(Closure) 三、高阶函数与函数式编程 1. 高阶函数 2…...
Python-八股总结
目录 1 python 垃圾处理机制2 yield3 python 多继承,两个父类有同名方法怎么办?4 python 多线程/多进程/协程4.1 多线程与GIL全局解释器锁4.2 多进程4.3 协程 5 乐观锁/悲观锁6 基本数据结构**1. 列表(List)****2. 元组࿰…...
整合分块请求大模型返回的测试用例及小工具显示bug修复
在之前的分块发送需求数据给大模型进行测试用例生成时,由于数据结构的改变,需要对分块的回复进行整合,正确的整合是保障系统稳定性和功能正确性的核心。随着测试需求的复杂化,这对测试工程师提出了更高的整合和管理要求。本文将为…...
记一道CTF题—PHP双MD5加密+”SALT“弱碰撞绕过
通过分析源代码并找到绕过限制的方法,从而获取到flag! 部分源码: <?php $name_POST[username]; $passencode(_POST[password]); $admin_user "admin"; $admin_pw get_hash("0e260265122865008095838959784793");…...
stm32F103RCT6 FLASH模拟EEPROM 读写32位数据
#include “stm32flash.h” #ifndef __STMFLASH_H__ #define __STMFLASH_H__ #include "main.h" #define</...
Spring Data审计利器:@LastModifiedDate详解!!!
🕒 Spring Data审计利器:LastModifiedDate详解🔥 🌟 简介 在数据驱动的应用中,记录数据的最后修改时间是常见需求。Spring Data的LastModifiedDate注解让这一过程自动化成为可能!本篇带你掌握它的核心用法…...
【SLURM】介绍
SLURM Slurm(Simple Linux Utility for Resource Management) 是一个用于管理和调度计算集群任务的开源作业调度系统。它主要用于高性能计算(HPC)环境,比如超算中心、大学的计算集群或企业的数据中心。 本文主要针对使…...
算法-贪心算法
圣诞老人的礼物-Santa Clau’s Gifts 现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。圣 诞老人的驯鹿雪橇最多只能装下重量W的糖果,请 问圣诞老人最多能带走多大价值的糖果。 输入 第一行由两个…...
Nginx — Nginx处理Web请求机制解析
一、Nginx请求默认页面资源 1、配置文件详解 修改端口号为8080并重启服务: 二、Nginx进程模型 1、nginx常用命令解析 master进程:主进程(只有一个) worker进程:工作进程(可以有多个,默认只有一…...
GAN随手笔记
文章目录 1. description2. code 1. description 后续整理 GAN是生成对抗网络,主要由G生成器,D判别器组成,具体形式如下 D 判别器: G生成器: 2. code 部分源码,暂定,后续修改 import nump…...
Java 8 时区与历法处理指南:跨越全球的时间管理
Java 8 的 java.time API 不仅修复了旧版日期时间 API 的设计缺陷,还提供了对时区和多历法的全面支持。无论是处理全球化应用的时区转换,还是适配不同文化的日历系统,Java 8 都能轻松应对。本文将深入解析其核心功能,并提供实用代…...
【STM32】对stm32F103VET6指南者原理图详解(超详细)
目录 一、原理图基本概念二、STM32F103VET6 的主要特性二、MCU模块三、电源模块四、时钟模块五、复位模块NRST 六、GPIO模块LED 七、调试模块JTAG 八、外设模块UARTSPII2CADC 九、其它模块BOOT 一、原理图基本概念 原理图/电路图通常由硬件工程师使用Altium Designer/ KiCad / …...
瑞芯微RKRGA(librga)Buffer API 分析
一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中,有两组配置 buffer 的API: importbuffer 方式: importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式: wrapbuffer_virtualaddr wrapb…...
移动端六大语言速记:第1部分 - 基础语法与控制结构
移动端六大语言速记:第1部分 - 基础语法与控制结构 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言的基础语法与控制结构,帮助开发者快速理解各语言间的差异与共性。 1. 基础语法 1.1 数据类型 各语言的基本数据…...
Java 大视界 -- Java 大数据在智能金融区块链跨境支付与结算中的应用(154)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Python Playwright库全面详解
Playwright 是 Microsoft 开发的一个现代化的端到端测试和浏览器自动化库,支持 Chromium、WebKit 和 Firefox 浏览器。它提供了跨浏览器、跨平台的自动化能力,且具有高性能和可靠性。 一、核心特性 多浏览器支持: Chromium (Chrome, Edge)We…...
脑疾病分类的疑惑【6】:脑疾病分类比较适合使用具有哪些特点的模型?
脑疾病分类是一个复杂的任务,涉及医学影像、神经电生理信号、基因数据等多种信息类型。为了有效地进行脑疾病分类,选择合适的模型是至关重要的。以下是一些适合脑疾病分类的模型特点,您可以参考这些特点来选择合适的模型: 1. 深度…...
24_原型和原型链_this
目录 一、this关键字 修改this的指向 二、原型和原型链 三、创建对象 通过构造函数创建 (es5) 通过类创建 (es6) 四、浅拷贝和深拷贝 ctrlc 浅拷贝: 只拷贝一层 深拷贝: 可以拷贝多层 一、this关键字 每个函…...
自定义类型:结构体(1)
1.结构体回顾 结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。 1.1结构的声明 struct tag {member-list; }variable-list;例如描述一个学生: struct Stu {char name[20];int age;char sex[5]; }; 1.2结构体变量的创…...
Java进阶——Lombok的使用
Lombok可以通过注解的方式,在编译时自动生成 getter、setter、构造函数、toString 等样板代码,从而减少代码的冗余,提高开发效率。本文深入讲解Lombok在实际开发中的使用。 本文目录 1. Lombok 依赖添加2. 常用Lombok注解及使用场景2.1 Gette…...
饿了么 bx-et 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 import requests bx_et re…...
python黑科技:无痛修改第三方库源码
需求不符合 很多时候,我们下载的 第三方库 是不会有需求不满足的情况,但也有极少的情况,第三方库 没有兼顾到需求,导致开发者无法实现相关功能。 如何通过一些操作将 第三方库 源码进行修改,是我们将要遇到的一个难点…...
PGD对抗样本生成算法实现(pytorch版)
PGD对抗样本生成算法 一、理论部分1.1 PGD 原理(1) 数学形式(2) 核心改进1.2 PGD 与其他攻击对比1.3 注意事项二、代码实现2.1 导包2.2 数据加载和处理2.3 网络构建2.4 模型加载2.5 生成对抗样本2.6 对抗测试2.7 启动攻击2.8 效果展示一、理论部分 1.1 PGD 原理 PGD 是 BIM/I-…...
小智机器人相关函数解析,BackgroundTask::Schedule (***)将一个回调函数添加到后台任务队列中等待执行
以下是对 BackgroundTask::Schedule 函数代码的详细解释: void BackgroundTask::Schedule(std::function<void()> callback) {std::lock_guard<std::mutex> lock(mutex_);if (active_tasks_ > 30) {int free_sram heap_caps_get_free_size(MALLOC_…...
C++学习之路:深入理解变量
目录 编程的本质变量的本质内存模型、变量名与值以及地址的关系数据类型C数据类型数据类型别名数据类型转换 变量作用域总结 编程的本质 编程的本质是什么?虽然程序里能实现很多复杂的逻辑,但是从底层的硬件上来看,编程的本质就是数据的搬移。…...
前端基础知识汇总
目录 HTML5详解(结构层) 什么是HTML HTML基本结构 网页基本信息 图像标签 链接标签 超链接 行内元素与块元素 列表标签 表格标签 页面结构分析 iframe内联框架 表单语法 表单元素格式 表单的简单应用 表单初级验证 CSS详解(…...
2024蓝桥杯省赛C/C++大学B组 题解
文章目录 2024蓝桥杯省赛C/C大学B组A 握手问题(5分)B 小球反弹(5分)C 好数(10分)D R 格式(10分)E 宝石组合(15分)F 数字接龙(15分)G 爬…...
BIM/I-FGSM对抗样本生成算法实现(pytorch版)
BIM/I-FGSM对抗样本生成算法 一、理论部分1.1 核心思想1.2 数学形式1.3 BIM 的优缺点1.4 BIM 与 FGSM、PGD 的关系1.5 实际应用建议二、代码实现2.1 导包2.2 数据加载和处理2.3 网络构建2.4 模型加载2.5 生成对抗样本2.6 攻击测试2.7 启动攻击2.8 效果展示一、理论部分 1.1 核心…...
前沿科技:从Gen2到Gen3—Kinova轻型机械臂的技术升级路径
Kinova品牌在轻型机械臂行业中以其轻量化、灵活性和高精度的技术特点而知名。其产品线广泛适用于医疗、科研和工业等多个领域,对机器人技术的进步起到了积极的推动作用。Kinova轻型机械臂凭借其精良的设计和稳定的性能,为用户提供了高效且可靠的解决方案…...
智研咨询:2025DeepSeek技术全景解析重塑全球AI生态的中国力量|附下载方法
导 读INTRODUCTION 随着人工智能技术的飞速发展,AI大模型已成为推动行业进步的重要力量。智研咨询最新发布的《DeepSeek技术全景解析重塑全球AI生态的中国力量》报告,深入探讨了DeepSeek公司在AI领域的突破性成就及其对全球AI生态的深远影响。 如果感兴…...
超导量子计算机编程实战:IBM Qiskit 2025新API详解
一、量子计算平台演进与Qiskit 2025定位 1.1 IBM量子硬件发展路线 2025年IBM将实现三大技术突破: 量子体积:新一代"Goldeneye"处理器达到QV 8192相干时间:超导量子比特寿命突破500μs互联规模:模块化架构支持万级量子…...
斐波那契数列----C语言
关于斐波那契 已知: 问题背景:一对兔子从第3个月开始每月生一对新兔子,新兔子同样在第3个月开始繁殖。 关键观察: 第1个月:1对(初始兔子)。 第2个月:1对(未成熟&#…...
打开pycharm显示编制索引后卡死
若项目中包含过多文件,PyCharm 启动后会进行自动索引,电脑性能不高时往往会导致崩溃(主要是内存问题)。以下为解决措施。 ✅ 1. 仅索引代码,排除文件 设置PyCharm 主要索引代码文件(.py、.ipynbÿ…...
AWS云安全全面详解:从基础防护到高级威胁应对
随着企业加速向云端迁移,AWS作为全球最大的云服务提供商之一,其安全性成为用户首要关注的问题。本文将深入剖析AWS云安全架构,从基础防护到高级威胁应对,帮助您构建全方位的云安全防线。 一、AWS安全责任共担模型 在深入探讨AWS具体安全措施前,首先需要理解AWS的安全责任…...
【C++重点】虚函数与多态
在 C 中,虚函数是实现多态的基础。多态是面向对象编程的重要特性之一,允许程序在运行时决定调用哪一个函数版本。通过虚函数,我们能够实现动态绑定,使得不同类型的对象可以通过相同的接口进行操作。 1 静态绑定与动态绑定 静态绑…...
算法学习之BFS
关于BFS我的理解是根据离我们当前这个点的权重来移动,这里权重也可以理解为离这个点的距离, 从起点开始,往前走一步,记录下所有第一步能走到的点开始,然后从所有第一部能走到的点开始向前走第二步,重复下去…...
每日小积累day1
网络: g是用来检测网络联通性的的诊断工具,使用的协议是ICMP 显示数据包括 ICMP数据:序列号,存活时间(TTL) 目标主机域名IP 往返时间(RTT) 统计数据(平均RTT等等&a…...