3月 22

redis队列

常用的队列有RabbitMQ,Redis,ZeroMQ, ActiveMQ, Kafka等,其中redis是较为轻量级的,这里简单介绍下。

Redis这个缓存的应用之所以能用作队列,要得益于lpushbrpop两条命令:

    lpush 在list左侧插入数据
    rpush 在list右侧插入数据
    brpop 在list右侧弹出数据(如果没有数据,就阻塞进程)
    blpop 在list左侧弹出数据(如果没有数据,就阻塞进程)

继续阅读

3月 21

MySQL索引使用方法和性能优化

关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTREE索引。 继续阅读

3月 16

Apache Commons Exec教程

如果你看到这篇文章,相信你肯定使用java新建过子进程,去执行shell命令,并且肯定耗费了不少时间。你可能会认为java自身的Runtime.exec()很简单,而Apache Commons Exec太过臃肿,纯粹是在浪费时间。

但是,我在使用Runtime.exec()的过程时,经历了一系列痛苦的过程。一起来看下commons exec是怎么把这一过程变简单的。 继续阅读

3月 16

Android 静态代码扫描规则

阻塞

  1. 不可能的转换
  2. 使用equals()方法比较类型不通的数组
  3. 硬编码了数据库密码
  4. 性能 – URL的equals 和 hashCode 方法会被堵塞 http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html
  5. 性能 – URL的Maps 和 sets可能是性能大问题
  6. 错误用法 – close()调用了一个永远是null的值
  7. 错误用法 – equals方法一直返回false或者true
  8. 错误用法 – null值一定会被调用
  9. 错误用法 – 一个已知的null值被检测它是否是一个类型的实例
  10. 错误用法 – 集合转换为数组元素时发生的类型转换错误

继续阅读