04 2022 档案

摘要:###重要结论 有效地利用二级指针,将其作为管理和操作链表的首要选项 ###问题的引入 在对链表进行删除操作时,函数参数的参数为二级指针,代码如下: struct single_list* del(struct single_list **prev) { struct single_list *tm 阅读全文
posted @ 2022-04-23 19:22 牛犁heart 阅读(671) 评论(0) 推荐(0) 编辑
摘要:为什么大多数编程语言中,数组要从 0 开始编号,而不是从 1 开始呢? 从数组存储的内存模型上看: “下标”最确切的定义应该是**“偏移(offset)”** 用a表示数组的首地址,a[0]就是偏移为0的位置,也就是首地址,a[k]就表示偏移k个type size的位置,所以计算a[k]的内存地址只 阅读全文
posted @ 2022-04-17 14:15 牛犁heart 阅读(349) 评论(0) 推荐(1) 编辑
摘要:###引入 看个例子: // array表示一个长度为n的数组 // 代码中的array.length就等于n int[] array = new int[n]; int count = 0; void insert(int val) { if (count == array.length) { i 阅读全文
posted @ 2022-04-16 21:28 牛犁heart 阅读(78) 评论(0) 推荐(0) 编辑
摘要:###buffer对象 buffer对象:顾名思义,就是一个缓冲区对象,缓存了从套接字接收来的数据以及需要发往套接字的数据。 如果是从套接字接受来的数据,事件处理回调函数在不断地往buffer对象增加数据,同时,应用程序需要不断把buffer对象中的数据处理掉,这样,buffer对象才可以空出新的位 阅读全文
posted @ 2022-04-09 22:22 牛犁heart 阅读(132) 评论(0) 推荐(0) 编辑
摘要:###多线程设计的几个考虑 在反应堆reactor框架设计中,main reactor线程是一个acceptor线程,这个线程一旦创建,会以event_loop形式阻塞在event_dispatcher的dispatch方法上,实际上它是在等待监听套接字上的事件发生,即已完成的连接,一旦有连接完成, 阅读全文
posted @ 2022-04-09 22:01 牛犁heart 阅读(175) 评论(0) 推荐(0) 编辑
摘要:https://app.yinxiang.com/fx/7e601cad-6501-4fe7-8e4e-f0fbd9d02c4b TCP 高性能网络框架需要满足的需求有以下三点: 1)采用 reactor 模型,可以灵活使用 poll/epoll 作为事件分发实现。 2)必须支持多线程,从而可以支持 阅读全文
posted @ 2022-04-09 19:14 牛犁heart 阅读(354) 评论(0) 推荐(0) 编辑
摘要:转载:bool型返回值函数,没写return语句的时候返回啥? 因为漏写了一个return语句,g++又没开warning,结果就悲剧了,调用的时候出现了奇怪的现象,于是就测试了一把到底没写return的时候返回什么东西。 #include <iostream> #include <vector> 阅读全文
posted @ 2022-04-09 17:11 牛犁heart 阅读(1332) 评论(0) 推荐(0) 编辑
摘要:###事件驱动模型 事件驱动的好处:占用资源少,效率高,可扩展性强,是支持高性能高并发的不二之选。 事件驱动模型也叫作反应堆模型(reactor),或者是Event loop模型,该模型的核心有两点: 1、它存在一个无限循环的事件分发线程,或者叫做reactor线程、Event loop线程。这个事 阅读全文
posted @ 2022-04-05 21:13 牛犁heart 阅读(139) 评论(0) 推荐(0) 编辑