2019 Summary

写在前

2019年马上就过去了,今天是圣诞节后的一天,抽空总结一下快速又忙碌的2019年。
去年的总结把部分2018年的技术栈都分析了一遍,今天深度投身于新项目,又无暇额外研究新技术,因此已无法做到去年的广度。只从用到的技术简单总结。

全年总结

上半年

  1. 用vue+echarts实现了简单的工作台和大屏展示
  2. gitlab实现了邮件发送
  3. 从webstorm基本转向了vscode
  4. 大屏基本用ts实现了
  5. 重点研究了工作流的选型,包括activit和flowable,简单编写了flowable的使用代码,形成了一个简单的框架,向官方报告了一个bug
  6. 参与卡项目,研究RequireJS、RegularJS、bower等,加深了js的一些理解
  7. 校招前端和java,总结了一点经验
  8. springboot、nginx、layui、git的一些小问题解决,关于tapestry的单点登录等
  9. 写了一些标书,发现word也挺难的,拿开源的vba对比程序实现了word对比
  10. 参与开通项目,hiraki、mybatis、redis、kafka进行了框架改造;springcloud的eureka、config等改造
  11. java实现了请求统计,加深了tomcat线程池、集合类、多线程、切面等的理解
  12. weblogic也可以配置了阿里ssl证书

上半年还是花了不少时间在前端的。包括vue、echarts、requirejs等。后端也不少,基本重点在技术层。

下半年

  1. 进入新的交通项目,全新业务,全新技术,包括路径的拟合等
  2. 研究图的最短路径算法,重点Dijkstra算法
  3. 学习mysql,看经典的《高性能mysql》,进行项目的库表设计
  4. 看了一下python,与图算法相关的一些东西
  5. 看了一下spring batch
  6. 用springboot实现了多数据源和自动发送邮件,减少了运维
  7. 开始重点使用了docker,包括程序打包和本机开发软件的搭建
  8. 核查java内存问题,jstat、jmap等,与死循环的判断
  9. 研究了mycat的分片算法,和常用的配置
  10. 学习了mysql存储过程,对数据转换的方法论有了一定更深理解
  11. 对mysql、mycat、redis、kafka的使用又多了一些
  12. git被覆盖代码,于是学习了一下git
  13. 学习了mongodb,harbor、java深复制、调so等,复习了https证书、springboot监控
  14. 业余看了一下米思齐

下半年基本都在项目里,别的啥也没干,家里也多了事情,所以好像没上半年这么专注技术。但是回头总结后端技术,还是获得了很多。
同时,对于一个全新行业,也是我的”老本行“了解学习了很多。当然,加班也不少。

对比去年立下的flag

去年定下2019的flag

  • 学docker
  • 写vuejs代码,有空试试vscode
  • 写redis(+protobuf)和kafka代码
  • 学国内的开源框架/组件(dubbo、layui、element、iview、mybatisplus)
  • 大并发、分布式
  • EDAS和HSF

完成情况

docker应该是超额完成了,编写Dockerfile、build、run都很熟练了,程序也是用它来跑了。
本机搭建的mysql+redis+kafka+mongo+nginx都是用docker。
vuejs在上半年也写了不少;redis和kafka下半年理解的更深。

但也有些没完成:
protobuf没机会研究,dubbo、edas这些阿里系的也没空,国内开源也是。
同时下半年基本脱离了技术app和新闻,也没看书了。

不过也有额外收获:

  1. 算法
  2. flowable
  3. mongodb
  4. RequireJS、RegularJS等
  5. mysql设计
  6. 新行业

个人总结

mysql(数据库)

  • 很久前用过,今年是第一次认真用,包括库表设计。发现每一个字段类型都有讲究,非常深奥。
  • 存储过程与oracle差别很大,虽然功能比不上,但也能干一些事情
  • 基本用上mysql8了,与mysql5.6、5.7还是有一些差别的,不过百度一下都能搞定
  • 数据库管理较少涉及

redis(内存库)

  • 之前以为很了解redis,新项目从Adu经理处发现还有很多新知识
  • 除了五种基本类型,还有pfadd、pfcount等
  • string和hash的选择,除了业务,还有节省内存空间。hash的field值控制在512之内较好
  • 除了过期时间,maxmemory和过期策略policy的配置很重要
  • aof比rdb更实时
  • keys只能本实例

kafka(消息队列)

  • 最难的是它了
  • 本机docker安装了很久才成功
  • 用springboot来实现真的很方便,batchFactory也可以批量控制
  • 默认建topic这个配置最好关掉
  • 必须用kafka tool这些工具来查看,不然太黑匣子了
  • 新的版本竟然一下到2.3了,0.9那些最好不用了
  • 默认区分大小写,不光字段名,字段值也会!collation为utf8_bin很重要

mongo

  • 最后一月竟然用了mongodb
  • 真的超方便,不用设计库表,开发记录个日志表快的一笔
  • Robo3T这个客户端很好用
  • 命令和mysql也很相似,不过getCollection.find这些有点记不住
  • 同样,用springboot集成开发,超方便

mycat

  • 有机会认证看了一下配置
  • 分片还是很讲究,数字很简单,取模;但字符串有点复杂
  • murmur也涉及数据迁移,而且分布上相对没那么平均
  • 一个mysql可以多个库,给到mycat,但每个库名最好都不同,这样一看库名就知道哪台主机
  • 真的很多坑,竟然不支持存储过程的执行,select个日志不显示。。。
  • 而且不支持建视图,要在mysql上一个个建

docker

  • 很好用。通过harbor,启动五个实例,5个命令搞定;否则要copy五个文件夹,还得改配置
  • 本机安装mysql、redis这些也很方便

java

  • 代码写得多,遇到的新问题才会多,想是想不出来的
  • 线程:多线程、线程池、tomcat
  • 集合:map、list、queue
  • 内存:jstat、jmap、postman、看对象内存大小
  • aop
  • 获取进程号、主机、端口、类名、方法名、行号等
  • 各种类型互转、json互转
  • DateFormat非线程安全
  • break label
  • 深拷贝

算法

  • 真的难,去年搞加密算法,今年搞最短路径
  • 最短路径有各种算法
  • 只研究Dijkstra已经很复杂
  • 无论循环还是递归,控制算法不要死循环很重要!
  • 一是注意异常数据要拦截,二是要通过计数器控制循环和递归的次数

前端

  • 主要上半年弄,现在已忘光了
  • 前端变化太快,不看论坛和app根本不行
  • 主要vue方向,要打好js基础,包括html和css基础

flowable(工作流)

  • 太精细的领域,网上资料不多
  • 但源代码很容易看懂,比较方便
  • 设计也很好,各种bpmn图
  • 规则引擎也是一块

其他

  • git、mac、spring cloud、ssm、https
  • nginx等负载
  • 校招比较有意思,但是很累
  • 敏捷基本没搞了,sonar看了一点点

2020立flag

  • 方向上已经没什么追求了,就是es希望接触一下
  • mysql、redis、kafka、mongo、nginx、docker再深入就行
  • java,包括spring、boot、cloud再继续深入,特别微服务
  • 前端已经没有精力弄了
  • 校招希望可以继续积累经验
  • 架构被song teacher抢了,希望明年可以多弄点架构,特别微服务、k8s、负载
  • jenkins希望公司可以搞起来

最后

今年还有一个收获就是坚持在osc上写博客一年,每个工作日都一篇简单工作笔记。
明年转到SF了,希望继续再坚持一年。

2019年真的很累,12月大约工作了30天。我相信大家都很累,有些比我更累。
2020希望不要这么累,但同时也努力学到更多的技术。
最后,还希望可以多陪伴孩子一些。

2019.12.26 16:25 于 星光3A

03-05 13:22