自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式-组合模式

摘要:组合模式是一种结构型设计模式,用于处理对象与集合的层次关系。它将对象组织成树形结构,使客户端能统一处理单个对象和组合对象。模式包含抽象构件、叶子构件和容器构件三个角色,分为透明式和安全式两种实现方式。其优点包括简化客户端代码、支持扩展和提供一致访问方式,但存在设计复杂度增加等缺点。适用于文件系统、组织架构等场景。实际应用中可与命令模式等其他模式结合,需注意避免过度使用和性能问题。组合模式在表示部分-整体关系中具有重要价值。

2025-06-21 14:05:26 584

原创 设计模式-桥接模式

摘要:桥接模式是一种结构型设计模式,通过分离抽象与实现避免类爆炸问题。其核心是将正交变化的维度(如图形/渲染方式、支付方式/渠道)解耦,使两者可独立扩展。该模式包含抽象层、实现层接口等组件,通过组合关系连接,相比继承更灵活。典型应用包括JDBC连接、跨平台UI框架等。优势在于提高扩展性、支持运行时切换实现;但存在设计复杂度高、过度设计风险等局限。最佳实践强调正确识别正交维度、遵循组合优于继承原则,并在适当场景应用依赖注入简化实现。

2025-06-08 15:00:24 775

原创 设计模式-适配器模式

适配器模式是一种结构型设计模式,通过接口转换使不兼容的类能够协同工作。其核心包含目标接口、适配者和适配器三个角色,主要实现方式有类适配器(继承)和对象适配器(组合)。该模式广泛应用于系统升级、第三方库集成等场景,能有效解决接口不兼容问题,提高代码复用性,但需注意避免过度使用导致的系统复杂度增加。随着技术发展,适配器模式正与微服务、领域驱动设计等现代架构深度融合,未来在接口标准化和自动化工具支持下将展现更大价值。

2025-06-06 10:07:52 566

原创 设计模式-原型模式

抽象原型(Prototype)角色:定义一个克隆自身的接口,通常是一个包含clone()方法的抽象类或接口。这个方法负责返回对象的副本。抽象原型角色为所有具体原型类提供了统一的克隆接口,使得客户端可以一致地使用不同原型对象进行复制。具体原型(ConcretePrototype)角色:实现抽象原型接口的具体类,负责提供克隆方法的具体实现。具体原型类需要实现clone()方法,该方法可以返回对象的浅拷贝或深拷贝,这取决于对象的复杂性和使用场景的需求。

2025-06-03 22:09:45 595

原创 设计模式-建造者模式

建造者模式是一种强大的创建型设计模式,特别适合创建参数多、构建过程复杂的对象。通过将构建过程与对象表示分离,它提供了更高的灵活性和可扩展性,同时确保了对象创建的合法性。作为资深程序员,在使用建造者模式时,建议:根据对象复杂度选择模式:对于简单对象,直接使用构造函数或工厂模式可能更合适;对于复杂对象,建造者模式是更好的选择。结合不可变性:将建造者模式与不可变对象结合使用,可以确保对象状态的一致性和线程安全性。

2025-06-02 22:05:02 691

原创 设计模式-工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。

2025-05-19 14:58:06 748

原创 设计模式-单例模式

单例模式是一种创建型设计模式,确保系统中仅存在一个类的实例,适用于需要集中管理资源的场景,如数据库连接池、配置中心等。其核心价值在于全局唯一性、统一访问点和延迟初始化,减少内存开销并避免状态不一致问题。主流实现方案包括饿汉式、双重校验锁、静态内部类和枚举实现,各有优缺点。典型应用场景涵盖配置管理、日志系统、线程池管理等。然而,单例模式可能面临反射攻击、序列化绕行和多类加载器环境漏洞等挑战。防御反射攻击可通过构造函数守卫或枚举加固,序列化问题可通过实现readResolve()方法解决。

2025-05-13 15:28:05 796

原创 Linux下MySQL定时自动完整备份

实现mysql数据库全量备份,定时执行备份,清理七天之前的备份。

2025-01-15 14:30:10 638

原创 Linux安装emqx部署mqtt服务器

启动EMQX后,可以通过Web浏览器访问EMQX控制台,监控和管理EMQX的运行状态。默认情况下,控制台监听在18083端口。可以使用任意文本编辑器编辑该文件进行配置。在修改配置文件后,需要重新启动EMQX使配置生效。如果遇到openssl11依赖问题 依次下载这两个依赖。EMQX的配置文件位于。

2024-10-21 17:41:48 2083 1

原创 HashMap,HashTable与CurrentHashMap

HashMap与HashTable、CurrentHashMap的区别

2023-09-05 10:35:58 454 1

翻译 选择最正确的Java集合

​ 本文将讨论如何在Java库中选择合适的集合接口和实现类。本文将跳过已经替代的集合,如VectorStack, 和Hashtable,因为要避免使用它们,而支持新的集合类。并发集合值得另开一个课题去讨论,所以本文不予讨论。

2023-08-25 14:08:49 166 1

原创 java中的缓存变量机制

一个有趣的Java面试题,涉及到传参方式,已经Java缓存变量机制。

2023-08-23 17:21:29 190

原创 【动态规划简要说】

动态规划常常适用于有重叠子问题和最优子结构性质的问题。本文简略介绍了动态规划的定义、适用题型以及解题思路。

2023-08-10 16:36:39 252 1

转载 使用Gitblit搭建Git服务器

使用Gitblit搭建属于公司或自己的Git服务器,方便公司或自己程序代码及文档版本管理。

2021-12-06 16:47:36 1263 3

原创 GUI实现贪吃蛇小游戏

一,绘制一个静态窗口 // 1.绘制静态窗口 JFrame JFrame frame = new JFrame("贪吃蛇"); // 设置界面大小 frame.setBounds(10, 10, 900, 720); // 设置窗口大小不可改变 frame.setResizable(false); // 设置关闭事件,游戏可关闭; frame.setDefaultCloseOp

2021-08-29 23:58:48 388

原创 数组与排序

数组一,数组的概念数组是一个可以存储多个相同数据类型的容器。可以让我们更方便的操作多个数据二,数组的初始化(1)什么是数组的初始化java中的数组必须先初始化,然后才能使用初始化:就是给数组中的数组元素分配内存空间,并未每个数组元素赋值。(2)数组初始化的分类 动态初始化: 只指定长度,有系统给出初始化值 静态初始化: 给出初始化值,由系统决定长度 注意事项:这两种初始化方式只能使用一种,不能动静结合(3)动态初始化的格式:数据类型[] 数组名 = n

2021-08-27 15:12:11 457

转载 Spring的工作原理

SpringMVC的工作原理https://blog.csdn.net/qq_41541619/article/details/82459873

2021-05-29 19:38:01 252

空空如也

空空如也

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

TA关注的人

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