战国乱局:齐灭宋的自我毁灭之路

战国有所谓战国七雄,即当时中华大地上有齐、楚、燕、韩、赵、魏、秦七个主要的大国。而实际上到了战国中期是齐与秦东西两个超级大国的较量。其他国家或者联合起来共同抵抗这两个国家,即所谓合纵;又或者联合这两个大国其中一个去进攻另外一个,即所谓连横。 到公元前298年处于东边的超级大国齐国的连横战略在相国“孟尝君”田文的领导下似乎还是比较成功的。 齐国联合处于中原的魏国、韩国两国,合三国之力先在垂沙彻底击溃 …

阅读全文

再看设计模式——命令模式

命令模式Command本质就是一个对象化的回调函数。 通常命令的发送者和命令执行者有不同的生命周期,这也是回调函数经常会面临的问题,因此才需要设计这个模式来解耦。这个模式可以跟策略模式或状态模式一起用来保证状态和行为的可扩展性。 命令发送了并不是立即执行,通常会加入一个undo方法来支持撤销命令。

阅读Redis源码

1. 代码结构 redis源码结构是平铺的,全部都放在src文件夹下面,为方便学习阅读,可以分为几个功能部分: 基础数据结构:atomicvar、sds、sdsalloc、t_set、t_zset、t_string、t_stream、t_list、t_hash、quicklist、listpack 外部数据结构:adlist(双向链表)、bitops、dict、geo、geohash、hyperl …

阅读全文

MySQL使用总结

索引 建立索引 索引的基数相对于数据表行数较高,工作效果最好。说明列中不同值较多,区分度的公式是 COUNT(DISTINCT col) / COUNT(*)。查询优化器发现某个值出现在表的数据行中的百分比很高的时候,它一般会忽略索引,进行全表扫描,惯用的百分比界线是“30%”, 通过SHOW STATUS LIKE ‘Handler_read%’;查看索引的使用情况 Ha …

阅读全文

再看设计模式——访问者模式

首先我们拥有一个由许多对象构成的对象结构,这些对象的类都拥有一个accept方法用来接受访问者对象;访问者是一个接口,它拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素作出不同的反应;在对象结构的一次访问过程中,我们遍历整个对象结构,对每一个元素都实施accept方法,在每一个元素的accept方法中回调访问者的visit方法。 访问者模式使得我们可以在传统的单分派语言(如Jav …

阅读全文