摘要: 12.1 为什么要使用线程池 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理 阅读全文
posted @ 2020-12-07 01:43 knbsyoo 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 一. 概述 Hasp可以看成一个桶装的哈希散列表。但是当桶变得太大的时候,就会变成一个树状的桶。每个结构类似于java.util.TreeMap。大多数情况下使用普通的桶,但是转换为TreeNode仅适用于通过坚持节点实例。TreeNode桶可能与其他的使用方法一样,但是支持更快的查找,当过剩的时候 阅读全文
posted @ 2020-12-02 22:32 knbsyoo 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 一. 描述 双向链表(Doubly-linked)实现了接口List和Deque(双端队列),实现了所有的list操作并允许元素可为null。 对于双向链表,所有的操作都符合预期。索引到列表的操作将从列表头或者列表尾开始遍历列表,以便更接近指定的索引为准。(不支持类似数组的随机访问,根据下标访问链表 阅读全文
posted @ 2020-12-01 23:55 knbsyoo 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 一. 类说明 ArrayList是List接口的可调整大小的数组的实现。实现了所有可选的list操作,并允许元素为null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组大小。这个类大致等同于Vector,只是它不同步。 这些操作siz, isEmpty, get, se 阅读全文
posted @ 2020-12-01 21:46 knbsyoo 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 数组是有序的元素序列,相同类型的有限的元素的集合。数组的元素存储在一个连续性的内存空间中,并通过索引访问。 一些零散的知识点: 1)HashMap底层采用数组+树/链表结构,是通过元素hashcode的值和数组大小去计算数组下标,然后将元素放到相对应的数组元素里面(链表/树)。通过索引查 阅读全文
posted @ 2020-12-01 14:08 knbsyoo 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 一 . Spring概述 1.1 Spring 是什么? Spring是一个开源的企业级应用程序Java开发框架。目的是为了简化企业级应用程序开发。 1.2 Spring的特性 (1)轻量级 Spring框架基础版本的包小,启动占用的资源少。(与Struts2相比) (2)非侵入式 我们的代码不需要 阅读全文
posted @ 2020-11-29 03:46 knbsyoo 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 10.1 乐观锁与悲观锁的概念 锁可以从不同的角度分类。其中,乐观锁和悲观锁是一种分类方式。 悲观锁: 悲观锁就是我们常说的锁。对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界区的程序同一时间只能有一个线程在执行。 乐观锁: 乐观锁又称为“无锁”,顾名 阅读全文
posted @ 2020-11-25 13:58 knbsyoo 阅读(236) 评论(0) 推荐(0) 编辑
摘要: yy 这篇文章我们来聊一聊Java多线程里面的“锁”。 首先需要明确的一点是:Java多线程的锁都是基于对象的,Java中的每一个对象都可以作为一个锁。 还有一点需要注意的是,我们常听到的类锁其实也是对象锁。 Java类只有一个Class对象(可以有多个实例对象,多个实例共享这个Class对象),而 阅读全文
posted @ 2020-11-24 17:41 knbsyoo 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 8.1 几个基本概念 在介绍volatile之前,我们先回顾及介绍几个基本的概念。 8.1.1 内存可见性 在Java内存模型那一章我们介绍了JMM有一个主内存,每个线程有自己私有的工作内存,工作内存中保存了一些变量在主内存的拷贝。 内存可见性,指的是线程之间的可见性,当一个线程修改了共享变量时,另 阅读全文
posted @ 2020-11-24 14:14 knbsyoo 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 7.1 什么是重排序? 指令重排序,就是指实际运行的代码顺序与程序中我们编写的代码顺序不一致,编译器/处理器做了优化,对指令重新排序。 为什么指令重排序可以提高性能? 简单地说,每一个指令都会包含多个步骤,每个步骤可能使用不同的硬件。因此,流水线技术产生了,它的原理是指令1还没有执行完,就可以开始执 阅读全文
posted @ 2020-11-24 11:27 knbsyoo 阅读(234) 评论(0) 推荐(0) 编辑