Java20230915简历
2023.09.15 阅读量次自我介绍
本人有严谨的工作态度与高质量意识;能查阅各种开发技术手册,具有独立解决问题的能力。具备扎实的Java基础和四年开发经验,有良好的编程风格,独立熟练使用Spring全家桶等常用类库开发Java服务端程序、对Java服务端程序故障能独立排查。工作责任心强,具有一定的承压能力。
求职意向
- 期望城市:北京
- 工作薪资: 面议
专业技能
- 具备扎实的
Java
基础,熟练使用Java
集合、Java IO
、多线程、反射等技术;熟悉java核心的集合框架; - 熟悉多线程及使用,掌握线程池底层实现原理,有多线程方面开发经验;
- 熟悉微服务架构,
Spring Cloud
、Springcloud Alibaba
体系,对分布式微服务,旧服务改造,服务划分、服务治理、服务分层都有深入理解,有线上项目经验; - 熟练掌握 Redis,深入了解底层网络模型、底层数据结构、持久化机制,有分布式锁、分布式缓存的设计经验;
- 较深入理解
Spring
、Netty
框架,研究过核心源码,较为熟练借鉴框架中的设计,具备一定框架定制开发能力; - 熟练编写
SQL
、视图及存储过程,熟练使用索引和执行计划进行数据库调优; - 熟读阿里巴巴开发手册,有良好的编程习惯,掌握面向对象编程,开发过程中大量使用设计模式进行代码编写;具有较强的分析设计能力,熟悉系统的性能调优和故障排查;
项目经历
成联电商 2022.4~今
公司主要做“产业电商官网”模式,旗下运营:“中国耐材之窗网”、“冶金炉料网” 、“中国陶瓷官网”、“中国物流官网”四大行业电商平台,在职期间主要负责维护“中国耐材之窗网”正常运行和建设耐材部门相关项目。
项目一:中国耐材之窗网
简介:网站主要展示一些耐火材料行业相关的资讯信息,至今共为其迭代80多个版本。
技术栈:Springboot、Springcloud alibaba、 Nacos、Mybatisplus、Redis、Elasticsearch、xxljob
工作职责:
-
负责底层组件开发与设计
- 独立负责ElasticSearch组件的设计与开发。基于es 7.*版本封装,采用High Level REST Client,提供创建Index、删除Index、数据的增、删、改、查等能力,业务侧查询覆盖模糊查询、批量查询、批量新增、批量修改、排序等功能,对使用方友好屏蔽es操作细节。组件上线后,在客户前端全局搜索场景得到深度使用,经过充分压测,节点性能QPS轻松支持 2000+;
- 独立负责系统分布式锁组件的设计与开发。核心实现方案通过集成Redisson框架,采用注解+AOP实现组件与业务解耦,提供锁互斥、阻塞与非阻塞锁、锁安全释放线程、锁重入、锁续期、公平锁等常见的功能,另外利用分布式锁实现后端应用管理、积分规则维护等功能防重提交。组件上线后,在积分兑换等场景得到大量应用,经过充分压测,分布式锁单节点性能QPS支持1000+;
- 独立负责业务管道流组件设计与开发。参照Netty中的pipeline管道实现,在编写业务代码时,将数据从一个阶段传递到下一个阶段的方法。每个阶段执行特定的数据处理操作,从而实现了业务代码上的解耦,避免类膨胀,又将管道与配置相结合,实现了跳链功能,增加其灵活性;
-
负责系统重构,解决历史技术债务
- 使用Java设计模式设计了一些较为复杂的业务功能,使其扩展性、可重用性大大增强,提高了开发效率;
- 通过多种设计模式的组合,重构支付模块(目前已接入微信、支付宝)、重构文件上传模块,(目前已接入阿里云、FastDFS)接入新渠道的开发周期,从之前的8人天降低到4人天;
- 通过引入Elasticsearch,重构了全局搜索功能,响应速度提高近10倍,极大提升了用户体验;
-
负责系统技术架构升级与改造
- 系统模块目录非常混乱,缺乏统一的规范,重复建设严重,通过基于业务来进行功能目录划分,公共的技术组件下沉到底层framework,开发效率提升一倍;
- 业务定时任务从传统的spring task,迁移到xxljob分布式调度任务,方便任务可视化管理,任务执行的稳定性也有很大提升;
-
负责核心功能模块设计与开发
- 负责用户浏览量功能设计与开发。利用Redis自增方法,实现访问量统计功能;使用Redis作为浏览轨迹功能写入缓存,并解决缓存击穿问题,极大提升了系统响应速度;
- 负责用户登录、注册、短信邮件发送功能及维护用户的一些接口。技术侧,基于JWT Token实现用户鉴权,实现用户后台拉黑、Token续期,跨端鉴权等功能;
- 完成首页相关接口的优化与开发。将项目首页数据加入本地缓存redis缓存, 为了保证DB和Redis数据一致性,配置更新后,更新DB,通过MQ广播消息,各个应用节后收到MQ后,从DB中查询信息回写到本地缓存和redis缓存,有效时间设置有效截止时间+1天,同时设计一个兜底的定时任务定时刷新,将DB数据刷新到缓存保证整个全局一致性;
-
负责生产疑难问题排查与优化处理
- 采用随机睡眠机制防止redis CPU飙高。分页每次处理500条数据写入redis后,随机睡眠0-200ms,防止redis CPU短时间内飙高;
- 实时查询改为定时查询。之前每次查库3个维度计算都在一个SQL中处理,长事务,平均耗时3s左右。优化方案为每隔30分钟,根据交易明细数据进行统计,将相关数据处理完成后写入到redis,耗时降为300ms,提升10倍;
- 项目产品列表信息报文非常大,用户查询,请求量较大,高并发下redis IO容易被打爆,为了解决这个难题,将之前的redis存储改为list存储,采用拆分大key的方案,同时redis key按项目分开存储,对redis value进行压缩,剔除非必要字段(比如创建时间、创建人、备注等),优化完成后,redis cpu从高峰的60%稳定在15%左右;
- 控制单次写表数量。通过重写mybatis拦截器,当业务单次提交记录大于动态配置开关配置的N条,分批次提交,防止数据库CPU飙高;
- 大表取消数据库join,使用内存join并引入多线程并发查询,查询速度提升近5倍;
工作业绩:
- 完成中国耐材之窗网核心功能的设计与开发、系统重构。系统上线后比较稳定,用户投诉很少,整体体验很流畅;
- 完成部分核心接口的性能优化。响应时间从3s降低到0.3s,性能提升10倍;
- 多次解决线上各种疑难问题。例如:redis大key、线上CPU飙高等;
北京利联 2019.10 ~ 2022.1
公司主要为金融行业提供计算机软件服务,在职期间主要负责建设验印系统和票据影像交换系统。
项目一:盛京银行-票据影像交换系统
简介:票据影像交换系统,即交换银行与银行之间的凭证对其进行验印。盛京银行-票据影像交换系统,基于旧系统改造。
技术栈:Springboot、Netty、Springcloud alibaba、 Nacos、Mybatisplus、Redis
工作职责:
-
负责系统技术架构改造
- 技术架构从原始的spring升级到springboot架构,通过自身内嵌的tomcat容器运行,基于CI/CD,可快速完成应用编译、打包、部署,提升研发交付效率;
- 使用Netty作为服务方,与其他系统进行交互,利用NIO提高了系统交互速度;
- 将 Nacos 作为配置中心整合到项目中,使其配置支持热部署,方便管理,同时为项目拆分转微服务奠定基础;
-
负责核心功能模块设计与开发
- 使用模版、策略设计模式对接第三方系统(支付系统、柜面系统、影像平台系统等),提高代码的可读性和扩展性;
- 负责对接盛京银行单点登录系统,通过Redis解决了Session不共享的问题;
- 利用Spring AOP整合了一些公共方法,如记录日志,公共校验,敏感词过滤等,提高了代码的复用性,增强了代码的可维护性;
-
负责生产疑难问题优化
- 重构旧系统不规范代码及查询报表统计导出,通过执行计划,判断索引是否命中来优化SQL,提升了近5倍程序运行速度;
- 将导出excel主要步骤由后端迁移到前端,解决了导出报表数据量较大问题,导出速度提升10倍以上;
项目二:贵州银行-电子验印系统
简介:电子验印系统,即通过该程序可以核对凭证上印章与银行预留印章是否匹配。贵州银行-新电子验印系统,基于验印系统原型进行改造,推翻原型所有代码进行重建。新电子验印系统采用前后端分离设计,将前端部分集成到客户端中;后端基于Spring Boot
等主流框架进行开发,前端基于Vue.js进行开发,采用分布式部署。
技术栈:Springboot、Springcloud、Redis、Kafka、Mybatisplus、Vue、Hystrix
工作职责:
-
负责核心功能模块设计与开发
- 独立开发电子验印后台管理系统,采用前后端分离架构,使用Vue、Element UI构建前端,为适应产品特性,加快迭代速度,后端采用Spring Cloud分布式架构,使用devops集中式配置管理,提高了接近1倍的开发效率;
- 使用Kafka异步解耦机制对接第三方接口功能开发(柜面接口服务等)、外系统对接(集中作业系统,影像平台系统,银企对账系统等)提高了程序的响应速度,保证了数据最终一致性;
-
负责生产疑难问题排查与优化处理
- 优化数据批量入库。通过开启allowMultiQueries=true&rewriteBatchedStatements=true参数配置,通过mybatis的foreach标签批量插入或更新数据,提升批量写库性能;
- kafka消息积压优化。通过扩kafka分区,从之前的4分区扩到8分区;日志保留时间从1个月到2天;调整文件刷盘策略:写入10000条消息或间隔2s,刷数据到磁盘;同步提交改为异步提交;
- 优化同步文件程序。利用Java多线程技术,将大文件拆分成小块,并通过多线程同时处理这些小块,充分利用多核处理器的并行性,同时传输多个文件,避免了传统单线程传输时的等待阻塞,从而最大程度地减少文件传输的总耗时;
- 优化查询高频信息速度。在系统启动时,通过预热将一些热门数据加载到内存中,减少冷启动时的性能影响;
-
负责项目上线及部署
- 采用Nginx和devops进行前端部署和反向代理增强了软件系统的安全性;
- 为提升开发效率,接入Gitlab CI/CD进行持续集成和持续部署,实现了构建部署自动化;
- 独立使用linux命令进行测试环境、生产环境故障排查、程序部署、及数据迁移;
教育经历
- 于
2017.09 ~ 2020.06
就读于河北软件学院 专业为软件技术 学历为专科 - 于
2021.03 ~ 2023.07
就读于辽宁工程技术大学 专业为计算机科学与技术 学历为本科