一、java.time
利用类将当前时间转换为对应格式的字符串
String nowTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern(“yyyyMMddHHmmddSSS”));
二、java.json
将包含JSON或Array字符串转换为对象
Object json = new JSONTokener(stringcontent).nextValue();
阿里巴巴包JSON
JSON.parseObject()或JSON.parseArray()
三、java.util
1、Optional
JDK8提供Optional
该类提供了一种用于表示可选值而非空引用的类级别解决方案
解决NullPointerException问题
Optional不是Serializable,因此它不应该用作类的字段
2、List
ArrayList和LinkedList
ArrayList和LinkedList都是Java集合框架中的数据结构实现,其中ArrayList是基于数组实现的动态数组,而LinkedList则是基于链表实现的双向链表。
ArrayList相比于LinkedList有以下优点:
- 快速随机访问:由于ArrayList底层是基于数组实现的,因此可以通过下标快速访问元素,时间复杂度为O(1)。
- 在末尾添加和删除元素较快:由于数组的连续性,在末尾添加和删除元素时无需涉及元素移动,只需要修改底层数组的长度即可。
- 数据局部性好:由于ArrayList的元素是存储在连续的内存中的,因此在读取数据时,由于CPU预先加载数据时会将数据块作为一个单位从硬盘上读到内存里,因此可以充分利用CPU高速缓存,提高程序效率。
LinkedList相比于ArrayList有以下优点:
- 在任意位置快速插入和删除元素:由于LinkedList底层是基于链表实现的,因此可以通过指针操作快速插入和删除元素,时间复杂度为O(1)。
- 可以更好地支持栈、队列和双端队列的操作:由于LinkedList具有头、尾两个连接点,因此对于栈、队列和双端队列的操作,LinkedList有更灵活的实现方式。
- 不需要预设大小:由于LinkedList底层是基于链表实现的,因此可以动态分配内存,不需要预设初始化的大小。
总体来说,ArrayList适用于读取操作比较多的场景,而LinkedList适用于插入、删除等修改操作比较多的场景。除此之外,ArrayList会逐渐占用更多的内存空间,在极端情况下可能会导致OutOfMemoryError异常,而LinkedList则需要更多的内存空间来存储额外的指针信息,因此在内存使用方面存在一些缺陷。
3、解决OOM问题
使用LinkedList可以解决ArrayList数据量大出现的OOM异常问题,因为它是以节点间的指针关系进行连接,而不是预先分配空间来存储元素的。所以LinkedList能够支持非常大的数据量,并且不会因为内存限制而出现OOM异常。
然而,LinkedList 也有它自己的缺点。由于每个节点需要存储额外的指针信息,因此要占用更多的内存空间。此外,由于节点之间不是连续存储的,访问某个元素时需要遍历整个链表,因此在查询效率和随机访问方面,LinkedList的性能通常比ArrayList差。
总之,如果需要频繁地进行随机访问和查询操作,建议使用ArrayList;如果需要处理大量的元素并避免OOM异常,则可以考虑使用LinkedList。
四、java.lang
Integer封装类
Integer封装类,==对比只能是在-128~127,超过的值用equals对比
五、MyBatis
MyBatis与JDBCTemplate在大量数据的优缺点
MyBatis是运用于内存的,如果读取到内存的数据量过大,很容易导致内存溢出,因此,在大量数据的情况,不建议使用
JDBCTemplate不运用于内存,就不存在内存溢出的情形
六、JDK7
ForkJoinPool
ForkJoinPool是Java 7新增的一个线程池实现,主要用于执行大量的任务并利用多核CPU的优势来提高性能。
ForkJoinPool的核心思想是将任务拆分成更小的子任务,并将这些子任务分配给不同的线程去处理,最终将子任务的结果合并成整个任务的结果。
在实现上,ForkJoinPool使用了"工作窃取"算法,即空闲的线程会主动从其他线程的任务队列中窃取尚未完成的任务进行处理,以达到线程任务负载均衡的效果。
ForkJoinPool的主要优点包括:
- 支持处理大量的、细粒度的任务,提高了并行计算的效率和吞吐量。
- 可以利用多核CPU的优势,充分发挥硬件资源的潜力。
- 比较容易实现任务的分解和合并过程,开发人员可以更加专注于具体的业务。
ForkJoinPool的缺点包括:
- 自带的调度逻辑可能造成可预测性变差,增加了一定的开发复杂度。
- ForkJoinPool中的线程数量是动态变化的,无法通过配置控制。
- 线程间的通信开销较大,可能会降低效率。
在使用ForkJoinPool时,需要提前了解的主要内容包括:
- 如何将任务拆分成更小的子任务,并定义如何合并子任务的结果。
- 如何选择合适的线程池大小来充分利用硬件资源。
- 如何避免线程争用和锁竞争等并发问题。
总体来说,ForkJoinPool是Java中实现高性能多线程计算的一种有效手段,通过合理利用其特点可以使得并行计算的效率得到提高。
七、JDK8
stream流调试
新版本存在这个功能(图:2022版本),旧版本需要安装插件