- 博客(90)
- 收藏
- 关注
原创 SpringBoot动态线程池深度解析:从原理到企业级落地实践
Bean动态线程池技术在现代分布式系统中扮演着越来越重要的角色。显著提升系统性能:合理利用资源,避免过度配置增强系统弹性:根据负载自动调整,应对突发流量降低运维成本:减少人工干预,实现自动化管理提高资源利用率:避免资源浪费,节约成本未来趋势包括AI智能调优、云原生深度集成、多维度自适应策略等方向。建议结合具体业务场景选择合适的方案,并持续优化调整。作者: Jerry版权声明: 本文原创,转载请注明出处技术交流: 欢迎在评论区讨论交流。
2025-09-10 10:59:24
1023
原创 基于Java+SpringBoot的B站评论系统架构设计与实践深度解析
本文从技术实现细节出发,提供了三种可行的B站评论系统架构方案,并给出了完整的代码实现和配置示例。在实际项目中,建议根据业务规模和技术团队能力选择合适的方案,同时预留足够的扩展空间以应对未来的业务发展。关键词:SpringBoot、评论系统、架构设计、高并发、分布式缓存、消息队列。
2025-09-09 17:38:43
504
原创 SpringBoot埋点功能技术实现方案深度解析:架构设计、性能优化与扩展性实践
Data@BuilderSpringBoot埋点系统建设需要根据具体业务场景选择合适的方案。对于高并发场景推荐异步消息队列方案,对数据一致性要求高的场景可采用同步AOP方案。未来发展趋势是向云原生、智能化和标准化方向发展。合理的架构设计完善的监控体系持续的性能优化灵活的扩展能力通过本文提供的方案和实践经验,开发者可以构建出高性能、高可用的埋点系统,为业务决策提供可靠的数据支撑。
2025-09-08 15:14:15
1128
原创 领域驱动设计(DDD)深度解析:从理论到SpringBoot实践全攻略
业务逻辑复杂的系统(电商、金融、ERP)需要长期演进和维护的项目大型团队协作开发场景需要清晰业务语义的系统通过SpringBoot实现DDD,可以充分利用Spring生态的优势,结合JPA、Spring Data等组件,快速构建健壮的可维护系统。✅ 业务规则复杂且频繁变化✅ 需要与业务专家密切协作✅ 系统需要长期维护和演进✅ 团队规模较大,需要明确分工❌ 简单CRUD应用❌ 一次性原型项目❌ 性能极致要求的场景(需额外优化)
2025-09-03 15:08:16
1268
原创 深度剖析:消息队列如何保证消息顺序性的7大核心技术方案
消息队列的顺序性保障是一个系统工程,需要从生产者、消息队列、消费者三个层面综合考虑。选择合适的方案需要根据具体的业务场景、性能要求和技术团队能力来决定。关键建议优先考虑Key-Based分区方案,平衡性能和复杂度严格监控消息顺序性指标,建立告警机制设计容错机制,处理网络分区和节点故障预留扩展能力,支持业务规模增长希望本文能为你在消息队列顺序性设计方面提供有价值的参考。如有任何问题,欢迎在评论区交流讨论!版权声明:本文为Jerry原创,转载请注明出处。
2025-09-03 14:59:00
805
原创 高并发系统设计:技术选型与深度优化策略
架构图显示:客户端通过锁服务获取锁,业务线程处理数据,完成后释放锁,确保集群环境下的数据一致性。:某电商平台使用gRPC替代REST后,接口响应时间从800ms降至200ms,日均处理能力提升400%。:某秒杀系统因未设置缓存过期时间,导致数据库瞬间崩溃,后通过Redisson分布式锁控制缓存更新。:采用渐进式迁移方案,优先为核心服务部署Sidecar,结合服务网格监控平台实现可视化运维。:为缓存设置随机过期时间,结合本地缓存做兜底,使用Redis集群提升吞吐量。参数启用JIT,结合。
2025-09-02 14:34:36
305
原创 2025 互联网大厂 Java 后端面试实录:3-5 年经验必看,覆盖 JVM、分布式、中间件全考点
配置需根据任务类型(CPU密集型设 corePoolSize=CPU核数,IO密集型设更高),排查时查看拒绝策略触发、线程状态异常(如 Thread.State.WAITING)及任务堆积情况。:JVM 内存分为堆(对象实例)、栈(局部变量/方法调用)、方法区(类元数据)、程序计数器(行号)、本地方法栈(native 方法)。:使用布隆过滤器拦截非法 key,例如在验证码场景中,当用户请求不存在的手机号时,直接返回错误提示,避免数据库压力。:堆是 GC 主战场,方法区存储类信息。为何选择 2 的幂次?
2025-08-31 13:17:52
659
原创 2025 互联网大厂 Java 后端面试实录:3-5 年经验必看,覆盖 JVM、分布式、中间件全考点
配置需根据任务类型(CPU密集型设 corePoolSize=CPU核数,IO密集型设更大),排查时重点看拒绝策略触发、线程状态异常(如 Thread.State.WAITING)、任务堆积情况。:JVM 内存分为堆(对象实例)、栈(局部变量/方法调用)、方法区(类元数据)、程序计数器(行号指示器)、本地方法栈(native 方法)。:使用布隆过滤器拦截非法 key,例如在验证码场景中,当用户请求不存在的手机号时,直接返回错误提示,避免数据库压力。:堆是 GC 主战场,方法区存储类元数据。
2025-08-31 13:16:20
518
原创 认识JUC
ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。对 与多线程的操作,介于 HashMap 与 Hashtable 之间。内部采用“锁分段” 机制替代 Hashtable 的独占锁。进而提高性能。CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作 之前,它允许一个或多个线程一直等待。Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的。
2022-11-22 23:22:18
357
原创 认识NIO
方法介绍从Channel中读取数据到ByteBuffer将Channel中的数据“分散”到ByteBuffer[]将ByteBuffer中的数据写入到Channel返回次通道的文件位置设置次通道的文件位置返回此通道的文件的当前大小将此通道的文件截取为给定大小强制将所有对此通道的文件更新写入到存储设备中通道是一个连接 I/O 服务导管并提供与该服务交互的方法。
2022-11-22 23:20:06
494
原创 Linux08——面试题篇
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-905Fnf00-1669130117982)(https://gitee.com/jerrygrj/img/raw/master/img/image-20210819143617290.png)]
2022-11-22 23:16:35
311
原创 Linux07——高级篇
文章目录Linux07——高级篇一、日志管理1. 基本介绍2. 系统常用的日志2.1 日志位置2.2 系统常用的日志3. 日志管理服务`rsyslogd`1. 查询rsyslogd服务是否启动2. 查询rsyslogd服务的自启动状态3. 配置文件:/etc/rsyslog.conf3.1 日志类型3.2 日志级别4. 日志文件内容详细介绍5. 自定义日志保存起来4. 日志轮替4.1 参数说明4.2 把自己的日志加入日志轮替4.3 案例5. 查看内存日志二、定制自己的Linux系统1. 基本介绍2. 基本原
2021-08-17 23:03:59
1016
原创 Linux06——ubuntu安装配置篇
文章目录Linux06——ubuntu安装配置篇一、安装二、基础操作1. 设置Ubuntu支持中文2. root用户更新Ubuntu软件下载地址4. Ubuntu软件操作的相关命令三、远程登录1. SSH介绍2. ubuntu默认没有安装SSHD服务,需要手动查看安装Linux06——ubuntu安装配置篇资料:百度网盘一、安装见CentOS二、基础操作1. 设置Ubuntu支持中文单继Language Support菜单点击Install/Remove Lanugage找到chine
2021-08-17 22:59:32
192
原创 Linux05——常用环境配置安装篇
文章目录Linux-3(JDK/Tomcat/Idea/MySQL)搭建/可视化管理(webmin/bt)一、安装配置JDK8二、安装tomcat三、安装Idea2020四、安装MySQL五、webmin1. 基本介绍2. 安装配置webmin2.1 方式一2.2 方式二3. 使用步骤3.1 重置密码3.2 修改webmin服务的端口号3.3 重启webmin3.4 防火墙放开6666/10000端口,根据前面设置的来3.5 登录webmin六、bt(宝塔)1. 基本介绍2. 安装和使用3. 忘记密码Li
2021-08-17 22:56:22
198
原创 Linux04——Shell篇
文章目录Linux04——Shell一、定义二、规范1. 编写2. 执行2.1 方式一:赋予脚本执行权限2.2 方式二:不用赋予脚本执行权限三、变量1. Shell变量的介绍2. Shell变量的定义3. 设置环境变量3.1 基本语法4. Shell脚本的多行注释5. 位置参数四、运算符五、条件判断&流程控制1. if1.1 语法1.2 案例2. case2.1 语法2.2 案例3. for循环3.1 基本语法3.2 案例4. while循环4.1 语法4.2 案例六、read读取控制台输入1. 语
2021-08-17 22:53:44
143
原创 Linux03——基础篇2
Linux-2三、Linux磁盘分区、挂载1. 硬盘说明Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。"×"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~”"代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区, hdb2表示为第二个IDE硬盘上的第二个主分区或扩
2021-08-17 22:49:32
240
原创 Linux02——基础篇1
文章目录二、Linux02——基础篇1. 目录结构2. 远程登录Linux服务器2.1 XShell2.1.1 演示2.2 XFTP(主要用来传资源,文件可视化)3. Vi 和 Vim编辑器3.1 三种模式3.2 快捷键3.2.1 复制-粘贴-删除-撤销-定位首行末行-定位指定行3.2.2 查找字符-设置行号4. 开机、重启、用户登录注销操作5. 用户/用户组管理 组管理和权限管理5.1 用户管理5.1.1 添加用户5.1.2 修改密码5.1.3 删除用户5.1.4 查询用户5.1.5 切换用户5.2 用户
2021-08-17 22:43:30
277
原创 Linux01——安装与设置篇
文章目录Linux01——安装与设置篇一、安装与设置篇1. Linux介绍2. Linux的安装2.1 VM的下载和安装2.1.1 安装注意2.2 Centos下载和安装2.2.1 安装步骤2.3 虚拟机的快照功能-快速回退到某个快照2.4 虚拟机的克隆功能2.4.1 方式一:直接拷贝一份安装好的虚拟机文件2.4.2 方式二:使用vmware的克隆操作2.5 安装vmtools的步骤2.6 设置共享文件夹Linux01——安装与设置篇一、安装与设置篇1. Linux介绍Linux之父Lin
2021-08-17 22:38:32
177
原创 MySQL
文章目录数据库一、MySQL入门一、安装1. 环境搭建2. 安装失败解决办法二、MySql的基础命令1. 服务启动/停止2. 登录MySQL^_^名称插曲及后续使用的文件二、DQL语言(select)1. 基本语法1.1 例子2.起别名2.去重(distinct)3.表达式4. `where`条件语句4.1 例子5. 比较操作符5.1 `like`5.2 `in`5.3 `NULL`空5.4 `between`5.5 `is null`6. 排序查询6.1 注意6.2 例子6.3 练习7. 连接查询(`JO
2021-07-25 20:51:09
760
原创 Maven
文章目录MavenMaven基础一、Maven概述1.1 Maven的概念1.2 作用1.3 Maven概念模型1.4 Maven仓库二、Maven的安装2.1 下载Maven2.2 配置环境变量2.3 path下创建2.4 检验配置是否成功2.5 创建Java工程-`-DarchetypeCatalog=local`(非必须)三、Maven修改仓库目录路径四、Maven常用工具3.1 clean:请理3.2 compile:编译3.3 test:单元测试3.4 package:打包3.5 install:
2021-07-20 11:04:48
180
原创 MyBatis
文章目录MyBatis一、简介1. 什么是Mybatis2. 持久化3. 持久层4.为什么需要Mybatis5.Mybatis的优点二、初识MyBatis1. 搭建数据库(随便建一个)2. pom.xml导入核心包3. 创建xml文件4. 查看帮助文档书写5. 创建工具类(MybatisUtils)6. 创建一个User类7. 创建userDao接口8. 创建mapper.xml9. 测试类三、CRUD操作1. namespace2. select2.1 select标签:查询语句2.2 使用情景与方式2.
2021-07-03 16:58:31
490
原创 Word添加页码操作
文章目录Word添加页码操作举个栗子一、基础操作1. 确定从哪里开始是第一页2. 插入分隔符厚后,检查是否有第1节,第二节分隔(双击页脚,就能显示出来),如下3.取消链接到前一节4. 就在那也插入页码就可以生成页码了5. 双击页脚,按`Alt+F9`6. 在上图中的`/`后面按`Ctrl+F9`,会出现一对中括号,然后输入一个等号7. 在把后面的整体复制到里面8. 按'Alt+F9'恢复后,就成功了二、高级操作(自定义格式)1. 写个模板2. 引入编号3.完成,效果展示提示:这里对文章进行总结:例如:以
2021-06-14 21:57:36
1054
原创 行为型模式-11解释器模式
文章目录十一、解释器模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`十一、解释器模式1. 定义给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。2. 结构抽象表达式角色:定义解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。终结符表达式角色:是抽象表达式的子类,用来实现文法中与终结 符相关的操作,文法中的每一个终结符都有一个具体终结表达式与之相对应。非终结符表达式角色:也是抽
2021-05-30 18:04:51
178
原创 行为型模式-10备忘录模式
文章目录十、备忘录模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`十、备忘录模式1. 定义又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态, 以便以后当需要时能将该对象恢复到原先保存的状态。2. 结构发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据 的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(Memento)角色:负责存储发起人的内部状态,
2021-05-30 18:02:25
135
原创 行为型模式-09访问者模式
文章目录九、访问者模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`九、访问者模式1. 定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这 些元素的新的操作。2. 结构抽象访问者(Visitor)角色:定义了对每一个元素 (Element) 访问的行为,它的参数就是可 以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从 这点不难看出,访问者模式要求元素类的个数不能改
2021-05-30 17:58:59
97
原创 行为型模式-08迭代器模式
文章目录八、迭代器模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`八、迭代器模式1. 定义提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。2. 结构抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNex
2021-05-30 17:56:40
125
原创 行为型模式-07中介者模式
文章目录七、中介者模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`七、中介者模式1. 定义又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以 独立地改变它们之间的交互。2. 结构抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的 抽象方法。具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 List 来管理同事对 象,协调各个同事角色之间
2021-05-30 17:55:05
143
原创 行为型模式-06观察者模式
文章目录六、观察者模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`六、观察者模式1. 定义又被称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者 对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自 动更新自己。2. 结构抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每 个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。具体主题(具体被观察
2021-05-30 17:52:27
76
原创 行为型模式-05状态模式
文章目录五、状态模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`五、状态模式1. 定义对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变 时改变其行为。2. 结构环境(Context)角色:也称为上下文,它定义了客户程序需要的接口,维护一个当前状态,并 将与状态相关的操作委托给当前状态对象来处理。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。具体状态(Concre
2021-05-28 21:52:52
85
原创 行为型模式-04责任链模式
文章目录四、责任链模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`四、责任链模式1. 定义又名职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对 象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处 理它为止。2. 结构抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断
2021-05-28 21:51:24
76
原创 行为型模式-03命令模式
文章目录三、命令模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `使用场景`7. `JDK源码实例`三、命令模式1. 定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象 进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。2. 结构抽象命令类(Command)角色: 定义命令的接口,声明执行的方法。具体命令(Concrete Command)角色:具体的命令,实现命令接口;通常会持有接收者,并调 用接收
2021-05-28 21:50:14
103
原创 行为型模式-02策略模式
文章目录二、策略模式1. `定义`2. `结构`3.` 案例`4. `代码`5. `优缺点`6. `JDK源码`二、策略模式1. 定义该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用 算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分 割开来,并委派给不同的对象对这些算法进行管理。2. 结构抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有 的具体策略类所需的接口。具
2021-05-28 21:49:00
73
原创 行为型模式-01模板方法模式
文章目录一、模板方法模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优缺点`6. `适用场景`一、模板方法模式1. 定义定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情 况下重定义该算法的某些特定步骤。2. 结构抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基 本方法构成。具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级 逻辑的组成步
2021-05-28 21:47:31
90
原创 结构型模式-07享元模式
文章目录七、享元模式1. `定义`2. `结构`3. `案例`4. `代码`5. `优点`6. `缺点`7. `使用注意`8. `JDK源码(看源码,里面用到了享元模式)`七、享元模式1. 定义运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建 的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。2. 结构抽象享元角色:通常是一个接口或抽象类,在抽象享元类中声明了具体享元类公 共的方法,这些方法可以向外界提供享元对象的内部数据(内部状态),同
2021-05-25 15:00:22
196
1
原创 结构型模式-06组合模式
文章目录六、组合模式1. `定义`2. `结构`3. `案例`4. `代码`5. `使用场景`六、组合模式1. 定义又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对 象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。2. 结构抽象根节点(Component):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行 为和属性。树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节
2021-05-25 14:07:17
70
原创 结构型模式-05外观模式
文章目录五、外观模式1. `定义`2. `结构`3. `案例`4. `代码`5. `好处`6.`缺点`五、外观模式1. 定义又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问 的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降 低应用程序的复杂度,提高了程序的可维护性。2. 结构外观(Facade)角色:为多个子系统对外提供一个共同的接口。子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观
2021-05-25 14:04:04
81
原创 结构型模式-04桥接模式
文章目录四、桥接模式1. `定义`:2. `结构`3. `案例`4. `代码`5. `好处`6. `使用场景`四、桥接模式1. 定义:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实 现这两个可变维度的耦合度。2. 结构抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法, 并通过组合关系调用实现化角色中的业务方法。
2021-05-25 14:00:52
262
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅