add by zhj: 总结一下,MySQL有主动和被动两种方式检测死锁。 主动方式:检查锁等待的图,如果有环,那就有死锁,这种情况下,会回滚事务。 被动方式:等待锁超时(即innodb_lock_wait_timeout),超时后回滚 原文:http://www.cnblogs.com/olinu Read More
add by zhj: 看来我对MySQL的理解还有待深入,水还是挺深的啊,MySQL给记录加锁时,可以通过innodb_lock_wait_timeout参数设置超时时间, 如果加锁等待超过这个时间,就会回滚,但回滚的话有两种方式:第一种:回滚当前加锁的这条语句;第二种:回滚整个事务。这两种方式是 Read More
add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁。但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句。但是即使这亲,对我 们来说 Read More
add by zhj: 非常好的文章,异常在Python的核心代码中使用的非常广泛,超出一般人的想象,比如迭代器中,当我们用for遍历一个可迭代对象时, Python是如何判断遍历结束的呢?是使用的StopIteration异常,这点虽然大部分人知道,但如果是让你设计实现Python,我估计一般人不 Read More
add by zhj: 其实很少使用sys.stdout,之前django的manage.py命令的源码中使用了sys.stdout和sys.stderr,所以专门查了一下 这两个命令与print的区别,发现其实没多大区别,用print就好了 原文:http://www.cnblogs.com/tu Read More
add by zhj : Lua与Multi/EXEC的功能比较像,在执行过程中,redis不会执行其它命令,这就不会有并发访问的问题, 这是非常好的。但Multi/EXEC要求所有命令都是独立的,后面的命令无法知道前面的命令是否执行成功,因为redis中并没有if等语句, 使用Lua可以解决这个问 Read More
add by zhj: 如果不考虑键的删除,而是让他过期后自动失效,那用set就可以实现锁了 原文:http://www.cnblogs.com/yjf512/archive/2017/03/22/6597814.html 解锁redis锁的正确姿势 redis是php的好朋友,在php写业务过程中 Read More