自定义博客皮肤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)
  • 收藏
  • 关注

原创 垃圾回收与算法

如何确定对象可回收引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它的时候,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象是不可能被使用的。但是JVM并没有使用引用计数来管理内存,其中最重要的原因就是它很难解决对象之间的相互引用关系。可达性分析算法通过一系列的“GC Roots”对象作为起点进行搜索,如果在“GC Roots”和一个对象之间没有可达路径,则称该对象是不可达的,不过要注意的是被判定为不可达的对象不一定就会成为可回收对象。被判定为不可达的对象要成为

2020-06-21 19:39:22 100

原创 java类加载机制

文章目录概念类的生命周期类加载器双亲委派模型概念虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析统称为连接类加载器启动类加载器(Bootstrap ClassLoader)扩展类加载器(Extension ClassLoader)应用程序类加载器(Appl

2020-06-21 19:36:12 100

原创 jvm内存区域

文章目录jvm内存区域虚拟机栈(线程私有)本地方法栈(线程私有)程序计数器(线程私有)堆新生代老年代CMS算法中的promotion failed和concurrent mode failure方法区/永久代jvm内存区域JVM内存区域主要分为线程私有区域[虚拟机栈、本地方法栈、程序计数器],线程共享区域[方法区、堆]线程私有区域的生命周期和线程一致;线程共享区域的生命周期和jvm一致。虚拟机栈(线程私有)描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧,用于存储局部变

2020-06-21 19:32:47 137

原创 java序列化

文章目录什么是java序列化和反序列化使用示例什么是java序列化和反序列化Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程。使用场景永久性保存对象,保存对象的字节序列到本地文件或者数据库中;通过序列化以字节流的形式使对象在网络中进行传递和接收;使用示例以下主要示例中主要演示了静态变量和transient的作用。public class User implements Serializable { //序列化对象

2020-06-14 18:06:30 87

原创 java内部类

文章目录1. 基本概念1.1 定义1.2 优缺点1.3 内部类分类1. 基本概念1.1 定义定义在类内部的类称为内部类1.2 优缺点优点内部类和外部类可以方便的访问彼此的私有方法和私有属性内部类可以解决java的单继承局限。内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外部对象的信息相互独立。内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。内部类提供了更好的封装,除了该外围类,其他类都不能访问。缺点结构复杂1.3 内部类分类成员内部类

2020-06-14 18:05:13 74

原创 java复制

文章目录直接赋值**分别设置值**(浅拷贝)基于Cloneable的深克隆和浅克隆浅拷贝深拷贝BeanUtils工具类实现浅拷贝直接赋值通过赋值的方式,实际上st1和st2指向堆内存中同一个对象,所以st1修改属性值会影响st2public class Student { private String name; private int age; public String getName() { return name; } publi

2020-06-14 18:04:18 67

原创 java泛型

文章目录1.什么是泛型2.泛型的使用3.泛型的类型擦除1.什么是泛型泛型提供了编译时类型安全监测机制,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。2.泛型的使用泛型类public class Generic<T> { private T key; public Generic(T key) { this.key = key; } public void setKey(T key) { this.

2020-06-14 18:03:30 64

原创 java反射

文章目录1.反射的概念2.反射的使用2.1 获取Class对象2.2 获取Class对象的方法集合2.3 获取构造方法2.4获取成员变量2.5创建对象的两种方法2.6 反射机制的优缺点1.反射的概念在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方 法的功能成为 Java 语言的反射机制。2.反射的使用2.1 获取Class对象方式一:通过对象的getClass()方法获取 。如果类中有定义静态

2020-06-14 18:02:25 89

原创 ReentrantLock 详解

文章目录ReentrantLock 介绍ReentrantLock构造方法ReentrantLock核心方法ReentrantLock和Synchronized比较condition应用场景生产者和消费者顺序打印ABC十遍lock方法分析ReentrantLock 介绍ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock锁在同一个时间点只能被一个线程锁持有;可重入表示,ReentrantLock锁可以被同一个线程多次获取。ReentraantLock是通过

2020-06-06 22:24:20 343

原创 semphore详解

文章目录semphore作用semphore构造函数semphore核心方法应用场景:使用semphore顺序打印ABC十遍semphore作用Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目semphore构造函数 /** * permits:许可线程的数量,代表同一时间,最多允许permits个线程执行acquire() 和release() 之间 * 的代码。同时内部变量state许可量的值等于permits */ p

2020-06-06 22:23:33 769

原创 还不懂java多线程并发?看这一篇就够了

文章目录1 java多线程实现1.1 继承Thread类1.2 实现Runnable接口1.3 实现Callable接口2 线程池3 线程生命周期状态4 wait与sleep的区别5 start与run的区别6 进程和线程的区别7 线程的基本方法8 上下文切换9 线程同步10 顺序打印ABC10遍11 java锁11.1乐观锁vs悲观锁11.2 自旋锁和适应性自旋锁11.3 synchronized同步锁12 JAVA阻塞队列(BlockingQueue)13 CountDownLatch和CyclicB

2020-06-06 22:22:36 846 1

原创 基于jdk1.8的Vector源码分析

Vector的特点底层数据结构为数组元素排列有序、可重复线程安全的,synchronized关键字Vector可以指定扩容因子,扩容大小为,当增长因子大于0时,则newCapacity = oldCapacity + capacityIncrement;当增长因子不大于0时,则newCapacity = oldCapacity +oldCapacityVector的构造方法// initialCapacity:初始化数组大小;capacityIncrement:增长因子public Vec.

2020-05-30 09:25:43 95

原创 基于jdk1.8的HashSet源码分析

文章目录HashSet特点:成员变量HashSet特点:底层由HashMap支持不能重复、无序线程不安全成员变量public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ static final long serialVersionUID = -5024744406713321676L;

2020-05-30 09:24:38 98

原创 基于jdk1.8的HashMap源码分析

文章目录HashMap特点HashMap成员变量静态内部类(Hash桶存储的节点的数据结构)HashMap构造函数HashMap添加键值对关键步骤HashMap和HashTable的区别HashMap特点1.底层采用数组+链表+红黑树的数据结构;2.key和value都允许为null;key不能重复3.排列无序4.线程不安全:java.util.Collections#synchronizedMap使HashMap具备线程安全的能力,或者使用ConcurrentHashMap;HashMap

2020-05-30 09:17:22 103

原创 基于jdk1.8的LinkedList的源码分析

基于jdk1.8的LinkedList的源码分析LinkedList的特点排列有序可重复底层使用双向链表数据结构查询速度慢,增删快线程不安全理解LinkedList主要需要理解几个概念:首节点:只要指导首节点就可以根据首节点的下一个节点依此查找到其他节点。尾节点:通过尾节点的上一个节点就可以依次查找到其他节点。节点:节点包含上一个节点、节点元素、下一个节点;每一个节点需要保存上一个节点和下一个节点。对LinkedList的操作都是改变节点中上一个节点和下一个节点的指向。Linke.

2020-05-23 21:08:53 136

原创 深入 理解ArrayList实现原理

文章目录基于jdk1.8的ArrayList原码分析ArrayList的成员变量ArrayList的构造方法ArrayList的扩容机制ArrayList的三种遍历方式ArrayList的remove(int index)方法基于jdk1.8的ArrayList原码分析ArrayList的特点:底层数据结构为数组元素排列有序、可重复、可以为null线程不安全元素查找快,增删慢扩容大小为:原先数组大小乘以1.5ArrayList的成员变量public class ArrayLis

2020-05-23 20:41:41 231

原创 手把手教你Typora(一)

文章目录Typora使用教程简介标题级别一级标题二级标题六级标题引用文字无序列表有序列表任务列表代码块数学表达式插入表格脚注分割线目录超链接网址插入图片斜体加粗加粗斜体删除线下划线表情符号下标上标文本居中转义高亮Typora使用教程简介typora是一款实用易操作的编辑软件。下面我会给出示例代码和实际效果,大家可以直接将代码部分copy到Typroa中查看效果,好了,下面直接开干吧。标题级别代码:# 一级标题 ## 二级标题 快捷键:Ctrl+2###### 六级标题 快捷键:Ct

2020-05-18 19:39:46 438

空空如也

空空如也

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

TA关注的人

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