1、熟练掌握 JAVA 编程基础,具备良好的企业级编程习惯,理解多线程、集合等基础框架,理
解 JVM 内存模型、垃 圾回收算法、类的加载过程;
2、对高并发有一定了解,有使用线程池解决线程安全问题的实战经验,理解 Volatile、Thread
Local、AQS 原理;
3、熟练使用 MySQL、SQlServer,研究过 InnoDB 引擎、B+树、索引、锁,能够进行 SQL 调
优(项目中SQL执行 提速近5秒);
4、熟悉 Spring、SpringMVC、MyBatis 等框架技术,理解 Spring 中 IoC、AOP 原理,知晓
MyBatis 中的缓存和插 件实现;
5、多年SpringBoot开发经验,知晓 Spring Boot 的启动流程和自动装配原理;
6、熟练使用Redis,理解其持久化、底层数据结构,在生产环境中解决过:缓存击穿、缓存穿
透问题;
7、熟悉消息中间件 RabbitMQ 的使用,在上线项目中有解决消息堆积的实践经验;
8、对抢购业务中的复杂场景有过研究,能提出自己的实现及落地方案;
2022.8-2022.9 限时抢购库存回退逻辑优化
后端开发
技术:LMSTFY、Redis、SQlServer、MybatisPlus
在阅读抢购模块相关业务逻辑代码时发现原来逻辑是使用定时任务进行回退的,这样的设计会导
致用户体验在一定程度上受到影响,由于自己也负责限时抢购模块并且培训时讲过美图的延迟队
列框架LMSTFY,于是主动提出优化限时购库存回退相关逻辑。
每一个限时抢购活动在后台都会配置支付时间限制以及ppid对应的抢购数量,正常逻辑在下单
超过支付时间限制时会取消用户对用的抢购订单并自动回退库存。此需求优化主要用到的技术是
redis和LMSTFY,redis主要用来加锁防止用户操作频繁给服务器造成太大压力。LMSTFY经过
公司研发组进行封装,申请业务token并配置后可调用方法进行使用。当用户下单后首先会在抢
购记录表(该表主要包含的字段信息为用户id、抢购id、订单id、订单状态等)中插入一条该用
户的抢购记录,并使用乐观锁更新抢购活动剩余数量,然后会在延迟队列中添加一条包含用户id
、抢购id、订单id的消息,并传入对应抢购活动配置的过期时间。当消息进行消费时会根据用户
id、抢购id、以及活动id去数据库中进行查询当前抢购的状态,若当前抢购订单状态仍为待付款
状态则更新库存。
2022.7-2022.8 积分抽奖活动优化
后端开发
技术:SQlServer、MybatisPlus、Redis、flyway、Apollo
针对租户下积分抽奖模板问题频发的情况,对代码逻辑进行梳理,发现存在一些逻辑问题,并且
代码可阅读性较差,于是主动提出对积分抽奖模块进行重构。主要包括用户抽奖次数校验以及分
享活动增加抽奖次数逻辑。
在后台奖品活动配置中有分享增加次数(总次数、日次数等)、抽奖次数(可抽总次数、日次数
)等。当用户在进行活动抽奖时,首先会使用redis进行加锁,然后根据当前分享的活动id去获
取对应活动相关配置信息与分享记录表中的分享记录量进行比较,保证分享记录表中是有效分享
记录。在抽奖时会根据配置信息中的时间以及抽奖次数进行判断,并根据配置的抽奖条件调用销
售组接口查询是否满足条件等。
2021.10-2021.12 会员积分清零
后端开发
技术:RabbitMQ、Redis、SQlServer、MybatisPlus、flyway
为提高用户黏度,将用户19-20年过期积分于22年1月1号凌晨进行清零。主要在oaApi服务中使
用Redis、RabbitMQ进行实现。当调用接口时,上游端服务首先会使用redis进行加锁,然后在
循环中每次执行sql查询出500个用户id作为一条消息推送到mq中,然后睡眠一秒钟,为防止出
现消息堆积的情况,在推送时会使用缓存判断当前消息数量,如果当前消息大于500条则进行阻
塞,小于500则继续推送,推送后会在缓存中对相应key值做加1操作。下游段服务在接收到消息
后,获取到用户id集合,通过对用户id的遍历获取到待清零积分数,若待清零积分数小于等于0
,则不进行清零操作。若待清零积分数大于0,则计算出清零后积分数,若清零后积分数小于等
于0,则做0处理。并将用户id,清零前积分数、清零后积分数、清零积分数存储在清零明细表
中。在执行完清零操作后,进行发版,使用flyway执行sql,将清零明细表中清零后积分数字段
值更新到用户信息表中的积分字段中。
在上线前测试过程中出现了消息堆积的问题,后来在下游段去除了多余的代码逻辑,并在积分记
录表中的用户id字段添加索引,提高执行效率
微信小程序 ProjectDown简记 从设计到前后端的开发均由我一人完成 简记小程序主要包括内容的速记以及日记的记录等,后续还在开发更多的功能
抢购模块后台功能的优化 以及app端接口sql的优化,使其效率提高进4秒,大大提高了执行效率以及用户体验。