java
最软的妹
这个作者很懒,什么都没留下…
展开
-
AQS 简介
@TOC抽象队列同步器CLH队列CLH(Craig,Landin,and Hagersten)队列是一个虚拟的双向队列,虚拟的双向队列即不存在队列实例,仅存在节点之间的关联关系。没错 AQS就是基于CLH队列锁实现的。AQS组成state (volatile int)exclusiveOwnerThread 持有资源的线程FIFO 双向队列源码模板方法模式state访问方法// 返回同步状态的当前值protected final int getState() {原创 2020-08-19 23:29:26 · 200 阅读 · 0 评论 -
java线程池
java线程池作用原理线程池执行流程处理流程工作队列线程池的类型newSingleThreadExecutor使用场景newFixedThreadPool使用场景:newCachedThreadPool使用场景:newScheduledThreadPool使用场景:问题线程池即存放线程的池子作用降低线程创建和销毁线程造成的开销提高响应速度。直接从线程池中拿线程,无需手动创建,速度会快提高线程可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统稳定性,使用线程池可以进行分原创 2020-08-08 21:19:01 · 233 阅读 · 0 评论 -
CountDownlatch简介
用法原理源码解读例子原创 2020-08-08 16:27:00 · 211 阅读 · 0 评论 -
HashMap下标计算
// 计算hash/**static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }put时找到数组下标 i = (n - 1) & hashfinal V putVal(int hash, K key, V value, boolean onlyIfAbsent,原创 2020-08-03 15:17:33 · 828 阅读 · 0 评论 -
java 枚举
java 枚举定义特点定义枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。本质就是,一个类里定义几个静态变量,每个变量都是这个类的实例。特点枚举继承了java.lang.Enum类,不是Object。而java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable接口。非抽象的枚举类默认会使用final修饰,因此不能派生子类可以实现接口不能继承类,因为所有枚举类都继承自java.lang.Enum(由编译器添原创 2020-07-14 22:19:03 · 125 阅读 · 1 评论 -
ThreadLocal 介绍
ThreadLocal是什么ThreadLocal源码ThreadlocalMap存储结构——EntrysetgetsetInitialValue()特点应用场景内存泄漏为什么用ThreadLocal作为key为什么要用弱引用是什么ThreadLocal是Thread的局部变量,用于编多线程程序,对解决多线程程序的并发问题有一定的启示作用。每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离。ThreadLocal源码public原创 2020-07-12 22:58:09 · 173 阅读 · 0 评论 -
DCL(double check lock)单例
1.实现一个简单单例饿汉式public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleton; }}懒汉式public class SingletonTest { private static原创 2020-07-02 23:05:45 · 280 阅读 · 0 评论 -
java反射机制
java反射机制定义为什么要有反射呢?使用实践定义Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。为什么要有反射呢?反射让开发人员可以通过外部类的全路径名创建对象,并使用这些类,实现一些扩展的功能。反射让开发人员可以枚举出类的全部成员,包括构造函数、属性、方法。以帮助开发者写出正确的代原创 2020-07-01 22:28:16 · 136 阅读 · 0 评论 -
java String类
这里写目录标题String代码常用方发“+”号连接字符串String在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了.String 为什么是final效率安全性代码public final class String implements Serializable, Comparable<String>, CharSequence { @Stab原创 2020-06-27 15:15:04 · 127 阅读 · 0 评论 -
java Object类
这里写目录标题一级目录简介一级目录简介registerNatives()【底层实现】hashCode()equals(Object obj)clone()toString()notify()notifyAll()wait(long timeout)finalize()原创 2020-06-26 18:02:28 · 100 阅读 · 0 评论 -
Java基本数据类型
变量类型名字类型字节取值范围默认值包装类型byte整型1byte-27~270short短整型2byte-215~2150int整型4byte-231~2310long长整型8byte-263~2630.0Lfloat浮点型4byte-2149~21490.0fdouble双精度浮点型8byte-21047~210470char字符2byte-128~128\u0000(空格原创 2020-06-26 18:00:17 · 112 阅读 · 0 评论 -
JVM垃圾收集器
JVM垃圾收集器垃圾收集器总览年轻代垃圾收集器1.Serial特点应用场景参数Stop The World2.ParNew3.Parallel Scavenge老年代垃圾收集器1.CMS2.Serial Old(MSC)3.Parallel Old整堆收集器G1 (老年代年轻代都可以)垃圾收集器总览HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1JDK7 8,HotSpot虚拟机所有收集原创 2020-06-25 23:13:00 · 110 阅读 · 0 评论 -
Java修饰符
java修饰符修饰符访问修饰符defaultprivateprotectedpublic非访问修饰符staticfinalabstractsynchronizedtransientvolatile修饰符修饰符用来定义类、方法或者变量,访问修饰符使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。public interface Test(){ //默认public s原创 2020-06-20 15:36:59 · 174 阅读 · 1 评论 -
java深克隆与浅克隆
java深拷贝与浅拷贝深拷贝与浅拷贝浅拷贝深拷贝深拷贝与浅拷贝java中的拷贝需要实现java.lang.Cloneable接口,然后重写clone()方法,深、浅拷贝都需要。深拷贝和浅拷贝的区别,则在于java对象中的基本数据属性和引用数据类型属性浅拷贝对基本数据类型进行值传递,对引用数据类型进行引用传递即指向相同内存地址的拷贝。深拷贝对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容(复制值,不通的内存地址)。...原创 2020-06-20 00:09:29 · 178 阅读 · 2 评论 -
java七大设计原则
java七大设计原则1.开闭原则(Open Close Principle/OCP)定义:一个类、模块和函数应该对扩展开放,对修改关闭。2.单一职责原则(SRP) - Single Responsibility Principle单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。3.里氏代换原则(Liskov Substitution Principle/LSP定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象。通俗讲:子类可以扩展父类的功能,但不能改变父类原有原创 2020-06-20 00:03:01 · 658 阅读 · 0 评论 -
Java集合
这里写自定义目录标题Java集合复习大作战ListArrayListLinkedListVectorQueueSetHashSetTreeSetMapHashMapTreeMapJava集合复习大作战java 集合框架图ListArrayList底层数据结构可变大小的数组。它允许所有元素,包括null。有序线程不安全查询快,增删慢可以重复元素get() 直接读取第几个下标,复杂度 O(1)add(E) 添加元素,直接在后面添加,复杂度O(1)add(index, E) 添加元素原创 2020-06-19 23:59:30 · 730 阅读 · 0 评论