- 博客(55)
- 收藏
- 关注
原创 3.HTTP/HTTPS:报文格式、方法、状态码、缓存、SSLTLS握手
本文系统介绍了HTTP/HTTPS的核心技术要点,包括HTTP报文格式(请求和响应结构)、HTTP方法特性(GET/POST等)、状态码分类(1xx-5xx)、缓存机制(强缓存和协商缓存)以及SSL/TLS握手过程。重点讲解了HTTP请求响应的组成部分、RESTful API设计原则、常见状态码含义、缓存控制头和HTTPS安全握手流程。这些内容涵盖了Web开发中HTTP协议的基础知识和关键优化技术,是构建高性能、安全Web应用的重要基础。
2025-09-09 16:01:12
1070
原创 算法高频题
本文总结了LeetCode高频算法题的刷题策略,重点涵盖树、链表等核心数据结构。以二叉树层序遍历(102题)为例,详细解析了BFS和DFS两种解法:BFS使用队列实现,DFS通过记录深度处理。236题(最近公共祖先)采用后序遍历思路,通过比较左右子树结果确定祖先节点。103题(锯齿形层序遍历)则在标准BFS基础上,通过反转或双端队列实现层序方向的交替变化。这些题目展示了算法思维框架的应用,建议结合CodeTop高频顺序反复练习,掌握每种题型的核心解法。时间复杂度普遍为O(n),空间复杂度取决于树的高度。
2025-09-08 23:28:16
907
原创 2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
本文深入解析TCP协议的核心机制,包括连接建立的三次握手、连接终止的四次挥手、状态转换流程,以及流量控制和拥塞控制策略。三次握手通过同步序列号确保可靠连接,防止无效请求;四次挥手实现全双工连接的优雅关闭。TCP状态机包含11种关键状态,如SYN_SENT、ESTABLISHED等。流量控制通过滑动窗口动态调整发送速率,而拥塞控制则采用慢启动、拥塞避免和快速恢复三阶段算法,确保网络稳定性。这些机制共同构成了TCP可靠传输的基础架构。
2025-09-07 22:08:03
1071
原创 1.TCP/IP模型:各层协议(重点TCP/UDP)
TCP/IP四层模型是互联网通信的核心架构,包含应用层(HTTP/FTP/DNS等)、传输层(TCP/UDP)、网络层(IP/ICMP)和网络接口层(以太网/Wi-Fi)。TCP通过三次握手建立可靠连接,采用序列号、确认机制和滑动窗口实现数据传输,通过慢启动、拥塞避免等算法控制流量;UDP则提供无连接的快速传输,适用于实时应用。关键区别在于TCP保证可靠性而UDP注重效率,实际应用中需根据场景选择协议。理解各层协议特性和交互机制对网络编程及故障排查至关重要。
2025-09-07 17:27:43
1069
原创 4.死锁:条件及避免
死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法推进下去。锁排序:总是按固定顺序获取锁超时机制:避免无限期等待避免嵌套锁:尽量减少锁的嵌套层次使用RAII:确保锁总是被释放代码审查:定期检查同步代码使用工具:利用静态和动态分析工具答:活锁是进程不断改变状态但无法前进的情况。比如两个进程互相谦让资源,导致谁都无法获得资源。死锁是并发编程中的经典问题:✅理解条件:四个必要条件必须同时满足✅预防策略:破坏任一条件即可预防死锁✅避免算法。
2025-09-07 09:36:56
837
原创 3.进程调度:常见算法
答:在FCFS算法中,一个长进程阻塞后面所有短进程的现象。进程调度是操作系统的核心功能:✅算法多样性:不同算法适合不同场景✅性能权衡:响应时间 vs 吞吐量 vs 公平性✅现代趋势:CFS、MLFQ等自适应算法✅实时需求:EDF、RMS等保证时序要求。
2025-09-06 23:03:48
817
原创 进程间通信(IPC)方式
这是大数据量、高频交换场景的黄金组合,但同步逻辑最复杂。适合需要按类别或优先级处理离散命令或数据的场景。无论是本地还是远程通信,这是最统一的方案。(父子进程用匿名,无关系进程用命名)。例如,优雅地终止一个后台服务进程。
2025-09-06 19:59:21
347
原创 2.虚拟内存:分页、分段、页面置换算法
答:虚拟内存是一种内存管理技术,为每个进程提供独立的地址空间,使得程序可以使用比物理内存更大的地址空间,并提供内存保护和共享机制。答:当程序访问的页面不在物理内存中时,CPU产生缺页中断,操作系统需要从磁盘加载该页面到内存。答:在FIFO算法中,增加物理帧数反而导致缺页率增加的反常现象。虚拟内存是现代操作系统的核心机制:✅分页机制:提供灵活的内存管理和保护✅分段机制:支持逻辑内存组织和保护✅页面置换:确保内存高效使用✅算法选择:根据工作负载特点选择合适的置换算法。
2025-09-06 19:15:01
739
原创 1.进程与线程:区别、通信方式、同步方式
机制核心思想主要用途互斥锁 (Mutex)独占访问,一次一个。保护临界区,确保对单个共享资源的互斥访问。用于简单的互斥信号量 (Semaphore)计数器,控制N个访问。控制对一组数量有限的相同资源的访问。用于管理资源池条件变量 (Condition)等待条件成立,与锁配合。用于线程间协调,当某个状态条件不满足时让线程等待。用于复杂的线程状态协调//TODO:继续学习!!!
2025-09-05 23:11:34
1030
原创 算法题思维框架
这是你必须熟记于心的。int val;按主题刷题,巩固思维框架。前序,中序,后序,层序。最大深度,最小深度,节点数,平衡二叉树,对称二叉树。最大路径和,路径总和I/II/III。翻转二叉树,合并二叉树,构建二叉树(从中序与后序/前序)。验证BST,BST搜索/插入,第K小元素,最近公共祖先。序列化与反序列化(高级题目)。面试技巧:问清楚输入输出、节点定义、边界情况。不要急着写代码,先用上面的框架把你的思考过程讲给面试官听。代码要整洁,注释清晰,变量名有意义。
2025-09-05 10:40:43
1123
原创 STL重点
本文摘要: STL核心组件详解:容器、迭代器与算法 容器 vector:动态数组,O(1)随机访问,尾部插入/删除O(1)* list:双向链表,任意位置插入/删除O(1),不支持随机访问 map/set:红黑树实现,查找/插入/删除O(logn),元素有序 选择策略:根据访问模式(随机/顺序)和修改频率(插入/删除) 迭代器 5种类型:输入/输出/前向/双向/随机访问迭代器 失效问题:容器修改可能导致迭代器失效 安全准则:避免保存迭代器,使用erase返回值更新 算法 非修改型:find/count/se
2025-09-04 23:46:15
718
原创 C++容器:std::unordered_map, std::array, std::tuple
int age;// 相等比较运算符// 自定义哈希函数C++11引入的这些容器大大增强了标准库的能力:✅:高性能哈希表,快速查找✅std::array:类型安全的固定大小数组✅std::tuple:灵活的异构数据容器✅现代C++特性:支持auto、结构化绑定、CTAD等✅性能优势:编译期优化,运行时高效。
2025-09-03 14:00:57
242
原创 C++多线程编程:std::thread, std::async, std::future
答是一个异步操作结果的占位符,提供获取结果、等待完成、查询状态的方法。答:多个线程互相等待对方释放锁。避免方法:按固定顺序获取锁、使用同时获取多个锁、使用超时锁、避免嵌套锁。C++11多线程编程提供了现代、安全的并发工具:✅:直接线程管理✅:异步任务和结果处理✅:更灵活的异步编程✅RAII支持:自动资源管理✅类型安全:编译期检查。
2025-09-02 21:23:35
557
原创 C++后端开发重点知识点
将“理论理解 -> 实践验证 -> 项目集成”形成一个闭环,每学完一个知识点进行实践,保证深入理解为未来开发生涯打下坚实的基础。这个阶段的目标是:不仅要知道是什么,还要知道为什么,并且能写代码证明它。这是你简历上的亮点,能串联起上面绝大部分知识点。核心技术:IO多路复用(epoll)。这是“高性能”的基石。核心架构:Reactor模式(单Reactor多线程/多进程,或多Reactor)。这是现代高性能网络服务器的标准设计。编程语言:C++17/20目标:能处理高并发连接(数千以上),性能指标可通过压测工具
2025-09-02 16:37:02
657
原创 C++面试题
/ 通常16 (2个double)理解strlen= '\0') {len++;str++;return len;// 整型常量// 浮点型常量vtable 是按类分配的: 每个类只有一个,在编译期生成,存在于程序的只读数据段(如.rodatavptr 是按对象分配的: 每个对象实例都有自己的vptr,存在于对象的内存布局中(通常是开头)。构造函数会负责将其正确初始化,指向当前类对应的 vtable。动态绑定的开销空间开销: 每个对象需要多存储一个指针(vptr。
2025-09-02 16:10:48
1029
原创 Visual Studio 的魔法:为何不编译也能知道 auto 的类型?
这个数据库实时更新,包含了你的代码中所有变量、函数、类的类型和信息。这项技术极大地提升了我们的开发效率,让我们能够“所思即所得”,更加专注于逻辑和创意本身。它接收前端分析好的 AST 和符号表,进行优化,最终输出机器码(.obj, .exe 文件)。这看似魔法的背后,其实是一项强大的现代 IDE 技术。这个过程速度极快,几乎是瞬间完成的,从而创造了那种“未编译先知”的神奇体验。:它对你当前编辑的文件以及其包含的所有头文件,进行一遍又一遍的。的类型提示时,你会知道,这并非魔法,而是其背后强大的。
2025-08-28 15:54:47
885
原创 C++手写智能指针
特性SharedPtr(手写)引用计数基础实现原子操作,线程安全自定义删除器不支持支持弱指针支持不支持支持数组支持不支持支持异常安全基础强异常安全保证。
2025-08-23 20:23:48
1292
原创 How to Read Code Effectively: A Strategy and Toolbox
【代码】How to Read Code Effectively: A Strategy and Toolbox。
2025-08-23 20:15:47
832
原创 C++ noexcept
特性描述目的声明函数不会抛出异常,用于优化和表达契约。性能允许编译器和标准库生成更高效、更优化的代码。安全性违反承诺会导致程序立即终止,防止异常传播。关键用法析构函数移动操作swap、简单 getter。检查工具noexcept运算符可在编译期查询表达式是否会抛出异常。替代方案已取代 C++98 的throw()。简而言之,明智地使用noexcept是编写现代、高效、健壮的 C++ 代码的一个重要习惯。
2025-08-22 16:02:50
697
原创 C++ 左值,右值和std::move
std::move:只是一个类型转换工具,将左值转为右值引用移动构造函数:实际执行资源转移的代码两者关系std::move为移动构造函数"创造机会",让编译器知道可以调用移动语义。
2025-08-22 10:40:27
333
原创 C++ this 指针
特性/场景描述本质编译器自动传递给非静态成员函数的隐藏参数,指向调用该函数的对象。类型(在 const 函数中是解决命名冲突使用区分同名的参数和成员变量。链式调用返回*this(返回对象引用)以实现的流畅接口。传递自身使用*this将当前对象作为参数传递给其他函数。静态函数没有this指针,因此不能访问非静态成员。Lambda 捕获可以捕获this来在 Lambda 内部访问成员,但需注意生命周期。智能指针直接使用this创建智能指针是危险的,应使用。
2025-08-21 22:04:03
1086
原创 C++浅拷贝和深拷贝区别
浅拷贝只是简单地复制对象的成员变量的值,包括指针成员的值(即内存地址),而不复制指针所指向的实际数据public:int* data;int size;// 默认拷贝构造函数(浅拷贝): data(other.data), size(other.size) {} // 只是复制指针值深拷贝不仅复制对象的成员变量,还会为指针成员分配新的内存,并复制指针所指向的实际数据。int size;// 自定义拷贝构造函数(深拷贝)// 分配新内存。
2025-08-21 21:25:45
208
原创 C++创建一个空类的时候,编译器会自动生成哪些函数了
执行默认的成员初始化(对内置类型不初始化,类类型调用其默认构造函数)用于通过同类型的另一个对象来初始化新对象。用于将一个对象的值赋给另一个已存在的对象。用于通过右值引用来赋值给已存在的对象。当没有其他构造函数被显式声明时生成。可以"窃取"源对象的资源,提高效率。用于通过右值引用来初始化新对象。返回对象的引用以支持链式赋值。在对象生命周期结束时自动调用。同样可以"窃取"源对象的资源。执行成员逐个拷贝(浅拷贝)
2025-08-21 21:02:09
319
原创 下载core5compat 模块时,被禁止,显示 - servese replied: Forbbidden. -->换镜像源
如果已经安装了 Qt Maintenance Tool,可以修改其配置文件,永久更换镜像源。如果网络问题严重,可以直接下载。在运行 Qt 安装器时,通过。
2025-05-05 21:11:22
382
原创 Qt找不到头文件 ,但文件在文件夹中存在问题
正确添加 路径 , 添加主文件夹就ok , 后面包含文件时 <core/***.h> 子文件夹再.h/.cpp。问题原因:存在多级文件夹 , 而且在 .pro 项目文件中没有正确填写 INCLUDEPATH += .二级文件夹里包含很多子文件夹 ,如 core , core里面包含 头文件和源文件。如文件形式: WBoard/Source/core/***.h。
2025-05-05 17:24:12
484
原创 Visual Studio 项目转Qt项目
1. 先确保qmake 和 minGW (g++) 路径都在系统变量内;或者通过Win+R -> cmd 来检测,如果能够 显示qmake 的信息 , g++ 的信息 , 就说明设置环境变量成功。运行完后就能生成 .pro 文件 , 结束。
2025-05-05 15:58:49
623
原创 Qt Creator没有Qt Quick Design
可以在 Qt Creator 中进一步开发。(C++/QML 编写、调试、构建)。:包含在 Qt Creator 中(进行可视化 QML 开发。总之:需要独立下载安装。
2025-05-03 16:28:41
328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人