Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start Create a new post 1$ hexo new "My New Post" More info: Writing Run server 1$ hex...
Template
This is a template for C++ blog
【收藏】知识库
收藏的一些很有用/硬核的资源/文章
【life】experience
a fall into the pit,a gain in your wit 吃一堑,长一智
操作系统
阻塞IO和非阻塞IO 阻塞的文件描述符为阻塞IO 非阻塞的文件描述符为非阻塞IO 同步IO和异步IO 同步IO向应用程序通知的是IO就绪事件。要求用户代码自行执行读写操作,将数据从内核缓冲区读入用户缓冲区。 异步IO向应用程序通知的是IO完成事件 。由内核来执行IO读写操作。在linux环境下,aio.h头文件定义的函数提供了对异步IO的支持。 事件处理模式 reactor 同步IO模型通常用于实现reactor模式。要求主线程只负责监听文件描述符是否有事件发生,有的话就立即将该事件通知工作线程。 proactor 异步IO模型通常用于实现proactor模式。也可以用同步IO...
计算机网络
TCP头部 16位源端口 16位目的端口 32位序号 32位确认序号 4位TCP头部长度 单位为4字节 6位标志位 16位滑动窗口 16位校验和 16位紧急指针 注意:TCP的包没有IP地址,只有源端口和目的端口。一个TCP连接需要4个元组来表示一个连接。(源端口,目的端口,源IP,目的IP) 为什么建立连接需要3次握手 主要是初始化序列号和协商最大报文段长度。 粘包问题 udp不存在粘包的问题,因为udp是个数据包协议,也就是两段数据间有界限的。要么收不到,要么全收。 产生粘包的原因:nagle算法为了改善网络传输效率,延迟发送数据。应用层由于某些原因不能及时取出TCP的数据,导...
C++语言
逻辑用语千万条,第一首先往里套。 首先,其次,然后,最后。 第一,第二,第三,第四。 书籍 《C++ primer》 第五版 《后台开发》 徐晓鑫 《linux高性能服务器编程》 游双 《redis设计与实现》黄健宏 《muduo库》陈硕 static static的使用可以分为两类,一类是用在普通变量和函数上,另一类是用在类中。 普通变量分为全局变量和局部变量。声明为静态全局变量是在全局区分配内存,并且只在当前文件可见,在文件之外是不可见的。其他文件定义同名变量不会发生冲突。变量的值只在第一次执行时进行初始化。声明为静态局部变量时与全局变量类似,只是作用域为局部作用域。 静态...
数据库
B+树 具有n个关键字的节点含有n个分支。而在B树中,具有n个关键字的节点含有n+1个节点。 B+树的叶子节点包含了所有关键字,并且包含信息。 B+树非叶子节点只起索引作用,不存数据。 B+数在叶子节点使用指针将前后磁盘块中的索引连接起来,形成一个线性链表,方便范围查询。 什么是索引 索引是数据表中对字段进行排序的一种数据结构。常用的索引有 B树 哈希索引 全文索引 Rtree索引 AVL树,B树,B+树,红黑树,哈希表。 哈希表和B树不利于范围查找。红黑树在数据量大的时候性能会下降。 **聚集索引:**数据和索引在一起的。 **非聚集索引:**索引文件和数据文件是分离的。 联合索引...
数据结构
单例模式 1234567891011121314151617181920212223class A{ public: static A* getInstance(); static A* instance; private: A(); ~A();};A* A::instance = nullptr;//内存读写reorder不安全 导致双检查锁失效//先分配内存 再执行构造器 最后返回给实例//编译器的优化 A* A::getInstance(){ //读没有问题 写就有问题 //锁前检查 锁的粒度过大 锁后检查安全性 if(instanc...
C++项目
webbench 测压软件 最高并发3W webbench做测试时自身也会消耗CPU和内存资源,为了测试准确,需要将webbench安装在别的服务器上。 1234tar -xzvf webbench-1.5.tar.gzcd webbench-1.5apt-get install ctagsmake && make install 测试 1webbench -c 1000 -t 5 http://127.0.0.1:9999/index.html //1000个客户端 5秒钟时间 github 1git clone https://github.com/SYaoJun/W...








