- 博客(30)
- 资源 (3)
- 收藏
- 关注
原创 网络体系结构、网络协议、网络协议分层、TCP/IP 原理
计算机网络体系结构与协议摘要 分层体系结构是计算机网络的核心设计思想,通过将复杂功能划分为多个层次(如OSI 7层或TCP/IP 4层),实现模块化、标准化和可扩展性。
2025-07-17 19:00:53
669
原创 MyBatis 动态 SQL、#{}与 ${}区别、与 Hibernate区别、延迟加载、优势、XML映射关系
MyBatis 动态 SQL、#{}与${}区别、与 Hibernate区别、延迟加载、优势、XML映射关系
2025-07-16 13:30:54
1066
原创 MyBatis 核心知识点、插件
MyBatis核心知识点摘要 MyBatis核心流程分为四部分:配置加载、会话管理、SQL执行和元数据封装。配置加载通过解析XML文件生成全局Configuration对象;SqlSession负责会话生命周期管理,需注意线程安全问题;Executor是SQL执行核心,分为SimpleExecutor、ReuseExecutor和BatchExecutor三种实现;MappedStatement封装SQL元数据。MyBatis通过动态代理实现Mapper接口,支持事务管理和连接池配置,适用于复杂SQL场景。
2025-07-15 13:21:56
432
原创 JPA、缓存、数据源与连接池、简介
摘要:JPA(Java Persistence API)是Java官方定义的ORM规范,通过注解或XML映射实现对象与数据库的解耦。其核心组件包括实体类(Entity)、实体管理器(EntityManager)、持久化单元(Persistence Unit)和持久化上下文(Persistence Context),分别负责数据映射、数据库操作、配置管理和实体状态跟踪。JPA支持本地事务(单数据源)和JTA全局事务(多数据源),本地事务通过JDBC连接管理,JTA事务依赖应用服务器协调多资源。持久化上下文自动
2025-07-15 02:30:15
429
原创 多线程(6)
本文深入解析进程调度算法和CAS机制两大并发编程核心主题。进程调度部分系统介绍了FCFS、SJF、优先级调度、时间片轮转和多级反馈队列等算法,分析其原理、优缺点及适用场景,帮助开发者根据系统需求选择合适的调度策略。CAS机制部分聚焦无锁编程,详细讲解其乐观锁实现原理、典型应用和潜在问题,如ABA问题及其解决方案,为构建高性能并发系统提供关键技术指导。
2025-07-14 19:04:37
684
原创 多线程(5)
多线程编程中的协作与陷阱 线程上下文切换是操作系统实现多任务并发的核心机制,通过保存当前任务状态(寄存器、程序计数器)到PCB并加载新任务状态,让多个任务在单CPU上"分时"运行。触发原因包括时间片耗尽、IO阻塞、锁竞争等。 同步锁(如Java的synchronized)是解决线程安全问题的关键工具,通过互斥访问共享资源防止数据竞争,但也可能导致死锁。死锁发生的四大必要条件:互斥、持有并等待、不可抢占和循环等待。预防死锁的策略包括:按固定顺序加锁、一次性申请所有资源、使用超时机制等。 [
2025-07-14 18:41:48
345
原创 多线程(4)
Java线程池中主线程等待子线程执行完成的方法总结 本文介绍了三种Java中主线程等待子线程执行完成的方法: Thread.join():基础方法,主线程阻塞等待单个子线程完成。适合简单场景,可设置超时时间,但需注意多次调用和中断处理。 Future与Callable:通过ExecutorService提交任务,使用Future.get()阻塞获取结果。适用于需要返回值的异步任务,需处理异常和关闭线程池。 CountDownLatch:通过计数器实现多线程同步,主线程等待所有子线程完成。适合批量任务处理场景
2025-07-11 17:25:31
420
原创 多线程(2)
ThreadLocal可能导致OOM的核心原因在于线程池中的线程长期存活时,未及时清理ThreadLocal变量。其关键问题在于: ThreadLocalMap中Entry的Key是弱引用,会被GC回收,但Value是强引用 线程池复用线程时,ThreadLocal变量会持续累积 仅靠惰性清理机制无法彻底清除无效Entry 当存储大对象且未调用remove()时,内存泄漏最终导致OOM 解决方案:使用ThreadLocal后必须调用remove()方法,尤其在线程池场景中。
2025-07-09 17:26:17
1034
原创 Spring AOP:从代理创建到切点匹配
本文深入解析Spring AOP的运行时原理,主要从代理对象生成、通知执行链路和切点匹配三个维度展开分析。在代理创建方面,详细介绍了ProxyFactory的核心组件及JDK动态代理与CGLIB代理的选择逻辑和实现机制;在通知执行方面,阐述了五种通知类型的特点和执行顺序,并以环绕通知为例说明其底层执行流程。通过源码分析和示例代码,揭示了Spring AOP通过动态代理技术实现业务逻辑解耦的核心机制。
2025-07-09 02:45:16
667
原创 多线程(1)
程序、进程和线程是计算机系统中的核心概念:程序是静态代码集合,进程是程序的动态执行实例(资源分配单位),线程是进程内的执行单元(CPU调度单位)。线程状态包括新建、可运行、阻塞、等待、超时等待和终止。内存泄漏指无用对象因被强引用持有而无法被回收,常见原因包括静态集合未清理、未关闭资源、未注销监听器等。解决方法是及时释放引用、关闭资源和使用弱引用等工具。
2025-07-08 17:38:33
1223
原创 MsSql 其他(2)
MySQL中的MVCC机制解析 MVCC(多版本并发控制)是InnoDB实现高并发的核心机制,通过保存数据历史版本,实现“读不阻塞写,写不阻塞读”。其核心组件包括: 隐藏字段:每行记录的DB_TRX_ID(事务ID)、DB_ROLL_PTR(回滚指针)和DB_ROW_ID(隐藏主键),用于追踪版本链。 undo log:存储历史版本,支持事务回滚和MVCC读,通过版本链回溯实现多版本访问。 事务隔离级别:不同级别下MVCC行为不同: READ COMMITTED:每次读最新已提交版本; REPEATABLE
2025-07-07 17:57:55
883
原创 MySql 其他(1)
Spring实现事务管理的核心机制是通过AOP实现声明式事务,支持编程式和声明式两种方式。主要实现包括:1) 编程式事务(手动控制事务边界,适合复杂逻辑);2) TransactionProxyFactoryBean(早期XML配置方式);3) AspectJ XML配置(更灵活的切面定义);4) @Transactional注解(主流方式,简洁高效)。Spring事务基于PlatformTransactionManager接口,支持JDBC、Hibernate等不同持久层框架,通过事务传播行为和隔离级别控
2025-07-07 02:46:24
645
原创 CGLIB代理核心原理
摘要: CGLIB通过ASM字节码生成技术动态创建目标类的子类代理,实现对非final方法的拦截与增强。其核心流程包括:1)通过ClassReader解析目标类字节码;2)使用ClassWriter生成代理子类,重写可代理方法并插入拦截器调用;3)通过MethodInterceptor实现方法拦截逻辑。相比反射调用,MethodProxy通过ASM生成直接调用父类方法的字节码,性能显著提升。CGLIB适用于代理无接口的类,是Spring AOP等框架的底层实现基础。
2025-07-06 18:53:21
785
2
原创 Mysql 数据库结构优化
MySQL数据库优化与故障处理摘要 数据库结构优化策略 核心优化方向包括垂直拆分(分解大表)、水平拆分(分区与分表)、中间表(预计算联合查询)、合理冗余(反范式优化)、数据类型优化(减小存储)、索引优化(加速查询)。需结合业务场景与数据特征,在查询性能与写复杂度之间找到平衡。 CPU飙升500%的紧急处理 确认mysqld进程是否为CPU主占用源 通过SHOW PROCESSLIST定位高消耗SQL会话 分析问题SQL的执行计划(EXPLAIN) 临时处理:终止恶性会话(KILL命令) 长期优化:添加缺失索
2025-07-06 16:27:08
1131
原创 JDK 代理原理
分析了代理模式的核心价值,通过静态代理展示其基础实现与局限性。随后提出了自定义InvocationHandler的解耦方案,并逐步演进到JDK风格动态代理的手动模拟实现。
2025-07-06 04:58:39
1175
原创 MySql 常用SQL语句、 SQL优化
SQL语句主要分为五类:数据定义语言(DDL)用于管理数据库结构,数据查询语言(DQL)用于检索数据,数据操纵语言(DML)用于增删改数据,数据控制语言(DCL)用于权限管理,事务控制语言(TCL)用于事务管理。键约束方面,超键能唯一标识行,候选键是最小超键,主键是选定的候选键,外键则关联表间数据。SQL约束包括非空、唯一、主键、外键、检查及默认值约束,确保数据完整性。
2025-07-05 03:30:38
898
原创 Mysql 视图、存储过程与函数、触发器
视图是数据库中的虚拟表,本质是预定义SQL查询的逻辑表示,不存储实际数据,而是动态生成结果。其核心价值在于抽象与封装,能简化复杂查询、增强数据安全、维护兼容性、简化多表操作及权限隔离。视图的特点包括虚拟性、动态性、异构性、安全性、更新限制性、依赖性、复用性和兼容性。常见应用场景包括复用复杂查询、简化日常操作、控制数据访问、隔离底层变更及多租户数据隔离。视图通过逻辑抽象提升灵活性和安全性,是数据库设计的重要工具。
2025-07-04 13:14:59
986
原创 AOP代理-字节码增强与类加载机制
本文系统解析Java生态中五种主流AOP实现方案的底层原理,重点剖析Spring AOP与AspectJ的深度整合机制。Spring AOP通过@EnableAspectJAutoProxy注册自动代理处理器,结合CGLIB或JDK动态代理实现切面逻辑。文章深入探讨了LTW(加载时织入)技术,通过Java Agent机制修改字节码,并使用Byte Buddy等工具实现方法增强。内容涵盖字节码操作、类加载机制等底层细节,为开发者提供全面的AOP技术图谱。
2025-06-29 03:27:05
968
原创 Spring作用域与生命周期
Spring作用域与生命周期机制解析 摘要:本文深入探讨Spring框架中作用域(Scope)与生命周期回调的核心机制。分析五种作用域(singleton/prototype/request/session/application)的底层实现,重点解读DefaultSingletonBeanRegistry的单例缓存结构。通过源码解析揭示@PostConstruct/InitializingBean/init-method等初始化阶段的执行顺序,以及@PreDestroy/DestroyableBean/d
2025-06-23 02:47:54
902
原创 Spring生命周期:Aware接口、InitializingBean与初始化流程的底层原理
深入剖析Spring框架中Bean生命周期的核心机制,包括Aware接口注入、依赖注入和初始化方法的执行顺序。
2025-06-17 02:19:00
601
原创 BeanFactoryPostProcessor 容器初始化的底层原理
BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor两大核心扩展点的原理与实现
2025-06-16 13:29:33
671
原创 Spring Bean后处理器
摘要 本文深入解析Spring框架中BeanPostProcessor的执行流程,涵盖依赖注入、生命周期回调和属性绑定的核心机制。通过GenericApplicationContext的初始化流程,详细阐述了Bean定义注册、后处理器注册以及Bean实例化的完整过程。重点分析了@Autowired、@Resource、@Value注解的处理逻辑,以及@PostConstruct和@PreDestroy回调的执行时机。源码层面展示了AutowiredAnnotationBeanPostProcessor等核心
2025-06-15 04:16:24
871
原创 Spring Bean生命周期
Spring框架的核心能力之一是Bean的生命周期管理。通过容器对Bean的创建、初始化、使用到销毁的全生命周期进行管控,可以专注于业务逻辑,而无需手动处理对象的创建与资源释放。
2025-06-13 13:35:43
1298
原创 Spring不同类型的ApplicationContext的创建方式
Spring框架的核心机制围绕ApplicationContext接口展开,通过控制反转(IoC)和依赖注入(DI)管理Bean生命周期。本文从底层原理到实战应用,重点解析了5大场景:1) 手动通过DefaultListableBeanFactory加载XML配置,揭示IoC容器核心数据结构;2) 类路径XML配置的ClassPathXmlApplicationContext实现;3) 文件系统XML配置加载;4) Java注解配置方式;5) Web环境集成。通过源码分析和调试验证,详细展示了BeanDef
2025-06-09 18:09:34
805
原创 BeanFactory与ApplicationContext的协作机制
第一种方式控制层/** * 获取课程下的所有章节和课时信息(树形) * * @return Result */ @ApiOperation("获取课程下的所有章节和课时信息(树形)") @GetMapping("/acquireChapter/{courseId}") public Result acquireChapterInfo(@ApiParam(name = "courseId", value = "课程id", required
2025-06-09 17:07:01
962
原创 BeanFactory 实现
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2025-06-09 14:54:26
1104
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人