少年的2017年尾声

Posted by 王天一 on 2017-12-29

最后一天啦,发现一个半月没有更新博客了,一方面是项目上有点忙又赶上年终评价了,一方面是不知道写什么,还有一方面是痴迷于steam上的吃鸡不能自拔。不如把最近的状况写写吧。

#习惯性博客

写博客真是一件容易上瘾的事情。

但是如果从来没写过日记、博客的时候要你去写一篇长文可真是非常头疼了。记得在小学的时候,日记是语文老师布置下来的强制性的任务,每天都要写,第二天上交,不能少于多少字。写起来让人痛苦不堪,但是没有办法,必须得写,然后便对日记之类的东西极为反感,在心里深深地落下个‘写下来干什么?真正的感觉是用心去体验的’的印记。

但是过了很久之后回过头来看看,会因为当年的幼稚逗得现在的自己哈哈大笑,竟然会做出这种事、说出那种话,然后冷静下来想想,现在不敢做了、不敢说了就是成熟了吗?

如果当年没有写日记,那么除了印象极为深刻的某些事之外,其他的事情基本已经忘得一干二净了,于是走过的路是否已经忘了呢,是否又要走一遍呢?终才发现,

博客是一个能让我看到敢做敢当的青春、年少无知的鲁莽、青涩羞耻的笑容、技术成长的过程的空间,同时也是可以重新认识自己,练练表达、文笔、回忆力的宝地。

小学结束之后,再也没有与写博客类似的经历了,直到去TWU的时候碰到黄博文Coach,极力建议我能用博客的形式记录自己的成长以及技术见闻。然后给china邮件组发了一封非常青涩的TWU总结博客。现在还是很感谢博文的指导,已经坚持写一年的博客了,感觉挺不错的,虽然没什么人看,但是自己也总结了不少的东西出来~

到现在为止,已经坚持了一年,发现有点停不下来啦。以后想的是会多写一些生活方面的博客,生活绝非编码。

#项目忙呀
说实话,项目上确实不算忙,即使属于可能需要加班的国内项目,除了项目开始的时候学新的技术(React、Redux、Spring Cloud、契约测试)有点压力之外,其他的时候基本处于非常稳定的开发速度,不忙,也不轻松。总的来说,比较羡慕我们组的新人,一进公司就能到我们项目来学习成长了。

还有新了解到的契约测试,你会发现国内哪里有什么公司搞这个玩意儿?写测试的都没几家公司,还尼玛搞什么契约测试?但是这就是国内软件行业与国外软件行业的一点区别了,软件质量是否是软件的一个重要指标。当然,个人认为对于有时间限定的短期小项目来说,强行写一堆测试实在是没有什么意义,以后又不需要维护了,能把当前的需求及时完成就已经够了。举个例子,比如TX爸爸说,吃鸡手游市面上都好几款了,还不赶紧抄个过来?以后喝西北风啊?然后先是把吃鸡正版代理权搞过来了,然后吃鸡项目组997疯狂加班赶进度。

扯的太远了,继续这个主题吧。我司有个很好的地方是不会压榨你的劳动力,对于我们开发人员来说,大部分项目即使再忙也不可能到996的那种程度,所以一定会有自己的时间去学习、消化接触到的新东西,比如之前写的设计模式、异常处理、组件设计,都是在下班时间和周末总结出来的。时间很多花在自我学习上面去了。

为什么要这样做呢?因为呆井里太长时间就会变成井底之蛙。我们现实一点,要是你了解过大厂的社招的要求,或者有幸作为面试官经历过比较严格的面试流程,那么你应该会很有体会,你再也不能把自己当年一无所知的毕业生了。毕业生可以有很多借口,没学过、没做过,但还是有机会进入比较不错的公司的。社招呢?看看大厂的招聘。不会就给我滚蛋,把你招进来就是要你赶紧把这个活儿利索点儿干完的。

所以说项目忙呀,其实是自己比较忙呀。

#技术嘛,想写但是没写
关于技术方面,我真的有很多想写的东西,比如最近想写的关于一个数据库的隔离级别的问题,把问题提出来的是这段代码:

1
2
3
4
5
6
7
public void updateTabletDownloadTimes(String gemsUserId) {
TabletDownload tabletDownload = tabletDownloadRepository.findByGemsUserId(gemsUserId).orElse(TabletDownload.builder()
.gemsUserId(gemsUserId)
.downloadTimes(0).build());
tabletDownload.setDownloadTimes(tabletDownload.getDownloadTimes() + 1);
tabletDownloadRepository.save(tabletDownload);
}

首先从数据库里查询一次当前是否存在gemsUserId对应的数据,如果没有就新建一个没有ID的实体等待Repository做插入操作,但是如果同时来了另外一个请求,也查出来当前没有对应的数据,也新建了一个实体准备插入,那么后面插入的一条数据的下载次数依然是1,但此时下载次数应该是2。

首先我是想到了锁,给这个方法加个锁,但是在多实例的环境下锁就没用了。然后同事有人说加个事务,用命令行试了下,然后发现所有的事务隔离级别都不行,最后找到悲观锁(FOR UPDATE)可以解决。但是第一次新建的时候不work。

有很多类似的例子,想去解决,但是苦于网上查不到解决方案,旁边同事也没有做过所以没办法了解的足够深入,技术方面实在不想写一些一知半解的东西出来去害人害己。

#WINNER WINNER, CHICKEN DINNER
600场比赛,177小时游戏时长,永远1300分排位分,单排最高第3,双排吃鸡3次,先放1张图。

我这个人是比较喜欢玩游戏的,大学的时候玩英雄联盟超过3000把,所以如果我不玩游戏,把这么多时间放到学习上说不定都能去谷歌了哈哈哈哈哈。当然这是在做梦,我也不可能这样做,就像登顶国服第一的道理一样,即使我有天赋,有时间,但也不想登顶,因为在上分的道路上我会失去太多东西。

不过话说回来,有时候还是挺感谢游戏的。比如在英雄联盟里我学到了心态,现在碰到什么样的喷子都已经淡定自若地跟他聊聊天。现在在吃鸡里我学到了为人处世要圆滑,绝对不能从头刚到尾。

#明年再见
不管怎么样,2017年已经过去了,发生了很多记忆犹新的事情,比如有一件可能是这辈子最后悔的事、马拉松没抽到但是也跑了一次30KM、当了一次主持人呀、参加光谷音乐节海选、跟小偷刚、搬到新家、吃到第一只鸡、认识了个小学妹呀、碰到了老学长、买了房子… 我不会虚伪,回忆起来,今年过得的确马马虎虎。对我来说,有些事情必须经历过才能做的更好,后悔是废物做的事情。

更新于废物的2017年最后一天。

号外号外

最近在总结一些针对Java面试相关的知识点,感兴趣的朋友可以一起维护~
地址:https://github.com/xbox1994/2018-Java-Interview