访问量
访客数

Java20240315简历

2024.03.15 阅读量

自我介绍

1998 · 李济芝
河北唐山
15176733539
 m15176733539@163.com

五年开发经验,熟悉支付、电商、银行相关业务。擅长使用设计模式,具备独立开发及故障排查能力。有框架设计开发经验、前端后端Web开发经验、旧项目二次开发经验等大量开发经验,能灵活应对各种情况。常用技术栈:Vue、Layui、SpringCloud、SpringBoot、MyBatisPlus、Netty、Redis、Kafka、Elasticsearch等。能查阅各种开发技术手册,熟练编写shell、bat脚本,具备较强的解决问题能力。

求职意向

  • 期望城市:北京
  • 工作薪资:面议
  • 工作性质:全职/兼职
  • 目标职能:中级/高级Java工程师

专业技能

  • 具备扎实的Java基础,熟练使用Java集合、Java IO、多线程、反射等技术;
  • 熟悉多线程及使用,掌握线程池底层实现原理,有多线程方面开发经验;
  • 熟悉微服务架构,Spring CloudSpring Cloud Alibaba体系,对分布式微服务,旧服务改造,服务划分、服务治理、服务分层都有深入理解,有线上项目经验;
  • 熟练掌握 Redis,深入了解底层网络模型、数据结构、持久化机制,有分布式锁、分布式缓存的设计经验;
  • 熟练掌握Kafka,了解集群分片化机制,在高吞吐量情况下消息不丢和重复以及消息投递一致性问题,有实际的项目经验;
  • 具有较强的分析设计能力,较深入理解SpringNetty框架,研究过核心源码,熟练借鉴框架中的设计,具备一定框架定制开发能力,有实际的项目经验;
  • 熟练编写SQL、视图,熟练使用索引及执行计划进行数据库调优;
  • 有良好的编程习惯,掌握面向对象编程,开发过程中大量使用设计模式进行代码编写;
  • 熟练操作Linux,熟练编写shellbat脚本,有性能调优和故障排查经验;

项目经历

成联电商 2022.4~2024.2

成联电商是一个S2B2C电子商务平台运营商,通过S2B2C平台提升第二产业的供应链效率,助力实体企业降本增效,让企业更加专心于生产技术升级、专注于产品品质提升,在职期间主要负责维护“中国耐材之窗网”正常运行和建设耐材部门相关项目。

项目一:中国耐材之窗网

简介: 中国耐材之窗网是成联电商的行业电商平台之一,主要展示一些耐火材料行业相关的资讯信息,至今共为其迭代80多个版本。注册商家15w+,用户20w左右,日活跃用户5w+,部分核心交易表数据1000w+。高峰期系统整体负载压力比较大,在系统高可用、稳定性方面有极高的要求。

技术栈:SpringbootSpring Cloud AlibabaNacosMybatisplusRedisxxljobElasticsearch

工作职责:

  1. 负责底层组件开发与设计

    • 独立负责ElasticSearch组件的设计与开发。基于es 7.*版本封装,采用High Level REST Client,提供创建Index、删除Index、数据的增、删、改、查等能力,业务侧查询覆盖模糊查询、批量查询、批量新增、批量修改、排序等功能,对使用方友好屏蔽es操作细节。组件上线后,在客户前端全局搜索场景得到深度使用,经过充分压测,节点性能QPS轻松支持 2000+;
    • 独立负责系统分布式锁组件的设计与开发。核心实现方案通过集成Redisson框架,采用注解+AOP实现组件与业务解耦,提供锁互斥、阻塞与非阻塞锁、锁安全释放线程、锁重入、锁续期、公平锁等常见的功能,另外利用分布式锁实现后端应用管理、积分规则维护等功能防重提交。组件上线后,在积分兑换等场景得到大量应用,经过充分压测,分布式锁单节点性能QPS支持1000+;
    • 独立负责业务管道流组件设计与开发。参照Netty中的pipeline管道实现,在编写业务代码时,将数据从一个阶段传递到下一个阶段的方法。每个阶段执行特定的数据处理操作,从而实现了业务代码上的解耦,避免类膨胀,又将管道与配置相结合,实现了跳链功能,增加其灵活性;
  2. 负责系统重构,解决历史技术债务

    • 使用Java设计模式设计了一些较为复杂的业务功能,使其扩展性、可重用性大大增强,提高了开发效率;
    • 通过多种设计模式的组合,重构支付模块(目前已接入微信、支付宝)、重构文件上传模块,(目前已接入阿里云、FastDFS)接入新渠道的开发周期,从之前的8人天降低到4人天;
    • 通过引入Elasticsearch,重构了全局搜索功能,响应速度提高近10倍,极大提升了用户体验;
  3. 负责系统技术架构升级与改造

    • 系统模块目录非常混乱,缺乏统一的规范,重复建设严重,通过基于业务来进行功能目录划分,公共的技术组件下沉到底层framework,开发效率提升一倍;
    • 业务定时任务从传统的spring task,迁移到xxljob分布式调度任务,方便任务可视化管理,任务执行的稳定性也有很大提升;
  4. 负责核心功能模块设计与开发

    • 负责用户浏览量功能设计与开发。利用Redis自增方法,实现访问量统计功能;使用Redis作为浏览轨迹功能写入缓存,并解决缓存击穿问题,极大提升了系统响应速度;
    • 负责用户登录、注册、短信邮件发送功能及维护用户的一些接口。技术侧,基于JWT Token实现用户鉴权,实现用户后台拉黑、Token续期,跨端鉴权等功能;
    • 完成首页相关接口的优化与开发。将项目首页数据加入本地缓存和Redis缓存, 为了保证DB和Redis数据一致性,通过MQ广播消息,各个应用结点后收到MQ后,从DB中查询信息回写到本地缓存和Redis缓存,有效时间设置有效截止时间+1天,同时设计一个兜底的定时任务定时刷新,将DB数据刷新到缓存保证整个全局一致性;
  5. 负责生产疑难问题排查与优化处理

    • 采用随机睡眠机制防止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倍;

工作业绩:

  1. 完成中国耐材之窗网核心功能的设计与开发、系统重构。系统上线后比较稳定,用户投诉很少,整体体验很流畅;
  2. 完成部分核心接口的性能优化。响应时间从3s降低到0.3s,性能提升10倍;
  3. 多次解决线上各种疑难问题。例如:系统卡顿、Redis大key等;

项目二: push触达平台

简介:push触达平台是面向商家与客户的消息触达平台,为了保障用户的持续活跃,当用户进入产品生命周期的后半段(预流失/流失状态)就需要精准洞察用户,在恰当的时机,通过正确的渠道,向用户推送个性化的内容达到召回、转化及促活的目的。 目前平台已支持小程序、公众号、企业微信等多个渠道的用户触达,覆盖短信、群发等多种触达方式。在双11期间,平台投递消息能力单日触达用户量10w+,发送消息条数80w,消息发送成功率98%,系统运行健康,应用、中间件及数据库各项指标正常。

技术栈:SpringbootMybatisRedisxxljobKafka

工作职责:

  1. 触达运营后台部分功能设计与开发

    • 该后台主要为发布消息触达项目的运营人员服务。独立负责分布式全局Id服务的设计与开发。根据后端配置的生成规则,可动态生成项目编码。从技术上参考美团leaf框架设计思想,通过预先拉取一批分布式Id到本地内存,检测内存分布式Id的剩余数量不到一半,重新拉取下一批,针对订单编号这种场景,采用雪花算法这种设计来实现,另外为了保证接口的高可用,对该服务实现了限流处理,达到限流阀值以后,系统兜底返回一个空,上游业务重试实现保证高可用。
  2. 负责核心推送功能设计与开发

    • 定时轮询触达项目,当距离任务执行时间半小时,触达平台发送消息将触达项目策略的客群标签推给大数据平台,大数据平台异步将客群标签对应的客户列表推送到Kafka,触达平台消费客群模块通过多线程和批量拉取mq方式消息保证消费性能,为了防止上游重复推送消息,采用Redis分布式锁(客群Id+手机号)实现幂等,分布式锁key过期时间设为24小时。另外通过批量入库的方式保证数据写入DB的性能;
    • 通过xxljob任务调度框架配置定时任务,达到项目执行时间后,利用xxljob分片处理数据的能力,配置10个分片,每个分片的应用程序创建8个线程,处理不同项目不同批次的客户列表,第一个分片0-1000,第二个分片100-2000,依次类推,通过这种分布式处理能力大大提升推送效;
    • 定时任务对发送失败记录补偿。客户消息发送失败后,为了提升发送效率,会将异常记录到Redis list。通过定时任务定时补偿Redis list集合中的数据;
    • 对于项目触达策略,如果配置内部优惠券、积分发放、活动礼包等触达任务,在处理过程中,为了防止把下游打垮,触达平台针对不同的任务统一采用Redis实现漏桶限流算法进行限速;

工作业绩:

  1. 保障系统稳定上线。系统上线半年左右,共触达用户60w,推送消息500w条,运营整体反馈不错;
  2. 解决线上部分疑难问题。比如:应用CPU飙高、频繁FullGC等疑难杂症;

北京利联 2019.9 ~ 2022.1

公司主要为金融行业提供计算机软件服务,在职期间主要负责建设验印系统和票据影像交换系统。

项目一:盛京银行-票交系统

简介:票据影像交换系统,即交换银行与银行之间的凭证对其进行验印。盛京银行-票据影像交换系统,基于旧系统改造。

技术栈:SpringbootNettyNacosMybatisplusRedis

工作职责:

  1. 负责系统技术架构改造

    • 技术架构从原始的spring升级到springboot架构,通过自身内嵌的tomcat容器运行,基于CI/CD,可快速完成应用编译、打包、部署,提升研发交付效率;
    • 使用Netty作为服务方,与其他系统进行交互,利用NIO提高了系统交互速度;
    • 将 Nacos 作为配置中心整合到项目中,使其配置支持热部署,方便管理,同时为项目拆分转微服务奠定基础;
  2. 负责核心功能模块设计与开发

    • 使用模版、策略设计模式对接第三方系统(支付系统、柜面系统、影像平台系统等),提高代码的可读性和扩展性;
    • 负责对接盛京银行单点登录系统,通过Redis解决了Session不共享的问题;
    • 利用Spring AOP整合了一些公共方法,如记录日志,公共校验,敏感词过滤等,提高了代码的复用性,增强了代码的可维护性;
  3. 负责生产疑难问题优化

    • 重构旧系统不规范代码及查询报表统计导出,通过执行计划,判断索引是否命中来优化SQL,提升了近5倍程序运行速度;
    • 将导出excel主要步骤由后端迁移到前端,解决了导出报表数据量较大问题,导出速度提升10倍以上;

项目二:贵州银行-验印系统

简介:电子验印系统,即通过该程序可以核对凭证上印章与银行预留印章是否匹配。贵州银行-新电子验印系统,基于验印系统原型进行改造,推翻原型所有代码进行重建。新电子验印系统采用前后端分离设计,将前端部分集成到客户端中;后端基于Spring Boot等主流框架进行开发,前端基于Vue进行开发,采用分布式部署。

技术栈:SpringbootSpring CloudRedisKafkaMybatisplusVueHystrix

工作职责:

  1. 负责核心功能模块设计与开发

    • 独立开发电子验印后台管理系统,采用前后端分离架构,使用Vue、Element UI构建前端,为适应产品特性,加快迭代速度,后端采用Spring Cloud分布式架构,使用devops集中式配置管理,提高了接近1倍的开发效率;
    • 使用Kafka异步解耦机制对接第三方接口功能开发(柜面接口服务等)、外系统对接(集中作业系统,影像平台系统,银企对账系统等)提高了程序的响应速度,保证了数据最终一致性;
  2. 负责生产疑难问题排查与优化处理

    • 优化数据批量入库。通过开启allowMultiQueries=true&rewriteBatchedStatements=true参数配置,通过mybatis的foreach标签批量插入或更新数据,提升批量写库性能;
    • kafka消息积压优化。通过扩kafka分区,从之前的4分区扩到8分区;日志保留时间从1个月到2天;调整文件刷盘策略:写入10000条消息或间隔2s,刷数据到磁盘;同步提交改为异步提交;
    • 优化同步文件程序。利用Java多线程技术,将大文件拆分成小块,并通过多线程同时处理这些小块,充分利用多核处理器的并行性,同时传输多个文件,避免了传统单线程传输时的等待阻塞,从而最大程度地减少文件传输的总耗时;
    • 优化查询高频信息速度。在系统启动时,通过预热将一些热门数据加载到内存中,减少冷启动时的性能影响;
  3. 负责项目上线及部署

    • 采用Nginx和devops进行前端部署和反向代理增强了软件系统的安全性;
    • 为提升开发效率,接入Gitlab CI/CD进行持续集成和持续部署,实现了构建部署自动化;
    • 独立使用linux命令进行测试环境、生产环境故障排查、程序部署、及数据迁移;

教育经历

  • 2017.09 ~ 2020.06 就读于 河北软件学院 专业为 软件技术 学历为 专科
发表评论