2017年工作和学习总结
Contents
项目经历
2017年2月1号到5月20号在 Nielsen项目
2017年6月在上海办公室打酱油看书
2017年7月10号到TCS杭州报到做e学e用项目
技能学习
数据结构和算法
- 各种排序算法的实现(代码实现、原理分析、适用场景、性能和空间复杂度)
- 经典的数据结构:数组、链表、平衡二叉树、散列表
- hashmap、arraylist、等java集合类的原理
缓存
- spring缓存注解的使用
- redis的使用和整合spring、keysGenerator的重写
- memcache的使用和整合spring
- ehcache的使用和整合spring
分布式
- ActiveMQ的原理和整合spring、结合我们的项目看
- 消息队列的原理
- dubbo+zookeeper 实现RPC
- keepalive
- nginx 反向代理、负载均衡、动静分离等技术和项目实战
linux相关
- 常用的命令
- linux if判断、for循环、参数等脚本的编写
- linux上环境的搭配:tomcat、JDK、Mysql、mailx
- linux定时任务和邮件功能
- linux分区和性能监控
- docker的使用和特点
JVM
- java类加载的生命周期
- JVM的内存结构和原理
- GC机制和回收器的原理
- JVM日志的生成和查看
- 调试工具 jconsole、virtualVM的使用和优化
- 自带命令 jstat jmap 的使用
数据库
- mysql存储引擎
- mysql锁机制、mvcc
- mysql的日志和集群、主从复制、读写分离
- mysql的分区、分表
- mysql索引的原来和使用注意事项
- 数据库三大范式
- mongoDB数据库的使用:schemaless、全文索引、地图函数、整合spring
项目改造:
- nginx做负载均衡2个tomcat支持千人在线、redis做session共享、tomcat修改发布脚本
- mvc扫描方式的修改,按照注解的类型来扫描而不是按照包路径来扫描
- 引入mybatis-template、pageHelper、xml热加载引入(包括原理的学习IO流定时扫描modified时间)
- 项目瘦身,把200M压缩到100M的大小,删除掉不依赖的图片和前端类库、maven依赖jar包,一些大的不经常变的图片,都用nginx动静分离直接从war包中剥离出来了,提高上传的速度
框架学习
- mybatis框架搭建、mybatisTemplate、pagehelper、xml热加载、mybatis generator的使用
- spring的配置、依赖注入和AOP编程、操作日志注解的实现
- JPA的使用
- ssmh的整合
其它
- IO、NIO、NIO2
- tomcat的server.xml的学习、JNDI数据源的配置
- Quartz的使用
- springBoot大致有个概念了
- 学会了github博客的搭建和hexo网站管理框架的使用
- 机器学习(k临近、决策树、python的学习数据脚本的抓取)
- 初步了解Scala
项目经验
- 微信平台的开发和维护
- Nielsen项目中复杂事务控制的任务调度功能
- Nielsen的复杂sql的编写能力
- 展视直播的嵌入、K值认证、参与人员信息的接口获取
- 电信云服务器迁移:服务器迁移方案的讨论、服务器综合信息、分区
- PCB模块(含VIP专区)的PC端开发、AW学院的嵌入、病例库模块、还有其他的小功能
其他:
- 给别人做了面试,汲取了一些面试的经验
- 带小徒弟了,还给他们做了2次培训,还积累了一个套路
- 书单:《JAVA虚拟机》、《并发编程》、《java特种兵》、《JAVA程序员进阶手册》、《算法4》