摘要: 一、ByteArrayInputStream的源码——零拷贝(Zero-Copy)的一种字节流 在传统的磁盘 I/O(比如FileInputStream.class、BufferedInputStream.class...等) 中,使用者都需要将磁盘的数据先复制到内存中来使用而无法实现零拷贝(Zer 阅读全文
posted @ 2026-05-10 23:01 Carey_ccl 阅读(81) 评论(0) 推荐(0)
摘要: 一、FileInputStream的源码分析和使用方法详细分析 FileInputStream 是 Java IO 体系中文件读取的基础类,通过封装操作系统的文件操作,提供了简单易用的字节流读取接口。其设计融合了模板方法模式(统一接口)、适配器模式(屏蔽系统差异)和代理模式(资源生命周期管理),是面 阅读全文
posted @ 2026-04-26 19:57 Carey_ccl 阅读(92) 评论(0) 推荐(0)
摘要: 在多线程编程中,线程间的数据交换是一个常见需求。Java IO包中的PipedInputStream和PipedOutputStream提供了一种高效的线程间通信机制,允许一批(多个)线程向PipedOutputStream写入数据,另一批(多个)线程从PipedInputStream读取数据。 但 阅读全文
posted @ 2026-02-19 22:07 Carey_ccl 阅读(172) 评论(1) 推荐(1)
摘要: 一、SequenceInputStream源码——可以顺序读取多个输入Stream的装饰器类 SequenceInputStream.class 的UML关系图,如下所示: SequenceInputStream.class的源码,如下所示: package java.io; import java 阅读全文
posted @ 2026-02-15 22:25 Carey_ccl 阅读(149) 评论(1) 推荐(0)
摘要: 7、InputStream的源码、FilterInputStream源码、BufferedInputStream的源码(windows操作系统,JDK8) https://img2024.cnblogs.com/blog/2485827/202602/2485827-20260206185514108-756686379.png 阅读全文
posted @ 2026-02-14 09:26 Carey_ccl 阅读(271) 评论(1) 推荐(0)
摘要: 一、DatagramChannel DatagramChannel 是一种能够发送和接收 UDP 数据包的Channel ,由于 UDP 是一种无连接的网络协议,所以默认情况下,使用者不能像对其它Channel(比如ServerSocketChannel和SocketChannel)那样直接对 Da 阅读全文
posted @ 2026-02-03 09:53 Carey_ccl 阅读(17) 评论(0) 推荐(0)
摘要: Java NIO 由以下几个核心部分组成: ①、Channels,类似于传统IO中的流(Stream); ②、Buffers; ③、Selectors 虽然Java NIO 中除此之外还有很多类和组件,但是核心还是Channel,Buffer 和 Selector ,像其它组件Pipe、FileLo 阅读全文
posted @ 2026-02-03 09:35 Carey_ccl 阅读(39) 评论(0) 推荐(0)
摘要: Spring-Boot 特点如下: ①、创建独立的 Spring 应用程序; ②、嵌入的 Tomcat,无须部署 .war 文件; ③、简化 Maven 配置; ④、自动配置 Spring; ⑤、提供生产就绪型功能,如指标、健康检查和外部配置;绝对没有代码生成,以及对XMIL没有配置要求。 1、启动 阅读全文
posted @ 2026-01-18 22:35 Carey_ccl 阅读(31) 评论(0) 推荐(0)
摘要: Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间或分布式系统中发送消息,并进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数 MOM 提供商都对 JMS 提供支持。 阅读全文
posted @ 2026-01-17 11:54 Carey_ccl 阅读(11) 评论(0) 推荐(0)
摘要: Java远程方法调用,即JavaRMI(JavaRemote Method Invocation),是Java 编程语言里一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使 Java 编程人员能够在网络环境中分布操作。RMI全部的宗旨就是 阅读全文
posted @ 2026-01-15 23:05 Carey_ccl 阅读(11) 评论(0) 推荐(0)
摘要: 阅读此篇博客之前,请先阅读上一篇博客的内容:Spring 源码解析12——整合SpringMVC(一) 1、DispatcherServlet 的逻辑处理 根据之前的示例,我们知道在HttpServlet.class中分别提供了相应的服务方法,它们是doDelete()、doGet()、doOpti 阅读全文
posted @ 2026-01-12 20:48 Carey_ccl 阅读(25) 评论(0) 推荐(0)
摘要: Spring 的 MVC是基于 Servlet功能实现的,通过实现 Servlet接口的 DispatcherServlet 来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射、视图解析本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的Controller.in 阅读全文
posted @ 2026-01-12 09:05 Carey_ccl 阅读(9) 评论(0) 推荐(0)
摘要: MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis。 MyBatis是支持普通 SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有 阅读全文
posted @ 2026-01-02 20:47 Carey_ccl 阅读(15) 评论(0) 推荐(0)
摘要: JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行 SQL语句的 Java API可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的 API,据此可以构建更高级的工具和接口,使数据库开 阅读全文
posted @ 2026-01-02 16:18 Carey_ccl 阅读(10) 评论(0) 推荐(0)
摘要: 1、创建AOP静态代理 AOP 的静态代理主要是在虚拟机启动时通过改变 目标对象字节码的方式来完成对目标对象的增强,它与动态代理相比具有更高的效率,因为在动态代理调用的过程中,还需要一个动态创建代理类并代理目标对象的步骤,而静态代理则是在启动时便完成了字节码增强,当系统再次调用目标类时与调用正常的类 阅读全文
posted @ 2026-01-01 21:07 Carey_ccl 阅读(10) 评论(0) 推荐(0)
摘要: 1、动态AOP自定义标签 如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。我们搜索整个代码,尝试找到注册的地方,全局搜索后发现了在AopNamespaceHandler.class 中对应着这样一段函数: public class AopNamespaceHandler e 阅读全文
posted @ 2025-12-28 23:46 Carey_ccl 阅读(16) 评论(0) 推荐(0)
摘要: 1、ApplicationContext.interface接口介绍 在前面博客中,我们一直BeanFactory.interface接口的实现类XmlBeanFactory.java,Spring中可以通过这个class实现加载配置文件的功能。但是,Spring中还提供了另一个接口Applicat 阅读全文
posted @ 2025-12-27 11:03 Carey_ccl 阅读(13) 评论(0) 推荐(0)
摘要: 8、创建Bean(接Spring源码解析5——bean的加载(一) 中标题6、创建ObjectFactory<?>.java类型的实例(准备创建Bean)的第④步) 当经历了AbstractAutowireCapableBeanFactory.java:createBean() 中的 Abstrac 阅读全文
posted @ 2025-12-26 12:32 Carey_ccl 阅读(19) 评论(0) 推荐(0)
摘要: 1、加载bean的概述 当Spring将Xml配置文件的解析后,生成了BeanDefinition.interface类型的各种配置实例,如:GenericBeanDefinition.java等。接下来,就要解析BeanDefinition.interface类型的各种配置,生成我们需要的实例。 阅读全文
posted @ 2025-12-26 12:31 Carey_ccl 阅读(14) 评论(0) 推荐(0)
摘要: 1、解析函数入口 2、自定义标签的使用 Spring可以为系统提供可配置化支持,简单做法就是直接基于Spring的标准bean来配置,但是spring的标准bean在配置较为复杂或是需要更多丰富控制的时候,会显得非常笨拙。一般做法会用原生态的方式解析定义好的XML文件,然后转化为配置对象。 Spri 阅读全文
posted @ 2025-12-26 12:31 Carey_ccl 阅读(6) 评论(0) 推荐(0)
摘要: UTF-8(Unicode Transformation Format-8-bit)是一种针对 Unicode 的可变长度字符编码,通过 1 至 4 个字节表示一个字符,完美兼容 ASCII 编码,同时支持全球所有语言的字符(包括中文、日文、韩文、阿拉伯语等)。其核心设计思想是通过首字节的标识符确定 阅读全文
posted @ 2026-05-06 16:33 Carey_ccl 阅读(89) 评论(0) 推荐(0)
摘要: SEATA的AT模式和XA模式一样,也是2阶段提交,但是AT模式没有利用数据库的XA协议,如下所示: 从上面的图可以看到,seata AT 模式分为以下5个步骤: ①、TM(事务管理器) 开启全局事务; ②、RM 向 TC(事务协调者) 注册分支事务; ③、RM(资源管理器,也就是要访问数据库的进程 阅读全文
posted @ 2026-03-30 12:06 Carey_ccl 阅读(122) 评论(0) 推荐(0)
摘要: 一、传统分布式XA事务的2PC 2PC 即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2 是指两个阶段,P 是指准备阶段,C 是指提交阶段。常见的关系型数据库如 Oracle、MySQL 都支持两阶段提交协议,如下图: 阅读全文
posted @ 2026-03-28 09:18 Carey_ccl 阅读(156) 评论(0) 推荐(0)
摘要: 一、事务的实现 1.1、事务的执行流程 根据上图,事务的执行流程如下: ①查询操作先从Buffer Pool中查询数据,若存在则直接输出,不存在则读取磁盘中的数据并放入Buffer Pool; ②在操作任何数据之前,会先将数据的旧值写入undo log日志文件中,以便执行事务过程中出现异常后好回滚到 阅读全文
posted @ 2026-03-27 22:54 Carey_ccl 阅读(35) 评论(0) 推荐(0)
摘要: 一、事务的基本介绍 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。事务又4大特性: 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败。 持久性(durability):当事务提交或回滚后,数据库会持久化的保存数据。 隔离性( 阅读全文
posted @ 2026-03-27 22:27 Carey_ccl 阅读(13) 评论(0) 推荐(0)