Java
- 精通Java 核心,多年一线研发经验,具备良好的编码能力、并熟练应用设计模式
- 精通多进程、Java 高并发编程,阅读过相关 JDK 源码以及Lock锁的底层源码,熟悉 AQS 和 CAS 的核心思想,能够运用其机制优化并发编程
- 精通 JVM、JMM 内存模型,熟悉常见垃圾回收算法与回收器,具备丰富的 JVM 调优经验
- 精通操作系统异步网络 I/O 和 Java NIO,深入理解并熟练运用 Netty 构建高性能网络应用
- 熟悉 Java 8 及以上版本的新特性,包括 Lambda 表达式、Stream API、Optional、CompletableFuture 等
- 熟悉OOA,OOD,OOP,DDD 领域开发模型
- 熟悉数据结构,并能灵活使用线性表,队列,栈,树,图等结构,具有良好的算法和编码能力
- 熟悉JavaScript,HTML5,CSS,ES6,Axios,Node,NPM,Element-Plus,RUOYI,VUE3 技术栈
- 熟练掌握 IDEA、Git、Maven 等开发工具,能够高效支持项目开发与管理
- 喜欢阅读框架源码,已阅读:springioc、springaop、springtx、tomcat、mybatis、JUC.正在阅读:Jvm c++源码、Linux内核源码
数据库
- 熟练运用 MySQL、Oracle、Sqlserver 等关系型数据库以及 MongoDB、Redis、Memcached 等 NoSQL 技术,满足多样化大数数据存储需求
- 熟练使用关键字 Explain 对SQL进行优化,并能够熟练编写Mysql的存储过程,函数封装复杂的业务逻辑,并提高性能
- 熟悉Mysql的 MVCC多版本并发控制,解决读写阻塞,降低死锁概率,解决一致性读的问题
- 熟悉MySQL引擎架构,锁的机制,分区,分库,分表,主从复制等技术
- 通过延迟关联和子查询优化大量数据的分页查询,提升查询效率和系统性能
- 通过多线程技术实现百万级数据高效插入,显著提升数据处理速度和系统吞吐量
框架
- 熟练使用Spring,SpringMVC,Mybatis,Mybatis-plus,Dubbo,SpringBoot,SpringCloud,Spring Cloud Alibaba等主流框架,能够独立设计、开发和部署微服务应用。
- 熟悉ORM框架设计原理熟悉Mybatis(Mybatis)一级缓存,二级缓存,拦截器与设计模式的原理
- 熟练运用 Nacos 、 Zookeeper、 Apollo 等框架,确保服务间的高效协同与动态管理
- 熟练运用 Spring Cloud Gateway 设计并实施统一入口,有效整合安全控制、流量管理、智能路由与请求过滤机制,显著提升系统响应速度与用户体验
- 熟练运用 Nginx,服务层面则利用 Ribbon 实现负载均衡策略,优化资源分配与请求处理效率
- 熟练运用 Sentinel 、Hystrix、 及 Resilience4j 等工具,为系统设计强大的服务熔断与降级机制,保障服务稳定性
- 熟练使用 OpenFeign 实现高效的远程服务调用,优化微服务之间的通信与数据传输,提升系统的可扩展性和性能
- 熟练使用 OAuth2 和 OpenID Connect 协议实现授权与身份认证,特别适用于微服务架构中的单点登录(SSO)和用户身份管理
中间件
- 熟练运用 RabbitMQ、Kafka、RocketMQ 等技术,实现异步通信与事件驱动架构,有效解耦服务,提升系统弹性和响应速度
- 熟练运用 XXL-JOB 框架,高效管理分布式任务,提升系统处理大规模任务的能力
- 熟练运用 Elasticsearch、Logstash、Kibana 进行日志聚合、分析与可视化,建立全面的运维监控体系,确保系统健康运行
- 熟练运用 ShardingSphere-JDBC 实施分库分表策略,解决大数据量存储与访问难题
- 熟练运用 Seata 确保分布式事务的一致性,提升系统数据完整性
- 熟练运用 SkyWalking、Sleuth和Zpkin 等分布式链路追踪技术,实现分布式链路追踪以及性能监控和优化
- 熟悉阿里开源工具Canal,实时同步Mysql数据库的变更数据到其他系统,保证数据一致性!并了解canal运行原理
- 熟悉 Zookeeper 的集群架构、工作原理,领导者(Leader)的选举机制并能应用其为集群提供协同服务,如HA与分布式锁
- 熟悉通过 Nginx、KeepAlived、LVS 等技术实现高可用架构设计和支持
- 熟练使用FastDFS、 OSS、MinIO 等分布式文件存储系统进行图片存储与管理,提升系统的文件处理能力和可靠性
- 熟练使用 JMeter 进行性能测试,评估接口的性能表现,并判断其是否符合开发标准
- 利用 Redisson 技术实现分布式锁,保障分布式系统中的数据一致性和并发控制
- 利用**布隆过滤器(Bloom Filter)**技术有效防止缓存穿透,提高系统的缓存命中率和性能
- 使用 Arthas+JDK 工具处理线上问题以及 JVM 调优等
部署
- 熟悉 Linux 操作系统及常用命令,熟练使用 Git 进行版本控制和团队协作
- 熟悉 Docker 的架构与原理,能够灵活运用其核心命令,高效管理容器化应用
- 熟练运用 Jenkins、Gitee 和 Docker 这三种技术,在开发与运维(DevOps)领域实现高效的持续集成(CI)与持续部署(CD)
- 熟悉 Kubernetes 的使用,能够对 Docker 容器进行集群化管理,实现系统的弹性扩缩容,全面提升系统的稳定性和高可用性
简历项目职责
听书项目模块技术描述:
后台
- 使用minio 做分布式文件存储系统,管理图片上传,下载
- 使用云点播存储声音,使用数据万象对声音进行审核
- 利用mybatis-plus 分页查询,实现对专辑与声音动态分页查询
- 利用group by,max 函数实现列转行操作展示专辑的统计信息
- 利用explain 关键词对sql 语句进行优化,让type 达到ref级别,提高了查询效率
- 利用视图将分类数据进行统一存储,便于后续查询各个分类的名称
登录
- 利用自定义注解实现用户访问不同业务时,是否需要登录的业务逻辑
- 利用微信小程序登录Api 换取微信中唯一的Openid来实现单点登录功能
- 利用Aop切面,自定义注解拦截用户请求,判断用户是否登录,不登录,跳转,登录,将用户信息存储到 ThreadLocal
- 利用 ThredLocal 中的 remove(); 方法防止内存泄漏
- 利用Spring Ioc 功能,将 RedisTemplate 模版对应的String,Hash 数据进行进行序列化
- 登录成功之后,利用 Rabbitmq 异步发送消息初始化账户金额,为了留住用户
- 利用 Setnx 防止消息重复消费,保证消息消费的幂等性
- 利用 ApplicationListener 接口,重写 setConfirmCallback setReturnsCallback 实现消息的重复发送,保证消息不丢失
- 利用 sa-token 技术实现单点登录 sso
检索
-
利用 Elasticsearch 企业级搜索引擎实现全文检索功能,避免数据库索引失效的问题! %?%;
-
利用 面向对象思想,封装检索实体类{keyword,category1id…} ElasticsearchClient 的 search() 方法实现检索.
利用 should 将 专辑的标题与专辑简介,作者三个条件做为 or 关系查询数据。 利用 term 关键词 实现按照分类Id进行查询 利用 sort 排序, from size 分页 hightlight做高亮显示 利用 aggs 做聚合 获取热度最高的前六条数据记录 利用 nested 做嵌套查询,便于通过属性Id 与 属性值Id进行过滤
-
利用 Logstash 做日志收集,便于后续查询问题,利用kibana可视化视图,编写dsl语句,提高开发效率
-
利用 Suggest completion 实现自动补全功能,增强用户体验度
-
利用 ElasticsearchRepository 接口中save() deleteById() 方法,实现专辑的上架,下架,还能实现自动创建索引库!
-
利用 CompletableFuture 多线程异步编排快速查询数据,实现上架数据的封装
-
使用自定义线程池 ThreadPoolExecutor 提高CompletableFuture的执行效率
详情
- 利用 CompletableFuture 多线程异步编排快速查询数据,实现专辑数据回显
- 利用 Group by,MAX函数实现列转行操作展示专辑的统计信息
- 利用 Aop与分布式锁整合,简化代码,便于代码维护
- 使用 Jmeter 做性能测试,判断当前接口是否符合开发标准
- 通过 sql优化,线程优化,缓存优化,大大提高了查询效率
- 利用 Caffeine 做一级缓存, Redis 做二级缓存提高系统查询效率
- 利用 Redisson 做分布式锁解决缓存击穿,利用布隆过滤器解决缓存穿透,利用Redis集群或设置key的过期时间不一致来解决雪崩,利用Canal解决缓存与mysql 数据一致性问题
- 利用 MongoDB来存储声音的播放进度
- 利用 Setnx 防止用户同一天之内恶意刷新当前声音的播放量,利用mq发送消息更新当前声音与专辑的播放量
- 利用 MongoDB 中的 updateTime 字段来实现播放最近一次播放记录
- 利用 Redis 的Hash 数据类型实现排行榜功能
- 利用 Xxl-job分布式定时任务调度框架实现自动更新排行榜功能
订单
- 利用 分布式锁(Redis) 解决用户重复提交问题
- 利用 sgin 签名机制保证接口安全性,防止用户攻击
- 利用 OpenFeign 远程调用实现扣减余额,记录用户购买记录
- 当订单是微信支付时,需要利用Rabbitmq的延迟插件实现取消订单功能
- 为了将用户微服务,订单微服务,账户微服务看做一个整体,所以使用了 Seata 的AT模式实现分布式事务,保证业务数据的一致性
- 利用 ShardingSphere-JDBC 对订单进行分库分表,支持日均 100万+订单 的高并发场景
- 利用 工厂模式 解决接口选择问题 ,利用策略模式解决多重 if else 判断,从而实现简化代码开发,便于升级维护
- 利用延迟关联与子查询解决大量数据分页查询场景
业绩
性能提升
- 通过 Explain 关键词优化索引,从全表扫描100万行,耗时5秒,减少到扫描1000行,查询耗时缩短至 50ms,性能提升 100倍
- 通过
CompletableFuture
并行查询数据源,总查询时间缩短至 100ms,延迟降低了 80%,显著提升了用户体验 - 通过使用 Elasticsearch 替代传统数据库的全文检索功能,系统平均查询延迟从 500ms 降至 50ms,提高了 10倍 的查询速度
- 通过引入 Redis 缓存,热门数据的查询响应时间从 200ms 降低至 5ms,提升了 40倍 的查询速度
- 通过优化缓存策略(LRU 淘汰策略),Redis 的缓存命中率提高至 95%,仅有 5% 的查询需要回源到数据库
- Redis 单节点支持的查询并发量达 10万 QPS,相比数据库原生支持的 1万 QPS,并发性能提升了 10倍
- 通过 RabbitMQ 将耗时任务异步化,用户请求直接返回,平均响应时间降至 50ms,降低了 94% 的延迟
- 通过异步解耦,主服务聚焦于快速响应,耗时任务交由消费者处理,系统每秒支持 5000个请求(TPS),吞吐量提升 10倍
- RabbitMQ 缓冲高并发请求,避免直接打满数据库连接池,系统稳定性提高 80%,宕机率显著降低
- 使用异步解耦后,CPU 和数据库 I/O 的平均负载分别下降 40% 和 30%,显著减少了资源消耗
降低成本
- 由于数据库负载大幅减少,减少了水平扩展所需的硬件资源,整体运维成本降低了 30%
- 引入 Kubernetes 容器编排工具,根据业务流量动态扩容/缩容,避免资源浪费,节约服务器成本 50%
- 通过 CDN(内容分发网络)缓存静态资源,使原始服务器流量降低 70%,每月节省带宽成本 $3000
- 通过接口合并,API 请求量减少 40%,带宽费用降低 20%
项目中的亮点
- 利用阿里的开源框架 Seata 做分布式事务,在项目中解决了用户,订单,账户三个微服务数据一致性的问题
- 利用Canal解决数据库与缓存一致性问题,保证写线程的顺序性,不会发生数据乱序问题
- 使用Xxl-Job分布式任务调度平台,实现动态调整更新排行榜与更新Vip过期问题
- 运用策略模式解决大量的if-else 问题。避免了硬编码逻辑判断与代码重复问题
- 工厂模式解决了接口选择性问题,提升项目的可维护性和可扩展性
- 利用AOP与自定义注解实现了通用功能的抽取与复用、代码解耦、简化配置与统一管理,增强了代码的灵活性
- 利用多线程与PlatformTransactionManager 解决百万数据插入问题
- 利用Redisson 框架解决分布式锁问题,利用它内置的机制解决了锁续期和死锁问题
- 数据脱敏