自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1005)
  • 资源 (9)
  • 收藏
  • 关注

原创 JVM专题

从JDK源码级别彻底剖析JVM类加载机制

2022-02-01 16:47:01 450

原创 MySQL学习系列

系列文章目录MySQL 的分支、变种与替代

2021-12-31 22:51:06 492

原创 gradle构建工具学习系列

系列文章目录

2021-12-18 12:05:23 554

原创 并发编程系列

系列文章目录并发编程之深入理解JMM&并发三大特性并发编程之深入理解Java线程

2021-11-28 16:07:26 419

原创 MyBatis源码学习系列文章目录

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合...

2021-04-24 21:44:25 297

原创 腾讯课堂某培训机构Spring源码问题集锦

系列文章目录注解方式与xml方式注册问题

2021-04-17 11:12:25 380

原创 MyBatis工作流程-与Spring整合

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合文章目录系列文章目录 前言与MyBatis相关的Beanbean实例化的流程1. Sql

2020-12-19 16:12:11 276 1

原创 兼容Oracle与MySQL的一些事

文章目录前言一、字段类型差异二、函数差异 1、几种兼容方案a. 利用Mybatis的特性b. 是否存在相同的函数c. 自定义同名函数三、语法差异四、锁的差异总结前言由于公司目前主要使用的数据库为Oracle,然后部分兼容MySQL,后期会考虑全部支持Oracle和MySQL。由于二者的各种差异,我们必须有一套可行的方案减少工作量。在兼容Oracle与MySQL的那些事中我们已经仔细讨论过在数据层对多数据库的支持了,接下来的目标就是结合这种支持同时考虑其他手段达到目标了。本文从以下几点来谈一下对兼容考

2020-11-09 10:56:58 2115 7

原创 Java实现多Cron定时任务调度

build();:你实现的Job接口类;:给这个任务起个唯一标识(名称 + 组名);注意:这里只创建一个JobDetail,代表“任务本身”,不包含调度时间。📌JobDetail是任务的“蓝图”,可以被多个 Trigger 引用。", // 每20秒一次(全天)", // 每天19:55:00、19:55:02...19:55:58两个合法的Quartz cron 表达式(6位,含秒,结尾用?“一个任务逻辑(Job),多个调度规则(Trigger)”通过 Quartz 的方法,

2026-01-19 20:03:21 646

原创 货币型VS净值型:收益风控认知全解析

货币型资产与净值型资产在上存在本质差异。

2026-01-15 19:27:08 293

原创 金融资产数据库表结构详解

特点说明高度泛化一张表容纳债券、基金、非标、ABS、资管计划等监管驱动包含 SPPI、非标、登记编码等合规字段穿透支持通过BOTTOM_*和P_*支持多层嵌套流程集成与 BPM 审批流联动(通过扩展性强等字段支持业务灵活演进这张表是金融机构资产管理的“中枢神经”“我们能投什么?它是什么?风险如何?怎么估值?是否合规?理解这张表,就掌握了从产品引入到投资、估值、风控、报送的全链路数据基础。

2026-01-15 17:20:14 388

原创 Jackson 1.x核心用法与Spring 3.x集成

Override@Overridetry {✅ 这正是你贴出的和注解的核心用途。组件Jackson 1.x 用法序列化器继承,实现反序列化器继承,实现注解绑定过滤 null或Spring 集成自动启用,转换器类名为💡 虽然 Jackson 1.x 已过时,但理解它有助于维护遗留系统,并清晰认识 Jackson 2.x 的改进之处。如需从 Jackson 1.x 升级到 2.x 的完整迁移清单,也可继续提问!

2026-01-15 10:52:23 444

原创 Jackson 1.x到2.x的演进与Spring集成

Override时间线技术栈建议2010–2013仅维护旧系统2013–2016Spring 4.x + Jackson 2.x 过渡期主动迁移,替换包名和注解2016 至今使用,避免include属性未来拥抱 Java 17+,利用新特性(record、sealed class)

2026-01-15 10:42:44 1013

原创 Java反射利器:Apache Commons BeanUtils详解

Commons BeanUtils 的作用通过反射提供一套便捷的 JavaBean 操作 API,支持动态属性访问、对象拷贝、Map 填充等,适用于需要解耦具体类结构的通用编程场景。但要注意它性能较低(大量反射);存在安全风险(尤其在处理不可信输入时);在现代项目中,优先考虑更安全、高效的替代方案。如果你有具体使用场景(比如“如何安全地用它做参数绑定”),我可以给出最佳实践代码。

2026-01-14 14:34:15 715

原创 Spring MVC文件上传:commons-fileupload解析全流程

问题回答整个流程?浏览器 → Servlet 容器 → Spring →→解析 → 生成→ 注入 Controller在哪个阶段起作用?Controller 执行之前,在 Spring 的请求预处理阶段(由触发)作用是什么?解析 multipart/form-data 请求体,将原始 HTTP 流转换为结构化的文件和字段对象如果你后续想优化性能(如限制内存使用、支持大文件分片)、或迁移到更现代的方案(如 Spring Boot + Servlet 3.0+),也可以继续问我!

2026-01-14 14:31:18 787

原创 Java高性能缓存库Caffeine全解析

Caffeine 是Java 本地缓存的事实标准✅性能顶尖(优于 Guava、Ehcache 本地模式)✅API 简洁(Manual / Loading / Async 三种模式覆盖所有场景)✅功能强大(智能淘汰、动态过期、权重控制、统计监控)✅生态完善(Spring、Micronaut、Quarkus 原生支持)对于你的文件上传去重、接口幂等、热点数据缓存等需求,Caffeine 是轻量、高效、可靠的首选方案。如需具体场景的代码模板(如分布式锁+本地缓存二级去重),可继续提问!

2026-01-13 13:41:43 321

原创 Java并发包中的PriorityBlockingQueue解析

特性说明线程安全所有公共操作都通过加锁,支持多线程并发访问。无界(逻辑上)理论上可以无限添加元素(但受 JVM 内存限制,可能抛不允许 null 元素插入null会抛。基于堆(Heap)实现底层使用数组表示的二叉堆(最小堆),保证queue[0]是优先级最高的元素。阻塞式取操作提供take()等方法,在队列为空时可阻塞等待。不保证迭代顺序iterator()不按优先级顺序遍历!如需有序,必须用。插入/删除时间复杂度O(log n),因为要维护堆结构。

2026-01-06 16:09:44 231

原创 Java并发跳表Map:无锁有序的高效实现

是 Doug Lea 利用“跳表 + 无锁链表 + 双阶段删除 + 弱一致性”设计出的一个高性能并发有序 Map。它牺牲了部分强一致性(如 size() 不精确、迭代器弱一致),换来了极高的并发吞吐量和可扩展性,是高并发场景下替代TreeMap的首选。

2026-01-06 11:34:42 638

原创 Java并发利器:CyclicBarrier深度解析

它是一个可重复使用的“集合点”:N 个线程各自完成任务后在此汇合,全部到齐才一起继续;支持在汇合时执行一个汇总操作,并且任何一人掉队(中断/超时)则全员失败。用Generation隔离不同轮次;用实现高效等待/唤醒;提供强一致性语义和灵活的扩展点(barrier action)。这也是 Doug Lea 并发设计的经典之作。

2026-01-05 19:58:51 677

原创 彻底理解CountDownLatch

它是一个“倒计时门闩”:门关着(count > 0),所有想通过的线程(调用 await)都得等着;每有人完成一件事(countDown),计数减一;当计数归零,门打开,所有等待者一拥而过,且之后来的人直接通行。简单、高效、线程安全;利用 AQS 共享模式实现“一对多”或“多对一”的同步;提供明确的内存可见性保证。这也是为什么它成为并发编程中的“瑞士军刀”之一。

2026-01-05 19:44:32 938

原创 AQS共享锁的传播机制精髓

概念作用传播(Propagation)共享模式下,一次释放可能需唤醒多个线程明确指示“后继需要唤醒”在状态模糊时,防止释放信号丢失的保险机制自旋 + CAS 循环应对高并发下的状态竞争,确保最终一致性✅设计哲学“宁可多唤醒几次(unnecessary wake-ups),也不能漏掉一次该唤醒的线程。—— 这就是 AQS 共享模式的鲁棒性所在。

2026-01-05 17:30:43 856

原创 深入解析Java ReentrantLock:可重入锁的核心机制

的核心是内部类Sync,它继承自(AQS),这是 Java 并发包的基石。AQS 使用一个int 状态(state)表示锁的持有次数。使用CLH 队列管理等待线程(FIFO)。Sync有两个实现:非公平锁(默认)FairSync公平锁是一个功能更强、更灵活的 synchronized 替代品,支持中断、超时、公平性、多条件变量,但需要手动管理锁的释放,且默认是非公平的以换取更高性能。如果你需要精细控制并发行为(比如响应中断、避免死等、多条件等待),就用;否则,简单场景用更安全简洁。

2026-01-05 16:05:56 479

原创 Java信号量Semaphore:并发控制的利器

信号量维护一组“许可证”(permits),线程在访问受保护资源前必须先获取一个许可证。如果没有可用许可证,线程会阻塞(或立即返回失败,取决于调用方法),直到有其他线程释放许可证。不实际创建“许可证对象”,只是用一个整数计数器表示当前可用数量。比如:停车场有 10 个车位(permits = 10)。每来一辆车(线程),要先“acquire”一个车位;离开时“release”归还车位。Semaphore。

2026-01-05 16:00:13 854

原创 深入解析AQS:Java并发基石

队列管理、线程阻塞/唤醒、状态原子性、中断/超时处理。定义“什么是获取成功”、“什么是释放成功”。这使得你可以用几十行代码实现出工业级的同步器,而无需操心底层并发细节。如果你正在学习 JUC 或想深入理解Semaphore等的原理,掌握 AQS 是必经之路。它的设计堪称 Java 并发编程的“皇冠上的明珠”。如需进一步分析某个具体同步器(比如如何用 AQS 实现读写锁),欢迎继续提问!

2026-01-04 17:09:38 895

原创 Java并发神器Phaser:动态同步屏障详解

Phaser是一个支持动态参与者数量、可重用、可分层、带阶段编号的高级同步屏障,适用于复杂、多阶段、参与者数量变化的并发协调场景。如果你有具体使用场景(比如“我想让1000个线程分10批执行”),我可以给出代码示例!

2026-01-04 14:20:15 762

原创 一文读懂 AI Agent:让大模型从“会聊天”变成“能办事”

原文定义白话翻译AI Agent = 大语言模型 + 自主行动能力 → 能独立完成复杂任务的 AI 系统它不只是回答问题,而是代表你去完成一件事。你给一个目标(Goal)↓[Agent 大脑(LLM)]→ 规划步骤(Plan)→ 调用工具(Search / Code / API)→ 记住过程(Memory)→ 检查结果(Reflect)↓自动完成任务!✅关键一句话AI Agent 不是“问答机器”,而是“任务执行者”—— 它代表你去行动,而不仅仅是说话。📘延伸建议。

2025-12-24 14:58:28 320

原创 一文读懂 LLM 可信度:AI 不只是“聪明”,更要“可靠”

一个“可信”的 AI =✔ 说真话(Truthfulness)✔ 不害人(Safety)✔ 不歧视(Fairness)✔ 抗干扰(Robustness)✔ 守秘密(Privacy)✔ 有道德(Ethics)关键结论当前 LLM尚未完全可信,尤其在公平性、隐私、复杂伦理方面仍有短板。闭源模型整体更优,但开源模型进步迅速。我们不能盲目相信 AI 输出,而应结合技术手段 + 人工监督构建安全应用。📘核心参考文献希望这篇“小白友好版”帮你彻底搞懂LLM 可信度!

2025-12-24 14:45:14 560

原创 一文读懂 LLM 推理:大模型真的会“思考”吗?

在人类世界,“推理”就是有逻辑地一步步思考问题。问题:小明比小红高,小红比小刚高。谁最高?推理过程小明 > 小红小红 > 小刚所以:小明 > 小红 > 小刚 → 小明最高!这个“中间步骤”就是推理。而LLM 推理(Large Language Model Reasoning)指的是:让大语言模型(如 ChatGPT、Claude)在回答复杂问题时,不直接猜答案,而是先写出思考过程,再得出结论。答案更准确错了也能看出哪里错能解决数学、逻辑、科学等复杂问题用户问题(复杂)↓。

2025-12-24 14:44:17 471

原创 一文读懂 LLM Agent:让大模型不只是“聊天”,而是“做事”

普通的 ChatGPT 就像一个坐在图书馆里的聪明人:你问问题,他凭记忆回答。但他不能上网查资料不能写代码运行不能操作电脑。而LLM Agent(大语言模型智能体)就是:给这个聪明人配上眼睛(感知)、手脚(工具)、笔记本(记忆)和计划能力(规划),让他不仅能回答问题,还能主动完成复杂任务!✅一句话定义LLM Agent = 大语言模型 + 规划能力 + 记忆 + 工具调用 → 能自主执行多步任务的 AI 系统用户请求(复杂任务)↓[Planning] → 拆解成子任务↓。

2025-12-24 14:41:59 818

原创 什么是 RAG、为什么需要它、怎么工作、有哪些类型、如何评估以及未来趋势

你问一个非常聪明的学生:“2024 年诺贝尔物理学奖得主是谁?但他只学过 2023 年以前的知识,所以答错了。但如果允许他先去图书馆查最新资料,再回答,答案就准确了!RAG(Retrieval-Augmented Generation)就是干这件事的它让大语言模型(LLM)在回答问题前,先从外部数据库里“查资料”,把查到的相关信息塞进提示词(prompt),然后再生成答案。✅好处回答更准确(基于真实数据)能回答训练后的新问题减少“胡说八道”(幻觉)知识更新只需改数据库,不用重新训练模型。

2025-12-24 14:38:19 794

原创 Java并发利器:AtomicStampedReference解析

假设有一个栈,初始状态为A → B → C,栈顶是 A。线程1 读取栈顶为 A,准备执行 CAS(期望 A,替换为 D)。此时线程2 弹出 A,再压入新节点 A’(内容相同但地址不同,或甚至同一个 A 被回收后重用)。A → B → C(看起来没变)。线程1 执行 CAS:发现栈顶仍是 A,于是成功替换为 D。但实际上,中间发生了变化(A 被弹出又压入),但 CAS 无法感知,这就是ABA 问题。值看起来没变,但语义已变。是 Java 并发编程中解决 ABA 问题的经典工具。

2025-12-22 17:33:53 882

原创 Java线程安全利器:CopyOnWriteArraySet详解

是 CopyOnWriteArrayList的 Set 封装版,通过委托 + 去重逻辑,实现了线程安全的无重复集合。“牺牲写性能,换取极致的读性能和遍历安全性”在合适的场景下(小、读多、写少),它是优雅且高效的解决方案;但在高写频或大数据场景下,应考虑其他并发 Set 实现。如果你正在处理回调注册、监听器管理、配置项缓存等场景,很可能就是你要找的工具。

2025-12-22 16:05:03 496

原创 Java线程安全利器:CopyOnWriteArrayList详解

特性说明线程安全所有可变操作加锁,读操作无锁但可见性由volatile保证内存一致性happens-before:写入前的操作对后续读取该元素的线程可见允许 null 元素null被当作普通元素处理fail-safe 迭代器基于快照,不抛高写成本每次写都复制整个数组,适合小规模、低频修改最终一致性读操作可能看到“过期”数据,但不会出错是为高并发读、低频写场景量身定制的线程安全容器。它用空间换时间 + 最终一致性的思路,巧妙避免了读写冲突,是并发编程中“乐观锁”思想的经典体现。

2025-12-22 15:24:22 340

原创 深入解析ThreadLocalMap核心实现

特性说明哈希冲突线性探测(开放寻址)Key 引用类型WeakReference(防 ThreadLocal 本身泄漏)Value 生命周期依赖 stale entry 清理,否则内存泄漏清理时机get/set/remove 时触发 expunge/cleanSomeSlots/rehash扩容条件size ≥ 2/3 * capacity,且清理后仍 ≥ 3/4 * threshold最佳实践使用完务必remove()如有需要,我可以进一步画出ASCII 流程图或UML 结构图。

2025-12-22 15:17:03 814

原创 深入解析ThreadLocal:线程私有变量的秘密

ThreadLocal 不是“线程”,而是“每个线程拥有自己独立副本的变量”。正常变量:所有线程共享同一个值。每个线程调用get()时,拿到的是自己独有的值,互不干扰。典型用途:用户会话 ID(Web 应用中每个请求线程保存自己的用户信息)数据库连接 / 事务上下文SimpleDateFormat(非线程安全,可用 ThreadLocal 封装)概念说明存储位置数据存在(Map)中,不是 ThreadLocal 里key 类型对象(弱引用)value 类型。

2025-12-22 15:08:23 599

原创 深入解析Kafka核心:Partition类源码揭秘

Da.txt中的Partition类是Kafka 副本机制的大脑维护分区的角色、状态、日志、元数据实现Leader 选举后的状态初始化管理ISR 的动态扩缩容推进高水位(HW)以保证一致性支持分区迁移(futureLog)提供JMX 监控指标使用精细锁控制并发安全💡 如果你想深入理解 Kafka 的一致性模型、故障恢复、副本同步、限流、监控,这个类是必读源码。“ISR 是怎么判断副本落后的?“Leader Epoch 如何防止数据丢失?

2025-12-16 14:11:25 929

原创 Kafka副本同步机制核心解析

是 Kafka高可用、强一致性副本机制的核心执行者拉取Leader 数据校验offset 和 epoch 一致性写入本地日志更新HW / LSO截断脏数据限流异常副本理解它,就理解了 Kafka 如何做到“即使宕机,也不丢数据、不错数据”。如果你正在调试副本同步延迟、ISR 频繁变动、或数据不一致问题,深入这个类会非常有帮助。需要我进一步解释某个方法(比如)或画更详细的时序图吗?

2025-12-16 14:10:12 750

原创 Kafka高可用:延迟请求处理揭秘

当 Producer 要求“所有副本写入成功”(acks=-1),而 Leader 虽已写入但 Followers 还未同步时,Kafka 会将该请求挂起为一个延时操作,注册到对应分区的监听器上;一旦 Followers 追上或超时,就自动完成并回复 Producer。这种机制既保证了数据一致性,又避免了线程阻塞,是 Kafka 高性能的关键设计之一。如果你还想了解Purgatory内部如何管理延时请求、如何避免内存泄漏、或者如何通知 Purgatory,也可以继续问!

2025-12-16 10:03:19 937

原创 Kafka元数据缓存机制深度解析

是 Kafka Broker 的元数据中心枢纽高性能:读无锁、Copy-on-Write、避免分配一致性:快照语义,避免脏读灵活性:支持多 Listener、动态更新、部分更新健壮性:处理 Broker 下线、Listener 缺失、分区删除等边界情况理解它,就理解了 Kafka如何在分布式环境下高效同步和使用集群拓扑信息。如果你有具体问题(比如某段逻辑、某个字段用途、或如何调试),可以继续问!

2025-12-16 09:46:58 692

原创 Kafka核心揭秘:ReplicaManager如何保障高可用

是 Kafka Broker 的“副本大脑”它既是数据管道的枢纽(协调读写与复制),也是一致性协议的执行者(维护 HW/LEO/ISR),更是故障自愈的守门人(处理磁盘失效、触发重平衡)。其设计体现了 Kafka 对高性能、强一致性、高可用的综合权衡,是理解 Kafka 内部机制的关键入口。

2025-12-15 19:58:46 685

K8S安装以及基础知识的学习

K8S学习笔记

2023-08-20

Quartz2.2.2版本发布包脚本定义

Quartz发布包

2023-07-28

examples.zip

MySQL学习系列SQL案例

2022-01-03

Spring Boot整合Druid Demo项目代码包

Spring Boot整合Druid Demo项目源代码,同时整合了MyBatis,以及实现动态的数据源、Druid连接池的监控。

2020-03-03

simpe-demo-diffdb.7z

该项目包含了动态数据源、兼容Oracle/MySQL数据库、同时通过MyBatis-PageHelper、MyBatis-Plus解决多数据库分页的问题

2020-11-10

动态多数据源示例代码

本项目由SpringBoot+MyBatis+Druild组成,主要关于多数据的动态配置,以及多数据源的配置。用于通过前端请求自由切换数据源,切换数据源的同时也动态执行不同的SQL

2020-11-04

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

dubbo-thought.7z

Java SPI 机制与 Dubbo SPI 机制的一些说明与测试代码 方便SPI的学习 该项目来自于享学课堂学习资料 请勿随意商业使用

2020-02-22

编程式创建Aspect代理源码

编程式创建Aspect代理源码 You can use the org.springframework.aop.aspectj.annotation.AspectJProxyFactory class to create a proxy for a target object that is advised by one or more @AspectJ aspects.

2020-05-27

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

springcloud.zip

Spring Cloud 微服务源码:分为用户微服务、课程微服务、网关微服务,通过consul实现了服务发现组件和配置服务器,外面的请求通过网关打进来,微服务之间通过轻量级通信机制,包括http和rabbitmq,微服务之间有一定的认证与授权机制,从而保证安全,对于高并发的应用,通过集成Resilience4j,从而提升应用的可用性。

2020-03-15

空空如也

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

TA关注的人

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