static关键字主要起的作用:
- 限定作用域
- 变量持久化
- 默认初始化为0(static变量)
static关键字主要起的作用:
CMake构建模版
这里总结一下我的技术历程,主要分享我遇到的好书、好教程。
深以为然:“CS里面随便一个领域单独拿出来,水都可以深得超过外行的想象,但在工程的场景下,更重要的是投入恰到好处的技能点去实现你现阶段的目标。”
https://www.zhihu.com/question/53539039/answer/435412199
还有一个点就是:CS是抽象的学科,是工程经验,只学理论而不实际编程就会变得空洞。
https://mp.weixin.qq.com/s/RJpeftXV4Ikza-ApvAQfIQ
描述:某码头有一批集装箱,每个集装箱形状大小一致。
由于材质不同,每个集装箱上方可堆叠的集装箱个数不同。 如: 标号的集装箱,则不可在其上方放置集装箱;
标号1的集装箱,其上方最多可放置1个集装箱;
标号n的集装箱,其上方最多可放置n个集装箱;
给定一批集装箱,假设每个集装箱底面积为1,求如何堆叠使得占地面积最小,并输出最小面积。
输入为一行整形数组的字符串,每个数字以空格隔开
值,最小面积。
输入
1 | 0 2 1 |
输出
1 | 1 |
最少可堆叠为1垛,堆叠顺序自下而上依次为:2标号集装箱、1标号集装箱、0标号集装箱。
输入
1 | 1 2 1 2 |
输出
1 | 2 |
这题有点像汉诺塔问题,大集装箱必须放在小集装箱下面。问题是怎么样使得占地面积最小。
很容易想到排序,因为我们需要某种顺序进行堆叠。如果是降序,我们不能确定大集装箱的占地面积(因为它们之间可以堆叠)。相反,如果是升序,我们可以确定这样一个性质:占地面积最少为标号0的集装箱个数。
于是确定这样一种算法:
将集装箱安装大小升序排序,保存在v中
建立一个multiset用来维护跺堆的高度
遍历v,每次取出一个集装箱box
遍历multiset,找到小于box高度的跺堆
将这个box更新到这个跺堆中(跺堆高度+1,然后更新multiset)
其实就是将这个box塞到能塞的最高高度的跺堆中
最后的占地面积就是mutliset的size
1 | int main() { |
《Linux多线程服务端编程:使用muduo C++网络库》,muduo的核心我认为是EventLoop、Poller、Channel。EventLoop实现了one loop per thread 语义,poller管理众多channel、channel管理fd以及相关的事件回调。三者互相配合,实现了简洁高效的网络库。
注:为展示核心逻辑,贴出的代码有删减。
如何构建一个高性能的异步日志库?