自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 线程池类ThreadPoolExecutor解析

1、使用线程池的好处线程使应用能够更加充分合理地协调利用CPU、内存、网络、I/O等系统资源。线程的创建需要开辟虚拟机栈、程序计数器、本地方法栈等线程私有的内存空间。在线程销毁时需要回收这些资源。频繁地创建和销毁线程会浪费大量的系统资源,增加并发编程风险。另外,在服务器负载过大的时候,如何让新线程等待或者友好地拒绝服务?这都是线程自身无法解决的。所以需要通过线程池协调多个线程,并实现类似主次线...

2019-01-25 18:37:23 423 3

原创 码出高效读书笔记:线程同步

1、什么是同步Q1:什么是原子性操作?A1:众所周知在物理世界中,原子是最小的粒子,是不可分割的。所谓原子性操作就是指不可分割的一系列操作指令,在执行完毕之前不会被其他操作中断,要么全部执行,要么全部不执行。举个例子,i++就不是原子性操作,因为它分为三步:取i的值、i+1、赋值,即ILOAD---->IINC---->ISTORE。而i=1就是最简单的原子性操作。回归正题...

2019-01-23 11:40:40 186

原创 线程安全和锁

1、进程与线程的概念先来复习一下操作系统中所讲的进程、线程这两个概念:进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内可调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。2、并发与并行的概念并发:指的是某个时间段内,多任务交替处理的能力。在某段执行时间内,每个CPU不可能...

2019-01-22 18:28:09 1217 2

原创 HashMap详解

更正一下:之前对于hashmap初始容量这一块的知识,我在理解上出了问题,初始容量应该指的是哈希表中能存放的元素的数量,而并非是hashmap实例创建时哈希表中数组的长度。目录1、HashMap简介1.1、HashMap的继承关系1.2、HashMap的数据结构2、HashMap源码分析(使用的是JDK1.7版本的源码)2.1、HashMap的四种构造函数2.2、Has...

2019-01-18 11:08:09 507

原创 码出高效读书笔记:树

1、树(tree)树是一种常用的数据结构,它是一个由有限节点组成的一个具有层次关系的集合,数据就存在树的这些节点中。最顶层只有一个节点,称为“根节点”(root)。在分支处有一个节点,指向多个方向,如果某节点下方没有任何分叉的话,就是叶子节点。从某节点出发,到叶子节点为止,最长简单路径上边的条数,称为该节点的高度。 从根节点出发,到某节点边的条数,称为该节点的深度。如下图所示的树,根节...

2019-01-16 13:10:22 269

原创 码出高效读书笔记:Comparable与Comparator、hashCode与equals

1、Comparable和ComparatorJava中两个对象相比较的方法通常用在元素排序里,常用的两个接口分别是Comparable和Comparator。前者Comparable是自己和自己比,可以看作是自营性质的比较器。从词根上分析,Comparable以-able结尾,表示它有自身具备某种能力的性质,表明Comparable对象本身是可以与同类型进行比较的,它的比较方法是comp...

2019-01-15 19:38:17 352

原创 码出高效读书笔记:集合与泛型

集合与泛型的联合使用,可以把泛型的功能发挥到极致,很多程序员不清楚List、List<Object>、List<?>三者的区别,更加不能区分<? extends T>与<? super T>的使用场景。List<?>是一个泛型,在没有赋值之前,表示它可以接受任何类型的集合赋值,赋值之后就不能再随便往里添加元素了,下面的代码很好地说明了...

2019-01-14 17:33:41 444

原创 ArrayList源码分析

1、ArrayList简介ArrayList是基于数组实现的List类。 ArrayList是容量可以改变的非线程安全集合,当多个线程访问同一个ArrayList时,程序需要手动控制保证该集合的同步性。 ArrayList的特点是遍历速度快,插入和删除操作速度慢。2、ArrayList源码分析package Test;import java.util.*;public cl...

2019-01-14 12:06:31 128

原创 码出高效读书笔记:数据结构概要

1、数据结构1.1数据结构定义数据结构是指逻辑意义上的数据组织方式及其相应的处理方式。逻辑意义:比如说,二叉树在磁盘中的存储真的是树形排列的吗?并非如此,树的存储可能是基于物理上的顺序存储方式,可以理解为一个格子一个格子连续地放,设想有7个节点的二叉树,第一个格子放根节点,第二个格子放左子树的根节点;并且根据引用知道左叶子在后续的哪个格子里;第三个格子放右子树根节点,依此类推。此外,树...

2019-01-13 11:17:15 124

原创 码出高效读书笔记:异常与日志

1、区分throws和throw(1)throws定义一个方法时,可以用throws关键字声明,使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。 throws关键字格式:public 返回值类型 方法名称(参数列表,,,)throws 异常类{}。 请看下面一段代码:package Test;public class iTest { ...

2019-01-09 11:48:53 332

原创 码出高效读书笔记:类的加载过程

1、什么是机器码和字节码?Java是如何实现一次编译,到处执行的?Q1:什么是机器码?A1:在计算机的世界中,0和1是计算仅能识别的信号,经过0和1的不同组合产生了数字上的操作,同时通过不同的组合也产生了各种字符。同样,可以通过不同的组合产生不同的机器指令。在不同的时代,不同的厂商,机器指令组成的集合是不同的。但毕竟CPU是底层基础硬件,指令集通常以扩展兼容的方式向前不断演进。而机器码是离...

2019-01-08 13:19:15 242

原创 码出高效读书笔记:基本数据类型、包装类型及字符串

1、基本数据类型基本数据类型是指不可再分的原子数据类型,内存中直接存储此类型的值,通过内存地址即可直接访问到数据,并且此内存区域只能存放这种类型的值。一般来说Java有8中数据类型,分别为byte、char、short、int、long、float、double、boolean,但是码出高效中多给出了一种基本数据类型,即refvar,这是一种面向对象世界中的引用变量,也叫作引用句柄。前...

2019-01-06 11:47:55 528

原创 码出高效学习笔记:泛型

1、泛型能够解决的问题Q:什么是泛型?泛型有什么用?A:泛型的本质是类型参数化,解决不确定具体对象类型的问题。在面向对象编程语言中,允许程序员在强类型校验下定义某些可变部分,以达到代码复用的目的。PS:泛型其实就是一种编写代码时的语法检查,可以避免类型强制转换带来的风险。Java在引入泛型前,表示可变类型,往往存在类型安全的风险。举一个生活中的例子:微波炉最主要的功能是加热食物,即...

2019-01-05 17:16:32 224

原创 码出高效读书笔记:Override和Overload

1、Override(覆写)如果父类定义的方法达不到子类的期望,那么子类可以重新实现方法覆盖父类的实现。因为有些子类是延迟加载的,甚至是网络加载的,所以最终的实现需要在运行期判断,这就是所谓的动态绑定。动态绑定是多态性得以实现的重要因素,元空间有一个方法表保存着每个可以实例化类的方法信息,JVM可以通过方法表快速地激活实例方法。如果某个类覆写了父类的某个方法,则方法表中的方法指向引用会指向...

2019-01-05 10:38:40 211

原创 码出高效读书笔记:重新总结类的构造方法及静态代码块

构造方法是方法名与类名相同的特殊方法,在新建对象时调用,可以通过不同的构造方法对对象进行不同的初始化创建,构造方法的特征如下:构造方法名称必须与类名相同 构造方法没有返回值类型,即使是void也不能有。它返回对象的地址,并赋值给引用变量。 构造方法不能被继承,不能被覆写,不能被直接调用。调用的途径有三种,一是通过new关键字,二是在子类的构造方法中通过super调用父类的构造方法,三是通过...

2019-01-03 16:06:55 119

原创 码出高效读书笔记:Java对象序列化

Q:什么是序列化?A:内存中的数据对象只有转换为二进制流才能进行数据持久化和网络传输。将数据对象转换成二进制流的过程被称为对象的序列化(Serialization)。反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。常见的序列化方式有以下三种:(1)Java原生序列化。Java类通过实现Serialization接口来实现该类对象的序列化,这个接口非常...

2019-01-03 13:54:18 133

原创 码出高效读书笔记:重新思考接口和抽象类以及内部类

1、接口和抽象类正如面向对象四大特征:抽象、继承、封装、多态所述,定义类的过程就是抽象和封装的过程。而接口和抽象类则是对实体类进行更高层次的抽象,仅定义公共行为和特征。两者的共同点是都不能被实例化,但可以通过定义引用变量指向实例对象。下表示接口和抽象类的语法区别: 语法维度 抽象类 接口 定义关键字 abstract interface 子类继承或实...

2019-01-02 12:01:00 163

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除