2019 Summary
写在前
2019年马上就过去了,今天是圣诞节后的一天,抽空总结一下快速又忙碌的2019年。
去年的总结把部分2018年的技术栈都分析了一遍,今天深度投身于新项目,又无暇额外研究新技术,因此已无法做到去年的广度。只从用到的技术简单总结。
全年总结
上半年
- 用vue+echarts实现了简单的工作台和大屏展示
- gitlab实现了邮件发送
- 从webstorm基本转向了vscode
- 大屏基本用ts实现了
- 重点研究了工作流的选型,包括activit和flowable,简单编写了flowable的使用代码,形成了一个简单的框架,向官方报告了一个bug
- 参与卡项目,研究RequireJS、RegularJS、bower等,加深了js的一些理解
- 校招前端和java,总结了一点经验
- springboot、nginx、layui、git的一些小问题解决,关于tapestry的单点登录等
- 写了一些标书,发现word也挺难的,拿开源的vba对比程序实现了word对比
- 参与开通项目,hiraki、mybatis、redis、kafka进行了框架改造;springcloud的eureka、config等改造
- java实现了请求统计,加深了tomcat线程池、集合类、多线程、切面等的理解
- weblogic也可以配置了阿里ssl证书
上半年还是花了不少时间在前端的。包括vue、echarts、requirejs等。后端也不少,基本重点在技术层。
下半年
- 进入新的交通项目,全新业务,全新技术,包括路径的拟合等
- 研究图的最短路径算法,重点Dijkstra算法
- 学习mysql,看经典的《高性能mysql》,进行项目的库表设计
- 看了一下python,与图算法相关的一些东西
- 看了一下spring batch
- 用springboot实现了多数据源和自动发送邮件,减少了运维
- 开始重点使用了docker,包括程序打包和本机开发软件的搭建
- 核查java内存问题,jstat、jmap等,与死循环的判断
- 研究了mycat的分片算法,和常用的配置
- 学习了mysql存储过程,对数据转换的方法论有了一定更深理解
- 对mysql、mycat、redis、kafka的使用又多了一些
- git被覆盖代码,于是学习了一下git
- 学习了mongodb,harbor、java深复制、调so等,复习了https证书、springboot监控
- 业余看了一下米思齐
下半年基本都在项目里,别的啥也没干,家里也多了事情,所以好像没上半年这么专注技术。但是回头总结后端技术,还是获得了很多。
同时,对于一个全新行业,也是我的”老本行“了解学习了很多。当然,加班也不少。
对比去年立下的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和新闻,也没看书了。
不过也有额外收获:
- 算法
- flowable
- mongodb
- RequireJS、RegularJS等
- mysql设计
- 新行业
个人总结
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