- 博客(93)
- 收藏
- 关注
原创 Java行为型模式---责任链模式
责任链模式通过将请求的处理者组织成一条链,实现了请求的发送者和接收者之间的解耦。它允许动态地组合处理者,使系统更加灵活和可扩展。在实际开发中,责任链模式常用于多级审批、请求过滤、事件处理等场景。合理使用责任链模式可以提高代码的可维护性和复用性,但需要注意链的长度和处理顺序对系统性能的影响。
2025-07-15 20:16:31
419
原创 Java行为型模式---迭代器模式
迭代器模式通过分离聚合对象的存储逻辑和遍历逻辑,实现了代码的解耦和复用。它在 Java 集合框架中应用广泛,是处理集合遍历的标准方式。合理使用迭代器模式可以简化客户端代码,隐藏聚合对象的内部结构,并支持灵活的遍历方式。在实际开发中,除非需要自定义聚合结构或特殊遍历逻辑,否则优先使用 Java 内置的Iterator接口及其实现。
2025-07-15 20:15:39
605
原创 Java行为型模式---观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,其核心思想是定义对象间的一种一对多依赖关系,使得当一个对象状态发生改变时,所有依赖它的对象都会得到通知并自动更新。观察者模式是一种非常实用的设计模式,它通过定义对象间的一对多依赖关系,实现了对象间的松耦合通信。在实际开发中,观察者模式常用于事件处理系统、实时数据监控、消息传递等需要状态变化通知的场景。不过,自 Java 9 起,这些类已被标记为过时,推荐使用自定义实现或第三方库(如 Guava)。,其中被观察的对象称为。
2025-07-13 17:52:48
520
原创 Java行为型模式---策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,其核心思想是定义一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端,符合开闭原则(对扩展开放,对修改关闭)。策略模式是一种非常实用的设计模式,它通过将算法封装并使其可互换,提高了代码的灵活性和可维护性。在实际开发中,策略模式常用于电商折扣系统、支付方式选择、游戏 AI 等需要动态选择算法的场景。
2025-07-13 17:51:47
373
原创 Java结构型模式---享元模式
享元模式是一种通过对象共享来优化资源利用的设计模式,特别适用于处理大量细粒度对象的场景。在实际开发中,该模式常用于图形渲染、游戏开发、缓存系统等需要高效管理资源的领域。享元模式(Flyweight Pattern)是一种结构型设计模式,其核心思想是通过共享对象来减少内存使用和提高性能。该模式通过将对象的状态分为。(不可共享的变化部分),并缓存已创建的对象,从而避免重复创建相同的对象。(可共享的不变部分)和。
2025-07-13 17:49:46
450
原创 Java结构型模式---外观模式
外观模式(Facade Pattern)是一种结构型设计模式,其核心思想是为复杂的子系统提供一个统一、简化的接口,使客户端通过这个接口可以更方便地使用子系统的功能,而无需直接与子系统中的多个组件交互。外观模式隐藏了系统的复杂性,将客户端与子系统解耦。外观模式是一种非常实用的设计模式,它通过提供一个统一的接口,简化了复杂系统的使用方式,降低了客户端与子系统之间的耦合度。在实际开发中,外观模式常用于构建易于使用的 API、封装第三方库或遗留系统等场景。
2025-07-13 17:48:42
287
原创 Java结构型模式---组合模式
组合模式是一种非常实用的设计模式,它通过树形结构表示 "部分 - 整体" 关系,使客户端可以统一处理单个对象和组合对象。组合模式是一种结构型设计模式,其核心思想是将对象组合成树形结构以表示 "部分 - 整体" 的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性,即在使用过程中无需区分是单个对象还是组合对象。- 在抽象组件中声明所有管理子组件的方法,叶子组件和复合组件都实现这些方法。- 在抽象组件中只声明公共方法,管理子组件的方法只在复合组件中声明。上述示例采用的是安全式实现。
2025-07-11 23:54:33
655
原创 Java结构型模式---桥接模式
桥接模式是一种结构型设计模式,其核心思想是将抽象部分与实现部分分离,使它们可以独立地变化。桥接模式通过组合的方式建立两个类之间的联系,而不是通过继承,从而降低了抽象和实现之间的耦合度。桥接模式是一种非常实用的设计模式,它通过分离抽象和实现,使系统更加灵活、可扩展。在实际开发中,桥接模式常用于需要处理多个变化维度的场景,如跨平台应用、图形界面系统等。
2025-07-10 22:39:23
753
原创 Java结构型模式---装饰者模式
装饰者模式是一种结构型设计模式,其核心思想是动态地将责任附加到对象上,从而实现对对象功能的扩展。与继承相比,装饰者模式提供了更灵活的替代方案,它通过组合的方式在运行时为对象添加新功能,而无需修改其原有结构。装饰者模式是一种非常实用的设计模式,它通过组合而非继承的方式为对象提供了灵活的功能扩展能力。在实际开发中,装饰者模式常用于需要动态扩展对象功能的场景,如 Java I/O 流、GUI 组件等。
2025-07-09 23:29:15
642
原创 Java结构型模式---适配器模式
适配器模式是一种结构型设计模式,其核心思想是将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式就像一个 "转换器",将两个不兼容的接口进行适配。适配器模式是一种非常实用的设计模式,它通过引入一个适配器类来解决接口不兼容的问题,使得原本不能一起工作的类可以协同工作。对象适配器通过持有适配者类的实例并实现目标接口来实现适配。类适配器通过继承适配者类并实现目标接口来实现适配。双向适配器允许两个不兼容的接口可以互相适配。
2025-07-08 17:47:23
1062
原创 Java结构型模式---代理模式
代理模式是一种非常实用的设计模式,它通过引入代理对象来控制对真实对象的访问,提供了增强功能、控制访问和提高性能的能力。在实际开发中,动态代理和 CGLIB 代理更为常用,它们提供了更灵活的代理机制。代理模式是一种结构型设计模式,其核心思想是通过创建一个代理对象来控制对另一个真实对象的访问。代理对象在客户端和真实对象之间起到中介作用,允许在不改变真实对象的前提下,对其进行增强或控制。静态代理是指在编译时就已经确定代理类和被代理类的关系,代理类需要手动编写。
2025-07-08 17:45:27
794
原创 Java创建型模式---原型模式
原型模式是一种创建型设计模式,其核心思想是通过复制(克隆)现有对象来创建新对象,而无需依赖显式的类实例化过程。这种模式适用于创建对象成本较高(如初始化时间长、资源消耗大)或需要避免复杂的对象创建逻辑的场景。原型模式是一种非常实用的设计模式,它通过复制现有对象来创建新对象,避免了复杂的对象创建过程,提高了性能和灵活性。在实际开发中,根据对象的复杂度和需求,可以选择浅克隆或深克隆来实现原型模式。- 复制对象时,仅复制对象本身及其基本数据类型字段,而引用类型字段仍指向原对象的引用。
2025-07-07 19:03:29
590
原创 Java创建型模式---建造者模式
建造者模式是一种创建型设计模式,其核心思想是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式允许你分步构建一个复杂对象,通过相同的构建步骤可以得到不同的表示形式。建造者模式是一种非常实用的设计模式,它能够将复杂对象的构建过程与表示分离,提高代码的可维护性和可扩展性。在实际开发中,链式调用的建造者模式更为常见,它简化了经典模式的结构,使代码更加简洁易用。
2025-07-06 00:33:04
632
原创 Java创建型模式---工厂模式
工厂模式是一种创建型设计模式,其核心思想是将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑集中管理,提高代码的可维护性和可扩展性。工厂模式是一种非常实用的设计模式,它能够将对象的创建和使用分离,提高代码的可维护性和可扩展性。在实际应用中,需要根据具体场景选择合适的工厂模式实现。简单工厂模式是工厂模式的基础实现,它定义了一个创建对象的类,根据参数的不同返回不同类的实例。抽象工厂模式提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类。:实现简单,将对象创建和使用分离。
2025-07-05 22:38:16
594
原创 Java创建型模式---单例模式
单例模式是一种创建型设计模式,其核心思想是确保一个类仅有一个实例,并提供一个全局访问点来获取这个实例。单例模式虽然简单,但在实际应用中需要根据具体场景选择合适的实现方式,同时注意处理好各种边界情况,确保单例的唯一性和安全性。:实现复杂,需要理解 volatile 关键字的作用。:类加载时就创建实例,可能造成资源浪费。:线程安全,延迟加载,性能优化。:线程安全,延迟加载,实现简单。:同步方法开销大,影响性能。:延迟加载,避免资源浪费。:实现简单,线程安全。:线程安全,延迟加载。
2025-07-05 22:15:43
539
原创 Java中String、StringBuffer和StringBuilder的区别
在 Java 里,String和这三者都是用于处理字符串的类,但它们在本质、线程安全性以及性能方面存在明显差异。
2025-07-04 12:09:21
270
原创 java中==和equals的区别
equals比较方式适用场景比较内容==基本数据类型引用数据类型值引用(内存地址)equals引用数据类型内容(需类重写该方法)
2025-07-04 11:35:36
236
原创 Intellij IDEA中Maven的使用
通过以上步骤,你可以在 IDEA 中高效使用 Maven 管理项目依赖、构建和部署。是 Maven 项目的核心配置文件,用于管理依赖和插件。
2025-07-03 23:55:21
1011
原创 Redis为什么是单线程
Redis 选择单线程,是为了在内存数据库的核心场景(高频、轻量操作)中,通过避免多线程开销和复杂性,最大化性能和稳定性。其高效的 I/O 模型和后续的多线程优化(如网络 I/O 多线程),进一步弥补了单线程的局限,使其成为高性能缓存和数据库的标杆。
2025-07-01 21:35:39
891
原创 Java中for与foreach
特性普通for循环foreach循环语法复杂度较高较低索引访问支持不支持修改集合结构需谨慎操作不允许,会抛出异常适用范围灵活,适用于各种场景仅适用于遍历代码可读性较低(循环逻辑复杂时)较高一般来说,如果你需要访问索引或者修改集合结构,建议使用普通for循环;如果只是简单地遍历集合或数组,使用foreach循环会让你的代码更加简洁。
2025-06-30 21:42:16
398
原创 Java 接口性能优化三
拒绝经验主义,依赖数据决策优化前必须通过监控工具量化瓶颈(如用 SkyWalking 确认是数据库慢查询还是 Redis 超时),避免凭「感觉」优化 —— 例如盲目加索引可能导致写入性能下降,反而得不偿失。平衡性能与可维护性过度优化会导致代码复杂度飙升(如为减少 3ms 耗时引入复杂的异步逻辑),后续维护成本剧增。需设定「性能阈值」(如 P99 响应时间 < 500ms),达标后即可停止优化,优先保证代码可读性。随业务增长动态迭代。
2025-06-29 00:45:00
1853
原创 Java 接口性能优化二
数据库是接口性能的「重灾区」—— 超过 60% 的接口响应慢问题可追溯至低效的数据交互。优化需从「SQL 执行效率」「索引设计」「连接管理」三个维度突破。SQL 优化:让查询「少走弯路」核心原则:减少无效数据扫描,让数据库「只做必要的工作」。常见问题与优化:** 避免 SELECT ***:问题:返回冗余字段,增加数据传输量,无法利用覆盖索引。优化:明确指定需要的字段,如。通过 EXPLAIN 分析 SQL。
2025-06-29 00:15:00
1403
原创 Java接口性能优化一
在 Java 开发中,接口响应慢是最常见的性能痛点之一。用户点击按钮后等待超过 3 秒就可能失去耐心,系统吞吐量不足则会导致高峰期请求堆积甚至超时。这类问题往往不是单一环节的故障,而是代码逻辑、数据交互、框架配置、底层资源等多链路共同作用的结果。
2025-06-28 00:20:34
720
1
原创 Tomcat
Tomcat 是一个开源的 Servlet 容器,由 Apache 软件基金会开发,用于运行 Java Web 应用程序。它实现了 Servlet 和 JSP 规范,能够处理 HTTP 请求,并为 Web 应用提供运行环境。:支持 Session 复制和分布式部署,通过 mod_jk 或 mod_proxy 与 Apache HTTP Server 集成。接口,支持统一的生命周期管理(init、start、stop、destroy)。:Web 应用的部署描述符,定义 Servlet、过滤器和安全约束。
2025-06-25 14:24:49
626
原创 MyBatis与MyBatis-Plus的区别
通过以上对比可以看出,MyBatis-Plus 在保持 MyBatis 核心功能的基础上,显著提升了开发效率,尤其适合以 CRUD 操作为主的项目。但在复杂 SQL 场景下,仍需要结合 MyBatis 的原生能力。
2025-06-24 12:37:15
1275
原创 JavaServlet解析
JavaServlet 是运行在 Web 服务器上的小型 Java 程序,用于处理客户端请求并生成动态响应。它是 Java EE 平台的核心组件之一,主要用于开发 Web 应用程序。
2025-06-23 16:06:43
518
原创 Java泛型
并增强了代码的复用性。理解类型擦除、通配符和泛型限制是掌握泛型的关键。在实际开发中,泛型广泛应用于集合框架、反射 API 和设计模式中。Java 泛型是 JDK 5 中引入的一项重要特性,它提供了编译时类型安全检测机制,允许在编译时检测到非法的类型。,即在类、接口或方法中使用类型参数,使得代码可以处理多种数据类型,同时保持类型安全。Java 泛型通过参数化类型提供了编译时类型安全,避免了运行时的。限制通配符类型必须是。限制通配符类型必须是。:通过反射或工厂模式。Java 泛型是通过。
2025-06-23 00:23:41
703
原创 Java Lambda表达式
Lambda 表达式让 Java 更具函数式编程风格,通过简洁的语法和函数式接口,大幅提升代码可读性和生产力。Lambda 表达式是 Java 8 引入的重要特性,它基于函数式接口,允许你将功能视为方法参数,或将代码视为数据。Java 8 的 Stream API 大量使用 Lambda 表达式,用于集合的过滤、映射、归约等操作。,它没有名称,但有参数列表、函数主体、返回类型,可能还有异常列表。通过函数式接口的默认方法组合多个 Lambda。接收函数式接口作为参数或返回函数式接口的方法。
2025-06-22 20:03:33
616
原创 Java多线程
线程是程序中执行的最小单位,一个进程可以包含多个线程。例如,浏览器可以同时下载文件、播放视频和渲染页面,这些都是通过不同线程实现的。
2025-06-21 18:43:32
707
原创 Java中乐观锁和悲观锁
读多写少:优先使用乐观锁,配合Atomic类或。写多读少:优先使用悲观锁,配合或。高并发场景:考虑分段锁(如)或LongAdder。分布式系统:使用数据库版本号或 Redis 实现乐观锁,或基于 ZooKeeper 实现分布式悲观锁。现代 JDK 中,锁机制不断演进,从偏向锁到VarHandle,性能和灵活性持续提升。开发者需根据具体场景选择合适的锁策略,并关注 JDK 新特性以优化并发性能。
2025-06-20 08:15:00
1237
原创 Java Map 深度解析
特性HashMapTreeMap底层结构哈希表哈希表 + 双向链表红黑树哈希表 + CAS + 锁时间复杂度 (插入 / 查询)O(1)O(1)O(log n)O(1)顺序性无插入 / 访问顺序键有序无线程安全否否否是null 键 / 值支持支持支持仅值支持不支持适用场景通用场景LRU 缓存范围查询高并发环境通过深入理解各类型 Map 的底层实现和特性,开发者可以根据具体业务场景做出最优选择,避免常见陷阱,充分发挥不同 Map 实现的性能优势。
2025-06-19 21:01:06
934
原创 Java Set 接口底层源码深度解析
特性HashSetTreeSetEnumSet数据结构哈希表哈希表 + 双向链表红黑树位向量顺序保证无插入 / 访问顺序自然 / 定制排序枚举定义顺序元素要求实现 equals ()同上实现 Comparable枚举类型添加 / 删除时间O(1)O(1)O(log n)O(1)空间效率中中(多维护链表)高(树结构)极高(位操作)线程安全否否否否替代方案同上无无。
2025-06-19 17:39:58
1145
原创 深入解析 Java List 实现类的底层原理
在 Java 集合框架中,List接口是最常用的接口之一,其实现类在不同场景下表现各异。以下从数据结构、源码实现、性能特征及典型应用场景四个维度进行更深入的解析。
2025-06-18 20:58:21
818
【铁路智能运维管理】基于Spring AI的铁路设备维修系统设计与实现:集成ZhiPu AI对话模型和RAG功能
2025-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人