摘要: 开头 aop部分的解析器由AopNamespaceHandler注册,其init方法: @Override public void init() { registerBeanDefinitionParser("config", new ConfigBeanDefinitionParser()); r 阅读全文
posted @ 2020-11-05 23:52 Sirius- 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 基本 本部分从最基本的Spring开始。配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans> <bean class="base.SimpleBean"></bean> </beans> 启动代码: public static void main( 阅读全文
posted @ 2020-11-05 23:41 Sirius- 阅读(388) 评论(0) 推荐(0) 编辑
摘要: spring模块 Spring框架的功能被有组织的分散到约20个模块中。这些模块分布在核心容器,数据访问/集成,Web,AOP(面向切面​​的编程),植入(Instrumentation),消息传输和测试,如下面的图所示。 核心容器 核心容器由以下模块组成,spring-core, spring-b 阅读全文
posted @ 2020-11-05 23:28 Sirius- 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 为什么需要线程池 操作系统中线程的实现有三种,一种是用户级线程,一种是内核支持线程,还有一种是前两种的组合方式。用户级线程是在用户空间实现的,而内核级线程是在OS内核空间实现的。JVM对于线程并没有明确的定义是用户线程还是内核线程,但Java常用的JVM HotSpot,它都是使用1:1线程模型即内 阅读全文
posted @ 2020-11-05 23:25 Sirius- 阅读(94) 评论(0) 推荐(0) 编辑
摘要: ReadWriteLock ReadWriteLock是一个读写锁接口,所谓读写锁,是对访问资源共享锁和互斥锁,一般的重入性语义为如果对资源加了写锁,其他线程无法再获得写锁与读锁,但是持有写锁的线程,可以对资源加读锁(锁降级);如果一个线程对资源加了读锁,其他线程可以继续加读锁。 ReadWrite 阅读全文
posted @ 2020-11-05 23:24 Sirius- 阅读(116) 评论(0) 推荐(0) 编辑
摘要: Lock介绍 Lock在Java中是一个接口,在这个接口中仅仅定义了6个方法: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); 阅读全文
posted @ 2020-11-05 23:22 Sirius- 阅读(90) 评论(0) 推荐(0) 编辑
摘要: AQS类介绍 AQS类全称AbstractQueuedSynchronizer,Java在AQS类中提供了一系列的模板代码,用来实现Java中一系列的同步工具,很多同步工具都是通过内部类继承自AQS类,通过重写AQS类的方法来实现的,如ReentrantLock类、ReentrantReadWrit 阅读全文
posted @ 2020-11-05 23:20 Sirius- 阅读(108) 评论(0) 推荐(0) 编辑
摘要: CAS算法介绍 CAS算法全称为Compare and swap,翻译成中文就是“比较与交换”,是一种有名的无锁算法。无锁编程,就是指在不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步。 在CAS算法中需要理解3个操作数,内存值V,旧的预期值A,要修改的新值B。 阅读全文
posted @ 2020-11-05 23:18 Sirius- 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 线程不安全 首先我们来看一段代码: public class SynchronizedDemo implements Runnable { private static int data = 0; @Override public void run() { for (int i = 0; i < 1 阅读全文
posted @ 2020-11-05 23:16 Sirius- 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 写在前面 多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”。 现代编程 阅读全文
posted @ 2020-11-05 23:15 Sirius- 阅读(94) 评论(0) 推荐(0) 编辑
摘要: HashMap与HashSet介绍 HashMap是Java为我们提供的一个存放键值对的容器,通过键的hash值定位存储位置,具有很快的访问速度。但是其遍历顺序是不确定的,这里所说的不确定是指其遍历的顺序与放入顺序不一致、多次遍历输出顺序不一致(可能会放进数据导致reHash,改变原有顺序)。Has 阅读全文
posted @ 2020-11-05 23:12 Sirius- 阅读(144) 评论(0) 推荐(0) 编辑
摘要: LinkedList简介 LinkedList是一个使用双向链表结构实现的容器,与ArrayList一样,它能动态扩充其长度,LinkedList相较于ArrayList,其任意位置插入速度比ArrayList要快,但是其查询速度要比ArrayList要慢;LinkedList继承自Abstract 阅读全文
posted @ 2020-11-05 23:06 Sirius- 阅读(61) 评论(0) 推荐(0) 编辑
摘要: ArrayList简介 ArrayList是一个使用数组实现的容器,与普通的数组相比,它能动态的扩容,ArrayList继承自AbstractList,实现了List、RandomAccess、Cloneable、Serializable接口。 ArrayList UML图如下: ArrayList 阅读全文
posted @ 2020-11-05 23:01 Sirius- 阅读(64) 评论(0) 推荐(0) 编辑