简历中的专业技能
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 框架解决分布式锁问题,利用它内置的机制解决了锁续期和死锁问题
- 数据脱敏
相关文章:
简历中的专业技能
Java 精通Java 核心,多年一线研发经验,具备良好的编码能力、并熟练应用设计模式精通多进程、Java 高并发编程,阅读过相关 JDK 源码以及Lock锁的底层源码,熟悉 AQS 和 CAS 的核心思想,能够运用其机制优化并发编程精通 …...

力扣HOT100——102.二叉树层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] /*** Definition for a bi…...
【Token系列】05 | 位置编码不是位置信息:Transformer如何建立语言顺序感?
文章目录 05 | 位置编码不是位置信息:Transformer如何建立语言顺序感?一、为什么Transformer需要“位置感知”?二、什么是位置编码(Position Encoding, PE)?三、相对 vs 绝对位置编码四、可学习位置编码机制…...
springboot启动的端口如何终止
若要终止 Spring Boot 应用所使用的端口,可依据应用的运行方式,采用不同的解决办法。以下为你详细介绍: 1. 直接停止正在运行的 Spring Boot 应用程序 开发环境(IDE 中运行) IntelliJ IDEA:在 IDE 的运行…...
chrony服务器(1)
简介 NTP NTP(Network Time Protocol,网络时间协议)是一种用于同步计算机系统时间的协议是TCP/IP协议族中的一个应用层协议,主要用于在分布式时间服务器和客户端之间进行时钟同步,提供高精准度的时间校正通过分层的时…...

搭建基于火灾风险预测与防范的消防安全科普小程序
基于微信小程序的消防安全科普互动平台的设计与实现,是关于微信小程序的,知识课程学习,包括学习后答题。 技术栈主要采用微信小程序云开发,有下面的模块: 1.课程学习模块 2.资讯模块 3.答题模块 4.我的模块 还需…...

RAG技术与应用---0426
大语言模型>3.10 课程中会用到python 工具箱: faiss,modelscope,langchain,langchain_community,PyPDF2 1)大模型应用开发的三种模式 提示词没多少工作量,微调又花费时间费用,RAG是很多公司招聘用来对LLM进行应用…...

element-ui多个form同时验证,以及动态循环表单注意事项
多个form同时验证: validateForm(refs) {if (!refs) {return false}return new Promise((resolve, reject) > {refs.validate().then((valid) > {resolve(valid)}).catch((val) > {resolve(false)})}) }, async handleConfirm() {Promise.all([this.valid…...

k8s学习记录(四):节点亲和性
一、前言 在上一篇文章里,我们了解了 Pod 中的nodeName和nodeSelector这两个属性,通过它们能够指定 Pod 调度到哪个 Node 上。今天,我们将进一步深入探索 Pod 相关知识。这部分内容不仅信息量较大,理解起来也有一定难度࿰…...

文本预处理(NLTK)
1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...
一些常见的资源池管理、分布式管理和负载均衡的监控工具
资源池管理监控工具 Prometheus 是一款开源的系统监控和警报工具。它可以通过收集各种指标数据,如CPU使用率、内存使用量、磁盘I/O等,来监控资源池中的服务器、容器等资源。Prometheus具有强大的查询语言和可视化功能,能够帮助管理员快速了解资源的使用情况,并及时发现潜在…...

Neo4j 可观测性最佳实践
Neo4j 介绍 Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言࿰…...
JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?
1. 分析 : 年轻代GC正常,说明年轻代的对象回收没有问题,可能大部分对象都是朝生夕死的,所以Minor GC能有效清理。但Full GC频繁,通常意味着老年代空间不足,导致频繁进行Full GC来回收老年代。而内存缓慢上…...
C++入门(讲解1)
1. namespace的定义 1.1 定义命名空间,需要用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中就是命名空间的成员。命名空间中可以定义变量/函数/类型等。 1.2 namespace的本质是定义出一个域,这个…...
react的ant-design-pro框架左侧菜单修改为动态路由
在使用 React 框架结合 Ant Design Pro 进行项目开发时,动态路由的修改是一项常见且重要的任务。动态路由能够根据用户的角色、权限或者其他运行时的条件来展示不同的页面内容,极大地提升了应用的灵活性和安全性。本文将结合一个完整的示例项目ÿ…...

【教程】Windows通过网线共享网络给其它设备
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 1、打开“控制面板”。 2、点击“网络和共享中心”。 3、点击“更改适配器设置”。 4、选中要共享的网络适配器,右击选中“属性”。 5、勾选…...

百度AI开发者大会:连发多款AI应用,覆盖AI数字人等热门赛道
4月25日,Create2025百度AI开发者大会在武汉隆重举办。百度创始人李彦宏发表了题为《模型的世界 应用的天下》的演讲。60分钟的演讲中,李彦宏发布了两大模型,多款热门AI应用,并宣布将帮助开发者全面拥抱MCP。 当天发布的文心大模型…...

Java 线程的六种状态与完整生命周期详解
🚀 Java 线程的几种状态详解 在 Java 中,线程状态(Thread State)是由 Thread.State 枚举定义的,总共有六种: 状态含义典型场景示例NEW新建状态,线程对象刚创建,还未调用 start() 方…...

05--Altium Designer(AD)的详细安装
一、软件的下载 Altium Designer官网下载 1、临近五一的假期,想着搞个项目,且这个项目与PCB有关系,所以就下这个软件来玩玩。下面保姆级教大家安装。 2、选择适合自己的版本下载(我安装的是24的) 3、软件安装 1.下…...
2:QT联合HALCON编程—图像显示放大缩小
1.声明事件 #include <HalconCpp.h> using namespace HalconCpp;#include <QCloseEvent>//滚轮事件 2.在.h文件中声明和定义公共全局变量,以及图像缩放的函数 void wheelEvent(QWheelEvent *event);//定义函数HTuple wcRow0, wcRow1, wcCol0, wcCol1,m…...

Java 队列与阻塞队列全面解析:从 Queue 到 TransferQueue 的实现与应用
文章目录 Queue队列QueueDeque 阻塞队列BlockingQueueArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueueDelayQueue BlockingDequeLinkedBlockingDeque TransferQueueLinkedTransferQueue Queue Queue(队列)是一种特殊的线性…...
服务器虚拟化:技术解析与实践指南
在信息技术飞速发展的今天,企业对服务器资源的需求日益增长,传统物理服务器存在资源利用率低、部署周期长、管理成本高等问题。服务器虚拟化技术应运而生,它通过将物理服务器的计算、存储、网络等资源进行抽象和整合,划分成多个相互隔离的虚拟服务器,从而提高资源利用率、…...

【蓝桥杯省赛真题56】Scratch抓不住的蜜蜂 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
目录 scratch抓不住的蜜蜂 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 四、程序编写 五、考点分析 六、推荐资料 1、scratch资料 2、python资料 3、C++资料 scratch抓不住的蜜蜂 第十五届青少年蓝桥…...
线程池(二):深入剖析synchronized关键字的底层原理
线程池(二):深入剖析synchronized关键字的底层原理 线程池(二):深入剖析synchronized关键字的底层原理一、基本使用1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块 二、Monitor2.1 Monitor的概念2.2 Moni…...
【线段树】P8539 「Wdoi-2」来自地上的支援|普及+
P8539 「Wdoi-2」来自地上的支援 题目背景 波光粼粼的山顶湖与庄严神圣的神社之下,是一座复合型活火山。 沿幻想风穴而下,便能到达火山之下,废弃已久的地狱原址。 在旧地狱中,有一座大都市。那里是旧地狱还是地狱的时候在那工作…...

《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute
目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项(Record Route,RR) 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…...
Leetcode:1. 两数之和
题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示…...
【Java学习笔记】冒泡排序
冒泡排序 思想:经过一轮遍历比较,把最大的放在数组的末尾 int[] a {3, 2, 1}; for( int i 0; i < a.length-1; i){for( int j 0; j < a.length-1-i; j){if(a[j] > a[j1]){int temp a[j];a[j] a[j1];a[j1] temp;}} } for( int i 0; i &…...
【数字图像处理】立体视觉基础(2)
相机标定 【1】相机标定的概念 相机参数:相机成像的几何模型的参数 相机标定:求解参数的过程 【2】相机标定的作用 (1)求出相机的内、外参数,以及畸变参数 (2)校正镜头畸变影响,…...

NtripShare 2025第一季度主要技术进展
GNSS方面 1、开源GNSS接收机配置软件基础版本。 2、商业版本GNSS接收机配置软件,增加PPP、文件保存、前端解算(静态、RTK-Static),前端坐标转换。 3、GNSS接收机配置软件全面适配米尔T133i硬件方案。 视觉检测方面 1、做出第…...