摘要:
二刷《深入理解Java虚拟机》的时候,发现看类文件结构这章依旧云里雾里。因为类文件中的结构实在太多了,尤其在涉及表的时候,经常会出现表中嵌套表的情况。 有协议学习经验的同学一定知道最快了解一种协议的方法就是参照规则自己将协议解析一次。众所周知类文件中存的也是字节(所以class文件也叫字节码文件), 阅读全文
摘要:
mybatis核心组件 Configuration Configuration是mybatis的全局配置类,保存了环境对象Enviroment(Environment表示数据源相关环境),各种配置信息,以及作为各种资源解析后的注册表。 例如,MapperRegister表示Mapper的注册表,Ty 阅读全文
摘要:
在数据库终端中验证事务隔离级别: 数据库表展示 初始数据状态 每次测试结束后,我们都将数据还愿至此状态,在进行下次测试。 关闭全局自动提交: isolation_read_uncommit 情况下验证脏读的问题 设置并确认全局隔离级别为 测试方式,在两个终端中同时依次运行事务: 事务 1 | 事务 阅读全文
摘要:
泛型 泛型是在JDK 5中引入的特性,是定义类和接口时使用的类型参数。 Java实现泛型的方式属于伪泛型,也就是说编译器并不会特性的类型参数重新生成一个新的类,因此对于JVM而言,不管类型参数是什么,都只保存一个该类的Class对象。 因此,Java的泛型只在编译时期提供了类型安全的校验,在编译结束 阅读全文
摘要:
getBean流程介绍(以单例的Bean流程为准) getBean(beanName) 从BeanFactory中获取Bean的实例对象,真正获取的逻辑由doGetBean实现。 doGetBean(beanName, requiredType, args, typeCheckOnly) 获取Bea 阅读全文
摘要:
通过SpringApplication开始引导启动 类是用来执行Spring框架启动的引导类。有两种方式可以进行启动引导: 1)通过静态方法 启动。 2)先创建 实例,在调用的实例方法 进行启动。 无论是以上哪种方式,最终都是通过创建 实例,在调用 启动。 new SpringApplication 阅读全文
摘要:
在实际项目中,如果因为想异步执行暂时性的任务而不断创建线程是很浪费资源的事情(当一个任务执行完后,线程也没用了)。这种情况下,最好是将任务提交给线程池执行。 所谓池,就是将管理某一种资源,对资源进行复用的对象。线程池就是对线程管理的对象。 本文就是介绍线程池内部是如何管理线程,并复用线程的。 相关接 阅读全文
摘要:
介绍 是`j.u.c ReadWriteLock`接口的实现。 作为读写锁,提供了返回读锁和返回写锁两个方法。 其中读锁是一个共享锁,而写锁是一个独占锁。 也就是说多个线程可以同时持有读锁,而写锁只能被一个线程持有。 除此之外, 还有几个特性: 读锁和写锁都是可重入的 线程在持有写锁时,可以再获取读 阅读全文
摘要:
介绍 是`j.u.c`包下提供的一个接口。 可以翻译成 条件对象,其作用是线程先等待,当外部满足某一条件时,在通过条件对象唤醒等待的线程。 就是通过 实现的。 先看一下 接口提供了哪些方法: 接口主要提供了两类方法——让线程等待的方法(await()等)和唤醒线程的方法(signal())。 内部提 阅读全文
摘要:
介绍 j.u.c包中的 定义了锁的行为。 而 是并发包下提供的一个锁的实现,它是一个可重入的、排他的锁。 有的属性也很简单,除了一个 外,只有一个 。 可以分为公平锁和非公平锁两种。可以在创建时,通过向构造函数传入 参数指定: 无参的构造函数默认会创建一个非公平锁。公平锁和非公平锁的主要区别是:公平 阅读全文