自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 收藏
  • 关注

原创 分库分表的事务问题 - 怎么实现事务

保证单个事务完整性和数据最终一致性,不包含相同行的事务写入目标DB时可能乱序,可最大限度提升同步效率。事务并行(安全case)事务并行(不安全case1)trx4和trx2这两个源端mysql的事务,从binlog数据层面分析没什么关系,变更的是不同的行,但是业务逻辑上有先后顺序,业务预期trx4变更的数据先可见,trx2变更的数据后可见但是在目标端,可能被太极乱序回放,可能先可见trx2,后可见trx4(即便乱序回放,目标端数据和源端数据是保证一致的)事务并行(不安全case2)

2026-02-05 21:42:47 878

原创 Excel文件解析 - SAX startRow cell endRow 执行时机

Excel 文件结构:│ 第 1 行 ││ 第 2 行 │解析流程:第 1 行:↓startRow(0) ← 遇到第 1 行开始↓cell("A1", "...") ← 遇到 A1 单元格↓cell("B1", "...") ← 遇到 B1 单元格↓cell("C1", "...") ← 遇到 C1 单元格↓endRow(0) ← 遇到第 1 行结束↓第 2 行:↓startRow(1) ← 遇到第 2 行开始↓。

2026-02-05 15:47:28 443

原创 Excel文件解析 - SAX startRow cell endRow 执行顺序

标签新行开始初始化当前行数据结构cell遇到<c>标签单元格数据收集单元格值endRow遇到

2026-02-05 15:43:39 567

原创 MySQL磁盘碎片清理

对于大量的UPDATE,也会产生文件碎片化 , Innodb的最小物理存储分配单位是页(page),而UPDATE也可能导致页分裂(page split),频繁的页分裂,页会变得稀疏,并且被不规则的填充,所以最终数据会有碎片。在InnoDB中,删除一些行,这些行只是被标记为“已删除”,而不是真的从索引中物理删除了,因而空间也没有真的被释放回收。当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;

2026-02-05 13:41:01 171

原创 Excel文件解析 - SAX和DOM方式的区别

维度SAX 方式(推荐)DOM 方式(谨慎使用)内存占用⭐⭐⭐⭐⭐ 极低⭐ 极高处理大文件⭐⭐⭐⭐⭐ 优秀⭐ 容易 OOM读取速度⭐⭐⭐⭐⭐ 快⭐⭐⭐ 慢随机访问⭐ 不支持⭐⭐⭐⭐⭐ 支持代码复杂度⭐⭐⭐ 稍复杂⭐⭐⭐⭐⭐ 简单结论:如果你的场景是批量导入大 Excel 文件,一定要用第一种 SAX 方式。如果是小文件且需要随机访问,第二种方式也可以考虑。

2026-02-05 11:10:32 348

原创 Excel文件解析 - 什么是SAX和DOM

Excel文件本质是XML文件,对应两种解析方式很好的问题!让我用通俗易懂的方式解释 SAX 和 DOM 这两种 XML 解析模式。

2026-02-05 11:09:43 904

原创 什么是MalformedStreamException,和WebKitFormBoundary有什么关系

这个错误的核心是。

2026-02-01 14:04:22 872

原创 ConcurrentHashMap的Value为什么不能为空

确保所有操作都是明确且线程安全的。这就像快递柜不允许空格子一样——空格子会让系统无法判断“包裹是否存在”,而禁止空格子后,所有状态都是清晰的。为什么会有这个限制?我们可以用一个通俗的例子来解释。,每个格子(键值对)可以存放一个包裹(

2026-01-29 17:08:58 579

原创 键盘按键自定义映射软件、通过命令运行程序

PowerToys。

2026-01-25 22:09:14 17

原创 开源鼠标手势软件

poerin/Stroke: 鼠标手势(Mouse Gestures)https://github.com/poerin/Stroke

2026-01-25 21:45:14 21

原创 线程池阻塞队列选择ArrayBlockingQueue与LinkedBlockingQueue区别

注:这个队列需要注意的是,虽然通常称其为一个无界队列,但是可以人为指定队列大小,而且由于其用于记录队列大小的参数是int类型字段,所以通常意义上的无界其实就是队列长度为 Integer.MAX_VALUE,且在不指定队列大小的情况下也会默认队列大小为 Integer.MAX_VALUE。SynchronousQueue没有容量,是无缓冲等待队列,是一个不存储元素的阻塞队列,会直接将任务交给消费者,必须等队列中的添加元素被消费后才能继续添加新的元素。例如,当队列满时,插入线程阻塞,但删除线程仍可继续执行;

2026-01-22 11:07:28 297

原创 怎么理解 HttpServletRequest @Autowired注入

在你的代码中,@Autowired(required = false) private HttpServletRequest req。如果你的应用在非 Web 环境(如单元测试、批处理任务)中调用了这个异常处理器,,但实际上在正常的 Web 请求处理中,它永远不应该为。但这种情况在正常的 Web 应用中几乎不会发生。,甚至可能带来潜在问题。Spring 允许直接在方法参数中获取。

2026-01-21 16:57:10 264

原创 为什么要加@ResponseBody

而不是尝试解析为视图名称(如 Thymeleaf/JSP)。除了在URL接口上加之外,还有比如在拦截器上加。注解是为了明确告诉 Spring。是必要的,除非你明确使用了。

2026-01-21 16:49:28 208

原创 @ModelAttribute vs @RequestBody

中的一个核心注解,主要用于在控制器(希望这个解释能帮到你!

2026-01-21 16:20:24 184

原创 @ConditionalOnWebApplication 作用

ServletConfiguration 类使用了 @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) 注解,这意味着其中的 myServletBean 方法只有在当前应用程序是Servlet类型的Web应用程序时才会创建。Web特定配置:当应用程序需要根据是否是Web应用程序来加载特定的配置或bean时,可以使用@ConditionalOnWebApplication来进行条件化配置。

2026-01-21 14:59:12 55 1

原创 Java 判断两个类是否有继承关系

指定的类(或接口),即判断两者之间是否存在。方法用于检查当前类(或接口)是否可以。希望这个解释能帮到你!

2026-01-21 14:52:46 299

原创 @PostMapping produces 、consumes 参数

的默认值取决于上下文(如类级别注解或方法级别注解的配置),但。→ 可以,但建议明确写出,避免歧义。(取决于 Spring 配置)。在 Spring 的。

2026-01-21 14:31:41 469 1

原创 通俗易懂地讲解 NestedServletException

假设你写了一个文件上传接口,用户上传了一个非法的文件(比如格式不对),这时会抛出。),贴上标签(额外信息),然后运输。收件人(开发者)可以通过拆包裹(就像你寄快递时,快递公司会把你的物品(原始异常)装进一个标准包裹(,同时保留原始异常的完整信息(通过。直接抛出原始异常(如。)找到你最初寄的东西。

2026-01-21 14:30:35 381

原创 理解 Java21 虚拟线程

https://segmentfault.com/a/1190000046092316https://www.hikunpeng.com/forum/thread-0295203958939016236-1-1.htmlhttps://javaguide.cn/java/concurrent/virtual-thread.html#%E8%99%9A%E6%8B%9F%E7%BA%BF%E7%A8%8B%E5%92%8C%E5%B9%B3%E5%8F%B0%E7%BA%BF%E7%A8%8B%E6%80

2026-01-21 14:03:38 24

原创 Gradle疑难杂症 Execution failed for task ‘:xxxx-api:test‘.> No tests found for given includes:

Execution failed for task ':xxxx-api:test'.> No tests found for given includes:检查:

2026-01-21 14:03:19 15

原创 Dubbo 异常处理机制,调用方会感知提供方的异常吗

核心逻辑 com.alibaba.dubbo.rpc.filter.ExceptionFilter。

2026-01-14 17:06:09 41

原创 数据库读写分离和事务的关系

数据库是读写分离架构,事务中的读操作没有强制走主库,这个时候是不是会有读延迟,读的操作比写操作慢,导致没有及时读到其他事务写的数据。策略运作,确保事务的原子性和一致性。在读写操作处于同一事务时,读写分离通过。

2026-01-13 14:13:29 618

原创 通俗易懂理解数据库读写分离

就像你既当厨师又当服务员,忙不过来时,请一个服务员专门端菜,你专心炒菜,餐厅效率就提高了!收银台既要接单,又要喊号取餐,顾客排长队,收银员忙不过来,甚至可能下错单(数据混乱)。分配到不同的数据库实例上执行,以提升系统的整体性能、可扩展性和可用性。把“接单”和“取餐”分开,让收银台专注处理订单,取餐台专注服务顾客,这样效率更高!读写分离是数据库架构优化的重要手段,但需根据业务特点权衡。是一种常见的数据库架构优化策略,其核心思想是将。(性能优先),但对关键操作(比如支付后查余额)会。

2026-01-13 14:08:06 298

原创 MySQL EXPLAIN Impossible WHERE noticed after reading const tables

这两个原因是类似的,都是EXPLAIN的时候,WHERE 条件预先查询就没有任何数据能命中,要求 WHERE 能实际查到数据。

2026-01-11 22:41:56 294

原创 MySQL 查询索引最左前缀原则,如果是(a,b)的联合索引,WHERE b = ? AND a = ?会走索引吗

但是MySQL有优化器,会针对 WHERE b =?这种特定情况进行优化,使其走联合索引(a,b)从SQL原本的理解上,不会走联合索引。在 MySQL 中,

2026-01-11 22:40:38 378

原创 Collections.singletonList(null) 会当作集合里有元素吗

会,而且size = 1。

2026-01-11 22:36:40 95

原创 数据库新增字段索引,耗时很长正常吗

如果需要更具体的方案(如针对 MySQL/PostgreSQL/Oracle),可以提供数据库类型和表规模,我会进一步分析!正常, 数据量越大,新增索引越大,线上一个大表简单新增 created_at 字段索引耗时可能会有3~4个小时。新增索引也是一种DDL。

2026-01-11 17:52:55 820

原创 ES KQL 支持词频统计吗

不支持,需要写 lucene 查询DSL在中,的功能,因为 KQL 的设计初衷是提供一种简单、直观的查询语法,而不是支持复杂的词频统计或脚本计算。ANDORNOT?age: >30但如果需要在 Kibana 中实现在或的下,可以使用scriptkeywordtextsplit(' ')如果,建议在integerrangerange。

2026-01-11 14:50:48 576

原创 MySQL affectedRows 计算逻辑

是 MySQL 的历史行为,可通过配置优化。该特性在数据完整性、性能和自增主键管理上优于。这样,即使执行 UPSERT 时返回。的情况,这通常与 MySQL 的。对于upsert操作计算特殊一点。,而非先删除后插入。在 MySQL 中执行。,也能正确处理业务逻辑。

2026-01-08 17:06:48 667

原创 CSDN Markdown编辑教程

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2026-01-08 17:04:01 900

原创 怎么理解 Mybatis Mapper的返回值

在 MyBatis 中,这个。)最大可能返回的值取决于。SQL 的返回值(即。

2026-01-08 16:58:15 281 1

原创 Apache POI XSSFWorkbook 和 SXSSFWorkbook 的区别

如果需要读取大 Excel 文件并处理,建议直接使用 XSSFReader。读取时可能无法访问所有行(因为部分行已被写入临时文件),因此。如果项目允许引入第三方库,EasyExcel。通过以上优化,可彻底解决。或 EasyExcel。导致的 OOM 问题!

2026-01-07 17:53:18 476

原创 Apache POI XSSFWorkbook 写入Excel文件的潜在风险

否则必然面临 OOM 或性能崩溃问题。可能会遇到以下问题,尤其是在处理。

2026-01-07 17:52:36 353

原创 MySQL 执行计划中 filtered = 100 是什么意思

filtered 表示能过滤多少数据。执行计划中,filtered。

2026-01-07 15:46:16 269

原创 Collections.synchronizedList 是线程安全的吗

是线程安全的List。

2026-01-06 14:24:16 197

原创 ExecutorService 和 ThreadPoolExecutor 关系

是 Java 并发编程中紧密相关的两个类,前者是接口,后者是实现类。创建的线程池可能隐藏了关键配置(如无界队列导致 OOM),生产环境建议直接使用。当任务队列满且线程数达到。

2026-01-05 14:56:38 883

原创 浏览器CSR和SSR渲染区别

CSR(客户端渲染,Client-Side Rendering)和 SSR(服务端渲染,Server-Side Rendering)是现代Web应用中两种主流的页面渲染方式,它们在数据加载、性能、SEO等方面有显著区别。可以通过cava_csr=true或者__csr=1来触发CSR渲染。现代框架(如Next.js、Nuxt.js)支持。可以在F12中用来查看由前端请求的接口。

2025-12-25 20:17:24 600

原创 Dubbo 声明 provider 参数详解

这个 Dubbo 配置片段定义了。的相关参数,主要涉及。

2025-12-24 17:45:28 524

原创 Dubbo快速入门

Dubbo配置的方式有两种:https://zhuanlan.zhihu.com/p/997617303

2025-12-24 17:40:39 250

原创 Dubbo路由规则的实现

以便在分布式环境下实现数据分片(Sharding)或请求路由。,然后根据分片规则(如哈希取模)决定请求路由到哪个数据库节点。这样,相同租户的请求会被路由到同一个服务节点,确保数据隔离。如果默认的分片路由不满足需求,可以自定义。(Dubbo 的增强版)中,这样,Dubbox 在调用。是一个非常有用的工具。

2025-12-24 17:38:20 431

空空如也

空空如也

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

TA关注的人

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