简历
个人信息
专业技能
熟悉Java基础,如集合、代理、反射等。了解Java多线程,了解JVM内存模型、常见GC算法、类加载机制。·
#熟悉SSM + Spring Boot 框架,熟悉AOP、IOC和Spring Boot自动配置原理,了解 Spring MVC 执行流程。
熟悉MySQL数据库,熟悉InnoDB 存储引擎、事务、MVCC 机制。了解常用的性能优化方法。
#熟悉Redis 数据库,熟悉 Redis 常用数据结构、持久化机制,了解如何解决缓存击穿、缓存穿透、缓存雪崩问题·
熟悉Elastic Stack,能使用 ES 实现分词搜索,使用 Kibana 进行开发调试,使用 Logstash 实现实时数据同步。
熟悉并实践过多种设计模式,比如抽象工厂模式、模板方法模式、策略模式、代理模式、适配器模式等。
#实践过Spring Cloud Gateway 网关技术,实现动态路由、权限管理、流量染色、限流等功能。
实践过DubboRPC+Nacos框架,实现不同系统之间的高性能接口调用
#实践过Docker容器化技术(搭建 Redis 集群、HDFS 集群并测试存储效果),熟悉 Docker 常用指令和操作
了解HDFS、MongoDB、HBase 等分布式数据库,实践过 Hadoop、Spark 等大数据计算系统。
熟练掌握Java基础知识、集合、并发等内容;了解JVM,包括内存模型、垃圾回收算法、类加载过程、双亲委派机制;了解synchronized锁机制;了解常用数据结构,如栈,队列,二叉树等;
#熟练练使用Spring、SpringMVC、SpringBoot、Mybatis、Mybatis-Plus等常用开发框架;熟悉Spring的IOC思想,以及DI、AOP、动态代理、Bean生命周期、SpringMVC和SpringBoot执行流程;
熟悉MySQL数据库,熟悉事务、锁、索引等相关知识
#熟悉Redis的常用数据结构和常见应用场景,如缓存穿透、缓存雪崩、缓存击穿等知识以及Redis持久化、主从、哨兵模式、内存淘汰策略等知识,
#熟悉Docker常用命令,用过Dockerfile部署过项目;了解Linux常用命令;了解Git,能够使用Git进行团队开发
#熟悉SpringCloud微服务组件的基本使用,如Nacos、Eureka、Feign、Sentinel等;
#熟悉RabbitMQ整合SpringBoot的基本使用,熟悉SpringCloudGateway作为网关的基本使用,有实际项目的运用;
了解ElasticSearch的基本使用
实习经验
项目经历
项目名-java后端 项目地址 2023.06 -2023.08(最新)
负责工作
**项目介绍: **:一款多模块、分布式的API接口开放调用平台!管理员可以接入并发布接口,可视化各接口调用情况;用户可以开通接口调用权限、浏览接口及在线调试,并通过客户端 SDK轻松调用接口。
**技术栈 : **Spring Boot + Mybatis-plus + Dubbo + Gateway
- 使用Maven多模块依赖管理技术,将整个项目后端分为web系统、模拟接口、公共模块、客户端SDK、API网关
- 使用Spring Boot+ Mybatis-plus构建web系统,对用户和接口信息进行管理。使用AOP+ 接口编程实现权限管理,接口设计遵循RESTful风格,设计DTO、VO实体便于前后端分离开发。
- 使用MD5加密技术设计出API签名认证算法,为用户分配唯一的ak、sk密钥用于调用接口时鉴权,保障调用的安全性,可溯源性
- 使用 Spring Cloud Gateway 作为API网关,实现了路由转发、访问控制、流量染色,并集中处理签名校验、请求参数校验、接口调用统计等业务逻辑,提高安全性的同时、便于系统开发维护。
- 使用Spring Boot Start+Hutool开发客户端SDK,利用Spring Boot自动配置使用户能通过一行代码调用接口,极大提高用户使用体验。
- 使用Dubbo RPC + Nacos框架实现子系统间的高性能接口调用,大幅减少重复代码,
项目名-java后端 2023.03 -2023.05
**项目介绍:**本项目是基于Vue+SpringBoot+Dubbo+SpringCloudGateway+Redis+MybatisPlus开发的提供接口供用户调用的平台。管理员可以接入并发布接口,统计分析各个接口的情况,发布卡密等操作。用户可以注册登录并使用平台提供的密钥进行接口的开通,然后可以浏览接口和在线调用
- 使用SpringCloudGateway作为API网关,实现路由转发、访问控制、流量染色等功能
- 为防止接口被恶意调用,设计并使用API签名算法,为用户分配accessKey/secretKey以鉴权,保障调用安全性
- 为了提高性能,本项目多处使用redis各种数据结构进行缓存。并且在查看接口业务中解决缓存穿透和缓存击穿问题,避免用户恶意调用带来的系统故障
- 为了解决多实例模式下和单机模式下关于接口充值功能的多线程并发问题,使用手写分布式锁和ReentrantLock进行加锁
- 抽象模型层和业务层代码为公共模块,使用Dubbo RPC框架实现子系统的高性能调用
- 使用线程池提交任务对订单业务进行异步处理,提高系统业务效率(实测在QPS达到100的情况下,相较于同步处理,系统性能提升36%);同时使用RabbitMQ的延迟队列对订单超时15分钟的状态处理,在多实例且订单量大的情况下(同时有50个订单需要处理)比@Secheduled的效率高31%左右,优化了性能
项目介绍:基于 Spring Boot + Redis的店铺点评 APP,实现了找店铺=>写点评=>看热评=>点赞关注=>关注Feed 流的完整业务流程。
主要工作:
1.短信登录:使用Redis实现分布式 Session,解
决集群间登录态同步问题;使用Hash代替
String 来存储用户信息,节约了xx%的内存并便于单字段的修改。(需要自己实际测试对比数据,节省内存的原因是不用保存序列化对象信息或者JSON的一些额外字符串)
2.店铺查询:使用Redis对高频访问店铺进行缓存,降低 DB 压力同时提升90%的数据查询性能。
3.为方便其他业务后续使用缓存,使用泛型+函数式编程实现了通用缓存访问静态方法,并解决了缓存雪崩、缓存穿透等问题。
4.使用常量类全局管理Redis Key前缀、TTL等,保证了键空间的业务隔离,减少冲突。
5.使用 Redis的Geo+Hash 数据结构分类存储附近商户,并使用Geo Search命令实现高性能商户查询及按距离排序。
6.使用Redis List 数据结构存储用户点赞信息,并基于ZSet 实现TopN点赞排行,实测相对于DB 查询性能提升xx%。(需要自己实际测试对比数据)
7.使用Redis Set 数据结构实现用户关注、共同关注功能(交集),实测相对于DB查询性能提升xx%。(需要自己实际测试对比数据)
8.使用Redis BitMap实现用户连续签到统计功能,相对于传统关系库存储,节约xx%的内存并提升xx%的查询性能。(需要自己实际测试对比数据)
9.在系统用户量不大的前提下,基于推模式实现关注Feed流,保证了新点评消息的及时可达,并减少用户访问的等待时间。
10.优惠券秒杀:使用 Redis +Lua脚本实现库存预检,并通过Stream队列实现订单的异步创建,解决了超卖问题、实现一人一单。实现相比传统数据库,秒杀性能提高了xx%。(需要自己实际测试对比数据)
1.为集中处理系统异常,自定义统一的错误码,并封装了全局异常处理器,屏蔽了项目冗余的报错细节、便于接口调用方理解和统一处理。
2.基于静态ThreadLocal封装了线程隔离的全局上下文对象,便于在请求内部存取用户信息,减少用户远程查询次数。
3.为兼容请求参数date 类型的序列化,自定义Jackson 对象映射器处理日期;并扩展SpringMVC的消息转换器,实现自动序列化。
4.自定义 MyBatis Plus 的MetaObjectHandler,配合全局上下文实现写数据前的创建时间、用户id字段的自动填充。
5.遵循 Restful 设计规范编写接口,降低前后端接口沟通和理解成本。
6.为解决原生 Jdk序列化器导致的缓存 key 值乱码问题,自定义 RedisTemplate Bean 的RedisKey 序列化器为 StringRedisSerializer。
7.使用Knife4j+Swagger 自动生成后端接口文档,并通过编写 ApiOperation等注解补充接口注释,避免了人工编写维护文档的麻烦。
8.为省去重复编写用户校验的麻烦,基于WebFilter 实现全局登录校验;并通过AntPathMatcher 来匹配动态请求路径,实现灵活的可选鉴权。
9.为保证数据的完整性和一致性,使用@Transactional实现数据库事务,并配置rollbackFor = Exception.class 来支持受检异常的事务回滚。
10.为提高XX信息页加载速度,基于 SpringCache 注解+ Redis 实现对 XX信息的自动缓存,大幅降低数据库压力的同时将接口响应耗时由0.8s减少至50ms(数值自己再测一下)
11.为降低开发成本,使用MyBatis Plus 框架自动生成业务的增删改查重复代码,并使用LambdaQueryWrapper 实现更灵活地自定义查询。
12.为降低用户注册成本、保证用户真实性,二次封装XX云SDK接入短信服务,并通过Redis来集中缓存验证码,防止单手机号的重复发送。
13.为提高数据库整体读写性能,配置MySQL主从同步,并使用sharding-jdbc实现业务无侵入的读写分离。
14.封装全局 Axios请求实例,添加全局请求拦截和全局异常响应处理器,减少重复的状态码判断、提升项目可维护性。
获奖技能/证书(荣誉奖项)
**竞赛奖项: **第十四届蓝桥杯Java软件开发大学B组二等奖
**证书: **软件设计师中级 CET-4
时间
个人评价
1.有较强的文档阅读能力,曾阅读 Spring CloudAlibaba 等官方文档自主学习,并能够运用到项目中。
2.有较强的问题解决能力,能够利用GitHub Issues区、AI工具、搜索引擎、Stack Overflow等自主解决问题
自学能力强,有看官方文档学习的能力,曾自主阅读Dubbo官方文档完成项目的需求
具有解决问题的能力,如xxx项目的业务bug都是由自己个人解决