自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 资源 (7)
  • 收藏
  • 关注

原创 FastThreadLocal 简介

是 Netty 提供的一个高性能线程本地变量实现,它是 Java 标准库的优化版本。

2025-05-31 11:41:43 127

原创 Spring状态机实战详解:从零构建订单状态管理系统

在现代企业级应用开发中,状态管理是一个常见且重要的需求。无论是订单处理、工作流管理,还是业务流程控制,都需要一个可靠的状态机来管理复杂的状态转换逻辑。Spring State Machine作为Spring生态系统中的一员,为我们提供了强大而灵活的状态机解决方案。本文将通过一个完整的订单状态管理系统,深入解析Spring状态机的核心概念、实现原理和最佳实践。我们将从项目搭建开始,逐步实现一个功能完整的状态机应用,并详细分析每个组件的作用和实现细节。我们要实现一个电商订单的状态管理系统,订单的生命周期包含以下

2025-05-30 15:04:29 681

原创 Spring状态机监听器

项目复杂度:复杂项目推荐适配器方式团队偏好:声明式编程偏好选择注解方式监听需求:全面监听选适配器,精确监听选注解维护性要求:长期维护的项目推荐适配器方式在实际项目中,建议根据具体需求选择合适的方式,甚至可以混合使用以发挥各自的优势。

2025-05-30 14:54:54 575

原创 QMQ顺序消息的实现机制

功能模块核心类源码位置主要职责路由分组消息路由到固定连接序列号管理全局序列号分配顺序执行保证事件顺序处理消息存储MessageLog顺序写入存储内存管理内存中消息顺序管理消费管理消费序列号管理消费队列顺序消费控制。

2025-05-28 22:57:24 314

原创 Dynamic-tp配置中心动态修改线程池参数的源码实现

dynamic-tp通过。

2025-05-28 21:02:14 675

原创 DynamicTp动态线程池Demo

一个完整的Java代码示例,展示如何配置和使用DynamicTp动态线程池。

2025-05-28 20:23:40 244

原创 QMQ客户端发送事务消息demo

如果需要进一步调整或扩展示例代码,请告诉我!

2025-05-28 20:05:51 130

原创 QMQ事务消息的实现机制

QMQ的事务消息机制通过和三个核心类实现。这种设计确保了消息的发送与业务操作的一致性,适用于高吞吐量和高可靠性的分布式系统。

2025-05-28 20:02:40 409

原创 完整的QMQ有序消息发送示例

【代码】完整的QMQ有序消息发送示例。

2025-05-28 19:54:18 136

原创 QMQ有序消息实现机制

已分析QMQ有序消息的实现机制,确认业务ID(businessId)通过BaseMessage的attrs动态存储,序列号(sequenceId)由MessageTracker动态生成并设置。关键实现包括路由一致性、顺序写入和事务支持。该机制通过业务ID路由和序列号生成,确保了消息的顺序性和可靠性。

2025-05-28 19:51:08 291

原创 QMQ有序消息的实现机制深度解析

魔数(1B)| 长度(4B)| 序列号(8B)| 业务ID(8B)|| 消息体 |@Override使用变长编码压缩数字字段支持snappy压缩消息体。

2025-05-28 19:41:49 570

原创 QMQ有序消息的实现机制深度解析

/ 全局递增序列号。| 消息大小 | 并发连接 | 吞吐量(msg/s) | P99延迟(ms) |- 路由决策:Hash(businessId) % queueCount。| 魔数(1B)| 长度(4B)| 序列号(8B)| 业务ID(8B)|- 配置:worker.thread.count=CPU核数*2。1. 路由分组:相同业务ID的消息始终路由到同一队列。| 事务ID | 状态 | 消息数 | 创建时间 |

2025-05-28 19:24:19 867

原创 短链核心实现机制

从Java开发视角深入分析短链的实现机制,需结合其业务特性和高并发场景下的技术选型。以下针对类似。

2025-05-20 12:12:53 853

原创 美团Leaf、百度UidGenerator及原生Snowflake算法对比分析

以上方案均已在生产环境验证,开发者可根据业务规模(预估QPS)、基础设施(是否具备ZK/Redis)及安全需求(是否允许ID趋势递增)综合选择。优化时间分配:采用相对时间(当前时间-固定起始时间),减少时间戳占用位数,扩展机器ID至22位。当当前Buffer使用率达20%时触发预加载,确保无间隔ID供应。通过调整比特分配,可定制ID结构(如延长机器ID支持4百万节点)通过异步线程预加载下个号段,避免高并发下请求阻塞。通过号段预加载和本地缓存,显著降低数据库压力。

2025-05-20 12:07:54 605

原创 深度解析:Java选择UTF-16的底层机制与BMP/代理对技术逻辑

Java选择UTF-16是历史局限性与技术权衡的综合结果。BMP的定长特性奠定了高效字符串操作的基础,而代理对机制以可控的复杂度代价实现了Unicode扩展。尽管UTF-8在存储和传输中更具优势,但UTF-16在内存计算密集场景(如日志处理、文本编辑器)仍不可替代。开发者需根据场景选择编码策略,并在处理补充字符时警惕代理对的隐形复杂性。

2025-05-15 12:08:58 710

原创 UTF-16 与UTF-8的区别? 为什么字段串长度不使用UTF-8?

​​字符串长度本质​​:Java的length()反映UTF-16代码单元数,与物理字节长度无关​​编码选择逻辑​​:UTF-16的内存操作效率与历史兼容性使其成为Java的默认选择,而UTF-8在存储和传输中占优​​实践建议​​:​​内存处理​​:依赖UTF-16的高效随机访问​​持久化存储​​:使用UTF-8以兼容多语言环境​​编码转换​​:显式声明编码避免隐式转换风险通过理解编码机制与性能权衡,开发者可更高效地设计跨语言、跨平台的文本处理系统。

2025-05-15 11:55:40 518

原创 深度分析:内存与磁盘的容量计算差异对Java代码的影响

​​内存操作严格使用1024进制​​的返回值基于二进制标准​​磁盘交互优先使用1000进制​​返回的字节数是物理存储的真实值​​混合场景显式声明单位​​变量命名增加单位后缀(如vs​​关键位置添加单位注释​​// 内存缓冲区(二进制MB)// 磁盘限制(十进制MB)通过理解内存与磁盘的容量计算差异,开发者可避免资源计算错误导致的系统性风险。

2025-05-15 11:47:42 595

原创 Java大日志切割实战:策略、陷阱与最佳实践(2025年5月更新)

Logback UTF-8编码配置。: Logback时间+大小切割策略。: Java大文件切割实现。​:使用Logback的。: 递归解决中文乱码方案。​(基于线程池优化): 安全字节截断算法。

2025-05-15 11:40:25 459

原创 深度分析:不同编码导致字节长度差异的本质原因

​​优先使用 UTF-8​​:确保多语言兼容性,避免数据丢失。​​慎用默认编码​​:显式指定编码(如),防止环境差异导致行为不一致。​​日志系统设计​​:若需压缩存储,可对非关键字段使用单字节编码,但需权衡可读性损失。

2025-05-15 11:33:47 707

原创 深度解析:log.length() 与 getBytes().length 的本质区别

​​length()是逻辑视角​​:聚焦字符结构,与编码无关。​​是物理视角​​:依赖编码规则,反映实际字节占用。​​数值相同 ≠ 意义相同​​:用户案例中的巧合数值掩盖了底层机制的本质差异,需根据场景谨慎选择。

2025-05-15 11:31:12 581

原创 Linux的less命令中“/“和“?“查找的区别

在Linux的less命令中,"/"和"?

2025-05-14 17:47:39 241

原创 Spring 的 @Scheduled 注解是否支持失败重试

虽然@Scheduled本身不支持失败重试,但通过Spring Retry 库手动重试逻辑或异步任务配置可以灵活实现该功能。实际开发中推荐优先使用@Retryable注解,其配置简洁且支持退避策略,适用于大多数场景。

2025-05-12 16:15:14 673

原创 Galera多主集群的实现原理与机制

所有节点需存储全量数据,不支持水平分片(Sharding)。若需分片,需结合其他技术(如Vitess)。负责节点间通信,使用消息广播(如4567端口)和状态传输(4444/4568端口)。:使用乐观锁和事务ID(UUID + 序列号)检测冲突,最终一致性。Write-Set发送到其他节点,验证冲突(基于事务ID和行锁)。事务在本地执行后,将变更集(Write-Set)广播到其他节点。其他节点验证并应用Write-Set,实现同步复制。根据业务规则(如用户ID哈希)将请求定向到特定节点。

2025-05-08 11:46:08 386

原创 腾讯云TD-SQL(MySQL内核版)与原生MySQL/MariaDB在Kubernetes环境中的深度对比分析

TD-SQL现已支持「冷热数据分层」,可将历史数据自动归档至COS,进一步降低存储成本达60%

2025-05-07 20:07:37 420

原创 腾讯Kona-8、阿里Dragonwell和华为毕升JDK的对比

注:数据截至2025年5月,各版本具体表现可能随更新有所变化。建议根据实际业务场景进行基准测试验证。

2025-05-07 16:29:11 253

原创 mac上安装maven 3.6.3

会提示找不到该版本。这是因为Homebrew的版本策略发生了变化,现在只维护Maven的最新稳定版本。这将安装当前最新的Maven版本(如4.x)。大多数情况下,新版本都能良好兼容旧项目。根据您提供的错误信息,Homebrew已经移除了对Maven 3.6.x版本的单独支持。然后通过jenv来管理不同版本的Maven和JDK。最新Homebrew安装Maven的现状。方案1:安装最新版Maven。方案2:手动安装特定版本。

2025-05-07 16:07:22 328

原创 日志中的 requestId/traceId是如何传递的?SLF4J的MDC(Mapped Diagnostic Context)机制

用户希望详细了解SLF4J的MDC(Mapped Diagnostic Context)机制。MDC是SLF4J提供的一种用于在多线程环境中传递上下文信息(如requestid)的功能。requestid%X{key}MDCMDC接下来,我将详细整理这些内容并呈现给用户。

2025-05-07 15:39:06 508

原创 mysql 防止库存超卖,有哪些方案?

在电商等高并发场景下,防止库存超卖是一个常见问题。

2025-05-06 17:19:29 645

原创 MyBatis的2038年问题的讨论

建议优先采用升级框架版本+数据库类型调整的组合方案,在最小改动成本下获得最大兼容性提升。对于无法立即升级的系统,可通过强制使用字符串时间格式作为临时过渡方案。

2025-04-23 11:49:44 337

原创 Idea配置中的“Transparent native-to-ascii conversion”选项的作用

现代开发环境的默认配置(如UTF-8)和程序内部处理机制,使得两种设置均能支持中文的国际化展示。无论是否勾选,中文正常显示的核心在于。

2025-04-22 12:15:41 231

原创 synchronized锁升级的实现逻辑及代码位置

【代码】synchronized锁升级的实现逻辑及代码位置。

2025-04-16 11:36:56 143

原创 JVM 内存溢出(OOM)处理参数汇总

以下是关于 JVM的中文详解,重点区分。

2025-04-15 11:05:11 335

原创 kill: %p: no such job 解决方案

【代码】-XX:OnOutOfMemoryError 参数传递规则。

2025-04-15 10:57:03 179

转载 UUID.randomUUID()简单介绍-面试题

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需...

2018-11-05 09:59:00 3462

原创 redis分布式锁实现-面试题

 1 加锁(key自定义,value为uuid)Boolean setNX(byte[] key, byte[] value);2 设置过期时间(key,timeout,unit)public Boolean expire(K key, final long timeout, final TimeUnit unit) { final byte[] rawKey = rawK...

2018-11-05 09:52:54 10642

原创 京东-面试题目-02

abstract class CCALSS { public int a;// 可以包含非抽象属性 //public abstract int b; // 1 编译错误,字段不可用abstrct修饰 public void c(){} // 可以包含非抽象方法 //public abstract void d(){}//2 编译错误,抽象方法不可以有body ...

2018-11-04 23:39:43 387

原创 京东-面试题目-01

import java.util.HashMap;class A { public A(){ System.out.println("a construction"); } { System.out.println("in a class"); } static { System.out.print...

2018-11-04 23:30:05 533

转载 Linux面试题汇总-3

1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的用户环境.  退出当前shell,输入:exit2.useradd netseek 添加一个netseek用户  passwd netseek  给netseek这个用户设置密码.  (/etc/passwd /et...

2018-10-31 22:13:46 284

转载 Linux面试题汇总-2

一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点来标识.4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块.5. 链接分为: 硬链接 和 符号链接 .6. 超级块包含了i节点表 和 空闲块表等重要的文件系统信息....

2018-10-31 21:45:57 357

转载 Linux面试题汇总-1

1. cron 后台常驻程序 (daemon) 用于:  A. 负责文件在网络中的共享 B. 管理打印子系统C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ?A. 串行口B. 硬盘 C. 虚拟终端D. 打印机 3. 下面哪个Linux命令可以一次显示一...

2018-10-31 20:53:30 527

日历控件dateWidget.js

dateWidget.js日历控件

2014-04-30

FileTool文件添加的vc6.0的插件

FileTool文件添加的vc6.0的插件

2013-09-28

VC++视频采集资料

VC++视频采集资料,详细文档见http://blog.youkuaiyun.com/ma451152002/article/details/12138343

2013-09-28

疯狂java讲义(第2版)随书光盘

疯狂java讲义(第2版)随书光盘,李刚编著,电子工业出版社

2013-07-04

Java7学习笔记--林信良(代码)

Java 学习笔记 林信良 清华大学出版社 代码 labs 文件夹:提供各章节练习使用的NetBeans项目。 samples文件夹:提供各章节相关的NetBeans范例项目。

2013-06-10

简单学生选课系统(MFC+sqlserver2005)

简单学生选课系统(MFC+sqlserver2005),ado数据库连接技术,vc6.0的MFC工程项目,sqlserver2005数据库。。。

2012-12-15

《算法竞赛入门经典》各章习题答案

《算法竞赛入门经典》各章习题答案。。。。刘汝佳编著,清华大学出版社。。。

2012-11-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除