以下均为我熟练使用的技能点
- JAVA基础,集合、多线程等相关知识
- jvm性能优化(jmap + MAT、Btrace、jvisualVM、jvm参数调优)
- oracle、mysql,及SQL性能调优(druid监控、执行计划、slow sql日志、ddl 语句优化)
- spring mvc、spring boot 等开源框架
- mybatis、herbinate 等orm框架
- 常用的消息队列中间件:Kafka,rabbitmq
- 分布式存储系统: Redis,mongodb
- spring cloud,dubbo,zookeeper 分布式服务框架
- 熟悉且实践过Docker容器化技术
- 版本控制:git,subversion
- 常用的 linux 命令
- 对html、css、js、jquery、easyui、bootstrap有一定了解和相关的使用经验
### 图书馆云平台系统
本人主要负责以下核心业务:编目管理、馆藏管理、采访管理、线上选书买单、系统设置。在开发的过程中,遇到最困难的问题分别是在编目前对大数据量的图书检索问题、在你选书我买单模块对订单延迟提交时候的处理操作。我采用了分布式存储引擎es来支撑大数据量的查询操作,对于新编图书存入到数据库同时将异步由kafka 消息队列传至elasticsearch进行存储,使用了分词插件,对录入的数据进行预处理,支持关键词的关联搜索,并且做了智能提示,让搜索更加多元化,提高了检索效率及速度,百万级别的数据检索时间由原来的数分钟缩短到毫秒级,提高了用户体验。采访管理及线上选书我买单则使用了rabiitmq处理选购图书订单提交,用第三方支付(支付宝、微信)接口处理费用支付,使用了延迟消息和死信队列处理订单支付超时的情况。因效果显著,在用户那也得到不错的反响,上级肯定了我的工作,并特命我为项目组组长。
在任期间,以组长身份负责了以下职责:评估需求,拆分并细化为功能点,用 Microsoft Project 分配开发任务及管理项目进度。跨部门沟通业务,协调研发人员的疑问及难点,把控开发进度。参与项目相关设计工作,编写技术文档;项目初期也参与日常服务器的维护,项目的环境搭建及安装部署;组织需求评审、每日站立式晨会、测试评审等相关会议;对团队后端代码进行code review;牵头新技术的难点攻克,如:使用 docker 容器化管理软件、使用 Jenkins 做自动化部署方案,使用 elasticsearch 做大数据量的全文检索。
### 自助终端查询机
本人独立搭建并编写了整套自助终端查询的逻辑实现。自助查询系统是提供给读者用户进行图书馆数据查询的公共服务系统,分为图书查询、用户推荐、最新图书、我的图书馆、馆内资讯、排行榜六大功能模块。遇到的技术难点是对数据库原有的三百多万条数据同步至分布式搜索引擎 elasticsearch中的问题。为解决这个问题用过程序对数据批插入的方式、使用一些开源插件例如:elasticsearch-jdbc,但效果都不是很好。最后我采用ELK的整体方案来解决初期原始数据的全量导入,和数据的可视化监控。查询功能支持书名、作者、ISBN、索取号等条件的关键词的联合检索。使用 kafka 消息中间件来异步处理后续由业务产生的新增数据到es中。该方案改良后的直接效益是,让60多所学校10万+用户能够体验百万图书秒级别的查询体验。在最新的版本中,通过对图书查询的数据分析,对热门查询的图书做了智能推荐,得到了多方的认可。