JDK
文章平均质量分 71
yzh_1346983557
做一个有思想有灵魂的。。。“码农”
展开
-
JDK8 日期工具类DateUtils
代码】JDK8日期工具类DateUtils。原创 2022-01-06 16:41:08 · 417 阅读 · 0 评论 -
Java 线程池原理总结,结合源码
线程池(Thread Pool)是一种基于“池化”思想管理线程的工具,好处:降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。提高响应速度:任务到达时,无需等待线程创建即可立即执行。提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源调度失衡,降低系统的稳定性。使用线程池可以进行统一的分配、调优和监控。提供更多更强大的功能:线程池具备可拓展性,允许开发人员向其中增加更多的功能。比如延时定时线程池ScheduledThr原创 2021-10-02 23:53:46 · 750 阅读 · 0 评论 -
理解 MappedByteBuffer 及其实现类 DirectByteBuffer
java nio (jdk1.4) 中引入了MappedByteBuffer,相比较之前java io 的BufferedReader,BufferedInputStream 操作大文件,性能得到了极大提升,下面理解一下性能得到提升的原因。内存管理在理解MappedByteBuffer之前,先看看计算机内存管理的几个术语:MMU:内存管理单元,CPU中独立的硬件。物理内存:即内存条的内存空间。虚拟内存:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完原创 2021-09-04 14:01:28 · 2955 阅读 · 1 评论 -
ArrayList源码随笔
1.成员变量public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEMENTDAT原创 2020-12-21 16:41:24 · 119 阅读 · 0 评论 -
jdk8 获取上一周、下一周的周几
/** * 获取上周的周几 * * @param day 周几 1-周一...7-周日 * @return yyyy-MM-dd */ public static String getPreviousDay(int day) { //获取今天日期 LocalDate now = LocalDate.now(); //获取上周的今天 LocalDate minusDays = ...原创 2020-11-04 17:48:19 · 1037 阅读 · 0 评论 -
Java8 Optional判空 代码Demo
1.使用Optional 进行list集合的判空: List<Object> list = null; List<String> result = Optional.ofNullable(list) .map(objects -> objects.stream().map(Object::toString).collect(Collectors.toList()))//list不为null时的处理解析原创 2020-08-21 14:58:46 · 1249 阅读 · 0 评论 -
java hashCode()理解
作用:hashCode()方法返回对象散列值,作用是为了快速定位对象在hash表中位置。1.JDK的Object中,hashCode()是native方法,jvm根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。注意:hashCode()返回的hash值并不能表示对象的内存地址(可能计算的时候只使用了对象内存地址的一部分),最多只能说hashCode()是对象内存地址的一种表现形式,决不能说等价于内存地址。Object.equals()使用的“==原创 2020-07-16 18:30:22 · 174 阅读 · 0 评论 -
JDK8 ConcurrentHashMap源码笔记
理解了jdk1.8 HashMap的源码再来理解ConcurrentHashMap事半功倍,HashMap传送门:https://blog.csdn.net/yzh_1346983557/article/details/105456563一、ConcurrentHashMap的数据结构图图来源百度图片:可发现ConcurrentHashMap的数据结构和jdk1.8的HashMap...原创 2020-04-14 12:08:26 · 306 阅读 · 0 评论 -
LinkedHashMap源码笔记(jdk8)
jdk1.7是在构造函数中调用init()方法,init()中直接new Entry()创建了一个空节点对象作为双向链表的初始节点。LinkedHashMap extends HashMap implements Map,可发现LinkedHashMap相比较HashMap多维护了2个成员变量head、tail,这2个变量就是LinkedHashMap用来实现双向链表的。也是比HashMap.Node多维护了2个成员变量before、after,用于双向链表的连接。原创 2020-04-13 11:34:12 · 187 阅读 · 0 评论 -
JDK8 HashMap源码笔记
个人看源码的笔记记录,基于JDK1.8。一、HashMap的成员变量 //table数组默认初始化容量16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //table数组最大容量2^ 30 次方 static final int MAXIMUM_CAPACITY = ...原创 2020-04-11 18:56:41 · 228 阅读 · 0 评论 -
ABC三线程顺序执行
一、Lock锁加Condition实现(推荐)LockABC:class RunMain { public static void main(String[] args) { LockABC lockABC = new LockABC(); new Thread(new Runnable() { @Override ...原创 2020-04-03 11:14:24 · 650 阅读 · 1 评论 -
ThreadLocal原理与使用场景
一、ThreadLocal原理如果看懂了ThreadLocal的set()方法,get()、remove()方法也就好理解了,所以重点看一下set()方法。set()方法执行流程总结:1.获取当前线程对象2.获取当前线程对象的成员变量ThreadLocalMap3.1不为null,set值3.1.1获取当前ThreadLocalMap对象的Entry数组3.1.2获取T...原创 2020-04-02 19:52:19 · 440 阅读 · 0 评论 -
windows下载openjdk1.8
下载官网地址:http://jdk.java.net/java-se-ri/8,其它版本的下载就是把后缀“8”改成其它版本号就ok了。如图:然后,1.添加环境变量:JAVA_HOME=F:\java-se-8u40-ri\bin,其中,F:\java-se-8u40-ri是你解压出来的文件地址。2.修改环境变量:PATH末尾加入:;%JAVA_HOME%,注意%前面有英文分号“;”...原创 2019-06-24 15:19:58 · 24199 阅读 · 3 评论 -
Linux(CentOs7)安装OpenJDK1.8
1.使用Xshell连接上远程Linux后,执行命令:安装jre:sudo yum install java-1.8.0-openjdk -y安装jdk:sudo yum install java-1.8.0-openjdk-devel -y查看jre安装情况:java -version显示:openjdk version "1.8.0_181"OpenJDK...原创 2018-08-08 15:52:46 · 17004 阅读 · 3 评论