- 博客(106)
- 收藏
- 关注
原创 tcp综述
TCP 协议的学习,核心是理解“可靠传输的设计哲学”——通过分层机制(连接管理、序列号、确认、重传、拥塞控制 ),在不可靠的网络层之上,构建稳定、高效的端到端通信。面试中,需紧扣“协议层级 + 机制目的 + 实际场景分析问题时,先定位涉及的 TCP 层级(建连/传输/断连 ),明确机制设计的目标(如三次握手保障双向可靠 );结合实际场景(如高并发、弱网、安全攻击 ),延伸原理的应用与优化(如 SYN Flood 防御、BBR 算法适配 );
2025-06-11 10:55:45
310
原创 tcp高难度问题
底层机制深挖:三次握手/四次挥手的细节、可靠传输的实现逻辑、拥塞控制的流程。异常与边界场景:队列溢出、丢包、零窗口、连接异常中断的处理。协议协同与对比:和 QUIC、TLS、HTTP 的联动,理解不同层级协议如何配合。实战优化:建连优化、吞吐量优化、高并发场景的参数调优与问题排查。面试时,遇到这类问题别慌,先拆解“协议层级”“机制目的”“实际场景影响”,再结合原理延伸案例(比如“线上遇到过 SYN 队列满,是怎么排查的” ),就能和面试官深入交流,体现你的技术深度与实战思维啦~
2025-06-11 10:55:29
787
原创 两种keepalive
对比维度实现层级应用层(用户态,依托 HTTP 协议头)传输层(内核态,依托 TCP 协议与 socket 选项 )核心目标复用 TCP 连接,减少 HTTP 短连接开销检测并清理空闲/死连接,释放系统资源启用方式通过协商通过socket 选项启用适用协议仅 HTTP 协议所有基于 TCP 的协议(HTTP、FTP、SMTP 等 )协同关系依赖 TCP 连接基础,空闲时需 TCP Keepalive 保障存活为 HTTP 长连接等应用层机制提供底层连接检测能力。
2025-06-11 10:42:41
239
原创 tcp三次握手和四次挥手
双向收发能力确认:双方均确认“自己能正常发送数据、对方能正常接收数据”,为可靠传输打好基础。序列号同步:交换 ISN ,为后续数据传输的“有序、不丢、不重”提供保障,让数据段能正确排序、去重和确认。历史连接防御:通过序列号校验机制,避免旧连接的报文干扰新连接,保障连接建立和数据传输的准确性。资源合理分配:利用半连接队列和全连接队列,平衡连接建立效率与系统资源占用,同时结合 SYN Cookie 等机制,抵御 DDoS 攻击,保障服务器稳定运行。
2025-06-11 10:26:20
239
原创 【数组和二分查找】
数组是连续内存空间上的相同类型数据集合,其物理结构决定了访问和操作特性:随机访问:通过下标直接定位元素,时间复杂度 (O(1))。插入/删除操作:需移动后续元素,时间复杂度 (O(n))。二维数组的内存布局:Java:二维数组是数组的数组,每行首地址不连续。2. 数组与动态数组对比特性原生数组动态数组(如C++ vector)内存分配静态分配(编译时确定大小)动态分配(运行时可扩容)大小调整不可变支持resize()、push_back()
2025-06-10 22:27:20
700
原创 TCP和UDP相关问题
TCP 的可靠性是连接管理、差错控制、超时重传、流量控制、拥塞控制连接管理(三次握手、四次挥手)确保“通道可靠”;序列号 + 确认应答 + 数据校验确保“数据有序、无损、不丢”;超时重传 + 快速重传 + SACK 确保“丢包能补救”;流量控制(滑动窗口)确保“收发速率匹配”;拥塞控制确保“不搞垮网络,全局稳定”。这些机制层层嵌套、相互配合,就像一支精密的“数据护送队”,从连接建立到数据交付,全程保障可靠性,也正因如此,TCP 成为网页浏览、文件传输等“容不得错”场景的首选。
2025-06-10 00:07:38
794
原创 https
数据传输完成后,双方会销毁会话密钥,关闭 TCP 连接,避免密钥泄露。这样即使中间有人截取了数据,没有密钥也无法解密,而且下次连接会生成新的密钥,进一步保障安全。总结来说,HTTPS 通过“握手认证→密钥协商→加密传输→完整性校验”这一系列步骤,确保了数据传输的安全,就像给通信过程加了一把“加密锁”,而数字证书和会话密钥就是这把锁的核心钥匙。
2025-06-09 21:33:13
870
原创 TCP和UDP区别
总结来说,TCP 像“严谨的物流快递”,全程跟踪、确保送达;UDP 像“高效的外卖小哥”,快速出发、不管后续。实际应用里,要根据业务对可靠性、实时性的需求,选合适协议,甚至在一些场景(如 QUIC 基于 UDP 实现类 TCP 可靠传输),结合两者优势优化,这也是协议选型的加分思考点。
2025-06-09 18:07:28
690
原创 https相关
数据传输完成后,双方会销毁会话密钥,关闭 TCP 连接,避免密钥泄露。这样即使中间有人截取了数据,没有密钥也无法解密,而且下次连接会生成新的密钥,进一步保障安全。总结来说,HTTPS 通过“握手认证→密钥协商→加密传输→完整性校验”这一系列步骤,确保了数据传输的安全,就像给通信过程加了一把“加密锁”,而数字证书和会话密钥就是这把锁的核心钥匙。
2025-06-09 18:00:49
693
原创 【http解析——三个版本对比】
HTTP/1.1 是 HTTP 协议发展的关键版本:一方面,继承并强化了“简单、灵活、跨平台”等优势,通过持久连接、管道化、缓存优化、Host 头支持等,解决 HTTP/1.0 的性能与功能局限,成为互联网长期主流协议;另一方面,其暴露的无状态导致的关联操作冗余、明文传输与不安全风险、队头阻塞等性能瓶颈,又推动了 HTTP/2(二进制帧、多路复用、头部压缩、服务器推送 )、HTTP/3(基于 UDP 的 QUIC 协议 )的诞生与优化。
2025-06-09 10:34:35
787
原创 【http基础讲解2】
1xx是“进度灯”→ 告诉客户端请求在处理中;2xx是“绿灯”→ 请求成功,安心渲染数据;3xx是“转向灯”→ 得调整请求(跳转URL或用缓存);4xx是“红灯”→ 客户端请求有问题(改URL、补权限、查参数);5xx是“故障灯”→ 服务器内部出问题(后端修代码、扩资源)。掌握这些状态码,开发时遇到问题能快速定位(比如404查URL,500催后端看日志),还能通过合理设置状态码优化用户体验(比如204减少无效数据,304加速页面)。这不仅是HTTP协议的基础,更是前后端协作、性能优化的关键!
2025-06-09 09:49:29
631
原创 C++字符串解析2
字符串是编程中处理文本数据的核心载体。本文将系统覆盖的全维度知识,包括声明初始化、输入输出、遍历操作、字符运算等基础语法,结合三道实战例题(平均绩点、句子缩写、位置互换)深入解析字符串与数值处理、函数设计的综合应用,帮助读者构建完整的字符串知识体系。本文全面覆盖 C++ 字符串的核心知识点,从基础语法到函数设计,再到三道实战例题的完整解析。通过掌握字符串的灵活操作、数值文本转换、函数高效设计,读者可应对编程中多样化的字符串处理需求。
2025-06-07 15:11:00
707
原创 C++ 对 C 的兼容性
C++ 对 C 语言的兼容性是,并非完全无缝兼容。这种兼容性主要体现在语法、标准库和运行时特性上,但存在一些关键差异和不兼容点。
2025-06-07 15:04:29
753
原创 【C++字符串基础解析1】
字符串是编程中处理文本数据的核心载体。本文将系统讲解C++中容器的核心操作,并通过「字符串插入成回文」问题深入解析字符串拼接、遍历及回文判断逻辑,帮助读者建立完整的字符串处理知识体系。头文件与命名空间:#include <string> // 必须包含的头文件// 使用std命名空间初始化方式:string s1;// 空字符串// 直接初始化// 5个'a'组成的字符串 "aaaaa"// 拷贝初始化本文以容器为核心,结合回文判定算法与插入问题实战,系统讲解了字符串处理的全流程知识。
2025-06-07 14:50:54
938
原创 C++循环全解析
循环结构是编程的核心逻辑之一,用于重复执行特定代码块。本文将系统梳理C++循环的全体系知识,涵盖forwhiledo-while等基础循环结构,结合数组、容器及多维场景实战,深入解析循环在不同场景下的应用技巧,并通过经典例题强化理解。循环类型适用场景特点for已知次数的循环简洁,适合遍历容器/数组while条件驱动的循环可能不执行循环体do-while至少执行一次的循环先执行再判断条件。
2025-06-07 14:21:16
558
原创 【C++输入输出全解析】
作为C++编程的第一道门槛,A+B问题虽看似简单,却蕴含了C++编程的基础语法和核心概念。本文将详细讲解C++的基础语法知识,并通过A+B问题展示如何应用这些知识解决实际问题。命名空间的使用(基本数据类型(int, float, char, bool)输入输出流(cin和cout头文件的引入(#include函数的定义与调用条件判断语句(if-else)这些知识是C++编程的基石,后续的学习将在此基础上逐步深入。建议初学者多做类似的基础练习,巩固这些核心概念。
2025-06-07 13:26:46
323
原创 【HTTP三个基础问题】
HTTP报文结构是通信的“骨架”,请求方法是操作的“灵魂”,GET/POST的差异则是实际开发的“指南针”。理解这些细节,不仅能应对面试,更能在实际项目中设计出高效、安全的接口,例如通过请求头缓存控制提升性能,或用HTTPS+POST保障敏感数据传输。
2025-06-07 12:24:23
842
原创 【OSI和TCP/IP】
面试中常考的点包括:OSI七层的顺序和功能、TCP三次握手四次挥手的原理、IP路由的逻辑、TCP和UDP的区别,以及两者的层次对应关系。总结来说,OSI模型是理论上的“教科书”,TCP/IP模型是实践中的“施工图”,掌握两者的分层逻辑和协议细节,能帮助我们理解网络通信的全流程,无论是分析网络问题还是优化传输效率,都需要基于这些核心知识。,它是一个七层的理论框架,顺序可以用口诀“物数网传会表应”来记忆,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
2025-06-05 01:05:22
426
原创 【输入URL到页面展示】
整个流程贯穿TCP/IP模型四层应用层:DNS、HTTP/HTTPS协议;传输层:TCP(可靠连接)、UDP(DNS查询);网络层:IP路由选择,数据包转发;网络接口层:MAC寻址,帧传输(如以太网协议)。核心逻辑是“应用层定义规则,传输层保障可靠,网络层负责寻址,底层实现物理传输”,最终通过浏览器渲染将网络数据转化为用户可见的页面。
2025-06-04 21:27:52
662
原创 【TCP/IP和OSI模型以及区别——理论汇总】
物理层提供硬件通信基础 →数据链路层实现局域网内可靠传输(MAC寻址)→网络层实现跨网络寻址(IP路由)→传输层实现进程间通信(端口+TCP/UDP)→会话层-表示层-应用层支撑具体应用(会话管理→数据格式→业务逻辑)。每一层依赖下层服务,为上层提供接口,共同构成完整的网络通信链条。数据从 App 出发,每往下一层就“穿一层控制外衣”(头部),带着端口、IP、MAC 地址,最终通过网线/无线发出去;接收方反向“脱衣服”,逐层拆包,拿到原始数据。封装是“套娃加头部”,解封装是“拆娃卸头部”
2025-06-04 21:12:56
1087
原创 【conda配置深度学习环境】
好的!我们从头开始配置一个,覆盖深度学习(如PyTorch)和传统机器学习(如XGBoost),并适配你的显卡(假设为NVIDIA,若为AMD请告知)。如果确定不再使用之前的lidar_env环境,直接删除其文件夹即可(通常在),无需命令行操作。Conda比pip更适合管理复杂依赖(如CUDA、PyTorch版本),且兼容Python多版本。
2025-06-04 19:45:59
852
原创 【LeetCode 题解】两数之和(C++/Python 双解法):从语法到算法的全面解析
必须加分号的情况场景示例代码说明语句末尾int a = 10;每个完整语句结束后必须加分号单行控制流语句if (a>0) cout << "正数";单行if/while语句末尾加分号类成员声明void f();成员变量和函数声明后加分号枚举/联合体定义定义末尾必须加分号// 成员函数} // ❌ 错误:缺少分号修正:在类定义结束的后添加分号:class Solution {// 成员函数// ✅ 正确方法时间复杂度空间复杂度适用场景暴力枚举O(n²)O(1)n很小的情况。
2025-06-02 17:25:38
745
原创 【模板-指南】
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2025-05-29 16:30:35
656
原创 pytorch与其他ai工具
PyTorch使用动态图(Define-by-Run),允许在运行时修改计算逻辑,调试直观(如print张量值),适合研究场景;"ONNX用于将PyTorch/TensorFlow模型转为通用格式,便于部署到不同硬件(如用ONNX Runtime推理)。“TensorFlow 1.x默认静态图(Define-and-Run),需先构建计算图再执行,优化效率高但调试困难;:掌握工具的核心设计思想、常用API、性能优化方法,并结合项目经验展示实战能力,是应对面试的关键!:动态图与静态图的区别、优缺点。
2025-03-26 23:48:28
1003
原创 CNN基础考点
掌握CNN需深入理解其数学原理、架构设计及工程优化技巧,同时结合业务场景(如激光雷达)针对性调整模型,平衡精度与效率。:深层网络中,梯度反向传播时指数级衰减(消失)或增大(爆炸),导致浅层参数无法更新或数值溢出。:模型在训练集上表现优异(如准确率95%),但在测试集上性能显著下降(如准确率70%)。答:点云稀疏性导致计算冗余,需结合稀疏卷积或Transformer优化。答:奇数核(如3×3)有明确中心点,便于对称填充和定位特征。答:降维/升维(调整通道数)、跨通道信息整合(类似全连接)。
2025-03-26 23:46:01
968
原创 Focal Loss
Focal Loss就像个严厉的老师,逼着模型别再“偷懒”总学简单题(多数类),而是多花力气死磕难题(少数类),这样考试(预测)时才能考好冷门知识点。Focal Loss通过动态降低易分类样本的损失权重,迫使模型集中学习难分类样本和少数类,从而有效解决样本不均衡问题。其中,( p \in [0,1] ) 是模型预测的概率,( y \in {0,1} ) 是真实标签。答:通过( (1-p_t)^\gamma )抑制简单样本的损失贡献,迫使模型关注难样本。答:γ控制难易样本权重,α控制正负样本权重;
2025-03-26 23:20:18
854
原创 二叉树理论基础详解:从零开始理解数据结构的核心
二叉树是一种树形数据结构,由节点(Node)和边(Edge)组成。每个节点最多只能有两个子节点,分别称为左子节点和右子节点。二叉树的定义非常简单,但应用却极其广泛。int val;二叉树是数据结构中的核心内容,其灵活性和高效性使其在各种场景中得到广泛应用。无论是数组实现还是指针结构,理解二叉树的基本原理都是掌握高级数据结构的基础。
2025-02-07 22:27:16
1092
原创 【并查集】
self.rank是并查集(Union-Find)中的一个重要概念,它用于优化合并操作(union),使得并查集的树结构更加平衡,从而提高查找操作(find)的效率。下面我会详细解释self.rank的作用以及它是如何优化并查集的。在并查集中,秩(Rank)是用来表示集合的“高度”或“大小”的一个指标。秩的定义对于每个集合(树),秩表示该集合的树的高度(从根节点到最远叶子节点的路径长度)。初始时,每个集合的秩为1,因为每个集合只有一个元素(根节点)。秩的作用。
2025-02-01 15:37:28
724
原创 【单调栈】【基础】
暴力法的时间复杂度是On2O(n^2)On2,因为有两层嵌套循环。单调栈优化的时间复杂度是OnO(n)On,因为每个元素最多入栈和出栈一次。单调栈优化的关键在于利用单调递减栈存储潜在的左边界,避免了不必要的比较,提高了效率。# 构建单调递减栈# 存储可能作为答案左边界的 i 的索引# 当栈为空或栈顶元素对应的 nums 值大于当前元素对应的 nums 值时,将当前元素的索引 i 入栈# 从右向左遍历并更新答案。
2025-01-21 14:16:33
624
原创 【枚举中间】【直角三角形】
原始代码的时间复杂度较高,因为存在大量重复计算,在处理较大矩阵时性能会受到影响。优化思路是通过前缀和数组存储行和列中 1 的数量,避免重复计算,将时间复杂度从Orows×cols×rowscolsOrows×cols×rowscols))降低到Orows×colsOrows×cols。优化后的代码虽然空间复杂度从O1O(1)O1增加到Orows×colsOrow。
2025-01-15 16:36:02
984
原创 【堆】【造轮子】
妙用栈解决:解题思路解题步骤:1、排序2、删除两个最重的石头,增加一个石头为两者的差值3、不断重复步骤1和2,直到数组中还剩一个值,返回该值trick:如果两块石头一样重,石头里增加一个重量为0的石头,这样每次都是删两个值,增加一个值。优化:可以继续剪枝优化(判断数组中最多有一个值不为0,返回)作者:天道妖星。
2025-01-14 23:01:27
917
原创 【pow二进制遍历】
该算法通过不断检查n的二进制表示的最低位,并根据该位是否为 1 来决定是否将当前的x乘入ans中。同时,x不断平方,以表示x的指数乘以 2。这种方式可以避免直接计算x的n次幂的乘法,将时间复杂度从OnO(n)On降低到OlognO(log n)Ologn,因为n的二进制表示最多有lognlog nlogn位。这种方法利用了二进制表示和位运算,高效地计算了x的n次幂,对于负数n,先将其转换为正数并将x取倒数,以保证计算结果的正确性。
2025-01-14 15:12:02
729
原创 【队列】【基础】【设计】
难度在于阅读理解…无语!933t表示以毫秒为单位的某个时间,并返回过去3000毫秒内发生的所有请求数(包括新请求)确切说,返回[t-3000, t]内发生的请求数。保证每次对ping调用都使用比之前更大的t值…什么鸟语?参考评论区大神的比方:这道题中t就是某位员工工号,t入职前,先让t-3000以下的老东西离职,再让t入职,最后返回员工数量!非常适合用队列实现!!
2025-01-14 14:05:59
522
原创 【栈】【基础与进阶】
栈是一种只能在一端进行插入和删除操作的线性数据结构,它遵循后进先出(Last In First Out,简称LIFO)的原则。就好比一摞盘子,只能从最上面拿盘子(出栈操作)或者往最上面放盘子(入栈操作),最后放上去的盘子会最先被拿下来。
2025-01-13 17:05:52
755
原创 【前缀和】
对于给定的数组nums(记为a),其前缀和数组ss[0] = 0,这么定义主要是为了方便后续统一计算子数组的和,避免对左端点为0的情况单独进行特殊判断,同时也能兼容空数组的情况。对于i > 0,即s[i]表示原数组nums中从索引0到索引i - 1的所有元素之和。递推关系为,也就是通过前一个位置的前缀和加上当前位置的元素值来得到下一个位置的前缀和。例如,对于数组,其前缀和数组ss[0] = 0(按照定义)最终得到的前缀和数组。
2025-01-12 15:41:47
971
原创 【枚举右,维护左】第一章(第1~8题)
进行严谨的条件判断,确保要删除的元素确实在字典中,并且其记录的索引就是当前窗口最左边应该被删除的那个索引位置(防止出现意外情况,比如相同元素值在更后面又出现了,导致字典中对应的值被更新了,不符合预期的窗口删除逻辑),只有满足这个条件时,才通过。在遍历过程中,每当发现当前矩形的宽高比在哈希表中已经存在时,就说明找到了与之前某个矩形可互换的情况,此时可以根据已经出现的该宽高比的矩形个数来计算新增的可互换矩形对数,并累加到结果。,它的键将是矩形的宽高比(浮点数类型),值是对应宽高比出现的次数(整数类型)。
2025-01-07 23:51:46
829
原创 【bisect】【defaultdict】【设计】【二分查找】【哈希表】
用到defaultdict数据结构为什么要加self.pos = pos这句?是为了在同一个类不同函数调用么?解释bisect函数?如何调用??以下是对你提出的几个问题的详细解释:保存实例属性以便后续访问:在Python的类中,方法内定义的普通变量(像这里的 )通常是局部变量,其作用域仅限于该方法内部。如果希望在类的其他方法中也能访问和使用这个变量所代表的数据结构(这里是 类型的 ),就需要将它绑定为类的实例属性。通过 这行代码,就把 这个 对象变成了类实例的一个属性,这样在类的其他方法(比
2024-12-05 12:16:48
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人