吾心安处

吾心安处

想总结一下过去,近又偶得心安,想起了东坡词中的此心安处是吾乡。

总结下过去

2014.9 +

那就从大学开始吧,学的专业是软件工程–移动互联网方向。大一上学期学的C语言,下学期学的Java,每半个学期都有实训环节,就是能做一个小项目,C语言的图书管理系统、Java图形化的象棋、Android的微博客户端 ~~。

对于自己,不变的是,总想做点什么,既然做了,就喜欢尝试新的技术,那自然要面对各种报错,所以一路磕磕绊绊,面对报错,一点都不虚。

2016.7 ~ 2016.8

大二结束,校外实训,去了苏州,有不少方向可选,先选择了 Android,听了一节,发现讲的都学过,就换到了 H5 班。自己也挺喜欢做一些看得见摸得着的东西,这也可能是不排斥前端的原因。
学会了点,就构思了一个小网站,一边学着、一边加着小功能,整个过程挺开心。

2017.2 ~ 2017.6

到了大三下学期,快要毕业实训了,就赶紧学了 SSM,一块一块学完,发现整合不到一块,最后费了九牛二虎之力,搞好了,写了篇博客,50+收藏,还挺满足的。

2017.7 ~ 2018.6

大四了,只身一人来上海了,第一家公司用的微服务的,当时 Spring Cloud 还没火起来,公司用的 Zookeeper、Dubbo、Disconf、Rocket MQ、Elastic Job那套,现在看起来阵容也还行。

从此一发不可收拾,什么新玩啥,毕业设计把前后端分离,Vue + Webpack + iView + Nginx 那套用上,话说学什么都要时间。

2018.7 ~ 2019.4

正式工作的第一年,Spring Boot、Spring Cloud、Docker安排上了,一知半解,约定优于配置,确实方便了很多,但是把技术细节隐藏得更深了。

2019年4月,在第一家公司待了近两年,第一次跳槽,啥都不想,小公司坚决不去。来到了一个做人工智能的中小型公司,四五百人的样子,至今也有两年了。

2019.4 ~ 2019.11

工作之余,Spring Cloud、Netty安排上了,项目中完全用不到,这也是女朋友吐槽的原因,学了一堆用不到的,不过自己不觉得,算自己的积淀吧。

自己写了个 im 项目,从开始的黑窗口服务端、客户端,到后来的服务端,Websocket客户端,中间遇到了很多问题,包括 im 架构设计,真的是苦思冥想,最终,一念之差,打通任督二脉。

2020.2 ~ 2020.11

2020年,对于我来说是技术深入学习元年。

春节疫情在家,花了整整一个月,跟着 B站韩顺平老师的课程学完了 Golang,GitHub基本没断更。

  • 后边用 Golang 写了一个番茄工作法IDE,可以发送 Win10 通知那种。
  • 再后来,写了个 demo,用来验证项目接口支持跨开发语言调用,就是 http + json 了,哈哈

然后,公司流行了一波学习热,那段时间跟着子路老师过了一遍 Spring 循环依赖源码,受益匪浅,读源码就像你读公司项目的代码,只不过框架源码更优秀了。

  • 对着大话设计模式,把23种设计模式全学了一遍,5创建型、7结构型、11行为型
  • 跟着视频课程,把Java内存模型之类的学了一遍
  • 跟着石杉老师的面试突击第一季,把分布式相关技术原理学了一遍(下一步,应用分布式时,三刷)
  • 跟着石杉老师的面试突击第三季,把并发编程及原理学了一遍(现在正在二刷 + 加实战)

中途,穿插了一个 Spring Cloud 项目,业务复杂度不高,用到了 Nacos、Docker 之类的技术;之后,就捯饬了一段文件管理系统,从 sftp 到 MongoDB,再到 Minio,会用罢了,没有深入了解。

这一年也成长为公司项目的核心研发了,14年开始的项目,6年来最大的版本迭代,业务的复杂性,让学到的东西有了用武之地,尤其是事务那块。同时,也锻炼了遇到大的需求,分解它,一点一点突破,就完了。

  • 事务,负责的业务,对应有复杂的切面与事务,切面报错,你猜会咋样?多层事务嵌套,最外层为何拿不到异常信息?一个事务,保存一样的数据到多个数据库会怎样?
  • 线程池,IO密集型、CPU密集型,线程池统一管理好,还是分散管理好?队列和线程数都满了怎么办?
  • SaaS多租户场景下,如何使用ThreadLocal?线程池中如何使用ThreadLocal共享租户ID?

无疑,问题是最好的老师。

2020.11 ~ 2021.4

马上四月了,还有不到一周的时间,产品问题修复得差不多了,新功能月底能开发完。

中间,穿插了学习COLA架构,本人非常喜欢架构设计,毕竟作为技术人,一个好的架构是事半功倍的,还有就是自己有点强迫症,不好的设计肯定是要重构的。

什么,重构公司的项目?省省吧,无穷的阻碍,你重构,谁来写业务?重构的成本怎么结算?产品不更新、不迭代了?

所以,不要天天想着临时方案,也不要写 TODO,不要等着项目bug多到改不完时再重构,重构就应该是你平时写代码的过程中来进行的。

大四那年,把公司的那套微服务架构、每个服务模块划分玩得很熟练,至今也觉得当时架构很好。

这段时间,从基础学起,基础源码、并发编程,对照思维导图,逐个突破,不求精通,至少也理解得差不多。

展望下未来

最近有点搞不懂项目后续做什么了,感觉决策总在变。小兵闲不了,如果不考虑的话,自己可能就是个搬砖机器,显然我不是,想到了向上管理。

思考下,去年领导给出方向时,为什么后来变掉了?是因为什么而变掉的呢?现在给出的后边的计划,到底能不能正常执行?

所以,有点想往管理上转,感觉做了管理,就有了话语权,到时候,也能左右一些方向。

建议领导层都好好读读《人月神话》,几十年前大项目中出现的问题,现在的项目大多也同样存在,经典之作,历久弥新。

我是小兵,我要对自己的未来负责。

如题,偶得心安,现在不迷茫了,学东西接受得也很快,可能是过了技术的坎了吧,想到了厚积薄发,自恋了,勿笑,哈哈~~

生活会越来越好的!

对自己的学习路线,还是比较自信的,现在把基础打牢,后边就可以搞我喜欢的分布式相关技术了。兴趣是最好的老师,我肯定能精通分布式的。

吾心安处,乃基础。基础打好,上层建筑还是问题?


注:上边提到的,github里边均有体现。