摘要:
1、线程池 就是管理线程的池子。 优点有: (1)、降低资源消耗。通过重复利用已经创建的线程池降低线程的创建与销毁造成的消耗 (2)、提高响应速度。当任务到达时,任务可以不需要等待线程的创建就能立即执行 (3)、提高线程的可管理性。线程是稀缺资源,如果无限制的创建不仅消耗系统资源,还会降低系统的稳定 阅读全文
摘要:
1、事务的实现思想 在spring中要想某个方法具有事务,只要在方法前加一个@Transactional注解。然后spring就会利用aop思想,在这个方法执行前开启事务, 在方法执行后选择提交事务或者回滚事务。 2、7种事务传播机制 1 @Transactional(propagation = P 阅读全文
摘要:
类加载过程 这里的加载过程是严格按照加载开始顺序进行的,注意是加载开始而不是加载完成。也就是有可能会有两个或几个阶段是同时进行的。 比如下面提到的验证过程中的符号引用验证是在解析阶段开始之后进行。 加载(loading): (1)、通过一个类的全限定名来获取定义此类的二进制字节流。 (2)、将这个字 阅读全文
摘要:
1、类加载器以及双亲委派机制 比如custom ClassLoader要加载一个类,会先询问它的parent类,然后AppClassLoader会看它有没有加载过这个类,如果没有继续询问它的parent即ExtensionClassLoader 直到询问至BootstrapClassLoader也没 阅读全文
摘要:
以下是我整理的一些Java容器、部分接口和抽象 1、List (1)、ArrayList和LinkList:一个是数组、一个是链表;所有的数据结构的物理存储也只有连续存储的数组和非连续存储的链表。 (2)、Vetor和stack:Vetor从jdk1.0就有的一个线程安全的数组,里面所有的方法都加了 阅读全文
摘要:
1、JVM范围 2、JVM和class文件 (1)、JVM和Java语言无关,JVM是一种规范,任何语言只要能编译成class文件格式都能在JVM上运行 3、class文件格式 (1)、class文件就是一个二进制流,用十六进制表示为: 图中一个矩形代表一个字节 (2)class文件中的内容 1、魔 阅读全文
摘要:
1、ThreadLocal ThreadLocal即线程本地,可以实现每个线程存入取出TreadLocal值互不影响。因为TheadLocal底层是用了一个Map结构存放数据,而这个Map是从当前这个Thread中获取的,所以每个线程之前数据不相通。 而这个Map里面key是这个TreadLocal 阅读全文
摘要:
1、JUC包中的 CountDownLatch、CyclicBarrier、ReentrantLock和Semaphore都是基于AQS(AbstractQuenedSynchronizer)实现的 在ReentrantLoc这个组件里,state表示获取锁的线程数,假如state=0,表示还没有线 阅读全文
摘要:
一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果;2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次 阅读全文
摘要:
一.缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 1.布隆过滤 对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采 阅读全文