0%

工作中难免会遇到一些问题,当遭遇问题时,该如何分析并得到解决方案,是对程序员应对问题的能力和对知识的掌握程度的一次考验。我在工作时也遇到了问题,因此我把它记录下来,也算是成长的履历。

阅读全文 »

InnoDB在处理更新语句的时候,并不会将数据直接更新到数据库,大量的磁盘操作势必影响数据库的性能,InnoDB是怎么做的呢?InnoDB通过引入内存组件buffer pool从而避免频繁对磁盘做随机读写操作,并引入redo log(写入日志)的机制保证了数据不丢失。采用缓存必然存在缓存不足需要进行内存淘汰,InnoDB则采取一种类似lru的内存淘汰算法。

阅读全文 »

锁是计算机协调多个进程或线程并发访问某一资源的机制。而根据加锁的范围,可被分为全局锁、表级锁和行锁。他们都有什么作用呢?有让我们一探究竟吧!

阅读全文 »

了解异步编程的同学对于gevent一定不会陌生,但大部分人对于gevent可以在不修改任何代码的前提下将原始同步代码更替成异步代码的原理知之甚少。
很多人很胆怯阅读源码,但通过阅读源码,你既能学习到正确的编码规范,也能学习到好的编程思路。
接下来我带领大家一起来揭开gevent这层神秘面纱,及借助gevent思想在项目test中的应用。

阅读全文 »

Condition是一种多线程通信工具,表示多线程下参与数据竞争的线程的一种状态,主要负责多线程环境下对线程的挂起和唤醒工作

阅读全文 »

相信学过java的同学们都知道java并不支持多继承,但python中却是支持多继承的,而且像python社区中非常有名的框架中就疯狂引入多继承来扩展类的功能。python多继承基于mro算法来实现的。

阅读全文 »

当我们的网站上线之后,我们很多时候需要对网站浏览记录进行分析,从而做出对策。
如:我们需要对热点页面进行缓存,因此我们就需要知道页面点击数等等。
由于redis的处理命令做到线程安全,并且支持大量的读写操作,因此将计数器储存到redis里面是一个非常好的方案。

阅读全文 »

String在Redis中是可变字节数组的形式存在,但它并不是C所提供的原始字符数组。Redis通过自建Simple dynamic string(SDS)实现。

阅读全文 »