摘要: 在多线程编程中,线程间的数据交换是一个常见需求。Java IO包中的PipedInputStream和PipedOutputStream提供了一种高效的线程间通信机制,允许一批(多个)线程向PipedOutputStream写入数据,另一批(多个)线程从PipedInputStream读取数据。 但 阅读全文
posted @ 2026-02-19 22:07 Carey_ccl 阅读(151) 评论(1) 推荐(1)
摘要: 一、SequenceInputStream源码——可以顺序读取多个输入Stream的装饰器类 SequenceInputStream.class 的UML关系图,如下所示: SequenceInputStream.class的源码,如下所示: package java.io; import java 阅读全文
posted @ 2026-02-15 22:25 Carey_ccl 阅读(134) 评论(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 阅读(256) 评论(1) 推荐(0)
摘要: 一、DatagramChannel DatagramChannel 是一种能够发送和接收 UDP 数据包的Channel ,由于 UDP 是一种无连接的网络协议,所以默认情况下,使用者不能像对其它Channel(比如ServerSocketChannel和SocketChannel)那样直接对 Da 阅读全文
posted @ 2026-02-03 09:53 Carey_ccl 阅读(13) 评论(0) 推荐(0)
摘要: Java NIO 由以下几个核心部分组成: ①、Channels,类似于传统IO中的流(Stream); ②、Buffers; ③、Selectors 虽然Java NIO 中除此之外还有很多类和组件,但是核心还是Channel,Buffer 和 Selector ,像其它组件Pipe、FileLo 阅读全文
posted @ 2026-02-03 09:35 Carey_ccl 阅读(15) 评论(0) 推荐(0)
摘要: Spring-Boot 特点如下: ①、创建独立的 Spring 应用程序; ②、嵌入的 Tomcat,无须部署 .war 文件; ③、简化 Maven 配置; ④、自动配置 Spring; ⑤、提供生产就绪型功能,如指标、健康检查和外部配置;绝对没有代码生成,以及对XMIL没有配置要求。 1、启动 阅读全文
posted @ 2026-01-18 22:35 Carey_ccl 阅读(26) 评论(0) 推荐(0)
摘要: Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间或分布式系统中发送消息,并进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数 MOM 提供商都对 JMS 提供支持。 阅读全文
posted @ 2026-01-17 11:54 Carey_ccl 阅读(8) 评论(0) 推荐(0)
摘要: Java远程方法调用,即JavaRMI(JavaRemote Method Invocation),是Java 编程语言里一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使 Java 编程人员能够在网络环境中分布操作。RMI全部的宗旨就是 阅读全文
posted @ 2026-01-15 23:05 Carey_ccl 阅读(7) 评论(0) 推荐(0)
摘要: 阅读此篇博客之前,请先阅读上一篇博客的内容:Spring 源码解析12——整合SpringMVC(一) 1、DispatcherServlet 的逻辑处理 根据之前的示例,我们知道在HttpServlet.class中分别提供了相应的服务方法,它们是doDelete()、doGet()、doOpti 阅读全文
posted @ 2026-01-12 20:48 Carey_ccl 阅读(9) 评论(0) 推荐(0)
摘要: Spring 的 MVC是基于 Servlet功能实现的,通过实现 Servlet接口的 DispatcherServlet 来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射、视图解析本地语言、主题解析以及上载文件支持。默认的处理程序是非常简单的Controller.in 阅读全文
posted @ 2026-01-12 09:05 Carey_ccl 阅读(6) 评论(0) 推荐(0)
摘要: MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis。 MyBatis是支持普通 SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有 阅读全文
posted @ 2026-01-02 20:47 Carey_ccl 阅读(11) 评论(0) 推荐(0)
摘要: JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行 SQL语句的 Java API可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的 API,据此可以构建更高级的工具和接口,使数据库开 阅读全文
posted @ 2026-01-02 16:18 Carey_ccl 阅读(8) 评论(0) 推荐(0)
摘要: 1、创建AOP静态代理 AOP 的静态代理主要是在虚拟机启动时通过改变 目标对象字节码的方式来完成对目标对象的增强,它与动态代理相比具有更高的效率,因为在动态代理调用的过程中,还需要一个动态创建代理类并代理目标对象的步骤,而静态代理则是在启动时便完成了字节码增强,当系统再次调用目标类时与调用正常的类 阅读全文
posted @ 2026-01-01 21:07 Carey_ccl 阅读(8) 评论(0) 推荐(0)
摘要: 1、动态AOP自定义标签 如果声明了自定义的注解,那么就一定会在程序中的某个地方注册了对应的解析器。我们搜索整个代码,尝试找到注册的地方,全局搜索后发现了在AopNamespaceHandler.class 中对应着这样一段函数: public class AopNamespaceHandler e 阅读全文
posted @ 2025-12-28 23:46 Carey_ccl 阅读(13) 评论(0) 推荐(0)
摘要: 1、ApplicationContext.interface接口介绍 在前面博客中,我们一直BeanFactory.interface接口的实现类XmlBeanFactory.java,Spring中可以通过这个class实现加载配置文件的功能。但是,Spring中还提供了另一个接口Applicat 阅读全文
posted @ 2025-12-27 11:03 Carey_ccl 阅读(9) 评论(0) 推荐(0)
摘要: 8、创建Bean(接Spring源码解析5——bean的加载(一) 中标题6、创建ObjectFactory<?>.java类型的实例(准备创建Bean)的第④步) 当经历了AbstractAutowireCapableBeanFactory.java:createBean() 中的 Abstrac 阅读全文
posted @ 2025-12-26 12:32 Carey_ccl 阅读(12) 评论(0) 推荐(0)
摘要: 1、加载bean的概述 当Spring将Xml配置文件的解析后,生成了BeanDefinition.interface类型的各种配置实例,如:GenericBeanDefinition.java等。接下来,就要解析BeanDefinition.interface类型的各种配置,生成我们需要的实例。 阅读全文
posted @ 2025-12-26 12:31 Carey_ccl 阅读(10) 评论(0) 推荐(0)
摘要: 1、解析函数入口 2、自定义标签的使用 Spring可以为系统提供可配置化支持,简单做法就是直接基于Spring的标准bean来配置,但是spring的标准bean在配置较为复杂或是需要更多丰富控制的时候,会显得非常笨拙。一般做法会用原生态的方式解析定义好的XML文件,然后转化为配置对象。 Spri 阅读全文
posted @ 2025-12-26 12:31 Carey_ccl 阅读(4) 评论(0) 推荐(0)
摘要: 1.3、AbstractBeanDefinition属性 1.3.1、AbstractBeanDefinition.java概要 至此我们便完成了对XML 文档到GenericBeanDefinition.java 的转换, 也就是说到这里, XML中所有的配置都可以在GenericBeanDefi 阅读全文
posted @ 2025-12-26 12:31 Carey_ccl 阅读(9) 评论(0) 推荐(0)
摘要: 1、bean标签的解析及注册 1.1、bean标签解析前准备 通过org.springframework.beans.factory.xml.BeanDefinitionParserDelegate类型的delegate对象和org.w3c.dom.Element类型的root对象,解析xml文件中 阅读全文
posted @ 2025-12-23 23:53 Carey_ccl 阅读(14) 评论(0) 推荐(0)
摘要: 一、AtomicReferenceFieldUpdater的用法 AtomicReferenceFieldUpdater是一个抽象的工具类,其底层是通过反射找到目标字段的内存偏移量,然后利用Unsafe.class提供的CAS(Compare-And-Swap)操作来原子地更新某个类中指定变量的值。 阅读全文
posted @ 2026-02-13 23:42 Carey_ccl 阅读(29) 评论(0) 推荐(0)
摘要: 一、模式定义 在不改变原有对象的前提下(不改变ConcreteComponent情况下),给原有对象扩展功能(利用ConcreteDecorator扩展功能,在ConcreteDecorator中注入ConcreteComponent)。如下所示: 二、应用场景 扩展一个类的功能,或者给一个类添加一 阅读全文
posted @ 2026-02-11 21:57 Carey_ccl 阅读(133) 评论(0) 推荐(0)
摘要: 一、模式定义 将一个类的接口转换成使用者希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、应用场景 当使用者用到的某些类的接口与其它代码不兼容时,就可以使用适配器模式来改造。当使用者希望重用几个现有的子类,但这些类缺少一些不能添加到超类中的公共功能时 阅读全文
posted @ 2026-02-10 21:25 Carey_ccl 阅读(21) 评论(0) 推荐(0)
摘要: 一、普通工厂模式 1.1、模式定义: 定义一个用于创建对象的接口,让子类决定去实例化哪一个类:其中的抽象工厂方法(factoryMethod),就是使得一个类的实例化延迟到了子类。 1.2、应用场景 ①、当使用者不知道要创建的对象的确切类型时候; ②、当使用者希望为库或者框架提供扩展其内部组件的方法 阅读全文
posted @ 2026-02-09 22:47 Carey_ccl 阅读(34) 评论(0) 推荐(0)
摘要: 一、模式定义: 保证一个类只有一个实例,并且提供一个全局访问点 二、使用场景: 重量级对象,不需要多个实例,如:线程池,数据库连接池 三、类图: 四、不同方式创建的单例设计与区别 4.1、懒汉单例模式 懒汉单例模式的特点是延迟加载,只有在真正使用的时候,才开始实例化,用该方式创建单例对象时,对于线程 阅读全文
posted @ 2026-02-08 17:12 Carey_ccl 阅读(37) 评论(0) 推荐(0)
摘要: Solid原则是为针对面向对象的程序语言设计,从本质上来讲,SOLID是5个原则的缩写,这5个原则有助于软件设计:更加容易理解,更灵活,可维护性更强。这个与掌握软件设计原理无关,这个原理是很多原则的子集。 单一职责原则(Single responsibility principle) 开闭原则(op 阅读全文
posted @ 2026-02-08 15:55 Carey_ccl 阅读(43) 评论(0) 推荐(0)
摘要: 操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符指向存储设备的不透明标识符。Java虽然在设计上使用了抽象程度更高的流来作为文件操作的模型,但是底层依然要使用文件描述符与操作系统交互,而Java世界里文件描述符的对应类就是FileDescriptor。同时,Java规定 阅读全文
posted @ 2026-02-06 18:46 Carey_ccl 阅读(67) 评论(0) 推荐(0)