坚持住啊,还在屎山中爬行的同事们

“There are only two hard things in Computer Science: cache invalidation and naming things.”

Phil Karlton

在计算机领域只有两件艰难的事情:缓存失效和对象命名。

这还真不是一个笑话。写代码是比较容易的事情,但是阅读别人的代码,那就因人而异了。

好的工程师写出来的代码可读性很高,比如我上家公司的同事旭总。一般的工程师写出来的代码就像是一坨屎,比如之前某某几位同事。

所以我会经常去格式化他们的代码。如果不幸轮到你继续在屎代码上面开发,那就是屎上堆屎了。心疼你。

当然有时候工期紧张,我自己也会写一些屎代码shit code,但是每次提交的时候都有一种强烈的愧疚感。希望这些代码最多存活一个月就消失,不要被人踩到了。

神兵利器推荐——你一定不能错过的chrome插件

最近有朋友问我,有没有什么可以提升效率的chrome插件推荐一下。我看了一下我的插件库,好用的还真不少。既然要推荐给一个人,还不如整理出来,分享给所有需要的人。毕竟,极致利他才能最终利己嘛。

话不多说,下面一个一个的推荐,并且附上效果截图。(注意,一定要看完,图中隐藏着很多人梦寐以求的大杀器!!!)

技术文章一键分发:openWrite助手

安全认证简书、博客园、知乎、开源中国、掘金、SegmentFault等平台,一键群发文章。

免费版只有有限的分发次数,但是为了效率,这点费用还是很值得的。

元旦去峨眉山吧,人间值得

每年到了10月底11月初的时候,就会开始计划一年一度的大学室友聚会。

前几年关于目的地是没什么争议的,因为其中一个舍友,人称装逼王的旭云在成都电子科技大学读研究生,所以每年都是在成都以及周边聚聚,比如重庆,都江堰之类的。

今年比较特殊,装逼王要毕业了,时间很充裕,去哪儿都行。四人小团队第一次遇到在哪个城市聚会的问题。可能很多小伙伴元旦也开始计划元旦出行,但是又不知道去哪儿。那可以看下我们的决策方法,应该有一些借鉴意义。

定决策方案

既然不知道干什么那就roll一下

git禁止在master分支push和commit

作为管理者,在远端将master分支设为保护分支,可以从根源上杜绝直接推送到master的问题。dev分支同理。

作为开发者,在本地的git hook中加配置可以做到在commit和push操作时做对应的检查

你压力都这么大了,怎么还睡不好?

在这个社会里面,每一个人压力都不小。特别是在大城市的小伙伴们,加班是常态。

面对着高消费和高房价这两座大山,随之而来的,就是焦虑,进而失眠。按照这个逻辑,应该是压力越大才会越容易失眠啊。

但我却不这么认为。你压力都这么大了,怎么还睡不好?难道不是一回到家倒头就睡的嘛,睡眠效率是100%才对啊,应该是远高于普通人的90%啊。

可是你为什么还是失眠了呢?

程序员小哥教你秋招拿大厂offer

快要到秋招了,对于应届生来说,秋招是一个特别重要的机会。对于社招同学来说,金九银十也是一个很好的跳槽窗口。

而我呢,因为是从上海到广州工作,就没有提前先把工作定下来。刚好也趁这个机会出去旅游了两个月。

旅游结束,等到要开始找工作的时候,发现很多知识点也都忘记的差不多了。说是从0开始准备面试似乎也不是那么过分。

但最终,大概花了3周时间,最终面试通过找到了一个薪资还不错的工作,入职广州仅有的几家大厂之一的YY欢聚时代,任职高级后端开发工程师。

记录一次mybatis缓存和事务传播行为导致ut挂的排查过程

记录一次mybatis缓存和事务传播行为导致ut挂的排查过程

起因

rhea项目有两个ut一直都是挂的,之前也经过几个同事排查过,但是都没有找到解决办法,慢慢的这个问题就搁置了。因为之前负责rhea项目的同事离职,我临时接手了这个项目,刚好最近来了一个新同事在做新的功能开发的时候遇到了这个问题,于是我就接了一个锅,最终证明这个锅很好玩。

rhea是一个典型的使用mybatis orm的springboot项目,我们使用h2内存数据库做单元测试,每个单元测试都在一个事务内,都由Transactional进行注解。testGetBGWechatAccountByOpenid这个ut的核心调用链如下

调用链

从哈夫曼编码再出发:原理和现实

对于计算机科班出身的人来说,在大学阶段几乎都学过信息论和算法这两门课,信息论都会讲到香农三大定理以及哈夫曼编码,算法课上会学习二叉树,甚至哈弗曼树。在介绍哈夫曼编码之前,先介绍一下什么是有效编码,以及香农第一定理的内容。

一个好的有效编码需要遵循两个基本原则:

  • 易辨识
  • 有效性

那么怎样才能做到有效编码呢?下面有一个问题:

用10根手指头,能表达多少个数字?