Fork me on GitHub
摘要: Linux 内核“共享”双向链表在 linux 内核中,有大量的数据结构需要用到双向链表,例如进程、文件、模块、页面等。若采用双向链表的传统实现方式,需要为这些数据结构维护各自的链表,并且要为每个链表设计插入、删除等操作函数。因为用来维持链表的 next 和 prev 指针指向对应类型的对象,所以一 阅读全文
posted @ 2020-09-02 18:24 索智源 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 在高并发 HTTP 反向代理服务器 Nginx 中,存在着一个跟性能息息相关的模块 - 文件缓存。 经常访问到的文件会被 nginx 从磁盘缓存到内存,这样可以极大的提高 Nginx 的并发能力,不过因为内存的限制,当缓存的文件数达到一定程度的时候就会采取淘汰机制,优先淘汰进入时间比较久或是最近访问 阅读全文
posted @ 2020-09-02 16:57 索智源 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 英雄联盟游戏里面防御塔都有一个自动攻击功能,小兵排着队进入防御塔的攻击范围,防御塔先攻击靠得最近的小兵,这时候大炮车的优先级更高(因为系统判定大炮车对于防御塔的威胁更大),所以防御塔会优先攻击大炮车。而当大炮车阵亡,剩下的全部都是普通小兵,这时候离得近的优先级越高,防御塔优先攻击距离更近的小兵。 优 阅读全文
posted @ 2020-09-02 16:45 索智源 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 在队列的顺序存储中,采用出队方式 2, 删除 front 所指的元素,然后加 1 并返回被删元素。这样可以避免元素移动,但是也带来了一个新的问题“假溢出”。 能否利用前面的空间继续存储入队呢?采用循环队列 循环队列入队, 队尾循环后移: SQ->rear =(SQ->rear+1)%Maxsize; 阅读全文
posted @ 2020-09-02 16:14 索智源 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 线程池-由一个任务队列和一组处理队列的线程组成。一旦工作进程需要处理某个可能“阻塞”的操作,不用自己操作,将其作为一个任务放到线程池的队列,接着会被某个空闲线程提取处理。 1 #include <stdio.h> 2 #include <assert.h> 3 #include <Windows.h 阅读全文
posted @ 2020-09-02 16:08 索智源 阅读(1466) 评论(0) 推荐(0) 编辑
摘要: 队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列。为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点。 1 typedef int DataType; //队列中元素类型 2 typedef struct _QNode //结点结构 阅读全文
posted @ 2020-09-02 15:56 索智源 阅读(279) 评论(0) 推荐(0) 编辑