- 博客(201)
- 资源 (7)
- 收藏
- 关注
原创 HikariCP 与 Druid 对比分析
HikariCP和Druid是两大主流JDBC连接池,各有优势。HikariCP以极致性能著称,设计简洁轻量,适合高性能需求和微服务场景;Druid功能全面,内置强大的Web监控和安全特性,适合企业级应用。性能方面HikariCP略优,但Druid提供SQL监控、防火墙等增值功能。选型建议:优先性能选HikariCP,需要完善监控选Druid。Spring Boot 2.x+默认集成HikariCP,而Druid在国内企业应用中更普及。两者都活跃维护,可根据实际需求选择或混合使用。
2026-01-15 10:16:34
774
原创 SpringBoot项目代码混淆、防反编译方案
本文介绍了Spring Boot项目的Maven完整配置方案,重点包含ProGuard代码混淆的实现。配置分为两部分:1)基础Maven配置,使用spring-boot-maven-plugin进行标准打包;2)ProGuard混淆插件配置,包含版本设置、输入输出定义、依赖处理等核心参数。同时提供了proguard.conf配置文件模板,包含Spring Boot主类、启动类、自动配置等关键保留规则,确保混淆后应用仍可正常运行。配置方案采用外部配置文件方式,便于维护调整,并保留了必要的调试信息。
2026-01-06 16:24:53
639
原创 行为型-访问者模式
本文展示了一个基于Java的访问者模式实现项目。项目采用标准Maven结构,包含核心代码和测试代码。核心实现包括:1) Shape接口定义了接受访问者的方法;2) 三个具体形状类(Circle、Rectangle、Triangle)实现Shape接口;3) 访问者模式通过ShapeVisitor接口和具体访问者类(如AreaCalculator)实现功能扩展。项目使用JDK1.8开发,Maven管理依赖,并包含JUnit测试支持。该实现演示了访问者模式如何在不修改元素类结构的情况下添加新操作。
2026-01-05 15:30:00
313
原创 行为型-模板模式
本文展示了一个基于模板方法模式的数据处理项目实现。项目采用标准Maven结构,包含抽象模板类DataProcessor和具体实现类CSVDataProcessor等。抽象类定义了数据处理的标准流程(读取、解析、处理、保存),其中通用步骤已实现,解析和处理逻辑由子类实现。项目还通过钩子方法提供扩展点,支持选择性覆盖资源清理和数据验证等操作。依赖配置包含Jackson和JAXP用于JSON/XML解析,以及JUnit用于单元测试。这种设计实现了算法骨架的复用,同时允许子类灵活定制特定步骤。
2026-01-05 13:45:00
588
原创 行为型-策略模式
策略模式支付系统实现 该项目实现了一个基于策略模式的支付系统,包含信用卡、PayPal和比特币三种支付方式。项目采用标准Maven结构,使用Java 8特性开发。核心设计包括: 定义PaymentStrategy接口作为策略抽象,使用函数式接口和默认方法 实现三种具体支付策略类:CreditCardPayment、PayPalPayment和BitcoinPayment 每个策略类封装特定支付逻辑,如信用卡信息掩码处理、比特币金额换算等 项目配置Maven构建工具,包含JUnit测试依赖 该设计实现了支付算
2026-01-05 09:14:33
490
原创 行为型-状态模式
本文展示了一个基于状态模式的订单状态管理实现。项目采用Maven构建,包含订单状态的完整生命周期:新建(NewState)、已支付(PaidState)、已发货(ShippedState)、已交付(DeliveredState)和已取消(CancelledState)。核心接口OrderState定义了支付、发货、收货和取消等操作,每个具体状态类实现这些操作并处理状态转换。通过上下文对象OrderContext管理当前状态,实现了状态间的有序转换和业务逻辑的清晰分离。这种设计避免了大量条件判断,使状态转换更
2026-01-04 14:15:00
759
原创 行为型-观察者模式
本文展示了一个基于Maven构建的Java观察者模式实现项目。项目结构清晰,包含新闻发布者(NewsPublisher)、订阅者接口(Subscriber)和具体实现(NewsSubscriber)等核心组件,以及新闻类型枚举(NewsType)。订阅者可选择性订阅不同类型的新闻,当新闻发布时,只有订阅了相应类型的订阅者会收到更新通知。项目采用标准Maven配置,支持Java 8,实现了观察者模式的核心功能,包括订阅/取消订阅机制和类型化消息通知。
2026-01-04 08:53:08
344
原创 行为型-备忘录模式
本文介绍了一个基于Memento设计模式的文本编辑器实现。项目采用Maven构建,包含核心类:TextEditor(原发器)、TextEditorMemento(备忘录)和TextEditorHistory(负责人)。TextEditor保存编辑状态(内容、字体、字号),提供创建/恢复快照功能;TextEditorMemento存储特定时刻的编辑器状态;TextEditorHistory管理历史快照。实现展示了如何在不破坏封装性的前提下捕获和恢复对象内部状态,适用于需要撤销/重做功能的场景。代码结构清晰,通
2025-12-31 14:30:00
377
原创 行为型-中介者模式
本文展示了一个基于中介者模式的聊天室系统实现。项目采用Maven构建,包含中介者接口(Mediator)、具体聊天室中介者(ChatMediator)、用户抽象类(User)和具体聊天用户(ChatUser)四个核心组件。ChatMediator负责协调用户间通信,实现消息广播、用户管理等功能;ChatUser则封装了用户的在线状态和消息收发行为。系统通过中介者解耦用户间的直接依赖,符合"迪米特法则",展示了中介者模式在减少对象间耦合度的优势。代码结构清晰,包含完整的接口定义和具体实现,
2025-12-31 10:10:39
585
原创 行为型-迭代器模式
本文展示了一个迭代器设计模式的Java实现示例。项目采用Maven构建,包含Book实体类、BookIterator接口、LibraryIterator具体实现和BookCollection聚合接口。核心代码实现了书籍集合的遍历功能,包括hasNext()、next()和remove()等迭代器基本操作。项目结构清晰,遵循标准Maven目录布局,pom.xml配置了Java 1.8编译环境和JUnit测试依赖。这个示例完整演示了如何应用迭代器模式来封装集合的内部表示,提供统一的遍历接口。
2025-12-30 16:51:53
470
原创 行为型-命令模式
本文展示了一个基于命令设计模式的Java项目实现。项目采用Maven构建,包含电灯、吊扇和音响等接收者类,以及对应的命令类(如开关灯、调节风扇速度等)。核心Command接口定义了execute()和undo()方法,具体命令类封装了对接收者的操作。项目结构清晰,通过命令模式实现了请求发送者与接收者的解耦,支持操作撤销功能。代码使用了Lombok简化getter方法,并遵循Java 8规范。整个设计展现了命令模式将请求封装为对象的核心思想。
2025-12-30 09:01:13
465
原创 行为型-责任链模式
本文展示了一个责任链模式(Chain of Responsibility)的Java实现示例,用于处理采购审批流程。项目采用Maven构建,包含请求类(PurchaseRequest)和处理器抽象类(ApprovalHandler),并实现了项目经理(ProjectManager)和部门经理(DepartmentManager)两个具体处理器。每个处理器根据采购金额决定是否处理或转交给下一级,项目经理可审批1000元以内,部门经理可审批5000元以内的请求。代码结构清晰,体现了责任链模式的核心思想:将请求沿
2025-12-29 09:45:55
448
原创 结构型-代理模式
本文展示了一个Java代理模式实现示例,包含静态代理和保护代理两种模式。项目采用Maven构建,结构清晰:在proxy包下实现图片加载的静态代理(ImageProxy控制RealImage的延迟加载),在ProtectionProxy子包下实现基于用户角色的文档访问控制保护代理(DocumentProxy根据UserRole限制对RealDocument的操作)。代码使用Lombok简化POJO,通过接口定义统一行为,代理类在转发请求前后添加额外逻辑(如权限检查)。项目配置了Java 8编译环境,适合作为学
2025-12-26 14:15:00
492
原创 结构型-享元模式
本文展示了一个使用享元模式(Flyweight Pattern)实现的树木绘制系统。项目采用Maven构建,包含核心类:TreeType(享元对象,存储树木共享属性)、TreeContext(外部状态,存储位置信息)和Tree(组合类)。ColorType枚举定义了树木颜色类型。通过工厂模式管理TreeType对象,实现内存优化。系统可高效绘制大量树木,共享内在属性,仅保存位置等外在状态差异。代码结构清晰,符合设计模式原则,适合需要处理大量相似对象的场景。
2025-12-26 09:00:27
394
原创 结构型-外观模式
本文展示了一个外观模式(Facade Pattern)的Java实现示例。项目采用Maven构建,包含计算机和家庭影院两个子系统的实现。计算机子系统由CPU、内存和硬盘组件构成,家庭影院子系统包含DVD播放器、投影仪、音响和灯光组件。每个子系统类都封装了特定功能,如CPU的启动/关闭、DVD播放器的播放控制等。项目结构清晰,通过外观类为客户端提供简化接口,隐藏了子系统的复杂性。这个示例完整演示了外观模式在实际应用中的实现方式,适合作为设计模式学习的参考案例。
2025-12-25 15:00:00
616
原创 结构型-装饰器模式
本文展示了一个基于装饰器模式的Java通知系统实现。项目采用Maven构建,包含基础通知组件和三种装饰器扩展(SMS、Facebook、Slack)。核心结构包括:Notifier接口定义发送通知方法,BasicNotifier实现基础功能,NotifierDecorator作为装饰器基类。具体装饰器通过继承基类扩展功能,如SMSNotifierDecorator添加短信通知,FacebookNotifierDecorator支持群组发送,SlackNotifierDecorator实现频道指定。该设计遵循
2025-12-25 09:08:33
390
原创 结构型-组合模式
本文展示了一个使用组合模式(Composite Pattern)实现的文件系统示例。项目采用Maven构建,包含组件接口FileSystemComponent、抽象组件类FileSystemComponentImpl和叶子节点File的实现。核心设计通过统一接口处理文件和目录对象,支持递归操作文件系统结构。组件接口定义了获取名称、大小、显示信息等公共方法,并默认实现叶子节点行为。抽象类封装了公共逻辑如名称验证和大小格式化。File类作为叶子节点,实现了文件的具体属性和行为。该实现展示了组合模式如何让客户端以
2025-12-24 09:25:08
422
原创 spring-gateway配置详解
本文详细介绍了Spring Cloud Gateway的核心配置结构,分为全局配置和路由配置两大部分。全局配置包括过滤器、CORS、HTTP客户端等设置;路由配置则涵盖完整的路由定义,包含URI、断言、过滤器链等元素,支持路径重写、参数处理、熔断降级等功能。通过YAML示例展示了各配置项的具体用法,为构建高效API网关提供了完整参考方案。
2025-12-23 17:13:25
675
原创 结构型-桥接模式
本文展示了一个桥接模式(Bridge Pattern)的Java实现示例。项目采用Maven构建,包含形状抽象类(Shape)和颜色接口(Color)两个独立维度。Shape作为抽象部分,持有Color接口的引用,通过组合方式桥接实现部分。具体实现包括圆形(Circle)、矩形(Rectangle)等形状类,以及红色(RedColor)、蓝色(BlueColor)等颜色类。该设计解耦了抽象与实现,使它们可以独立变化,同时支持运行时动态切换颜色实现。项目结构清晰,包含测试代码,完整演示了桥接模式的核心思想。
2025-12-23 14:00:00
732
原创 结构型-适配器模式
本文展示了一个Java适配器模式实现的媒体播放器项目。项目采用Maven构建,包含目标接口MediaPlayer、具体实现AudioPlayer以及高级接口AdvancedMediaPlayer。通过MediaAdapter适配器类,将不兼容的Mp4Player和VlcPlayer适配到目标接口。项目结构清晰,使用对象适配器方式(组合)实现接口转换,使原有类能在新系统中复用。pom.xml配置了Java 8环境和JUnit测试依赖,体现了良好的工程实践。
2025-12-23 09:45:10
312
原创 创建型-原型模式
本文介绍了一个原型模式(Prototype Pattern)的Java实现示例。项目采用Maven构建,包含Shape抽象类作为原型接口,以及Circle和Rectangle等具体实现类。Shape类实现了Cloneable接口,提供浅拷贝和深拷贝两种克隆方式。Circle类展示了如何扩展基础原型,包含半径、颜色等属性,并演示了引用类型字段的处理。整个项目结构清晰,包含主程序、测试用例和缓存管理类,完整展示了原型模式在实际开发中的应用场景和实现细节。
2025-12-22 14:51:52
409
原创 创建型-建造者模式
本文展示了一个基于Builder模式的计算机配置系统实现。项目采用Maven构建,包含完整的组件类、建造者模式和测试代码。核心组件类如CPU、GPU等封装了详细属性和功能方法,通过Builder模式实现灵活的对象构建。项目结构清晰,包含产品部件、建造者、指挥者和测试模块,展示了如何通过建造者模式创建不同配置的计算机对象。Maven配置文件(pom.xml)定义了项目依赖和构建配置,确保开发环境一致性。整个实现体现了Builder模式在复杂对象创建过程中的优势,使代码更具可维护性和扩展性。
2025-12-19 18:00:00
542
原创 创建型-抽象工厂模式
本文展示了一个抽象工厂模式实现的GUI组件库项目。项目采用Maven构建,包含Windows和MacOS两种风格的按钮、复选框和文本框组件。每个组件都定义了抽象接口和具体实现,如WindowsButton和MacOSButton分别实现了Button接口。项目结构清晰,通过抽象工厂模式实现了跨平台UI组件的统一创建,使客户端代码无需关心具体实现细节。测试用例验证了不同风格组件的正确创建和行为。
2025-12-19 10:01:54
737
原创 创建型-工厂模式
本文展示了一个工厂方法模式实现的GUI按钮创建系统。系统包含产品接口Button及其具体实现WindowsButton和HTMLButton,以及抽象创建者Dialog及其子类WindowsDialog和HTMLDialog。工厂方法模式将对象创建延迟到子类,使得系统可以灵活扩展新的产品类型,同时保持客户端代码与具体产品类的解耦。项目采用Maven构建,包含完整的测试结构,演示了如何通过工厂方法实现跨平台UI组件的创建。
2025-12-19 09:31:58
341
原创 Spring Boot项目中常用自定义注解收集(持续更新)
本文介绍了Java注解的基础框架和验证类注解的实现方法。首先详细说明了元注解的用法,包括@Target、@Retention、@Documented等元注解的功能和使用场景。然后重点展示了三个实用的验证类注解实现:1) 手机号验证注解(@Phone),支持不同国家/地区的手机号格式校验;2) 身份证验证注解(@IdCard),支持大陆、港澳台等不同地区的身份证验证;3) 枚举值验证注解(@EnumValue),可校验参数值是否属于指定枚举类。每个注解都提供了完整的实现代码,包括自定义属性定义和验证器逻辑,并
2025-12-10 10:23:13
479
2
原创 Mysql在 Spring Boot 项目中的完整配置指南
本文介绍了Spring Boot集成MySQL的配置方法,包含基础配置和高级功能实现。基础配置部分详细说明了Maven依赖、application.yml/properties文件中的数据库连接、连接池(HikariCP)和JPA参数设置。高级配置部分展示了多数据源实现方案,包括配置多个DataSource和EntityManager,以及读写分离架构的实现方法。文章提供了完整的代码示例,涵盖从基础连接到复杂场景的配置要点,帮助开发者快速搭建Spring Boot与MySQL的集成环境。
2025-12-10 09:30:21
924
2
原创 xxl-job在 Spring Boot 项目中的完整配置指南
本文介绍了XXL-Job分布式任务调度的配置方法,主要包括:1)Maven依赖配置;2)YAML/Properties文件详细配置项说明;3)Spring Boot配置类的两种实现方式(基础配置类和多环境支持配置类);4)推荐使用Bean模式的任务处理器配置方式。内容涵盖执行器注册、调度中心连接、日志存储等核心功能的配置示例,适用于XXL-Job 2.4.0版本与Spring Boot项目的集成。
2025-12-09 15:25:28
624
原创 Redis在 Spring Boot 项目中的完整配置指南
本文介绍了Spring Boot集成Redis的配置方法,包括基础依赖配置和高级功能实现。主要内容涵盖:1)Maven依赖配置,包含Redis、连接池和Jackson序列化;2)application.yml基础配置,支持单节点、集群和哨兵模式;3)RedisTemplate的高级配置类,实现JSON序列化和自定义类型处理;4)缓存管理器配置,支持不同缓存设置不同过期时间。配置示例详细展示了如何通过代码实现Redis连接工厂、序列化器和缓存管理器的定制化设置。
2025-12-08 14:25:07
517
原创 Kafka在 Spring Boot 项目中的完整配置指南
本文介绍了Spring Boot集成Kafka的完整配置方案,包括Maven依赖、YAML配置和Java配置类。主要内容涵盖:1)基础依赖配置;2)生产者配置(序列化、可靠性、性能优化等);3)消费者配置(反序列化、消费组、分区策略等);4)监听器配置(批量处理、确认模式、并发控制等)。通过详细的YAML示例和Java配置类代码,提供了从基础连接到高级特性(如事务、幂等性)的完整解决方案,适合不同业务场景下的Kafka集成需求。
2025-12-08 09:30:06
636
原创 RabbitMQ在 Spring Boot 项目中的完整配置指南
本文介绍了Spring Boot集成RabbitMQ的核心配置。主要内容包括:1) 基础依赖配置,包含RabbitMQ核心依赖和JSON序列化工具;2) YAML配置文件详解,涵盖连接参数、连接池、重试机制、消息确认模式以及消费者配置等;3) 高级Java配置类,定义队列/交换机/路由键,配置JSON消息转换器,并实现RabbitTemplate的消息发送确认回调。配置支持多种高级特性如连接池管理、发布者确认、消费者重试机制等,为构建可靠的消息系统提供完整解决方案。
2025-12-05 15:27:14
513
原创 电商系统中如何应对瞬时大流量
本文系统阐述了电商秒杀场景下的高并发解决方案,从四个层面提出优化策略:前端通过静态化、防重复点击和验证码减少无效请求;网关层采用负载均衡和限流熔断机制;后端核心通过消息队列异步化、Redis原子操作扣减库存、服务隔离降级等实现削峰填谷;数据库层则采用读写分离和分库分表。文章强调"分层削峰、异步化、保护核心链路"的设计思想,并以典型秒杀流程为例,展示了各环节如何协同应对瞬时大流量冲击,在保证系统可用性的同时提升整体性能。
2025-11-26 15:11:49
613
原创 电商系统中ES检索技术设计和运用
本文介绍了电商系统搜索功能的设计与实现,包括核心需求、架构设计、索引与查询优化,以及Spring Cloud与Elasticsearch的集成方案。重点阐述了高相关性搜索、个性化体验、性能优化等关键点,并提供了实际代码示例。文章还探讨了语义搜索、机器学习排序等高级功能,最后给出版本兼容、监控和渐进式实施等实践建议。通过合理的架构设计和优化策略,可构建高效稳定的电商搜索系统。
2025-11-17 18:00:00
1178
原创 电商系统中订单生成,支付回调怎么设计?和注意事项?
本文介绍了基于Spring Cloud的电商系统中订单与支付回调流程的设计要点。订单生成需注重防重提交(如Redis令牌机制)、唯一订单号生成和异步处理,通过本地事务和MQ保证数据一致性。支付回调需处理异步通知,确保安全验签和幂等性(如查询支付记录避免重复操作)。针对微服务调用故障,建议优化接口性能、添加重试机制并设置超时降级。关键注意事项包括全链路防重幂等、安全防护、主动补单查询和全链路监控。这些设计能有效保障系统在高并发下的数据一致性和稳定性。
2025-11-17 09:32:36
1021
原创 电商系统中超卖和重复下单问题思考
在电商系统,尤其是使用SpringCloud架构时,应对“”和“”是两个核心的。这通常需要通过与等多种技术手段组合解决。在SpringCloud架构中,除了上述核心技术,一些全局设计和优化细节同样重要:幂等性设计是基石:在分布式系统中,网络超时、服务重试是常态,必须假定任何操作都可能重复。因此,所有核心接口,特别是支付回调接口,都必须实现幂等性。这通常通过校验唯一的业务流水号来实现数据同步与一致性:如果采用Redis预扣库存,需要一套可靠的机制来保证最终同步到数据库。可以考虑通过消息队列。
2025-11-15 11:36:19
655
原创 Go学习第六天
value是实际变量值,type是实际变量的类型。一个interface{}类型的变量包含了2个指针,一个指针指向值的类型【对应concrete type】,另外一个指针指向实际的值【对应value】。type: static || concrete 要么是静态类型,要么是具体类型。
2023-08-06 10:45:00
541
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅