- 博客(24)
- 问答 (1)
- 收藏
- 关注
原创 线程池队列深度应用指南:不依赖消息队列的任务治理方案
流量削峰:利用队列缓冲突发流量资源隔离:不同业务使用独立线程池弹性伸缩:动态调整队列和线程参数优雅降级:智能拒绝策略保障核心业务最终实现指标应满足:•队列饱和度< 80%•任务平均等待时间< 100ms•拒绝率< 0.1%•CPU利用率60%-80%建议结合APM工具(如SkyWalking、Prometheus)建立完整的监控体系,并通过定期压力测试验证系统承载能力。
2025-04-01 08:31:36
336
原创 深入解析ConcurrentHashMap:高并发场景下的哈希表艺术
ConcurrentHashMap的演化历程集中体现了高并发场景下的设计智慧:在线程安全与性能之间寻找最佳平衡点,在代码复杂度与功能完备性之间保持精妙折中。开发者需深入理解其sizeCtl控制变量、transfer扩容算法等核心机制,结合jstat -gc和JFR进行性能分析,才能真正发挥其并发威力。在Java21引入虚拟线程(Loom)的背景下,CHM将继续作为异步编程的基石组件,持续赋能新一代高并发系统架构。
2025-03-31 08:30:06
615
原创 Java性能加速器:JIT编译器揭秘
当你写下在后台默默观察程序行为识别出最需要优化的代码段施展方法内联、循环展开等"魔法"将字节码转化为高度优化的机器指令理解JIT的思维模式,就像掌握与这个隐形助手的沟通密码。它虽然不会说话,但通过合理的代码设计,我们就能与这个"性能魔法师"达成完美合作,让Java程序跑得比C++更快的奇迹成为可能。
2025-03-21 08:47:24
523
原创 深入理解JVM内存屏障
内存屏障是Java并发编程的“幕后英雄”。正确使用volatile等关键字;避免因内存可见性和指令重排序导致的隐蔽Bug;在高性能场景下做出合理取舍。终极建议:在多数业务场景中,优先使用包中的线程安全工具类,而非手动管理内存屏障。
2025-03-20 08:35:49
783
原创 深入理解 volatile 关键字的局限性
volatile关键字在多线程编程中是一个强大的工具,但它不是万能的。理解volatile的工作原理和局限性,有助于在合适的场景下正确地使用它,从而编写出高效且线程安全的代码。在高并发和复杂的同步需求下,合理结合其他同步机制和并发工具类,可以更好地保障应用程序的稳定性和性能。通过深入理解volatile的局限性,开发者可以更加全面地掌握 Java 的线程安全机制,避免在多线程编程中引入潜在的错误,提高代码的质量和可靠性。
2025-03-17 08:49:09
955
原创 自旋锁与自适应锁:高并发场景下的锁优化艺术
自旋锁与自适应锁的演进史揭示了一个真理:在高并发领域,没有银弹,只有持续优化的艺术。正如并发大师Doug Lea所说:“好的并发设计,应该让正确性显而易见,让性能优化水到渠成。我们不是在和锁战斗,而是在与自己的认知局限博弈。—— Herb Sutter(C++标准委员会主席)
2025-03-14 08:34:43
628
原创 深入解析ZGC的染色指针:JVM内存管理的革命性创新
染色指针技术重新定义了内存管理的可能性,其创新思维值得每个开发者深思。当我们在指针的64位空间中刻下状态信息时,实际上是在物理定律的缝隙中开辟了新的可能性空间。正如Java语言之父James Gosling所说:“真正的创新,往往来自对常识的勇敢突破。
2025-03-13 08:40:28
614
原创 永久代到本地内存的革新
方法区是《Java虚拟机规范》中定义的逻辑概念,用于存储:• 类的元数据(类名、方法、字段、接口等)• 运行时常量池(Runtime Constant Pool)• 静态变量(JDK 7后部分移至堆)• JIT编译后的代码缓存(CodeCache)
2025-03-12 08:49:39
453
原创 Java泛型:戴着镣铐的革新者
Java泛型就像达尔文笔下的进化产物——不是精心设计的完美造物,而是环境压力下的适应性突变。它的每个缺陷都是工程智慧的勋章,记录着如何在十亿行代码的生态系统中实现渐进式革新。当我们在Java 21中写下时,应该听见历史深处的回响——那是无数架构师在理想与现实之间的智慧碰撞,是软件工程史上最动人的妥协艺术。```
2025-03-11 09:55:41
580
原创 当链表成环时,如何找到那个起点?
这个算法展现了计算机科学中抽象建模的力量——将链表问题转化为数学方程,用简单的指针操作解决复杂问题。理解背后的数学原理,比记住代码更重要。这正是链表环检测的核心原理。我们把跑道换成链表,用程序员的方式破解这个谜题。
2025-02-23 16:57:16
329
原创 分派机制:静态分派、动态分派,单分派与多分派
方法分派(Method Dispatch)是确定具体执行哪个方法体的过程,就像快递分拣中心根据地址信息决定包裹路线。调用时,直接绑定到0x0012A地址,这个过程就像快递分拣员只看面单信息,不拆箱检查实际内容。这个过程就像咖啡师拿到咖啡豆后,先看豆子品种(实际类型),再翻到配方手册对应页数执行制作流程。JIT编译器在发现某个类没有子类时,可以直接静态绑定方法。当JVM能确定实际类型时,将虚方法调用转为静态调用。:父类定义骨架,子类动态分派具体实现。:通过接口动态分派不同算法。
2025-02-23 16:37:33
732
原创 JMM内存屏障
StoreLoad Barriers是一个“全能型”的平展个,他同事具有其他3个屏障的效果。现代的处理器大多支持该内存屏障(其他类型的平展更不一定被所有处理器支持)。执行该屏障开销会很昂贵,因为当前处理器通常要把写缓冲区中的数据全部刷新到内存中(Buffer Fully Flush)。为了保障内存可见性,Java编译器在生成指令序列的适当位置会插入内存屏障指令来禁止特定类型的处理器重排序。JMM把内存屏障指令分为四类.
2023-02-18 15:06:39
280
原创 java.lang.NoSuchMethodError错误
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-05-30 08:45:42
218
原创 一个正整数划分成3个互不相同的素数之和,如果可以就输出这3个素数(质数),否则输出错误信息
寻找一个正整数划分成3个互不相同的素数之和,如果可以就输出这3个素数(质数),否则输出错误信息。第一个循环中是找到说有的质数第二个三层循环是将三个数之和能等于输入的数的合找到 public static void main(String[] args) { int index = 5; int filg = 0; ArrayList<Integer> sum = new ArrayList<Integer>();
2021-11-22 19:30:29
689
转载 一年Java开发面经
一年Java开发面经一年开发经验在现在面试过程中一般会问到一些SQL、缓存、集合、分布式的一些相关问题。1.SQL优化sql优化我认为主要是两个点,一个是创建索引另外一个就是如何使用索引。我们可以带着这两个问题去一下这个链接去看小码张:sql优化方式2.ridex缓存Ridex这里主要是涉及到击穿,穿透,雪崩的问题,这里的问题实际上有多种解决方案;haoxin963:缓存三大问题解决方案还有一种是上文中没有提到的在进入到缓存前添加“布隆过滤器”这也是一个有效的解决方案;3.Java集合
2021-11-18 19:36:12
263
原创 Oracle版本特性更新时间线
Oracle四种版本说明:1,**database.zip是oracle数据库 服务端 软件的安装包,如果你要创建一个数据库,请下载这个版本2,**client.zip是oracle数据库 客户端 软件的安装包,如果你不需要创建数据库,只是用来操作远程电脑上的数据库时,请下载这个版本3,**gateways.ziporacle透明网关,如果你要链接其他数据库,请下载这个软件包4,**clusterware.ziporacle集群软件,如果你要做RAC,请下载这个软件包Oracle更新时间线
2021-10-17 13:58:33
537
原创 SpringMVC处理流程图文详解
一、SpringMVC处理流程二、工作流程1.用户发送请求到前端控制器DispatcherServlet。2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回 给DispatcherServlet。4.DispatcherServlet调用HandlerAdapter处理器适配器。5.HandlerAdapter经过适配
2020-07-29 14:16:49
683
原创 1251-Client does not support authentication protocol requested by server;解决
Mysql 8.0的版本,装好之后Navicat远程连接就一直报错1251如示:1251-Client does not support authentication protocol requested by server;打开mysql命令界面如图输入后即可正常连接;(命令后分号切记)ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql...
2020-02-14 10:39:02
517
原创 求最大公约数递归转非递归
求最大公约数递归转非递归#include using namespace std;typedef struct RecordType{int m;int n;int h;int addr;}RecordType;const int StackMaxSize=20;typedef struct Stack{RecordType s[StackMaxSize];int top;...
2020-01-11 12:06:40
289
原创 贪心法:区间完全覆盖问题
问题:区间完全覆盖问题问题描述:给定一个长度为m的区间,再给出n个区间的起点和终点,求最少使用多少个区间可以将整个区间完全覆盖。方法:• 先将n个区间按照起点进行递增排序。• 令s表示已经覆盖到的区域。再剩下的区间中找出所有左端点小于等于当前已经覆盖到的区域s并且右端点大于等于s的区间,取右端点最大的区间加入,直到已经覆盖全部的区域。举例:m为10N = 7:[1,5]、[1,6]、...
2020-01-11 12:02:05
1218
原创 linux搭建FTP服务器
搭建FTP服务器,进行公共文档的下载;另外还可以使用自己的账户登录FTP服务器,进行个人文档的管理。启动服务查询本机ip通过本机ip匿名访问ftp服务(匿名访问可以使用ftp用户名或者anonymous密码为空)使匿名用户 FTP 对该目录是否有写入权限开放匿名用户配置,并启动 vsftpd 服务配置vim /etc/vsftpd/vsftpd.conf文件使得匿...
2019-10-17 19:59:24
328
原创 公司内部搭建DHCP和DNS服务器
在公司内部搭建DHCP和DNS服务器,并使用公司内部的DNS服务器完成内部主机名以及公司网站域名的解析;检查安装服务命令在/etc/dhcp/dhcpd.conf 下默认只有注释语句,需要参考下模板文件进入/usr/share/doc/dhcp*/dhcpd.conf.example中查找配置文件拷贝配置文件覆盖源目录/etc/dhcp/dhcpd.conf文件修改配置文...
2019-10-17 19:55:04
1958
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人