代码工匠

Walking The Long Road.

代码大全读书笔记

最近项目开发比较密集,也遇到了一些方式的碰撞,这个时候再翻到《代码大全》,真是瞌睡时碰到枕头的感觉了。决定好好读一遍,记录一下。

缓存不是万灵药

公司有个很重要的服务,因为数据需求非常杂,所以关联的数据表非常多。而这个服务就承担起提供如此多数据的使命。

分层开发论

做Java开发的都喜欢分层的思想,似乎层次是越多越好。虽然之间我并不喜欢层次太多,但是也没有太多的理由让我去厌恶它。但是最近在做一些开发,刚好用了两种极端的方式来完成。

没有银弹-谈谈软件设计的几个矛盾(二)

1. 关联与冗余

数据库第三范式种约定,数据没有传递依赖性,但是在互联网应用中,会存在非常多冗余的情况。冗余的目的主要有几个:

  1. 性能

    将所有需要的数据冗余到一起可以提高性能。

没有银弹-谈谈软件设计的几个矛盾

最近在做项目的重构和功能改进,设计做了很多,也发生了一些争执。其实总结下来,很多争执的内容其实早就是经典的问题。这些问题没有孰优孰劣,具体采用哪种方案,还得因地制宜,详细分析项目需求和复杂度之后,再做决定。之前很多人都试图只从宏观指导思想来决定设计,最后大家谁也不服谁,所以先把问题确定下来,至少以后思考问题会直接一点。

关于业务架构的一些思考

最近换了部门,接手了好几个新项目,也进行了一些重构的尝试,总结一些经验。主要针对Web开发领域,算是抛砖引玉了。

重玩了一会wow

最近重新玩了一段WOW,边玩边回忆起大学那段疯狂的时光。WOW好像从另一条支线,串起了我对大学时光的记忆。

又一次线上OOM排查经过

最近线上一个服务又出现了频繁Full GC的情况,导致提供的业务经常超时。问题出现非常不稳定,经过两周的时候,终于又捕捉到了一次Full GC,于是联系运维做Heap Dump之后,经过一系列分析,终于解决问题。这次的问题稍微复杂一点,但是也比较有代表性,用到了VisualVM和MAT两个工具,继续记录如下。

减肥中

Github马拉松进行了78天了,希望也以同样的毅力坚持减肥。