![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK
介绍JDK自带工具类
LSZXZNJ
这个作者很懒,什么都没留下…
展开
-
java.util.Optional<T>
这个filter 跟 Stream的filter不一样。这个filter 返回的是 Optional对象实例。ofNullable : 如果value为空,则返回 带有空值的 实例。of : 如果 value 为空,则抛异常。通过两个静态方法来获取实例。原创 2024-07-02 15:55:31 · 183 阅读 · 0 评论 -
Integer i1 = 128;Integer i2 = 128;boolean b = i1 == i2; 是ture 还是 false
可以看到,缓存的数组 默认 最大值是127,所以 128 是会重新new新的integer对象。用 == 比较 自然是不相等的。自动装箱,是把一个 基础类型 比如 int 包装成一个 对象类型Integer,先不讨论这是怎么实现的。看一下 Integer 类,内置了一个 Integer类型的数组。所以,默认情况下,-128 -- 127 之间的数值,用 == 比较是相等的,超出范围就不相等了。当一个int 变量值 在数组中存在,则直接取出来用,否则就new 一个 ingeter对象了。原创 2023-10-08 15:45:38 · 158 阅读 · 0 评论 -
JDBC使用了哪种设计模式
所以,可以将JDBC中定义的接口看成是 抽象部分,而mysql 、oracle看成是具体的实现,这种将抽象和实现分开,就是桥接模式的定义啊。所以,不能只关注 实际的接口类或者实现类之间的关系,应该从宏观上来看他们之间的关系,因此,JDBC就是使用了桥接模式。可以看到,不论是mysql 还是 oracle,都对 JDBC接口进行了实现。看一下策略模式类图(图解设计模式),好像是挺像的。将抽象部分与它的实现部分分离,使它们都可以独立地变化。不同的数据库厂商提供操作自己数据库的驱动包,立于使用它的客户而变化。原创 2023-08-30 15:20:11 · 746 阅读 · 0 评论 -
函数式编程
在日常的开发过程中,当我们调用某个方法时,方法的入参 是一个接口,那么可以通过 匿名内部类的方式来实现。比如 线程类,入参是一个 Runnable 接口,入参只能是一个实现了Runnable接口的 类对象:一般的写法:这种写法,看起来没什么问题,但是,如果 代码中有类似大量的代码,就会觉得不是很好看了。于是,使用函数式编程写法:这样看起来,是不是特别简洁。针对第一种写法和第二种写法,实际上都是 JDK的一种语法,作为使用者,只能按照别人的规则来使用就好了。他们表达的意思都是一样的,就是 入原创 2022-07-03 18:21:59 · 549 阅读 · 0 评论 -
探针是什么
JDK提供了一种技术,可以对 应用无任何的代码侵入的情况下,追加某种功能。这种技术是探针第一点:通常 我们的项目 中只有一个 main 函数,项目JVM 启动时,会运行 这个main函数。public static void main( String[] args ) { }使用探针时, 探针类 需要有一个 premain函数,比如:public static void premain(String Args, Instrumentation instrumen原创 2022-04-14 19:33:37 · 2975 阅读 · 0 评论 -
ThreadPoolExecutor 线程池知识点
线程池ctl变量线程池,首先要搞明白一点:线程池的工作线程数量 workerCount 有效线程数量和线程池的状态 runState是用一个 AtomicInteger 来标识的。很多地方 都 根据 workerCount 和 runState 做 逻辑判断,所以,如果不搞懂这两,那看源码根本就看不懂。workerCount 最大目前是 (2^29)-1 (about 500 million)runState:RUNNING: 线程池创建后的 默认状态,标原创 2019-11-09 15:50:03 · 144 阅读 · 0 评论 -
ThreadLocal
ThreadLocal 是一个泛型类ThreadLocalMap 是 ThreadLocal的一个内部类ThreadLocal.ThreadLocalMap threadLocals = null; 是 Thread 的一个成员变量ThreadLocal的get()方法会执行:t.threadLocals = new ThreadLocalMap(this, firstVal...原创 2019-11-22 22:04:11 · 60 阅读 · 0 评论 -
java包
概图分析:一、最底层的是 JVM/////////////////////////////////////////////////////////////////////////////////////////////二、 base librariesjava.lang、java.util、java.math 三个包1. Math解释了有关数学的知识,java.l...原创 2019-11-23 13:19:22 · 194 阅读 · 0 评论 -
Thread
今天写一写关于线程的东西。线程,现代CPU调度的基本单位,有进程创建,共享进程资源。java中的线程:Thread先写一下线程的一个 中断 状态标识。中断标识 用来表示该线程接收到了中断请求。Thread中提供了一些方法来操作中断:1. 向目标线程发起中断请求,则调用 目标线程 的 interrupt() 方法,该方法是实例方法2. 查询目标线程的中断状态isInterru...原创 2019-12-29 15:20:08 · 109 阅读 · 0 评论 -
JUC
一、lock1)sun.misc.Unsafe这个类,程序员是不能用的,但在JUC中使用了:public native void park(boolean var1, long var2); 用于阻塞线程public native void unpark(Object var1); 用于唤醒线程public final native boolean compareA...原创 2019-12-30 22:56:29 · 92 阅读 · 0 评论 -
Collection
Queue 是一个队列,定义了队列的基本操作。分为三类 :1、添加1)添加返回false offer2)添加抛异常 add2、返回首部元素并移除首部元素1)返回并移除抛异常 remove2)返回并移除返回null poll3、返回首部元素 不移除首部元素1)返回首部抛异常 element2)返回首部返回null peek以上抛异常或者返回null或者返回f...原创 2019-12-30 19:19:25 · 91 阅读 · 0 评论 -
HashMap
1.8put方法详解:1. 哈希函数static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}如果key == null, hash值 为0否则,取key的hashCode,设为h, h ^h>>>16 , 让高位也参与运算2. 定位 桶 的位置tab[i ..原创 2021-11-19 11:32:14 · 161 阅读 · 0 评论 -
List。
ArrayList底层是 数组初始化1. 不指定容量大小,则 ,用一个空数组,{}2. 指定容量大小,则,校验容量合理性,创建一个新的Object数组添加:1. 如果发生扩容扩容 原容量的一半int newCapacity = oldCapacity + (oldCapacity >> 1); copy: elementData = Arrays.copyOf(elementData, newCapacity);Lin...原创 2021-11-24 14:03:50 · 246 阅读 · 0 评论 -
Runtime类梳理
Runtime 是单例类一般可以读取 CPU、内存信息退出JVM触发GC注册钩子等CPU相关public native int availableProcessors();内核与逻辑处理器:1个内核 可以包含2个逻辑处理器, 通常所说的 4核 、8核 都是指 逻辑处理器一般这个方法,对于 线程池 设置 核心线程数和最大线程数时 使用;或者其他需要根据cpu数量来设置 资源 量时 使用。内存相关可以获取JVM内存信息:初始内存,最大内存,当前可原创 2022-04-12 11:57:58 · 568 阅读 · 0 评论 -
System类梳理
System类,可以完成:数组copy、获取系统时间、获取系统环境变量、操作应用属性变量数组copy数组,是一个定长的对象。如果需要存储的数据长度 超过 初始定义的长度时,就需要 扩容。将原数组中的数据 copy 到另一个新的数组中。必须使用 System类提供的 arrayCopy 来完成 数组的copy。public static native void arraycopy(Object src, int srcPos,原创 2022-04-11 14:19:08 · 444 阅读 · 0 评论