C++
赤城の白色彗星
这个作者很懒,什么都没留下…
展开
-
指针和引用的区别
指针:指针的值是一个地址,指向一个内存单元;可以为空值,可以改变值引用:引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已,不可为空,不能变值sizeof:sizeof引用为对象大小,sizeof指针则为指针自己的大小。自增操作(++)如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏;必须使用引用的地方:operator = 的返回值必须是 A&;(p1 = p2) = p3;p1只得到了p2的内容,并没有得到p3的内容,这是因为执行(p1 = p2.原创 2021-03-13 11:01:42 · 171 阅读 · 0 评论 -
HTTP1.x与HTTP2.0的区别
HTTP2.0新增以下内容:HTTP2.0性能增强的核心:二进制分帧在二进制分帧层上,HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码 ,其中HTTP1.x的首部信息会被封装到Headers帧,而我们的request body则封装到Data帧里面。然后,HTTP 2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。相应地,每个数据流以消息的形式发送,而消息由一或多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装。HT转载 2021-03-12 15:19:21 · 342 阅读 · 0 评论 -
C++不知道有多少输入
while (cin >> m) { num.push_back(m); if (cin.get() == '\n') break;}原创 2021-03-11 15:48:33 · 349 阅读 · 0 评论 -
为什么红黑树的最长路径不超过最短路径的两倍
红黑树的性质:每个节点不是红色就是黑色根节点为黑色没有连续的红色节点对于每个节点,每条路径上的黑色节点数相同那么为什么当满足以上性质时,就能保证最长路径不超过最短路径的二倍了呢?我们分析一下:最短路径为全黑,最长路径就是红黑节点交替(因为红色节点不能连续),每条路径的黑色节点相同,则最长路径、刚好是最短路径的两倍。红黑树为什么删除效率高:红黑树不追求"完全平衡",即不像AVL那样要求节点的高度差 <= 1,它只要求部分达到平衡,但是提出了为节点增加颜色,红黑是用非严格的平衡来原创 2021-03-10 22:39:41 · 2611 阅读 · 8 评论 -
2021-03-04
select: 每个连接对应一个描述符(socket),循环处理各个连接,先查下它的状态,ready了就进行处理,不ready就不进行处理。但是缺点很多:每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大select支持的文件描述符数量太小了,默认是1024poll: 本质上和select没有区别,但是由于它是基于链表来存储的,没有最大连接数的限制。缺点是:大量的的数组.原创 2021-03-04 20:29:49 · 81 阅读 · 1 评论 -
STL中内存分配问题
STL中内存配置时的设计哲学如下:向system heap要求空间考虑多线程(multi-threads)的状态考虑内存不足时的应变措施考虑过多“小型区块”可能造成的内存碎片(fragment)问题解决方法如下:SGI以mallco()和free()完成内存的配置及释放考虑“小型区块”造成的内存破碎问题:SGI设计了双层级配置器双层级配置器:当索取的内存块>128bytes时,移交第一级配置器,当<128bytes时,则以内存池(memory pool)管理:SGI第二级原创 2021-02-07 11:43:12 · 303 阅读 · 0 评论