自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

琦小虾的代码世界

抱拳会天下英豪,煮酒论成败是非

原创 Lucene基本知识入门

Lucene 篇参考地址:《Lucene介绍与使用》1. Lucene 简介Lucene 是一套用于全文检索和搜寻的开源程序库,提供了一个简单却强大的 API,能够做全文索引和搜寻。在 Java 开发环境里,Lucene 是一个成熟的免费开放源代码工具,它并不是现成的搜索引擎产品,但可以用来制作搜索引擎产品。Solr 和 ElasticSearch 都是基于 Lucene 开发的企业级的搜索引擎产品。 Lucene 的 API 来实现对索引的增(创建索引)、删(删除索引)、改(修改索引)、查(搜索

2020-07-17 00:02:08 37

原创 ElasticSearch基本总结

ElasticSearch 篇ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Lucene 与 ES 的关系:Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch也使用Java开发并使用Luce

2020-07-16 23:59:36 639

原创 Nginx技术总结之四——集群和负载均衡的算法与实现

接上篇《Nginx技术总结之三——Nginx多进程IO模型》六. 集群和负载均衡的算法与实现6.1 负载均衡器负载均衡器可以是专用设备,也可以是在通用服务器上运行的应用程序。 分散请求到拥有相同内容或提供相同服务的服务器。 专用设备一般只有以太网接口,可以说是多层交换机的一种。 负载均衡器一般会被分配虚拟IP地址,所有来自客户端的请求都是针对虚拟IP地址完成的。负载均衡器通过负载均衡算法将来自客户端的请求转发到服务器的实际IP地址上。6.2 负载均衡算法private Map<Strin.

2020-07-16 23:57:11 40

原创 Nginx技术总结之三——Nginx多进程IO模型

接上篇《Nginx技术总结之二——Nginx进程模型》三. Nginx 的多进程 IO 模型参考地址:《为啥性能高?Nginx架构初探》3.1 多进程 IO 模型的优点首先,对于每个 worker 进程来说,独立的进程不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。当然,worker 进程的异常退出,肯定是程序漏洞导.

2020-07-16 23:53:28 24

原创 Nginx技术总结之二——Nginx进程模型

接上篇《Nginx技术总结之一——Nginx模块与工作原理》二. Nginx 的进程模型Nginx 的进程模型,可以由下图来表示:在工作方式上,Nginx 分为单工作进程和多工作进程两种模式。单工作进程模式:除主进程外,还有一个工作进程,工作进程是单线程的;多工作进程模式:每个工作进程包含多个线程。Nginx 默认为单工作进程模式;Nginx 在启动后,会有一个 master 进程和多个 worker 进程。2.1 master 进程master 进程主要用来管理 worker 进.

2020-07-16 23:51:10 22

原创 Nginx技术总结之一——Nginx模块与工作原理

参考地址:《Nginx面试汇总》一. Nginx 的模块与工作原理Nginx 由内核和模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令,将会启动不同的模块去完成相应的工作。Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:核心模块:HTTP 模块、EVENT 模块和 MAIL.

2020-07-16 23:49:46 14

原创 JVM技术总结之七——volatile关键字

接上篇《JVM技术总结之六——JVM的锁优化》七. volatile 关键字参考地址:《并发关键字volatile(重排序和内存屏障)》7.1 volatile 关键字Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。它有两条特性:禁止指令的重排序;保证了有序性;当一个线程修改了内存,volatile 关键字保证它能够立即刷新到主内存中;这条特性保证了 volatile 关键字的可见性;7.2 指令重排序通常情况下,处理器为了提高程序运行效率.

2020-07-16 23:45:07 28

原创 JVM技术总结之六——JVM的锁优化

接上篇《JVM技术总结之五——JVM逃逸分析》六. JVM 的锁优化参考地址:《java 中的锁 – 偏向锁、轻量级锁、自旋锁、重量级锁》《彻底搞懂synchronized(从偏向锁到重量级锁)》《synchronized实现原理》在介绍 JVM 锁优化之前,首先明确几个概念,用于后续的介绍。6.1 线程状态切换由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据,CPU 划分出两个权限等级:用户态和内核态。内核态:CPU 可以访问内存所有.

2020-07-16 23:37:08 56

原创 JVM技术总结之五——JVM逃逸分析

接上篇《JVM技术总结之四——JVM内存结构》五. JVM 逃逸分析参考地址:《JVM的逃逸分析》5.1 逃逸的定义一个对象(或变量)在方法中处理完毕返回时,返回结果可能会被其他对象引用,或者全局引用,这种现象即为逃逸。或者可以说,一个对象指针被多个线程或方法引用时,该对象指针就是逃逸状态。public StringBuilder escapeDemo1(String a, String b) { StringBuilder stringBuilder = new StringBu.

2020-07-16 23:33:12 25

原创 JVM技术总结之四——JVM内存结构

接上篇《JVM技术总结之三——类加载机制》四. JVM 的内存结构哪些是共享的,哪些是线程私有的? Java虚拟机里堆栈分别存放什么?4.1 JVM 栈结构每个线程由多个栈帧构成,每个栈帧包含线程中该方法的处理信息。栈帧由四部分组成:局部变量表、操作数栈、动态链接、方法返回地址。4.1.1 局部变量表局部变量表包含该方法内相关的所有局部变量,包括方法内的局部变量,以及传入方法的参数。数据类型是几种基本的数据类型,以及引用类型。4.1.2 操作数栈操作数栈用于操作的执行,方法进行操作时,将.

2020-07-16 23:26:58 32

原创 JVM技术总结之三——类加载机制

接上篇《JVM技术总结之二——GC机制》三. 类加载机制参考地址:《类加载机制-深入理解jvm》《Java Class文件格式、常量池项目的类型、表的结构》3.1 类的加载过程Java 类的加载过程主要分为五步:加载、验证、准备、解析、初始化。其中验证、准备、解析可以合称为连接。此外,这五步的顺序并不是完全固定的,比如为了支持动态绑定,解析的过程可以放在初始化之后。类的加载过程如下图所示:3.1.1 加载加载过程主要做三件事情:根据全类名获取 *.class 文件的路径,通过二.

2020-07-16 23:24:48 18

原创 JVM技术总结之二——GC机制

接上篇《JVM技术总结之一——JVM调优》二. GC 机制GC 的机制是什么?垃圾回收器的基本原理是什么?是否可以立即回收内存?怎么样主动的通知 JVM 进行垃圾回收?2.1 GC 的目标与流程GC 的目标,是在 GC Root 链之外的所有对象,GC Roots 是可达性分析算法的回收目标。GC Root 对象如下:被 JVM 栈引用的所有对象;方法区中,类静态引用的对象;本地方法中静态引用的对象;方法区中常量引用的对象;可达性分析时,需要找 GC Roots 的引用链。为了保证.

2020-07-16 23:16:17 24

原创 JVM技术总结之一——JVM调优

一. JVM 调优1.1 JVM 调优如何使用笔者首先会使用到的工具:java 自带工具:JVisualVM 用于监控,jstack 查看线程状态,jmap 用于堆 dump;Memory Analyser:载入堆 dump 文件,进行分析。在项目启动的时候,加入 -XX:+PrintGCDetails 参数,可以观察 GC 的频率。观察 GC 频率可以判断 GC 频率是否正常(主要是针对 Full GC)。如果不正常,就可以观察 GC 日志,并且针对 GC 的频率进行原因的猜测。如果有堆

2020-07-16 23:14:10 27

原创 Java并发技术总结之六——Java锁分类
原力计划

六. Java 锁分类《Java并发编程:Lock》《java 锁 Lock接口详解》《[死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁]》)6.1 Java 锁的分类锁的类型目前感觉可以分成两大类:synchronized 关键字,以及 Lock, ReadWriteLock 锁以及 Reentrant 为前缀修饰的实现类 (ReentrantLock, ReentrantReadWriteLock);其他角度来看,按照不同分类类型的锁:实现方式:sy

2020-07-13 23:45:02 31

原创 Java并发技术总结之五——AQS
原力计划

接上篇《Java并发技术总结之四——CAS》五. AQS 原理参考地址:《Java并发-AQS及各种Lock锁的原理》《JAVA并发编程: CAS和AQS》《Java并发之AQS详解》5.1 AQS 简介AQS (AbustactQueuedSynchronizer) 是 Java 提供的底层同步工具类,主要思想是用一个 int 类型的变量表示同步状态,以及一个双链表形式的同步队列,并提供了一系列的 CAS (Compare And Swap) 操作来管理这个同步状态。AQS 的主要.

2020-07-13 23:29:05 64

原创 Java并发技术总结之四——CAS
原力计划

接上篇《Java并发技术总结之三——线程状态》四. CAS 原理参考地址:《JAVA并发编程: CAS和AQS》《面试必问的CAS,你懂了吗?》CAS (Compare And Swap),即比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制。在 JAVA 中,sun.misc.Unsafe 类提供了硬件级别的原子操作来实现 CAS。 java.util.concurrent 包下的大量类 (AtomicInteger, AtomicBoolean, AtomicLong, ….

2020-07-13 23:24:58 73

原创 Java并发技术总结之三——线程状态

接上篇《Java并发技术总结之二——ThreadLocal》三. 线程状态线程有六种状态:NEW, RUNNABLE(RUNNING), WAITING, TIME_WAITING, BLOCKED, TERMINATED。3.1 NEW线程刚刚被创建的时候,即 new Thread(),且尚未执行 start() 方法的状态;3.2 RUNNABLE / RUNNINGRUNNABLE(或称 READY) 与 RUNNING 是线程已经准备执行或正在执行的状态,是线程执行了 start(.

2020-07-13 23:23:26 26

原创 Java并发技术总结之二——ThreadLocal

接上篇《Java并发技术总结之一——Java线程池》二. ThreadLocal参考地址:《Java中的ThreadLocal详解》ThreadLocal 用来保证规避多线程访问线程不安全的情况,每个线程访问自己的副本变量,这样就避免了对资源的抢占导致数据不一致的问题。2.1 原理线程 Thread 中用 ThreadLocalMap 类型的 threadLocals, inheritableThreadLocals 存储当前线程与子线程数据的副本变量。ThreadLocal 是不支持继.

2020-07-13 23:20:49 25

原创 Java并发技术总结之一——Java线程池

一. Java 线程池1.1 实现线程数小于 coreSize,创建线程,直到 coreSize 的数量;BlockingQueue 一直堆积线程;堆积到 BlockingQueue 的最大容量,此时开始开启线程,直到 maxSize;如果到了 maxSize 的线程数,BlockingQueue 依然是满的,则开始对新添加进入的任务实行拒绝(按照拒绝策略);如果线程数量大于 coreSize,而且有的线程空闲时间超过了 keepTimeAlive,则释放该资源;注:1, 2, 3 步骤在

2020-07-13 23:16:41 24

原创 ZooKeeper 技术知识总结之二——ZK 惊群与脑裂

接上篇《ZooKeeper 技术知识总结之一——Leader选举算法》二. ZK 惊群与脑裂2.1 Zookeeper 的惊群现象ZooKeeper 的节点通常可以作为分布式锁来使用。比如可以多个服务对同时竞争申请一个节点 “/test/lock”,创建成功的服务获取到这个锁,其他没创建成功的监听这个锁,等到这个锁释放后再重新申请该锁。这样就实现了简单的分布式锁。但同时在大量锁的情况下会有**“惊群”**的问题。“惊群”就是在一个节点删除的时候,大量对这个节点的删除动作有订阅Watcher的线程.

2020-07-13 23:00:03 78

原创 ZooKeeper 技术知识总结之一——Leader选举算法

一. Leader 选举算法分析在3.4.0后的Zookeeper的版本只保留了TCP版本的FastLeaderElection选举算法。当一台机器进入Leader选举时,当前集群可能会处于以下两种状态:集群中已经存在Leader。集群中不存在Leader。对于集群中已经存在Leader而言,此种情况一般都是某台机器启动得较晚,在其启动之前,集群已经在正常工作,对这种情况,该机器试图去选举Leader时,会被告知当前服务器的Leader信息,对于该机器而言,仅仅需要和Leader机器建立起连接,

2020-07-13 22:56:29 26

原创 设计模式总结之一——代理模式

一. 代理模式代理模式广泛的用于多种框架,如 Mybatis, Spring 等。有静态代理、动态代理两种。1.1 静态代理静态代理的核心主要是实现接口,在编译期实现的代理。代理类实现该接口,并在实现方法的时候包装方法,实现代理的目的。// 接口类public interface IUserDao { void save();}// 实现类public class UserDao implements IUserDao { public void save() {

2020-07-12 09:16:01 15

原创 Netty面试技术知识点总结
原力计划

NettyNetty 是一个非阻塞(异步)、事件驱动的网络框架,用多线程处理 IO 事件。一. Netty 结构Netty 服务端与客户端都是由 Bootstrap 引导程序开始的,对于服务端,引导类是 ServerBootstrap,对于客户端,引导类是 Bootstrap。从 ServerBootstrap 开始,Netty Server 的结构如下:ServerBootstrapEventLoopGroupEventLoop:事件循环线程,通过 Selector 管理多个连接 Ch

2020-07-12 09:13:36 30

原创 领域驱动设计 (DDD) 总结
原力计划

领域驱动设计 DDD参考地址:《DDD领域驱动设计基本理论知识总结》《关于领域驱动设计(DDD)中聚合设计的一些思考》《基于 MVC 实践领域驱动(DDD)的思考》《【DDD】领域驱动设计实践 —— 限界上下文识别》一. DDD 简述DDD (Domain-Driven Design),即领域驱动设计是思考问题的方法论,用于对实际问题建模,它以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,然后将这些概念设计成一个领域模型。由领域模型驱动软件设计,用代码来实现该领域模

2020-07-12 09:11:38 86

原创 数据结构技术知识总结之三——一致性Hash
原力计划

接上篇《数据结构技术知识总结之二——BTree》三. Hash 的一致算法3.1 一致性Hash算法背景一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端.

2020-07-12 09:08:38 59

原创 数据结构技术知识总结之二——BTree

接上篇《数据结构技术知识总结之一——二叉树》二. BTree《浅谈算法和数据结构: 十 平衡查找树之B树》《MySQL索引背后的数据结构及算法原理》2.1 B-Tree 与 B+TreeB-Tree 是 2-3 树的一种变形,可以设置度数 M,每个节点上最多可以有 M 个值;根据硬盘读取时的预读原理,磁盘读取时每次从磁盘上预读 page 容量(一般为 1024 字节)的整数倍,所以对于硬盘来说,可以将度设为 1024,这样就硬盘文件的索引就建立完毕,形成了一个 B-Tree 结构;B-Tre.

2020-07-12 09:04:20 20

原创 数据结构技术知识总结之一——二叉树

一. 二叉树研究 B+ Tree 时发现,B+ Tree 的思想是逐步演化而来的。由二叉查找树 -> 平衡二叉树 -> 2-3 树 -> B 树演变而来;1.1 二叉查找树《浅谈算法和数据结构: 七 二叉查找树》二叉查找树是一个很典型的递归概念:节点 root 的左子树上的任意节点的 key 值都比 root 小;节点 root 的右子树上的任意节点的 key 值都比 root 大;root 的左右子树都是二叉查找树;二叉树的查找效率与二叉树的结构有关,如果是平衡的二叉

2020-07-12 08:58:40 35

原创 数据库技术知识点总结之四——乐观锁与悲观锁

接上篇《数据库技术知识点总结之三——索引相关内容》四. 乐观锁与悲观锁参考地址:《【MySQL】悲观锁&乐观锁》《数据库并发控制 你选乐观锁还是悲观锁?》乐观锁与悲观锁是概念上的意义,主要解决的问题是对于并发冲突的检测。乐观锁本质上并不属于锁,它只是一种冲突检测机制,但被这样称呼的时间比较长,就被称为乐观锁。乐观锁允许并发的获取内容进行读写,但在提交的时候会进行并发控制。比如 A, B 同时获得了一个数据,而且都要对其进行处理,A 先提交了该条数据,B 后来也要提交该条数据,这时.

2020-07-09 23:08:58 30

原创 数据库技术知识点总结之三——索引相关内容
原力计划

接上篇《数据库技术知识点总结之二——Mybatis》三. 索引3.1 索引数据结构原理索引在底层的数据结构用的是 B+树,它的原理见数据结构篇。3.2 聚簇索引和非聚簇索引注:参考地址《和刚入门的菜鸟们聊聊–什么是聚簇索引与非聚簇索引》《MYSQL索引:对聚簇索引和非聚簇索引的认识》《通俗易懂 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系》3.2.1 聚簇索引、非聚簇索引聚簇索引规定了一个数据表的排序方式,一个数据表只能有一个聚簇索引.

2020-07-09 22:57:54 58

原创 数据库技术知识点总结之二——Mybatis
原力计划

接上篇《数据库技术知识点总结之一——事务隔离级别》二. Mybatis2.1 MyBatis 是如何执行的?参考网址:《深入浅出Mybatis系列(十)—SQL执行流程分析(源码篇)》MyBatis 执行一次指令的过程有两个阶段,获取 Mapper与执行语句。2.1.1 获取 Mapper**SqlSession 是 MyBatis 的灵魂。**获取 Mapper 的操作也是在 SqlSession 接口中执行的。但首先应该考虑的是 SqlSession 如何创建。2.1.2 Sql.

2020-07-09 22:48:15 101

原创 分布式事务的实现思想
原力计划

分布式事务的实现思想参考地址:《从银行转账失败到分布式事务:总结与思考》分布式事务的基本概念与本地事务类似,都保证了 ACID 特性(见[本篇第二章](# 二. 事务的特性))。随着数据的规模越来越大,就出现了对业务的解构,包括数据层面的关系型数据库的垂直、水平分表,以及服务层面的拆分,将一个大服务拆分为后单独部署,甚至同时也将数据库独立出来。这时候本地数据库事务就不能满足多个数据库、异构系统的原子性、持久性了,需要使用分布式事务的方法。通常,分布式事务只需要保证原子性,通过保证原子性来保证应用层面

2020-07-09 22:45:04 34

原创 数据库技术知识点总结之一——事务
原力计划

一. InnoDB 事务隔离级别参考网址:《MySQL/InnoDB中的事务隔离级别》《MySQL隔离级别》《innodb当前读 与 快照读》《MySQL的InnoDB的幻读问题》1.1 数据异常现象数据异常现象主要分三种:脏读:事务 A 修改了数据但没有提交,事务 B 查询数据时可以查到事务 A 提交的数据,此时事务 A 回滚,此时事务 B 读取的数据与数据库中的数据不一致,即为脏读现象;不可重复读:事务 A 查询数据,事务 B 修改 (update 或 delete) 了数据并提

2020-07-09 22:34:02 53

原创 Spring技术知识点总结之七——Spring的设计模式
原力计划

接上篇《Spring技术知识点总结之六——Spring 事务传播等级》七. SpringBean 的设计模式?7.1 简单工厂(非23种设计模式中的一种)参考地址:《【小家Spring】Spring的Bean定义注册中心BeanDefinitionRegistry详解》实现方式:BeanFactory。 Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是在传入参数后创建,还是传入参数前创建,这个要根据具体情况来定。实质:由一个工厂.

2020-07-09 00:20:30 74

原创 Tomcat技术知识点总结
原力计划

参考地址:《tomcat架构》《四张图带你了解Tomcat系统架构》一. Tomcat 的结构一个 Tomcat 中有一个 Server,每个 Server 中至少有一个 Service。一个 Service 由至少一个 Connector 与一个 Container 组成。Service 的结构主要可以被分为两部分:Connector 与 Container。Connector: 用于接受客户端传来的数据,解析其协议,将解析后的数据传输给 Servlet;Container: 封装和.

2020-07-09 00:17:30 118

原创 Spring技术知识点总结之六——Spring 事务传播等级

接上篇《Spring技术知识点总结之五——Servlet 生命周期》六. Spring 事务传播等级Spring 事务传播有七个等级,假设有 methodA 调用 methodB,根据事务传播等级的设置,methodA 与 methodB 有如下效果:PROPAGATION_REQUIRED:默认等级,支持事务,如果没有事务,则新建一个事务;PROPAGATION_SUPPORTED:支持事务,如果没有事务,则不新建事务;PROPAGATION_MANDATORY:支持事务,如果没有事务,则.

2020-07-09 00:13:50 19

原创 Spring技术知识点总结之五——Servlet 生命周期
原力计划

接上篇《Spring技术知识点总结之四——Spring Bean 的生命周期》五. Servlet 生命周期参考地址:《什么是Servlet(原理,从访问到方法)》Servlet 是 SUN 公司提供的一种用于开发动态 WEB 资源的技术,SUN 公司在其 API 中提供了一个 Servlet 接口。如果用户想要开发一个 Java Web 服务,需要完成两个步骤:编写一个实现了 Servlet 接口的 Java 类;将该 Java 类放到 Servlet 容器中(通常是 Tomcat);.

2020-07-09 00:12:09 28

原创 Spring技术知识点总结之四——Spring Bean 的生命周期

接上篇《Spring技术知识点总结之三——Spring Bean 的注入过程》四. Spring Bean 的生命周期BeanFactory 中 Bean 的生命周期:实例化:以 InstantiationAwareBeanPostProcessor 接口方法为包装,进行实例化过程。该接口主要功能有三个:实例化前预处理、实例化后预处理、设置属性值预处理;实例化前预处理:InstantiationAwareBeanPostProcessor # postProcessBeforeInstant.

2020-07-09 00:10:08 29

原创 Spring技术知识点总结之三——Spring Bean 的注入过程

接上篇《Spring技术知识点总结之二——SpringMVC DispatcherServlet》三. Spring Bean 的注入过程Spring ioc 容器的核心类是 AbstractApplicationContext,入口是 refresh() 方法,该方法是个模板方法,定义了加载到容器的全部过程。@Override public void refresh() throws BeansException, IllegalStateException { synchronized .

2020-07-09 00:08:34 29

原创 Spring技术知识点总结之二——SpringMVC DispatcherServlet

接上篇《Spring技术知识点总结之一——循环依赖》二. SpringMVC DispatcherServlet参考网址:《SpringMVC 常见面试题总结(超详细回答)》类似于使用大全的文章,比较长,适合查询:《深入理解 Spring MVC 思想》SpringMVC 请求执行流程:2.1 获取处理方法Spring 容器在启动时,会载入若干 HandlerMapping 实例到 DispatcherServlet 中,并将方法信息存储到映射注册器 MappingRegistry .

2020-07-09 00:05:49 24

原创 Spring技术知识点总结之一——循环依赖

一. Spring IOC 循环依赖?参考地址:《Spring IOC 容器源码分析 - 循环依赖的解决办法》《Spring IOC循环依赖解决方案分析》《Spring5源码阅读--如何解决循环依赖?》在 Spring 中获取一个 Bean,是通过获取 BeanDefinition 实现的:在定义 Bean 信息的 XML 文件中,BeanDefinitionReader 读取指定路径下的 XML 文件,获取 Bean 定义信息并封装成 BeanDefinition 对象,该实例对象包含依赖关

2020-07-09 00:02:32 26

提示
确定要删除当前文章?
取消 删除