spring源代码学习(一) 认识spring容器和组件
前言: spring始终是java程序员必须要掌握的一个技能,随着springBoot的普及,springBoot替开发者实现了大量初始化工作,隐藏了实现细节,方便了我们快速开展业务,但是掌握好spring,熟悉基础,才能更好的知道应用是为什么这样运行的,出现问题怎么去解决。反反复复,我也尝试看了很多遍spring的源代码,但是都只是知识在脑海中过了一下,并没有留下、理解。这一次将之前的知识点记录...
前言: spring始终是java程序员必须要掌握的一个技能,随着springBoot的普及,springBoot替开发者实现了大量初始化工作,隐藏了实现细节,方便了我们快速开展业务,但是掌握好spring,熟悉基础,才能更好的知道应用是为什么这样运行的,出现问题怎么去解决。反反复复,我也尝试看了很多遍spring的源代码,但是都只是知识在脑海中过了一下,并没有留下、理解。这一次将之前的知识点记录...
Markdown 基本要素 这篇文件意在简要介绍 GitHub Flavored Markdown 写作。 语法说明 标题 # 这是 <h1> 一级标题 ## 这是 <h2> 二级标题 ### 这是 <h3> 三级标题 #### 这是 <h4> 四级标题 ##### 这是 <h5> 五级标题 ###### 这是 <h6> 六级标题 强调 *这会是 斜...
java内存模型 简介 jvm虚拟机中内存模型通常会被划分为以下几个区域: 程序计数器 Java虚拟机栈 本地方法栈 堆区 方法区 运行时常量池 直接内存 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器; 其中这里的程序计数器代表的是java指令码的程序行号指示器,不是cpu中的的指令寄存器,...
线程协作 线程之间相互协作,可以通过以下几种方式来进行实现: 信号量 - semaphore 栅栏 - CyclicBarrier 条件 - Condittion 屏障 - CountDownLatch 信号量 线程之间信号量(semaphore)的作用是于标记当前资源能否被线程访问的信号,线程访问资源时尝试用acquire,访问完成使用release归还资源 import java.util...
Futrue初探 Runnable和Callable的区别? Runnable是一个无返回值,并且不能checked Exception的任务定义,java中之所以这样实现是因为执行Runnable方法是调用的Threa.run()方法,不是当前线程进行执行,所以就算抛出异常我们也无法捕捉到; Callable方法定义的是一个有返回值并且可抛出异常的方法,底层采用的是submit()方法,返回的是...
ThreadLocal的分析 ThreadLocal的适用场景 ThreadLocal适用于保存每个线程都独享的对象 ThreadLocal适用于保存每个线程独享的对象可供其他方法获取的场景 例如web应用程序中的用户信息可以保存中用线程中,从而在其他需要用到的地方直接可以获取到 ThreadLocal是不是用来解决共享资源多线程访问的问题? 不是,ThreadLocal的底层机制决定了每个...