22nd Dec 2017
最近高强度的工作了一段时间,暴露了很多问题出来。有专业技能方面的,也有工作方式上面的。
专业技能 这段时间主要的工作是做性能测试以及性能调试,其实就是自己审查自己的代码,看看代码有没有什么问题。这一测还真测出问题来了。
- 多线程读写
- 描述:在进行压力测试的时候一直都有 500 的 error。查 log 以后发现有 ConcurrentModificationException
- 诱因:代码中有一个 static 的 Map 对象,多个线程会同时访问。但是 Map 的实现选用的是 HashMap,就出现了读写问题。
- 解决:将实现改为了 ConcurrentHashMap
- 启示:
- 多线程实践太少,光有理论基础。一到真正上场就掉链子了。多写代码
- 内存泄漏
- 描述:在进行压力测试的时候有一次南端没有响应返回了大量的报错响应。然后就发现程序运行速度越来越慢,查了一下发现是程序有非常频繁的 Full GC。
- 诱因:我在代码使用了一个 Context 对象将所有请求的 Request 存了起来,但是在异常情况下这些资源没有得到正确的释放
- 修改:移除该 Context 对象,在各个方法中老老实实传递 Request 对象。
- 启示:
- Context 对象可以用来保存配置信息这种静态的信息,不要保存业务对象
- 使用 Collection 的时候要注意释放对象的引用,不然容易造成内存泄漏
16th Aug 2017
前几天给老板做完了年中汇报,这才发现年初定下的目标距离完成还远得很啊。
博客
比如写博客这个事情,每月一篇的要求远远没有达到。其实说起来还是自己对知识的梳理不到位,没有一个清晰的认识,所以下笔就会感到困难。
编程语言
再比如学一门新语言这事,我是把这个加到了工作年度目标里面的:学 Golang。哎哟,给自己挖了个坑,下半年得要使劲填了。毕竟事关自己的 KPI 啊,不努力不行了。
编程之外
关于编程外的技能这件事情倒是真的学会了炒两个小菜。有闲情逸致的时候就可以下个厨。
书
啊,看了好几本东野圭吾的书,加上其他几本。非技术类书籍已经超额完成指标了。至于技术类的书嘛,哼哼哼。
27th Jun 2017
在和其他 team 合作开发的过程中,千万不要一声不吭的自己改东西。否则的话会导致两边对接出现问题。而且自己这边单方面修改,对面不一定是认同的。对于这种团队协作的任务,一定要大家协商好
25th Jan 2017
来了爱立信干了半年了,一直慢慢的修修改改。遇到过各种各样的问题: 比如以前我们经常吐槽的:刚刚在我的机器上还行的,怎么这就不行了? 在这台机器上就可以,怎么在那台机器上就不行了? 手动运行没问题,脚本自动跑就出问题了? 还有很多逻辑正确但是结果完全不符合预期的问题。
从中学到了什么呢?一切看上去毫无道理的事情其实都是有着他的原因的。 原因也许不是清晰可见,但你总可以一步步顺藤摸瓜找出来。
控制变量法是个好方法,想想你把代码玩坏之前都干了啥? 想到了?试试改回去
8th Jan 2017
- 想办法降速,对于知识缓慢充分的接收,不要只“已阅”。
- 对于知识点,不要写下来就好,要回顾,看吸收了多少。
- 不要尝试一次性学习太多东西,容易迷茫