增加一行日志导致的问题

线上运行好好的一个服务,在一次上线过程中,随手增加了一行日志,噩梦就来了,这个服务的数据库连接池的连接开始出现用光的情况。 现在大家来看看这个过失犯罪的现场: 1234private void doSomething(....., Map param) {     log.debug("....." + param);     ...……

摘要签名算法

md5 16位、md5 32位 – 一共就这两种 SHA1、SHA256、SHA384、SHA512 – 位数更多,更难碰撞,256位就够了 hmac – hash(源串+密码) = 密文1, hash(密文1+密码), 两次hash 一.关于MD5被”破解” 1.MD5是不可逆的,所以,MD5是不可能被破解的。 2.所谓破解,只是MD5碰撞。 3.可以适当处理,MD5的安全……

ThreadLocal的实现

ThreadLocal实际上是一个Map,Map的key是线程对象,而值是一个自定义的需要存储的对象。 另外一方面,ThreadLocal使用的Map是WeakHashMap,WeakHashMap能够在key被GC回收的时候,收到一个消息,随后将对应的Value从Map中删除,以防Map里面的数据内存泄露。 大家都知道对象引用分为强引用、弱引用、软引用、幻影引用。软引……

乐观锁是否能够防重

今天又一次与同事讨论了乐观锁是否能够防重的问题,每次讨论都是把问题费劲脑汁的想了一遍,那过程真的很费脑细胞,于是做个总结,便于下次不用回忆就能把整个问题想清楚和说清楚。 我们假设有一个场景,我们正在开发一个支付模块,支付模块通过两步骤完成支付请求,第一步骤是支付初始化,第二步骤是支付确认,在支付初……

压测 – 并发数与QPS

今天,一个同事与我探讨一个关于压测的问题,他在一个业务项目压测的过程中,发现并发数最多只能达到30,这个并发数无论如何都没法再增加,他很诧异,凭经验,一个业务项目QPS能达到几百到几千是非常常见的。 首先,我们探讨了一下什么是并发数,什么是QPS? 并发数:并发数指在压测过程中,同时可以向待测试服务发送请求……