java
文章平均质量分 89
Ytadpole
我是阿羊,我为自己袋盐。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java并发编程: 探索synchronized的奥秘
synchronized 是 Java 实现线程安全的关键字,它通过原子性、可见性和有序性保证多线程安全。底层基于对象头和 Monitor 机制,利用 CAS 和内存屏障实现锁管理。在字节码层面,方法同步使用 ACC_SYNCHRONIZED 标记,代码块同步则通过 monitorenter/monitorexit 指令实现。ObjectMonitor 机制包含 OwnerThread、EntryList 和 WaitSet,管理线程的竞争与等待。实际应用中,它能有效解决共享变量并发访问问题,如计数器递增的原创 2025-09-28 22:00:00 · 996 阅读 · 0 评论 -
Java 并发编程:BlockingQueue vs wait/notify 详解
本文对比了Java并发编程中实现生产者-消费者模式的两种方式:使用wait/notify和BlockingQueue。wait/notify方式灵活但易出错,适合教学理解原理;BlockingQueue更简单安全,通过ReentrantLock和Condition自动处理线程同步,推荐使用ArrayBlockingQueue等实现类。文章分析了两种方式的代码实现和特点,并介绍了BlockingQueue的内部机制和常见实现类。原创 2025-09-26 11:58:52 · 665 阅读 · 0 评论 -
Java 25 新特性 更简洁、更高效、更现代
Java 25作为长期支持(LTS)版本正式发布,带来多项现代化改进。主要更新包括:基本类型模式匹配简化代码、模块导入减少冗余、轻量级main方法便于入门、Record类增强数据安全、结构化并发优化多线程管理。性能方面推出向量API、紧凑对象头和分代Shenandoah GC,并增强JFR监控能力。安全更新支持现代加密标准,同时移除32位支持专注64位系统。这些改进使Java更简洁、高效且安全,既降低学习门槛又提升专业开发体验。原创 2025-09-18 21:30:00 · 1152 阅读 · 0 评论 -
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
Spring Cloud Gateway 404 问题排查摘要 在网关开发中遇到一个异常现象:通过IP访问http://localhost:9900/api-user/xxxx1正常,但域名访问http://xxx.xxx.xxx:9900/api-user/xxxx1返回404。通过源码分析发现,RoutePredicateHandlerMapping在路由匹配时使用getRawPath()获取原始路径,而域名请求的路径解析存在问题。关键在于getRawPath()返回的未解码路径在路由匹配时无法正确识别原创 2025-09-17 20:30:00 · 1006 阅读 · 0 评论 -
揭秘 XXL-JOB 调度:从代码深处看路由策略的精妙设计
XXL-JOB分布式任务调度框架的核心奥秘在于其精妙的路由策略设计。文章深入分析了调度中心与执行器的协作机制,揭示了任务从表单配置到代码执行的全过程。重点剖析了路由策略的实现原理,包括枚举与实例的绑定机制,以及轮询、随机、故障转移等具体策略的代码实现。通过线程池异步处理和原子计数器等设计,XXL-JOB确保了任务调度的高效性和可靠性。这种架构设计使得系统能够智能分配任务,应对节点故障等分布式环境下的挑战。原创 2025-09-12 22:45:00 · 735 阅读 · 0 评论 -
揭秘设计模式:一个转接头,竟然能让你的代码更优雅?聊聊适配器模式
本文介绍了适配器模式(Adapter Pattern)在软件开发中的应用。适配器模式通过将不兼容的接口转换成统一的目标接口,使原本无法协同工作的类能够无缝协作。文章以音频播放器为例,展示了如何使用适配器将WAV播放器适配到统一的媒体播放接口中,并分析了该模式在Spring框架中的实际应用。适配器模式的优势包括实现开闭原则、责任分离和新老系统无缝对接,是解决接口不兼容问题的优雅方案。原创 2025-09-09 12:09:25 · 319 阅读 · 0 评论 -
揭秘设计模式:工厂模式的五级进化之路
工厂模式是软件开发中解决对象创建问题的关键设计模式,其进化历程分为五个层级:0级硬编码直接new对象,导致代码臃肿难维护;1级简单工厂通过专门类管理对象创建,但工厂会随产品增多而膨胀;2级工厂方法为每个产品创建专属工厂,提高了扩展性但增加了类数量;3级抽象工厂能创建整套相关产品,适合套餐类需求但扩展性受限;4级注册式工厂通过中央注册中心动态管理工厂,实现彻底解耦,代表如Spring的IoC容器。该模式在支付系统、GUI开发等场景广泛应用,是构建可扩展系统的利器。原创 2025-09-08 23:15:00 · 876 阅读 · 0 评论 -
解密设计模式:别再被内存问题困扰了!聊聊你可能忽略的“享元模式”
设计模式中的享元模式是一种优化内存使用的精妙方案,它通过分离对象的内在状态(共享部分)和外在状态(独有部分)来大幅减少内存消耗。文章通过游戏开发和Java字符串常量池两个实例,生动展示了享元模式的实际价值,并提供了完整的Java代码实现,包括享元接口、享元类、享元工厂和客户端调用。同时,文章还澄清了享元模式与单例模式的区别,前者关注共享相似对象的内存,后者保证全局唯一性。享元模式的核心思想是"分治",将复杂问题分解为可共享和不可共享的部分,从而实现高效复用。原创 2025-09-04 23:30:00 · 661 阅读 · 0 评论 -
揭秘设计模式:优雅地为复杂对象结构增添新功能-访问者模式
访问者模式是一种行为型设计模式,它允许在不修改对象结构的前提下为其添加新的操作。通过将数据结构与操作逻辑分离,访问者模式完美解决了传统方法中因类型判断导致的代码臃肿问题。该模式利用双分派机制,在元素类中定义accept方法接收访问者对象,再由访问者实现针对不同元素的具体操作。当需要新增功能时,只需创建新的访问者类即可,无需修改现有元素类,符合开闭原则。典型的应用场景包括文档处理、编译器设计等需要处理复杂对象结构的系统。原创 2025-09-03 21:45:00 · 856 阅读 · 0 评论 -
揭密设计模式:像搭乐高一样构建功能的装饰器模式
装饰器模式是一种动态扩展对象功能的设计模式,通过组合而非继承的方式为对象添加新职责。核心思想是定义一个统一接口,基础对象和装饰器都实现该接口,装饰器持有基础对象的引用并增强其功能。以咖啡店为例,基础黑咖啡可被牛奶、糖等装饰器动态组合,灵活添加新功能而不修改原有代码。该模式符合开闭原则,避免子类爆炸,广泛应用于Java I/O流、Spring AOP等场景。关键优势在于运行时动态组合功能,增强代码可维护性和扩展性。原创 2025-09-02 22:00:00 · 748 阅读 · 0 评论 -
揭秘设计模式:从UI按钮到Spring事件的观察者模式
观察者模式是一种行为型设计模式,它定义对象间的一对多依赖关系,当被观察者状态改变时,所有依赖它的观察者会自动收到通知并更新。该模式包含三个核心角色:观察者接口(定义更新方法)、被观察者(管理观察者列表和通知机制)和具体实现类。通过Java代码示例展示了如何实现UI按钮点击事件的解耦,使业务逻辑与UI逻辑分离。观察者模式广泛应用于事件处理系统,如Spring事件机制,能有效降低组件间的耦合度,提升系统灵活性和可扩展性。典型应用场景包括UI事件监听、消息通知系统等需要松耦合通信的场景。原创 2025-09-01 20:15:00 · 631 阅读 · 0 评论 -
XXL-JOB 失败任务处理:深度解析其工作机制与源码实现
XXL-JOB失败任务处理机制解析:通过执行器检测异常、显式结果码、超时及宕机等失败情况,并将失败信息上报调度中心。调度中心通过AdminBizImpl.callback处理回调,更新日志状态并触发重试或告警。核心组件JobFailMonitorHelper管理重试队列,JobThread监控任务超时,ExecutorRegistryThread通过心跳机制检测执行器状态。该机制确保任务失败后能自动重试或告警,保障系统稳定性。原创 2025-09-01 20:00:00 · 969 阅读 · 0 评论 -
深入理解解释器模式:构建可扩展的语言解释器
讨了解释器模式(Interpreter Pattern),一种行为型设计模式。文章首先通过一个简单的数学表达式求值示例,阐述了其核心思想:将语言的文法规则定义为一系列类,并构建一棵语法树来解释和执行表达式。文章详细解析了该模式的四大核心角色:抽象表达式、终结符表达式、非终结符表达式和上下文。接着,通过对比组合模式和责任链模式,文章清晰地辨析了解释器模式在结构和行为上的独特之处,强调了其**“自由组装”和递归处理**的特性。原创 2025-08-29 09:20:55 · 671 阅读 · 0 评论 -
一次springboot日志不生效问题深入分析
记录一次springboot项目排查log4j2日志不生效的问题分析。原创 2022-09-23 10:16:53 · 1929 阅读 · 0 评论 -
spring-session的一次问题排查
spring-session 一次问题排查原创 2021-12-14 20:07:25 · 728 阅读 · 0 评论 -
java - List深入
什么是ListList接口中常用的三种linkedList,ArraylList,Vector。list接口定义了,我们开发需要的容器操作,是一个有序,值可重复的容器。ArrayListArrayList本质上是一种数组,它不仅仅是数组,还是一个Resizable-array的数组 上面截图也描述的非常清楚,它是线程不安全的。 Vector则是线程安全的,线程安全所带来的弊端则...原创 2018-04-13 16:03:39 · 385 阅读 · 0 评论 -
xml解析---java的DOM,SAX,JDOM,DOM4J
xml是一种常见的文本格式,可以为我们提供各系统件信息传输的标准,以及信息持久化存储的模式。通常在接口设计上,报文格式往往就是json和xml两种。json来说更轻量一点,解析也相对容易。然而现在是xml的时间。。。java中解析xml方式常见有4种 官方提供的两种 1. DOM 2. SAX 扩展方式2种 1. JDOM 2. DOM4JDOM是 W3C 组织推荐的处理 ...原创 2018-02-19 22:50:51 · 375 阅读 · 0 评论 -
反射
java中提供了一种叫做反射的方式,这个东西能够帮助我们架构更加的优美。之前在项目中,遇到一个问题:对外提供接口,需要根据前端请求的url来进入不同的逻辑执行方法中。如果简单粗暴的通过添加多个if来控制进入不同的方法,就显得不专业了。 新增功能需要添加if判断,完全远离了设计本质。这篇文章并不是深入其原理,仅在使用层面上花费口舌。(哎,能力有限啊,后续慢慢深入学习)java为我们提供了...原创 2018-02-18 16:16:42 · 270 阅读 · 0 评论 -
jdbc记录
jdbc为java开发者提供了操作数据库标准的一系列API越来越多的orm框架让我们逐渐忘记基本的jdbc操作,java没有帮助我们把一些基本步骤封装进去,需要我们自己去写一些步骤过程或者orm帮我们封装好。1.jdbc基本步骤加载对应数据库的jdbc驱动连接对应的数据库获取对应数据库的连接创建statment对象拼装需要执行的sql语句执行sql处理sql执行的结果关...原创 2018-02-16 17:17:56 · 206 阅读 · 0 评论
分享