自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 TCP重传机制

发送方有一个发送窗口,窗口内的报文可以流水线方式发送,并且维护一个超时计时器(和最早的没有确认的序号绑定)。接收方有一个接收窗口,接收方累计确认,对收到的报文段会等待500ms,超过500ms没有收到新的报文段,就发前一个ack,如果到了就发第二个ack。TCP为每个传输的报文分配一个序号(本报文段的body部分(应用层数据mss)的第一个字节在整个字节流的偏移量(并非从0开始)),用确认号来跟踪发送的报文是否被接收。发送方的超时计时器和最早的没有收到确认的报文绑定,超时后,将该报文重发,重启超时计时器。

2025-01-22 15:25:07 142

原创 HTTPS 3次握手 建立过程的几个疑问整理

具体验证:客户端收到 C_公钥 + CA数字签名 后,将数据部分C_公钥和数字签名分开,将数据C_公钥用摘要算法(和CA机构相同的)计算出一个哈希值,再用内置CA机构的公钥对CA数字前面解密,取出C_公钥对应的哈希值,两者对比判断证书是否被篡改过。CA机构颁发CA证书,用CA私钥 对 服务器公钥 的哈希值 加密生成CA证书数字签名,由服务器将数字签名+数据(服务器公钥)发给客户端。客户端对收到的服务器公钥计算哈希值1,用内置CA公钥对数字签名解密获取CA机构计算出的服务器公钥哈希值2,1、2进行对比。

2025-01-20 20:26:02 264

原创 关于C++ map和vector的swap释放内存的测试

若需要分配的 chunk 大小小于 DEFAULT_MMAP_THRESHOLD, 而 heap 空间又不够, 则此时 ptmalloc 会通过 sbrk 调用来增加 heap 值, 也就是增加 “top chunk”的大小, 每次 heap 增加的值都会 align 到4k bytes.如果申请大于DEFAULT_MMAP_THRESHOLD的内存,就用mmap分配相当于直接从物理内存中映射过来,释放的时候会直接还给内存。static map swap释放内存,与deque一样,内存缓慢释放。

2024-11-27 10:50:41 487

原创 shared_ptr内存泄露问题 weak_ptr如何解决的 详解

然后开始析构ap,发现除了ap本身外,还有原来bp指向内存空间的类B实例的成员aptr也指向同样的空间,所以析构ap时,也只是把use_count减1,不会析构他指向的对象(即类A的实例),也自然不会析构A的实例的成员bptr。按照定义顺序相反,bp先析构,发现除了bp本身,还有ap->bptr也指向了那个new出来的B的空间,所以他的析构函数只是把use_count减1,并不会析构其指向的对象(即类B的实例),也自然不会析构类B实例的成员aptr。成员变量指向对方,会造成循环引用,导致内存泄漏。

2024-04-02 19:33:24 789 1

原创 一级指针和二级指针做函数参数的区别

上面说到,在func2内输出的&x和 main中的&b不相等,在退出func2后,形参int* x的内存被释放,如果我们在func2内部改变形参指针x本身的值,也就是改变他的指向,main中实参b的值会不会改变呢?答案是否定的,我们来验证一下。一级指针做函数参数,传入的是原来指针的副本,也就是形参的地址和原来实参地址是不同的,但形参和实参的值(也就是指向的地址一样),所以可以在函数内部改变指向地址所存储的变量。二级指针做函数参数,仍然无法改变指针本身的值,但是可以改变二级指针指向的一级指针的指向。

2023-11-24 16:22:08 273 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除