粗读中国古代史

写在前面

当我应该忙于工作的时候,读闲书的欲望反而会变得特别高涨,这是一种另类的拖延症,但管它呢,早就没救了。

历史是我特别感兴趣的一个门类,每当我弄清了一段时间一块地域内的政治文化变迁,就会产生一种浑身苏畅的感觉。

近期读的书是吕思勉老爷子的《中国通史》,老爷子是民国时期真正的大师,考据详尽,文笔老到,虽然偶有夹带私货,但也无伤大雅。

这本书分为了文化和政治两编,文化史有些枯燥晦涩,待我后面再品。政治史脉络相对清晰,粗度一遍,政治变迁就能在脑海里生动起来,心下一喜,那就写它一篇简单的读书笔记吧!

(更多…)

TopK算法问题

本文总结下TopK相关算法,分为两个部分,一为讨论TopK问题的类型,二为相关的解题思路和C++代码实现。

TopK 问题一般为海量数据问题,可以分为两大类:

  • 找最大/最小的 K 个数

  这种问题一般分为两种类型,一为内存不够无法一次性加载,二为内存充足可以完全处理数据。

  • 找重复次数最大的 K 个数

  这种问题一般是涉及极其庞大的数据量,内存不可能一次性加载完成。必须采用 分治法

(更多…)

KMP算法

把 KMP 算法做个详细总结,写成博文。

主要分为四个部分:

  • KMP 中的前缀后缀

  • 构建 Next数组

  • KMP算法匹配过程

  • 源码示例.

(更多…)

二分查找寻找左右边界

讨论几个二分查找的变换问题,主要分为两类:

  • 查找 第一个大于/大于等于 target 的数(左边界)

  • 查找 最后一个小于/小于等于 target的数(右边界).

重点是注意临界条件,小心会死循环。本文假设数组为单调递增。

(更多…)

LRU、LFU、LRU-K算法

总结一下缓存置换算法。

  • LFU(Least Frequently Used) 算法

  最近最不常使用,缓存容量满的时候,置换使用频次最小的那个。

  • LRU(Least Recently Used) 算法

  最近最少使用,缓存容量满的时候,置换最长时间没有使用的那个。

  • LRU-K 算法

  LRU-k 有两个队列,一个队列是数据队列,一个队列是缓存队列,只有当数据队列数据的访问次数到达 K次,才将它放入缓存队列。

缓存队列按照 LRU 的方法置换数据。

(更多…)