简历
李泽辉 - 后端开发
## 教育背景男/1999/24岁
15534447783
:::left 西安电子科技大学 - 计算机技术(211) - 硕士 :::
2021.09 - 至今
:::left 太原理工大学 - 信息与计算科学(211) - 学士 :::
2017.09-2021.06
# 竞赛经历
# 2022 “中国光谷·华为杯” 第十九届中国研究生数学建模竞赛 二等奖
# 2023 华为软件精英挑战赛 粤港澳赛区 二等奖
# 专业技能
- 熟悉进程、内存管理,TCP/IP协议栈,熟悉二进制数据表示、指令系统,熟练数据结构与算法、设计模式;
- 熟悉Java编程语言,类加载、JVM内存模型、垃圾回收G1收集器,了解Java并发编程技术;
- 熟练MySQL,熟悉事务、索引和日志,熟悉Redis数据类型,了解Redis持久化机制、过期键的删除策略;
- 熟练使用SpringBoot、Spring、Mybatis等常用框架,熟悉Spring IOC、AOP、自动配置;
- 熟悉RocketMQ和Kafka消息中间件、Spring Security认证授权,了解Spring Cloud Alibaba、Docker容器;
- 熟悉InfluxDB、MongoDB、Elasticsearch、RocksDB数据库使用,了解分布式事务、分布式锁;
- 熟练使用Linux操作系统、主流开发工具,熟悉HTML、CSS、JavaScript、Vue、Python爬虫。
# 项目经历
# 番茄自习室项目 (2022.11-至今)
项目描述: 该项目灵感来源于番茄todo App。该项目基于项目一实现了时间统计、分析、自习室排行榜、打卡、留言、点赞、登录注册等功能。主要使用了Spring Boot、MyBatis-Plus、MySQL、Redis、Kafka、InfluxDB、Spring Security和Jwt令牌等。
主要工作:
- 完成认证授权部分,将登录成功的用户信息和权限存放在Jwt令牌,以及页面对用户权限进行控制;
- 进行统一的异常处理,使用Spring AOP面向切面的思想统一的记录日志;
- 使用Redis优化项目中对热点数据(验证码、点赞、关注、打卡、用户数据等)的访问,提高数据的存取效率;
- 使用Kafka作为消息队列,在用户被点赞,评论,关注后,以系统通知的方式推送给用户;
项目优化与收获:
使用缓存和消息队列实现点赞和关注,并且使用重试队列保证写缓存和写消息队列一致,QPS从90/sec 提升到4000/sec;
使用Redis BitMap存储每个用户的打卡情况,使用Zset实现自习室时长排行榜,后台定时线程池持久化打卡信息以及更新Zset分数;
了解了InfluxDB底层存储原理,以及时序数据的存储优势。
# Linux统计使用时间项目(2022.07-2022.09)
项目描述:
可以在Linux平台统计各软件使用时间的开源项目,灵感来源于手机中的屏幕使用时间,未来支持其它平台。实现了查看某一个时间端各天、各小时、各软件使用时间,以及IDEA和VS Code各项目打开时间,浏览器各网站浏览时间。主要使用了Spring Boot、MyBatis-Plus、SQLite、Caffeine、Netty、Vue和Echarts等。
主要工作:
使用Python监听焦点窗口变化,使用Netty IO多路复用以及生产者消费者机制提高数据接收的能力;
从历史记录表中提炼出汇总表,提高历史数据查询能力,数据量是原表的1/20;
使用本地缓存Caffeine提高查询效率,使用定时线程池保证数据一致性;
项目优化:
- 压缩需要缓存的数据,优化后一天的数据量仅占5.12KB内存;
- 仅从缓存中查询数据,使用异步方式更新缓存数据,对比SQLite查询方式从20 QPS提升到3w QPS。
# 基于Java实现Raft共识算法(2023.03-2023-06)
项目描述:
要将上述项目扩展为微服务项目,必不可少会遇到分布式一致性,事务,锁等问题。本项目实现了领导者选举和日志复制模块,可解决上述问题。主要使用了SOFA-Bolt作为Rpc通信,RocksDB作为日志存储。
主要工作:
- 按照Raft论文描述,实现领导者选举模块和日志复制模块;
- 每个节点使用定时线程池执行心跳任务和选举任务,执行任务时,使用普通线程池模拟并行发送Rpc请求,使用CountDownLatch同步,进而判断所有回复中是否超过一半节点回复成功;
- 每个节点使用两份日志实现日志预写和日志提交,当日志复制过程超过一半节点回复成功则正式提交。
项目优化: - 领导者在向跟随者并行复制日志的同时将日志写入自己的磁盘,对于客户端写请求响应时间从12ms降低到8ms。