随笔分类 - Java基础
摘要:大部分工具都是基于或者要用到`JMX`,所以程序启动时需要添加参数`-Dcom.sun.management.jmxremote`开启JMX管理功能,JDK6及以上版本默认开启 ## jps jps:JVM Process Status Tool,功能与ps类似,可以列出正在运行的虚拟机进程,并显示
阅读全文
摘要:# Map | map | 线程安全方式 | k/v为null | 数据结构(1.8) | 扩容机制 | 迭代器 | | | | | | | | | HashMap | 不安全 | 均可 | 数组+链表+红黑树 | 初始16,扩容2倍 | 容器本身 | | ConcurrentHashMap | 锁
阅读全文
摘要:类图 类图是一种用来描述类之间关系的图形,它可以用不同的符号来表示不同的关系,比如: | 关系 | 表示形式 | 含义 | 示例 | | | | | | | 依赖关系 | 虚线箭头 | 一个类使用了另一类的方法属性,但不持有引用 | 一个类的方法参数是另一个类的对象 | | 关联关系 | 实线箭头
阅读全文
摘要:AQS队列同步器 java.util.concurrent.locks.AbstractQueuedSynchronizer是一个同步器+阻塞锁的基本架构,用于控制加锁和释放锁,并在内部维护一个FIFO的线程等待队列,juc包下的锁,屏障等同步器多数是基于它实现的. AQS每当有新的线程请求资源时,
阅读全文
摘要:Java中引用相关的类 | 类 | 名 | 说明 | | | | | | ReferenceQueue | 引用队列 | 与某个引用类绑定,当引用死亡后会进入这个队列对象标记为垃圾(并不代表回收了)后或虚引用的对象被回收后,会加入到引用队列 | | HardReference | 强引用 | 任何O
阅读全文
摘要:线程池 初始化线程池: ThreadPoolExecutor executor = new ThreadPoolExecutor(10,10,10,TimeUnit.SECONDS, new LinkedBlockingQueue<>(10000), Executors.defaultThreadF
阅读全文
摘要:Java序列化 Serializable 在分布式场景下,当进行远程通信时,无论是何种类型的数据,都会以二进制序列的形式在网络上传送.序列化是一种将对象转换成字节序列的过程,用于解决在对对象流进行读写操作时所引发的问题. Java中所有要实现序列化的类都必须实现java.lang.Seria
阅读全文
摘要:ForkJoinPool Java 7 引入了一种新的并发框架—— Fork/Join Framework。同时引入了一种新的线程池:ForkJoinPool 这里介绍下ForkJoinPool 的适用场景,实现原理,以及示例代码。 ForkJoinPool 不是为了替代 ExecutorServi
阅读全文
摘要:ReentrantLock重入锁 reentrantLock是一种显式锁,与synchronized隐式锁对应,ReentrantLock实现基于AQS(AbstractQueueSynchronizer:队列同步器)通过对tryAcquire和tryRelease的重写实现了锁机制和重入机制,
阅读全文
摘要:延时队列DelayQueue的使用介绍 java.util.concurrent.DelayQueue public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>
阅读全文
摘要:JUC Java并发包:java.util.concurrent volatile:内存可见性,保证了线程安全三要素中的有序性,可见性,不保证原子性(代码示例) 可见性:缓存一致性协议(MESI):当CPU写数据时如果发现变量在其他CPU中存在副本,那么会发出信号通知其他CPU将该副本对应的缓存置为
阅读全文
摘要:Java10 新特性 var关键字 局部变量的类型推断 var关键字:这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。 使用场景 局部变量初始化 for循环内部索引变量 传统的for循环声明变量 使用限制 方
阅读全文
摘要:1. Java为什么要使用迭代器? 一种设计模式(迭代器模式:一种行为型模式):迭代模式是访问集合类的通用方法,只要集合类实现了Iterator接口,就可以用迭代的方式来访问集合类内部的数据,Iterator访问方式把对不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果
阅读全文
摘要:Java9 新特性 REPL (JShell) REPL(Read Eval Print Loop)意为交互式的编程环境。 JShell 是 Java 9 新增的一个交互式的编程环境工具。它允许你无需使用类或者方法包装来执行 Java 语句。它与 Python 的解释器类似,可以直接 输入表达式并查
阅读全文
摘要:1. Lambda表达式 匿名函数; 函数式接口(只有一个方法的普通接口)jdk1.8中有@FunctionalInterface注解声明; 2. 方法的默认实现和静态方法 接口中可以使用default关键字给方法添加默认实现; 主要为了接口升级,默认实现的存在可以不用修改之前的实现类 接口中可以定
阅读全文
摘要:类加载 双亲委托模型 Java语言是一种具有动态性的解释型语言,类只有被加载到JVM中才能运行。JVM会将编译生成的.class文件按需求和一定的规则加载到内存,并组织成一个完整的Java应用程序,这个过程由加载器来完成(ClassLoader及其子类),类加载器也是一个类,其实质是把类文件从硬盘读
阅读全文
摘要:### 并发的可达性分析 三色表记法:主要解决或者降低GC过程中用户线程的停顿,把遍历对象图过程中遇到的对象按照"是否访问过"这个条件标记为三种颜色: 1. **白色:**表示对象尚未被垃圾收集器访问过 2. **黑色:**表示对象已经被垃圾收集器访问过,且这个对象的所有引用都已经扫描过 3. **
阅读全文
摘要:JVM内存划分 首先有class文件=》由类加载器加载class文件到内存空间=》内存空间(方法区、堆、虚拟机栈、程序计数器、本地方法栈)=》垃圾回收负责对内存空间的清理工作=》 class文件:Java程序编译后产生的中间代码,其将会被JVM解释执行; 类加载器:负责将class文件加载到内存,供
阅读全文
摘要:1. 查找DNS缓存 DNS(Domain Name System) 是一个分布式的数据库,它用于维护网址 URL 到其 IP 地址的映射关系。在互联网中,IP 地址是计算机所能够理解的一种地址,而 DNS 的这种别名地址是我们人类能够理解和记忆的地址,DNS 就负责把人类记忆的地址映射成计算机能够
阅读全文
摘要:常见的编码格式 ASCII 码,总共有 128 个 用一个字节的低 7 位表示,031 是控制字符如换行回车删除等;32126 是打印字符,可以通过键盘输入并且能够显示出来。 ISO-8859-1(扩展ASCII编码):涵盖了大多数西欧语言字符,所有应用的最广泛。 ISO-8859-1 仍然是单字节
阅读全文