本文逻辑 本文首先介绍了ContextClassLoader的作用,然后说明了Thread类里默认的类加载器是哪个? 接着讲了ContextClassLoader的用法,然后举了个例子,并由这个例子引出了问题?为什么要打破委托机制?怎样打破委托机制? 接着我们看了ServiceLoader的源码,看 ...
Java中的三大系统类加载器
在Java中存在三种原生的类加载器: AppClassloader:它负责在 JVM 启动时,加载来自在命令java中的-classpath或者java.class.path系统属性或者 CLASSPATH 操作系统属性所指定的 JAR 类包和类路径。 ExtClassloader:主要负责加载 ...
Java并发编程笔记4-ThreadLocalRandom 类原理剖析
概览(本文逻辑) 首先本文先介绍了Random的类的使用,以及Random类在多线程中遇到的问题:多线程中如何不生成大量重复的数据。 然后我们知道了Random类的解决方式,也就是使用了原子变量作为种子的类型,这样就解决了问题,但是这样解决又遇到了一个新的问题,就是多线程种子的恶意竞争导致效率低下。 ...
Java并发编程笔记3-ThreadLocal 和InheritableThreadLocal 原理
预览(本文逻辑)这篇文章的逻辑很简单: 首先是通过之前文章我们知道锁不仅很重而且使用门槛也高,所以能不用锁我们就想不用,所以我们想实现一个功能,就是让共享变量在每个线程访问的时候访问的是当前线程内部的一个变量(这样说可能不太准确,但意思是这个),有了这个需求,就有了ThreadLocal类。 然后 ...
集成学习系列3:Adaboost算法的训练误差分析
Adaboost最基本的性质是它能再学习过程中不断减少训练误差。 定理1 Adaboost的训练误差界定理:Adaboost算法最终分类器的训练误差界为: \frac{1}{N} \sum_{i=1}^{N} I\left(G\left(x_{i}\right) \neq y_{i}\right) ...
Java并发编程笔记2-基础晋级
本文逻辑串联 首先介绍了并发和并行的概念,这是最最基础的一个概念 然后介绍了为什么会有线程安全问题,并在之后知道了是由于以下的一些问题导致的: 内存可见性问题:概念 原子性问题:概念 指令重排序问题:概念 接着讲了Synchronized 怎么解决内存可见性问题,但是它太重了,因为它获取的是内置 ...
Java并发编程笔记1-线程基础
什么是线程?谈到线程首先要说的就是进程,因为线程是进程中的一个实体,而且线程是不能独立存在的。进程是系统进行资源分配和调度的基本单位。 这里还想到了一个更加生动的例子,比如对于一个Javaweb项目来说,它一般占用一个进程,所以有的时候非正常关闭我们是去CMD下查询进程号,然后kill掉它。对于这样 ...