- 博客(17)
- 收藏
- 关注
原创 深入理解 TCP 三次握手及数据传输中的序列号与确认号
在研究这幅图的过程中,可能大家会像我一样,对某些序列号产生疑问。比如为什么有时显示的序列号和我们预想的不一样呢?这可能是因为在三次握手完成后到实际数据传输间,存在额外的数据发送操作,导致序列号递增;也可能是工具显示的是相对序列号而非实际序列号。通过对这张图的深入解读,我们更加清晰地认识到 TCP 协议中序列号与确认号在保障网络通信可靠性方面的关键作用。它们就像精密仪器上的齿轮,环环相扣,每一个转动都关乎数据能否准确抵达目的地。
2025-04-06 15:39:30
451
原创 基于 C++ 的线程池实现及使用详解
Thread类和ThreadPool类。Thread类代表一个线程,封装了线程的创建和启动操作;ThreadPool类则是线程池的核心,负责管理线程的生命周期、任务队列的维护以及任务的分配和执行。cpp// 单位 s引入了一系列必要的头文件,用于实现线程池所需的各种功能,如多线程同步、内存管理、任务封装等。定义了三个常量::任务队列的最大容量,当任务队列中的任务数量达到该值时,新的任务提交可能会失败。:线程池中的最大线程数量,用于限制线程池的并发程度。
2025-03-12 20:19:30
742
原创 线程池(大解)
c++线程池其实大体意思很好理解,但是具体分析到代码上非常难懂,尤其对于初学者而言,设计很多c++11 c++14的标准,很复杂,但是如果弄明白了,多线程编程的水平就开始有起色,作者将来会出一个视频专讲线程池,作者水平不高,所以学的时候非常难懂,找各种资料,与ai对话,现在总算是弄明白了,希望大家不要走弯路,以后会讲一个视频的。
2025-03-04 14:06:00
202
原创 左右值引用的代码举例,引用折叠
利用vector容器的源代码,写了一个vector的成员函数push_back的时候,对左值引用还是右值引用的例子。
2025-02-25 21:44:32
69
原创 C++设计模式,绝对会懂(有设计前后对比),持续更新
当主题对象的状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。用一个类为基类记为类A,继承自A的子类B,C,然后在另外一个单独的C类中的成员变量就有vector这里的A*其实可以是B,也可以是C,因为父类指针可以指向子类对象,不管是B还是C,假设类此时A类写了一个虚函数virture update()函数B和C重写update函数,将来C类中的vector在进行访问容器中每个元素更新的时候(记住元素是B或者C)会调用对应B或者C自己类里写的update函数,代码如下。
2025-01-05 16:41:51
358
原创 如何利用高精度求1!+2!+.....+n!
首先对于每个阶乘来说都要用到高进度乘法,然后对于各个阶乘之间需要用到高精度加法,所以掌握这个类型,就基本掌握高精度这个算法了。
2024-12-09 15:53:25
126
原创 高精度求阶乘(最易懂)
题目输入一个n(n<=50)求1-n的阶乘和,例子:输入5,那就要输出1!解答分两部分,第一部分的数组chen就某个单独数的阶乘(高精度乘法),add数组就是把chen加到add里(高精度加法),是一个很综合的题,本题是洛谷p1009的一道普及题,高精度处理很怕bug,我也是调了很久。
2024-11-06 15:23:51
135
原创 链表数据结构以及指针
虚拟头结点在处理head节点的操作时经常用到,如果不用虚拟头结点,可能得分情况讨论,如删除操作,我们知道在删除一个节点的时候是需要用前一个节点来操作,使得前一个节点的next=next->next,而在处理head时候,由于没有之前的节点,所以创作一个虚拟头结点dummy就非常要必要而且省去了分类讨论,具体代码模拟如下。如图,dummy就是这个ListNode类型的变量,不是指针类型,所以给*first赋值的时候需要对。2.如果题目是删除倒数第n个节点,如果恰好是头结点,那么也必用dummy。
2024-08-28 21:04:56
266
原创 关于C++常用库函数
单纯用max和min只能传入两个数,例如max(4,9)或者一个列表min({1,5,8,7,6,5});不能传入数组,传入数组可看如下操作。lower_bound:返回第一个大于等于x的地址,因为是地址,所以需要减去首元素地址。upper_bound:返回第一个大于x的地址,也要减去首元素地址。上面是对于容器的解法,下面是对定义一个数组的示例。sort包含于头文件。
2023-12-11 23:36:17
73
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人