底层原理
文章平均质量分 79
暂代
须知少日拿云志,曾许人间第一流。
展开
-
C++学习_动态内存管理
C++内存管理 附:C语言动态内存管理 C++管理动态内存的操作符有两组: 1.new/delete new和delete的使用实例: class Test { public: Test()=default; } int main(void) { Test *t1 = new Test;//从堆申请一块Test大小的内存(自定义类型) int *t2 = ne...原创 2018-05-03 18:44:01 · 326 阅读 · 0 评论 -
动态内存管理_C
一、函数介绍 以下四个函数都包含在头文件< stdlib.h > 1.malloc 函数原型:void *malloc(size_t size); 作用:从堆空间申请内存 函数参数:需要申请的空间大小(字节数) 返回值:申请成功则返回一个指向申请到的内存的指针,失败则返回NULL 2.calloc 函数原型:void *calloc(size_t num,siz...原创 2018-04-30 09:17:35 · 328 阅读 · 0 评论 -
解析Boost库智能指针(smart pointer)实现原理
引言: 我们在写c++程序的时候,经常会因为忘记释放指针的资源从而导致内存泄漏,基于指针的这种缺陷,boost库中就提供了一种称之为“Smart Pointer”的类来解决这个问题,让程序自己控制已经不需要的资源的释放。后来”Smart Pointer”中的部分也移植到了c++标准库。 下面这些smart pointer的设计思想都是:定义一个类来封装资源的分配和释放,在构造函数完成资源的分配...原创 2018-06-22 23:00:40 · 725 阅读 · 0 评论 -
从源码到可执行文件(那些被隐藏了的过程)
1.预处理( 预处理器 cpp) 对应Linux下的指令为: gcc -E file.c -o file.i 此阶段的工作: 完成条件编译的替换 将#include引入的头文件包含进当前 文件 替换宏常量,展开宏定义(#define) 去掉注释 保留#pragma 2.编译(编译器 cc1) 对应Linux下的指令为:gcc -S file.c -o file.s 此阶段的工...原创 2018-06-30 07:19:38 · 821 阅读 · 0 评论 -
HTTP协议优化措施
如果文章哪里有问题,还请诸位看官不吝赐教噢~ 经典提高效率的机制 并行连接 可以通过建立多个 tcp连接通道来实现并行传输数据,提高页面响应速率。并行TCP连接的使用还能够一定程度上减轻RTT延迟和短连接缓启动延迟的影响。 长连接 HTTP/1.1默认开启 Keep-Alive 选项,并且是 pipeline模式的。这样建立的 TCP 连接,可以在多次请求中复用。(注意:pipelin...原创 2019-02-20 20:52:57 · 2194 阅读 · 0 评论 -
如果ESTABLISHED队列满了,可是有连接需要从SYN队列转移
转载至:https://blog.csdn.net/yangbodong22011/article/details/60468820 由于标题长度有限制,我把想要描述的问题再次描述下: 内核通常会为每一个LISTEN状态的Socket维护两个队列: accept队列: listen()函数第二个参数BACKLOG指定,表示已完成连接的队列,等待被accept函数取走。 SYN队列:由/pro...转载 2019-06-23 10:50:56 · 499 阅读 · 1 评论 -
深入探索 Linux listen() 函数 backlog 的含义
转载至:https://blog.csdn.net/yangbodong22011/article/details/60399728 1:listen()回顾以及问题引入 listen()函数是网络编程中用来使服务器端开始监听端口的系统调用,首先来回顾下listen()函数的定义: 有关于第二个参数含义的问题网上有好几种说法,我总结了下主要有这么3种: Kernel会为LISTEN状态...转载 2019-06-23 10:44:33 · 275 阅读 · 0 评论 -
记一次对“缓冲区溢出漏洞”的攻击实验
记录一次对“缓冲区溢出漏洞”进行攻击的实验。通过这个实验,可以加深对函数调用底层原理(栈帧结构)以及缓冲区溢出危害的理解。进行这个实验之前,读者最好先了解一下函数的栈帧结构以及X86-64汇编语言基本语法。原创 2019-08-24 16:07:47 · 863 阅读 · 0 评论