
重拾java
文章平均质量分 78
很久没有看java了,重拾java,梳理知识
搞不懂语言的程序员
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
中间件复习(java向,示例代码为java),所有问题都会有链接单独解析
根据近些年情况整理的Java服务常用中间件及面试复习指南(每个中间件10个以上问题+实战模拟)原创 2025-04-21 21:16:40 · 1054 阅读 · 0 评论 -
解释器模式详解与真实场景案例(Java实现)
解释器模式(Interpreter Pattern) 是一种行为型设计模式,用于定义语言的文法规则,并解释执行语言中的表达式。该模式通过将语法规则分解为多个类,使得扩展和修改语法变得容易。核心思想是将每个语法规则表示为一个类,通过组合这些类来构建语法树,最终解释执行。// context存储变量值解释器模式的目的和作用是定义一个语言的文法,并构造一个解释器来解析该语言中的句子,从而实现对该语言的解释和执行。原创 2025-04-17 20:00:24 · 429 阅读 · 0 评论 -
访问者模式深度解析与实战案例
访问者模式(Visitor Pattern) 是一种行为设计模式,允许在不修改对象结构的前提下,为对象结构中的元素定义新的操作。核心思想是 算法与对象结构分离,实现 双重分派(Double Dispatch) 机制。访问者模式是在不修改被访问者类代码的前提下,通过访问者动态地为被访问者添加新的操作或功能。(多个对象)原创 2025-04-17 14:25:43 · 862 阅读 · 0 评论 -
状态模式详解与真实场景案例(Java实现)
状态模式(State Pattern) 允许对象在其内部状态改变时改变它的行为,使对象看起来像是修改了它的类。属于行为型设计模式,核心思想是将状态抽象为独立对象,不同状态下行为封装在不同状态类中。// 订单状态接口// 支付// 取消// 发货// 收货// 完成// 初始状态// 委托操作给当前状态状态模式就是将状态都独立出来,将状态与实际业务解耦。相对于策略模式,状态与状态之间有联系,策略与策略之间是独立的。原创 2025-04-16 16:21:31 · 551 阅读 · 0 评论 -
备忘录模式深度解析与实战案例
备忘录模式(Memento Pattern) 是一种行为设计模式,用于在不破坏对象封装性的前提下,捕获并保存对象的内部状态,以便后续恢复。核心思想是 状态快照管理,常用于实现撤销/重做、事务回滚等功能。备忘录模式主要解决的是对象状态的保存和恢复问题,通过创建备忘录对象来存储和恢复对象的内部状态。原创 2025-04-15 11:27:46 · 453 阅读 · 0 评论 -
中介者模式详解及真实场景解决方案
中介者模式是一种行为设计模式,通过引入中介对象来封装一组对象之间的交互。该模式将对象间的网状交互转变为星型结构,有效降低对象间的耦合度,并简化系统的维护复杂度。对象间存在复杂的网状引用关系需要集中控制多个组件的交互需要维护交互历史记录系统需要支持不同交互协议需要实现跨网络的分布式通信在中型以上系统中使用中介者模式,通常可以降低30%-50%的组件间耦合度。该模式特别适用于航空管制系统、聊天应用、分布式系统协调器等场景。原创 2025-04-10 10:37:52 · 480 阅读 · 0 评论 -
迭代器模式深度解析与实战案例
迭代器模式(Iterator Pattern) 是一种行为设计模式,提供一种方法顺序访问聚合对象的元素,无需暴露其底层表示。核心思想是将遍历逻辑从聚合对象中分离,实现 遍历与存储的解耦。迭代器模式是为了提供一种能顺序遍历对象的解决方案,该方案不对外暴露存储细节。原创 2025-04-09 17:21:16 · 388 阅读 · 0 评论 -
设计模式-命令模式详解
命令模式是一种行为设计模式,将请求封装为独立对象,包含执行操作所需的所有信息。通过这种方式,可以实现请求的参数化、队列管理、撤销/重做等高级功能,同时解耦请求发送者与接收者。需要将操作请求者与实现者解耦需要支持事务性操作(执行/撤销)需要支持命令队列或日志功能需要支持高层操作(组合命令)需要实现不同时刻指定请求通过命令模式可以提升系统扩展性达40%以上,特别是在需要支持复杂操作管理的IoT系统、图形编辑器、事务处理系统等领域效果显著。原创 2025-04-09 17:01:51 · 437 阅读 · 0 评论 -
责任链模式详解
责任链模式(Chain of Responsibility) 是一种行为设计模式,允许将请求沿着处理链传递,直到某个处理对象决定处理该请求。核心思想是 解耦请求发送者与接收者,每个处理者持有对下一个处理者的引用,形成处理链。责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行传递,每个处理者都有机会对请求进行处理。原创 2025-04-08 11:48:25 · 521 阅读 · 0 评论 -
策略模式结合模板方法模式
上面的模板方法由依赖具体策略变成依赖抽象策略接口interface OrderProcessingStrategy,这里就比较好的结合了两个设计模式。原创 2025-04-07 10:57:39 · 275 阅读 · 0 评论 -
模板方法模式详解
模板方法模式是一种行为设计模式,在父类中定义算法的骨架,允许子类在不改变算法结构的情况下重写特定步骤。核心思想是通过固定流程框架与可变步骤实现的分离,实现代码复用和扩展控制。多个子类有相同流程但不同实现细节需要严格控制核心流程的执行顺序存在多个相似流程需要统一维护系统需要支持流程的渐进式扩展需要对核心流程进行统一监控或统计通过合理使用模板方法模式,可以提升代码复用率到70%以上,同时保持系统的扩展性和可维护性。当遇到需要动态修改流程结构的需求时,可考虑与责任链模式结合使用。原创 2025-04-07 10:46:50 · 534 阅读 · 0 评论 -
策略模式详解
策略模式定义了一系列算法,将每个算法封装起来,具体的业务对象依赖算法的抽象,运行期间可以进行策略的互换。原创 2025-04-07 10:31:39 · 273 阅读 · 0 评论 -
观察者模式详解实战
观察者模式是定义对象间一种一对多的依赖关系,使得每当一个对象状态发生变化时,其所有依赖者都会得到通知并被自动更新。原创 2025-04-07 10:16:35 · 858 阅读 · 0 评论 -
代理模式-spring关键设计模式,bean的增强,AOP的实现
代理模式的目的就是为了在不改变原有对象的基础上,对原有对象进行增强。原创 2025-04-02 16:52:30 · 323 阅读 · 0 评论 -
享元模式详解--初听很抽象,实际是共享内存概念
享元模式主要是为了解决有大量相同属性的对象,通过使用同一个对象的方式减少内存的消耗,如果对象属性不相同或者对象可变不建议使用享元模式。原创 2025-04-02 16:16:02 · 462 阅读 · 0 评论 -
外观模式详解
门面模式主要是为了解决对外暴露接口的细节问题,通过门面的方式隐藏细节。与适配器模式不同的是,适配器模式主要是当前子系统对外部调用接口进行适配,而门面模式是内部接口开给外部的细节隐藏。门面模式是帮别人适配,适配器模式是我适配别人。原创 2025-04-01 11:25:22 · 273 阅读 · 0 评论 -
装饰器模式详解
装饰器模式是通过组合的方式将一个实现了共同接口或抽象类的对象进行包装,并在执行时按照装饰的顺序进行递归调用,以实现功能的动态扩展。原创 2025-04-01 11:07:24 · 439 阅读 · 0 评论 -
组合模式详解
组合模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。组合模式和桥接模式都是依赖抽象,但是组合模式更注重整体和局部的关联,而桥接模式更注重依赖抽象,不会去关注依赖对象之间的关联。原创 2025-03-21 11:34:55 · 393 阅读 · 0 评论 -
桥接模式详解
桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们都可以独立地变化。原创 2025-03-18 17:29:27 · 249 阅读 · 0 评论 -
适配器模式详解
适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口,使原本不兼容的类能够协同工作。原创 2025-03-18 17:07:11 · 195 阅读 · 0 评论 -
原型模式详解
原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制已有对象来创建新对象,而不需要使用显式的构造函数调用来创建。建议学习原型可以使用debug看一下java对象地址或者对象序号。原创 2025-03-18 11:48:26 · 446 阅读 · 0 评论 -
建造者模式详解
建造者模式通过分步设置参数与校验,灵活构建复杂对象,提升代码可读性与可维护性。原创 2025-03-18 09:32:37 · 328 阅读 · 0 评论 -
工厂方法模式和抽象工厂模式详解
场景描述开发一个跨平台UI库,需要为Windows和macOS创建风格一致的按钮和文本框,并确保同一家族的产品兼容。// 抽象产品族:按钮// 抽象产品族:文本框// 具体产品:Windows按钮@OverrideSystem.out.println("Windows风格按钮渲染");// 具体产品:Windows文本框@OverrideSystem.out.println("Windows文本框输入: " + text);// 具体产品:macOS按钮@Override。原创 2025-03-17 17:09:05 · 398 阅读 · 0 评论 -
单例模式详解(java)
使用双重检查锁定 + volatile 确保线程安全。比纯synchronized方法性能更高。实现readResolve()方法。需要极致性能:静态内部类+防御增强。简单场景:枚举单例(JDK5+)复杂需求:本文的DCL防御增强版。构造器中增加实例存在性检查。保证反序列化返回现有实例。防御通过反射创建新实例。真正需要时才初始化实例。避免饿汉式的资源浪费。原创 2025-03-17 16:42:43 · 396 阅读 · 0 评论 -
市面上常用的23种设计模式,分析实现方式以及实际使用场景案例
粗略介绍一遍设计模式,后续会在这个帖子更新设计模式案例场景,java。原创 2025-03-13 15:49:35 · 907 阅读 · 0 评论 -
如何优化SQL查询?
优化 SQL 查询需要结合 索引设计、语句重构、配置调优 和 表结构设计 多维度处理。核心原则是减少磁盘 I/O、降低 CPU 计算、合理利用内存。针对 MySQL 的特性,重点关注 B+Tree 索引、InnoDB 缓冲池、执行计划分析和 MVCC 机制。实际开发中,应通过 EXPLAIN 和慢查询日志持续监控并优化关键查询。原创 2025-03-08 09:43:53 · 945 阅读 · 0 评论 -
数据库事务的 ACID,通过MVCC能做什么
MVCC 核心:通过多版本和一致性视图实现无锁并发控制。解决脏读:只读取已提交的版本。解决不可重复读:事务内复用同一 Read View。解决幻读:快照读通过版本控制,当前读通过间隙锁。适用场景:读多写少的高并发系统(如电商、社交平台)。通过 MVCC,数据库在保证 ACID 特性的同时,显著提升了并发性能,是现代关系型数据库(如 MySQL、PostgreSQL)的核心并发控制机制。原创 2025-03-05 16:35:06 · 1133 阅读 · 0 评论 -
Spring MVC 工作流程详解
Spring MVC 工作流程详解。原创 2025-03-04 20:02:04 · 857 阅读 · 0 评论 -
spring切面实现的几种方式
在Spring框架中,实现自定义注解的切面增强主要有三种方式:使用@Aspect注解、编写拦截器切面(如HandlerInterceptor)以及手动生成代理类(如JDK动态代理或CGLIB)。原创 2025-03-04 19:41:31 · 1166 阅读 · 0 评论 -
Spring中的事务管理是如何实现的?
作用:定义事务的传播行为、隔离级别、超时时间、是否只读等属性。关键属性:传播行为(Propagation):(如 PROPAGATION_REQUIRED:如果当前没有事务,则新建事务;存在则加入)。隔离级别(Isolation):(如 ISOLATION_READ_COMMITTED:避免脏读)。超时时间(Timeout):事务的最长执行时间(秒)。只读(Read-Only):优化数据库访问(如只读查询)。原创 2025-03-04 15:03:00 · 1047 阅读 · 0 评论 -
spring 生产bean代理对象作用
AOP 需求:在目标方法执行前后插入额外逻辑。作用域代理:确保作用域(如原型、请求、会话)的正确行为。循环依赖:通过提前暴露代理对象解决循环依赖。懒加载:延迟 Bean 的初始化,提升启动性能。事务管理:通过代理对象实现声明式事务管理。原创 2025-03-04 14:49:56 · 552 阅读 · 0 评论 -
Spring Boot 自动配置原理及 MyBatis Mapper 自动注册源码解析
Mapper // 标记为 MyBatis Mapper@MapperScan("com.example.mapper") // 显式指定扫描包启动阶段:@SpringBootApplication 包含 @EnableAutoConfiguration,触发加载 MybatisAutoConfiguration。MybatisAutoConfiguration 检查条件(数据源、MyBatis 类是否存在)。原创 2025-03-03 19:45:54 · 855 阅读 · 0 评论 -
MyBatis如何使用jdk动态代理结合mapper的配置文件生成类,从源码分析
启动阶段:解析所有 Mapper XML 文件,创建 MappedStatement 并注册到 Configuration。为每个 Mapper 接口创建 MapperProxyFactory,存入 MapperRegistry。运行时调用:调用 sqlSession.getMapper(UserMapper.class)。通过 MapperProxyFactory 生成代理对象(JDK 动态代理)。原创 2025-03-03 19:44:03 · 633 阅读 · 0 评论 -
Spring Bean 的生命周期
生命周期价值:通过钩子方法(如 @PostConstruct、@PreDestroy)精确控制 Bean 的初始化和销毁逻辑。适用场景:资源管理、数据预热、配置校验、监控日志、动态注册等需与容器生命周期同步的操作。最佳实践:优先使用标准注解(而非接口)降低耦合,确保逻辑轻量以避免启动延迟。原创 2025-02-28 09:35:15 · 657 阅读 · 0 评论 -
Spring doScan源码详解
作用:扫描指定的包路径,查找候选 Bean 并注册到容器。参数:basePackages 表示要扫描的基础包路径(如 com.example.service)。返回值:包含所有注册的 Bean 定义及其名称的集合(BeanDefinitionHolder)。作用:调用 findCandidateComponents 扫描包路径下的类文件,识别带有注解(如 @Component)的类,生成 BeanDefinition。原创 2025-02-27 11:48:02 · 758 阅读 · 0 评论 -
从源码角度解析 Spring 中的 IoC 和 AOP
功能 核心类/接口 作用IoC 容器 ApplicationContext 管理 Bean 的生命周期和依赖关系Bean 定义解析 AnnotatedBeanDefinitionReader 解析 @Component、@Bean 注解依赖注入 AutowiredAnnotationBeanPostProcessor 处理 @Autowired 和 @Value 注入AOP 代理生成 AnnotationAwareAspectJAutoProxyCreator 创建动态代理对象。原创 2025-02-25 19:16:01 · 803 阅读 · 0 评论 -
spring IOC关键步骤详解
核心流程扫描类路径:入口:ClassPathBeanDefinitionScanner#scan,扫描指定包下的类。过滤条件:通过 @Component、@Service 等注解标记的类会被识别为候选 Bean。// 扫描类路径,解析带有@Component的类解析注解生成 BeanDefinition:通过 AnnotatedBeanDefinitionReader 解析 @Configuration、@Bean 等注解。// 生成 BeanDefinition。原创 2025-02-25 19:15:25 · 891 阅读 · 0 评论 -
类加载机制与双亲委派模型详解
类加载机制:负责将类的字节码加载到内存并生成Class对象。通过委派机制确保类的唯一性和安全性,防止核心类库被篡改。这个可以了解一下,可以理解为什么自己写一个String类型无法篡改原生的String。原创 2025-02-25 11:12:58 · 254 阅读 · 0 评论 -
如何使用java自带工具排查内存泄漏(后续实战)
监控工具:优先用 jstat 观察内存趋势,jmap 生成堆转储。分析工具:VisualVM 或 JProfiler 图形化分析更高效。核心思路:找到无法回收的大对象,通过引用链定位代码中的持有者。高频场景:静态集合、缓存未清理、监听器未注销、线程池未关闭等。原创 2025-02-19 18:22:04 · 787 阅读 · 0 评论 -
java垃圾回收器学习
经过不断的更新换代,主要使用的还是G1垃圾回收器,大家可以主要去了解下其相关源码,其他垃圾回收器可以适当学习。G1 垃圾回收器(Garbage-First GC)原创 2025-02-17 15:52:37 · 713 阅读 · 0 评论