为什么需要 EPOLLONESHOT? epoll 有两种触发的方式:LT(水平触发)和ET(边缘触发)。对于前者,只要存在着事件就会不断的触发,直到处理完成;而后者只触发一次相同事件,或者说只在从非触发到触发两个状态转换的时候才触发。 想象这样一种情况,当前是多线程在处理,一个 socket 事件到来,数据开始解析。这时候这个 socket 又来…
LCR 078. 合并 K 个升序链表 既然每个链表都是升序的,那么合并后的第一个节点一定是某个链表的头节点 合并后的第二个节点,可能是某个链表的头节点,也可能是第一个节点的下一个节点 所以我们需要把所有可能是下一个节点的节点放在一个集合中,并且最小的可以自动浮起来,即最小堆 /** * Definition for singly-linked l…
CAP原理 CAP原理指的是:在一个分布式系统(互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲。也就是说,在分布式系统的设计中,没有一种设计可以同时满足这3个特性,要么CA,要么C…
More content:LeetCode hot100@动态规划&多维动态规划 DP是由前一个状态推导而出,而贪心是在局部直接选择最优 DP五部曲: 确定dp数组以及下标的含义 确定递推公式(状态转移公式) dp数组如何初始化 确定遍历顺序 举例推导dp数组 01背包模板: for(int i = 0; i < weight.siz…
概述 CMake是个一个跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个函数库。 CMake 通过使用简单的配置文件CMakeLists.txt,自动生成不同平台的构建文件(如Makefile、Ninja构建文件、Visual Studio工程文件等),简化了项目的编译和构建过程。CMake…
More content:力扣题记之贪心 121. 买卖股票的最佳时机✅ 简单贪心 也可DP class Solution { public: int maxProfit(vector<int>& prices) { int res = 0; int mny = 0; for(int i = 1; i < prices.s…
面向对象 多态的底层实现 多态的实现分为静态多态和动态多态: 静态多态(编译时多态):通过函数重载(overload)、模板(templates)和运算符重载来实现,它的调用在编译时就已经确定。 动态多态(运行时多态):通过继承、函数重写(override)和虚函数,依赖虚函数表(vtable)和虚函数表指针(vptr)实现动态绑定。 那么虚函数的…
More content:LeetCode hot100@图论 大纲 深搜与广搜 并查集 最小生成树 Kruskal prim 拓扑排序 最短路算法 dijkstra(单源) Bellman_ford(单源&负权) Floyd(多源) 代码框架 dfs vector<vector<int>> result; // 保…
alias命令 功能:给命令自定义别名 语法:alias name = value 例子:alias pg='ps aux | grep'(那么下次想查看进程名为abc的信息直接输入pg abc即可) cat命令 功能:查看文件内容 语法:cat 参数 参数:被查看的文件路径 cd命令 功能:切换工作目录 语法:cd [目标目录] 参数:目标目录,…
概述(待修改) 线程池里有若干线程,每个线程里有三类协程:主协程、调度协程和任务协程。 多线程通过互斥锁拿取任务后,利用线程的局部变量各自调用子协程去做任务,互不干扰和影响并发的去执行任务。 IO 协程调度器对 idle 空闲协程进行了重写,主协程只进行任务调度,idle 只监听 epoll 进行任务添加,降低了不同功能之间的耦合,便于后期扩展维护…