- 博客(28)
- 收藏
- 关注
原创 Spring框架源码脉络分析总结
系列文章概述本系列文章正在逐步完成,因为需要做大量的图,还需要对一些知识进行考证,进度会比较慢,但是保证更新完成。本系列文章逐层深入Spring框架源码,对其架构与流程进行分析整理以及总结,主要进攻Spring的IoC模块、AOP模块以及SpringMVC模块源码。阅读建议:读者至少要使用过Spring框架,了解Spring的配置方法,包括Xml文件配置和注解配置。分析的源码版本:spring-framework : 5.2.0.RELEASE官方参考文档:Spring Framework Do
2020-06-24 22:19:01 748 2
原创 Java后端面试学习知识总结
系列文章介绍由于总结本系列文章需要对之前的学习笔记进行整理和纠错,更新会比较慢,但是保证会更新完毕。本系列文章是在学习Java后端知识中进行总结与考证的结晶,梳理了Java后端面试与学习的核心知识体系,并对核心知识进行了讲解,属于BFS型知识讲解,在总结的过程中进行了大量的考证与查阅资料,力求每个知识点的正确性,但碍于个人水平有限,错误在所难免,如发现错误请留言指正,感激不尽。适用于:正在学习Java后端的准码农、校招应届生、跳槽BFS复习。Java相关JVM相关Java的GCJava的
2020-06-21 01:22:18 720
原创 剑指Offer题解
不修改数组找出重复的数字在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少存在一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。public class Sl { /** * 思路:二路计数,由于n+1长度的数组都在1-n之间,所以可以用区间个数来找重复的数 * 比如,如果数组长度为8,则数字都在1-7之间,将数字的区间分为[1-.
2020-07-25 10:49:57 346
原创 Java对象的结构与对象在内存中的结构
对象的创建过程DCL与Volatile对象在堆内存中的存储布局对象头里具体包括什么对象在内存中是怎么定位的对象在内存中的空间分配过程
2020-06-25 02:06:58 944
原创 ThreadLocal详解、ThreadLocal与弱引用间的关系
TheadLocal可以称为线程本地变量,是一个线程内部的存储类,可以在指定的线程内存储数据,数据存储之后,只有指定的线程才能得到存储的数据。ThreadLocal是除了加锁这种同步方式之外的一种保证线程安全的手段,通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。
2020-06-25 01:59:53 1689 2
原创 从零实现数据结构——Java语言
系列文章介绍由于总结本系列文章需要对之前的学习笔记进行整理和纠错,更新会比较慢,但是保证会更新完毕。本系列文章是在学习数据结构过程的总结,从最基础的线性表开始,到链表、BST以及集合、映射等基础及数据结构,甚至更高级的堆、线段树、字典树等数据结构都会一一通过Java语言进行实现。适用于:正在学习数据结构的学生、校招应届生、跳槽BFS复习。Java实现动态数组Java实现栈Java实现队列Java实现链表Java实现二分搜索树Java实现集合(Set)Java实现映射(M
2020-06-21 01:21:13 164
原创 Spring框架源码分析(IoC):向容器中注册BeanDefinition——BeanDefinitionRegistry
BeanDefinitionRegister接口提供了向容器注册表中注册BeanDefinition的各种方法。
2020-06-10 00:12:04 270
原创 Spring框架源码分析(IoC):ResourceLoader的使用者——BeanDefinitionReader
BeanDefinitionReader是SpringIoC容器刷新时资源加载阶段的核心成员。BeanDefinitiionReader的作用主要是根据不同的环境,利用ResourceLoader将物理资源转换成Resource对象,并传递给下一阶段进行资源的解析。BeanDefinitionReader接口体系...
2020-06-10 00:05:00 326
原创 Spring框架源码分析(IoC):Resource、ResourceLoader和容器之间的关系
Java中资源可以被抽象成URL,Spring中将对物理资源的访问方式抽象成了Resource,Spring中的Resource访问策略有多种实现。Spring可以利用一种利器来自动选择资源加载方式,这就是——ResourceLoader。Resource接口体系ResourceLoader接口体系...
2020-06-09 23:58:01 766 2
原创 Spring框架源码脉络分析(二):spring框架通过xml以及注解方式注册BeanDefinition的流程全链路分析
文章目录Spring流程全链路简述Xml配置方式的资源定位、加载、解析、注册全链路分析在上一章节中,主要介绍了SpringIoC、依赖注入和Spring中的Bean与BeanDefinition。可能部分读者还是比较迷茫,BeanDefinition到底是干什么用的,在本章节中,将通过利用Spring实例化Java对象的过程,先带领读者过一遍Spring框架的运行流程,然后再深入其中,详细分析每一个步骤。Spring流程全链路简述在Spring容器的实例化过程中,其核心流程其实非常的简单,逻辑也很清晰
2020-06-06 23:46:06 448
原创 Spring框架源码分析(IoC):BeanFactory和ApplicationContext容器家族
前置知识:组件扫描:自动发现应用容器中需要创建的Bean。自动装配:自动满足Bean之间的依赖。BeanFactory:Spring容器的基石,顶级容器接口
2020-06-06 23:45:10 435 1
原创 Java后端面试学习知识总结——GC
JVM之所以能够自动回收内存,是因为JVM的开发人员使用了一些垃圾回收算法,来让JVM自己判断哪些对象可以回收,哪些对象不可以回收。实际上垃圾收集并不是Java语言或者JVM专属的,垃圾回收算法主要分为两个阶段的算法,分别是`标记算法`和`回收算法`。标记算法一般用来判断对象是否为垃圾,是否可以回收。回收算法一般用来回收被标记为垃圾的对象。二者一般结合使用。
2020-06-06 01:00:39 744
原创 Java后端面试学习知识总结——JVM
在前文展示的JVM结构抽象图中,可以看到有一个区域被称为运行时数据区,这一部分是JVM运行最核心的部分。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域各自有各自的用途,以及创建和销毁的时间,有的区域会随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动和结束而建立和销毁。
2020-06-06 01:00:08 583
原创 Spring框架源码阅读总结(三):容器的初始化与刷新逻辑(AbstractApplicationContext中的refresh()方法)
待填坑
2020-06-06 00:54:07 226
原创 Spring框架源码脉络分析(一):IoC与容器、Bean和BeanDefinition
本文主要以分析Spring源码模块脉络为主,主要带领读者理清Spring运行的流程和脉络
2020-06-06 00:51:18 562
原创 Spring-Data-Redis 2.X以上版本使用心得和一些坑
最近在修改之前旧项目的时候,将spring-data-redis的版本升级到了2.X以上,查看了官方的文档之后,发现新版本有一些新特性和新的使用方法,这里记录整理一下,并附上自己在使用的时候遇到的一点坑。 spring-data-redis最新版官方文档spring-redis.xml配置(spring整合spring-data-redis)<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="
2020-05-24 01:00:01 5341
原创 蚂蚁金服2020春招面经以及沉淀反思,论面试官的套路模式
4.29一面1.先来聊聊多线程吧,先说一下为什么要用到多线程? 在刚开始解除到多线程的时候,我简单认为多线程就是为了提高性能的。后来了解的多了才发现,多线程其实并不一定能提升性能,甚至有的时候为了保证线程安全还会影响性能。多线程的应用主要有以下几个优点:避免阻塞浪费大量时间: 这里可以利用多线程BIO实现思想来解释一下多线程这个优点。假设现在场景是在BIO模式下客户端通过HTTP请求服务端,经过tcp连接之后,服务端一直在等待客户端进行数据的传输,如果客户端一直没有发送数据,那么在单线程模式下,这
2020-05-10 18:56:19 1513 3
原创 Java后端面试学习知识总结——数据库:MySQL
文章目录关系型数据库的主要考点架构1.怎么设计一个关系型数据库?1.1什么是关系型数据库?1.2关系型数据数据库的组成。1.3如何设计一个关系型数据库?关系型数据库的主要考点架构索引锁语法理论范式架构1.怎么设计一个关系型数据库?1.1什么是关系型数据库? 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执
2020-05-09 17:36:08 1874
原创 Java实现基本数据结构(三)——队列
在数据结构中,队列和栈([Java实现基本数据结构(二)——栈](https://blog.csdn.net/qq_42764725/article/details/104585079))类似,也是一种线性表的结构。不同的地方在于栈只允许数据从一端进行插入和删除,而队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。根据这一种操作限制,我们将队列入队(插入操作)的一端称为队尾,出队(删除操作)的一端称为队首。所以队列也被称作为先进先出表(FIFO:First
2020-03-01 22:26:23 458
原创 Java实现基本数据结构(二)——栈
文章目录栈的概念初始栈的应用使用栈实现撤销操作在Java中使用线性存储实现栈结构设计栈的功能栈的概念 在数据结构中,栈和数组类似,也是一种线性表的结构。不同的地方在于栈是一种操作受限的线性表,它只允许数据从一端进行插入和删除,这一过程也就是我们经常说的进栈(push)和出栈(pop),这一端经常被称作为栈顶。根据这一种操作限制,可以得知栈每次删除的元素,都是最后进栈的元素。所以栈也被称作为后...
2020-03-01 00:32:01 555
原创 Java实现基本数据结构(一)——数组
文章目录数组数组概念Java中的基础数组数组数组概念所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。Java中的基础数组Java中的基础数组是一种静态数组,在创建的时候空间就是固定的,后期无法进行扩容或者缩容。其创建方法如下int[] arr = new int[10]; //创建一个容量为10的int型数组String[] strAr...
2020-02-25 17:54:15 743
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人