随笔分类 -  Java

一些 Java 的相关内容
摘要:传统 Map 的局限性 HashMap JDK 1.7 的 HashMap JDK 1.7 中 HashMap 的实现只是单纯的 “数组 + 链表 ” 的组合方式,具体的组成如下: [1] 在 JDK 1.7 的实现中,HashMap 内部会维护一个数组,数组中的每个元素都是一个单向链表。这是因为不 阅读全文
posted @ 2021-12-12 14:21 FatalFlower 阅读(51) 评论(0) 推荐(0)
摘要:本文使用的 JDK 版本为 JDK 8 JUC 中关于读写锁的接口定义如下: // java.util.concurrent.locks.ReadWriteLock public interface ReadWriteLock { // 返回一个读锁 Lock readLock(); // 返回一个 阅读全文
posted @ 2021-12-09 21:19 FatalFlower 阅读(137) 评论(0) 推荐(0)
摘要:本文使用的 JDK 版本为 JDK 8 基本同步工具类 闭锁(CountDownLatch) 闭锁是一种工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当与一扇门:在闭锁的状态到达之前,这扇门一直是关闭的,没有任何线程能够通过,当到达这扇门之后,这扇门会打开并且允许所有的线程通过。当闭锁到 阅读全文
posted @ 2021-12-09 21:18 FatalFlower 阅读(121) 评论(0) 推荐(0)
摘要:本文 JDK 对应的版本为 JDK 13 由于传统的 synchronized 关键字提供的内置锁存在的一些缺点,自 JDK 1.5 开始提供了 Lock 接口来提供内置锁不具备的功能。显式锁的出现不是为了替代 synchronized提供的内置锁,而是当内置锁的机制不适用时,作为一种可选的高级功能 阅读全文
posted @ 2021-12-07 14:29 FatalFlower 阅读(55) 评论(0) 推荐(0)
摘要:线程状态 线程一般的状态转换图如下: 在线程生命周期中存在的状态解释如下: New(初始化)状态 此时线程刚刚被实例化,可以通过调用 start() 方法来启动这个实例化的的线程,使其状态转变成为 Ready 状态 Runnable 状态 Ready 状态和 Running 状态统称为 Runnab 阅读全文
posted @ 2021-12-06 14:47 FatalFlower 阅读(75) 评论(0) 推荐(0)
摘要:与计算机基础相关的线程知识在此略过 线程安全性 相关的定义如下: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在代码中不需要任何额外的同步或者协同,这个类都能够表现出正确的行为,那么称这个类是线程安全的 常见的线程安全对象: 无状态对象 无状态对象一定是线程 阅读全文
posted @ 2021-12-04 11:17 FatalFlower 阅读(78) 评论(0) 推荐(0)
摘要:本文基于 Spring Boot 2.6.0 基于之前提到的 Reactor 的出现,使得编写响应式程序成为可能。为此,Spring 的开发团队决定添加有关 Reactor 模型的网络层。这样做的话将会对 Spring MVC 作出许多重大的修改,因此 Spring 的研发团队决定开发一个单独的响应 阅读全文
posted @ 2021-11-30 21:04 FatalFlower 阅读(801) 评论(0) 推荐(0)
摘要:官方的介绍如下: Reactor is a fully non-blocking reactive programming foundation for the JVM, with efficient demand management (in the form of managing “backp 阅读全文
posted @ 2021-11-25 15:03 FatalFlower 阅读(726) 评论(0) 推荐(0)
摘要:本文的 MVC 基于传统的 Servlet 应用,所使用的 Spring Web 的环境为 Spring Boot 2.5.2 静态资源的加载 参考 Spring Boot 中给出的文档,原文如下: By default, Spring Boot serves static content from 阅读全文
posted @ 2021-11-20 22:01 FatalFlower 阅读(194) 评论(0) 推荐(0)
摘要:AOP 即面向切面编程,在前文已经有所介绍,具体的实现方式有以下三种: 静态代理:通过为要执行切面操作的类手动定义一个额外的类来完成功能 动态代理:在程序运行时动态地生成代理类来实现切面的具体功能 AspectJ:对 相关的.class 文件进行对应的处理,加入对相关的切点织入一些功能代码来完成 在 阅读全文
posted @ 2021-11-18 14:51 FatalFlower 阅读(378) 评论(0) 推荐(1)
摘要:—— 本文将简单介绍一下有关 Spring AOP 的概念以及基本的使用 Spring AOP 是 Spring 中对于 AOP 的支持与实现。在 Spring 中,AOP 的实现是通过动态代理的方式来实现的,这是由于 Spring IOC 的存在,对于对象实例的控制更加方便,同时也为了降低开发的难 阅读全文
posted @ 2021-11-14 16:34 FatalFlower 阅读(67) 评论(0) 推荐(0)
摘要:在 Java 中,实现动态代理的方式主要有两种方式:JDK 动态代理和 CGLIB 动态代理,这两种代理方式在 Java 实现代理模式时最为常见。 代理模式的一般 UML 图如下: 客户端在调用 Subject 类型的类时,将会将这个请求转发到 Proxy 类中,在 Proxy 类中再调用 Read 阅读全文
posted @ 2021-11-13 18:00 FatalFlower 阅读(624) 评论(0) 推荐(0)
摘要:引言 首先,明确以下几个概念: 切面(Aspect):跨越多个对象的连接点的模块化(简单理解为监视切点的类)。 连接点(Joint Point):程序执行过程中的一个点,例如方法的的执行或者属性的访问 通知(Advice):在切面中特定的连接点采取的行为 切点(Pointcut):通过相关表达式匹配 阅读全文
posted @ 2021-11-13 08:30 FatalFlower 阅读(4848) 评论(0) 推荐(1)
摘要:Bean 容器的创建 ApplicationContext 的类结构: 通过上图可以看到,具体的 ApplicationContext 有 AnnotationConfigApplicationContext、FileSystemXmlApplicationContext、ClassPathXmlA 阅读全文
posted @ 2021-11-09 20:34 FatalFlower 阅读(64) 评论(0) 推荐(0)
摘要:Spring Boot 的出现使得创建一个单独的应用变得容易,它的出现是为了简化 Spring应用程序的开发,它有如下几个特点 可以创建一个单独的 Spring 应用 内嵌的 Tomcat、Jetty,因此不再需要将应用打包成为一个 WAR 文件去单独部署 提供简化的 starter 依赖项来简化构 阅读全文
posted @ 2021-11-05 22:48 FatalFlower 阅读(137) 评论(0) 推荐(0)
摘要:简介 A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of ente 阅读全文
posted @ 2021-10-29 23:09 FatalFlower 阅读(4060) 评论(0) 推荐(1)
摘要:本文源码解析针对的是 MyBatis 3.4.4 MyBatis 执行流程 第一阶段 MyBatis 在这个阶段获得 Mapper 的动态代理对象,具体逻辑如下图所示: 其中,Configuration 类和 MapperRegistry 都是在创建 SqlSession 对象时对相关的 MyBat 阅读全文
posted @ 2021-10-26 07:49 FatalFlower 阅读(161) 评论(0) 推荐(0)
摘要:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objec 阅读全文
posted @ 2021-10-22 07:52 FatalFlower 阅读(128) 评论(0) 推荐(0)
摘要:BootStrap Netty 中的 BootStrap 分为两种:一种是客户端的 BootStrap;一种是服务端的 ServerBootStrap。 客户端的 BootStrap 初始化客户端,该 BootStrap 只有一个 EventLoopGroup,用于连接远程主机 服务端的 Serve 阅读全文
posted @ 2021-10-19 21:41 FatalFlower 阅读(94) 评论(0) 推荐(0)
摘要:Reactor 线程模型 由于传统 的阻塞 IO 对于响应时间不是很好,因此引入了 Reactor 的异步事件模型来提高响应时间。 主要存在以下三种方式: 单线程 ​ Reactor 内部通过 selector 来监听连接事件,收到事件之后通过 dispatcher 来进行分发。如果是连接建立的事件 阅读全文
posted @ 2021-10-19 20:27 FatalFlower 阅读(65) 评论(0) 推荐(0)