随笔分类 - Java
摘要:什么是堆污染 heap pollution 堆污染发生在使用可变参数(varargs)或泛型时,将不兼容的类型插入到一个泛型对象中。这会导致在运行时尝试访问这些对象时发生 ClassCastException。例如: public static void heapPollutionExample(L
阅读全文
摘要:前言 我们知道,运行java程序需要jre或jdk环境,但是现在的jdk安装包已经很大了,如果我们的程序很简单,并且需要把程序发送给其他没有jdk环境的人的运行要如何做呢?如何精简我们的程序包呢? 从java9开始的模块功能为我们提供了解决方案。Java 库设计者现在可以将代码清晰地划分为模块,这些
阅读全文
摘要:多线程中如何确定核心线程数 并发不高 IO密集型:CPU逻辑数*2+1 CPU密集型:CPU逻辑数+1 高并发 任务执行时间短:(CPU逻辑数+1),减少线程上下文的切换 任务执行时间长:调整系统架构(增加缓存,优化SQL) 确认CPU逻辑数可以使用如下方法 @Test public void sy
阅读全文
摘要:java8之前接口中的方法默认类型都是public abstract,也就是抽象方法,具体实现都交给实现类。而java8对接口功能做了增强,增加了default方法和static方法,也就是说从java8开始接口中的方法不再只能是抽象的,也可以有实现。 其应用也非常简单,如下面的例子所示,在接口中定
阅读全文
摘要:目录定义使用注解作用分类元注解JDK中预定义的一些注解@Override@Deprecated:该注解标注的内容,表示已过时@SuppressWarnings自定义注解 定义 注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在
阅读全文
摘要:你真的了解try{ return }finally{}中的return?
阅读全文
摘要:System.nanoTime() 方法 JDK1.5之后java中的计时给出了更精确的方法:System.nanoTime(),输出的精度是纳秒级别,这个给一些性能测试提供了更准确的参考。 注:1 ms = 1000,000 ns 通过System.nanoTime()方法并不能计算出当前系统时间
阅读全文
摘要:我们知道文件存储的方式在计算机当中是以字节的方式进行存储的,可以通过对文件字节的操作来实现文件的加密。 下面的例子是通过读取文件的字节,然后使字节中的每一位取反(1变0,0变1),再进行倒置,来实现加解密过程。 import java.io.BufferedInputStream; import j
阅读全文
摘要:不知道他验证了没。。。 package com.zjw; /** * @author 朱俊伟 * @date 2020/11/12 22:09 */ public class TestError { public static void main(String[] args) { testWhile
阅读全文
摘要:目录基于接口的动态代理基于子类的动态代理——cglib 动态代理: 特点:字节码随用随创建,随用随加载 作用:不用修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 基于接口的动态代理 接口 package com.zjw.proxy; public interface IP
阅读全文
摘要:一:值是null的情况: a.equals(b), a 是null, 抛出NullPointException异常。 a.equals(b), a不是null, b是null, 返回false Objects.equals(a, b)比较时, 若a 和 b 都是null, 则返回 true, 如果a
阅读全文
摘要:Java开发手册说明: 对于 Integer var = ? 在-128 至 127 之间的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有
阅读全文
摘要:JAVA_HOME: E:\Android\Java\jdk1.8.0_131 PATH: %JAVA_HOME\%bin 也可以只配置PATH就可以,如 E:\Android\Java\jdk1.8.0_131\bin 验证配置成功,cmd输入java -version
阅读全文
摘要:目录1 简介2 存储过程3 几个重要的变量4 深入源码4.1 新建集合4.2 添加第一笔数据4.2.1 数组初始化4.2.2 计算key的hash值4.2.3 计算应该存放在数组中的位置4.2.4 添加元素4.2.5 添加一个元素后,集合结构4.3 添加第二笔数据4.4 添加重复的key4.5 解决
阅读全文
摘要:tableSizeFor是HashMap中的一个方法,功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂的数。 参考:https://www.cnblogs.com/loading4/p/6239441.html 该算法让最高位的1后面的位全变为1。最后再让结果n+1,即得到了2
阅读全文
摘要:目录简介常用方法操作范例 简介 Collections是java.util包下的集合工具类,定义了除了存取以外的集合常用方法。 常用方法 public static <T extends Comparable<? super T>> void sort(List<T> list) //升序排列(元素
阅读全文
摘要:目录1 Map父接口2 HashMap2.1 HashMap的定义2.2 HashMap使用3 Hashtable(不使用)4 Properties5 TreeMapHashMap HashTable TreeMap区别 1 Map父接口 特点:存储一对数据(Key-Value),无序、无下标,键不
阅读全文
摘要:String类已经实现了Comparable接口,我们可以根据TreeSet提供的构造器传入自己的比较器。 public class Set4 { public static void main(String[] args) { Set<String> stringSet = new TreeSet
阅读全文