随笔分类 -  JAVA基础

摘要:顺序集合(Sequenced Collections) 提供了几个新的接口,用于实现有序的集合。 在没有提供有序集合操作之前,我们进行集合的序列操作一般如下 First element Last element List list.get(0) list.get(list.size() - 1) D 阅读全文
posted @ 2024-11-19 21:13 PerfectLi 阅读(520) 评论(0) 推荐(0)
摘要:Records Records(记录)是Java 16引入的一个新特性,旨在提供一种更简洁、更表达力的方式来声明用于存储和访问数据的简单类。Records通过自动生成常见方法,如构造函数、equals()、hashCode()和toString(),来减少样板代码的编写。 以下是Records的一些 阅读全文
posted @ 2023-09-27 09:27 PerfectLi 阅读(104) 评论(0) 推荐(0)
摘要:Dynamic constant 以下是一个示例,演示了如何使用动态类文件常量(DCFC)来处理配置管理的情况。假设我们有一个简单的应用程序,它需要从配置文件中读取数据库连接信息。配置文件的路径和内容在运行时可能会发生变化,因此我们可以使用DCFC来动态计算这些值。 首先,我们创建一个包含动态常量的 阅读全文
posted @ 2023-09-27 09:26 PerfectLi 阅读(234) 评论(0) 推荐(0)
摘要:Switch Expressions (Preview) "Switch Expressions" 是 Java 编程语言中的一个新特性,它在 Java 12 中作为预览功能引入,然后在 Java 13 中进一步完善。这个特性旨在改进和扩展传统的 switch 语句,以提供更强大的语法和功能。 以下 阅读全文
posted @ 2023-09-27 09:26 PerfectLi 阅读(50) 评论(0) 推荐(0)
摘要:Text Blocks https://openjdk.org/jeps/378 Text Blocks(文本块)是Java语言中的一个特性,用于更容易地创建和处理多行文本字符串。这个功能是在Java 13中引入的,旨在改善多行字符串的可读性和可维护性。 以下是关于Text Blocks的一些关键信 阅读全文
posted @ 2023-09-27 09:26 PerfectLi 阅读(87) 评论(0) 推荐(0)
摘要:密封类(Sealed Classes) Sealed Classes和interfaces限制了有哪些类可以继承和实现他们 目标 1.限制有哪些类可以继承和实现他们 2.提供一种具体的修饰符,更声明性的限制继承和实现 3.通过提供详尽分析模式,为进一步模式匹配提供基础 密封类对其子类有以下约束: 1 阅读全文
posted @ 2023-09-06 20:15 PerfectLi 阅读(47) 评论(0) 推荐(0)
摘要:ArrayList的sublist方法 返回的是创建的List的内部类SubList的对象 public List<E> subList(int fromIndex, int toIndex) { subListRangeCheck(fromIndex, toIndex, this.size); r 阅读全文
posted @ 2023-08-30 14:27 PerfectLi 阅读(131) 评论(0) 推荐(0)
摘要:开闭原则 对新增开放,对修改关闭 开闭原则的使用方式 面向接口编程:定义清晰的接口,通过接口来定义方法,实现类实现接口,通过接口来调用方法。 抽象层编程:通过抽象层来定义方法,实现类实现抽象层,通过抽象类的子类来实现功能。 依赖倒置原则 依赖于抽象方法,而不是具体实现 主要内容: 高层模块不应该依赖 阅读全文
posted @ 2023-08-27 23:31 PerfectLi 阅读(20) 评论(0) 推荐(0)
摘要:继承类和实现接口 可以看出LinkedHashMap继承了HashMap,那么主要方法都是和HashMap相同,那么主要看相对于HashMap重写了那些方法就能确定LinkedHashMap相对于HashMap的特征 public class LinkedHashMap<K,V> extends H 阅读全文
posted @ 2023-08-22 15:02 PerfectLi 阅读(24) 评论(0) 推荐(0)
摘要:进行总结 1. TreeMap的数据结构是红黑树 存取都是根据红黑树的规则进行 https://www.cnblogs.com/perferect/p/13569671.html 2.Comparator比较器有两种 通过构造器传入 public TreeMap(Comparator<? super 阅读全文
posted @ 2022-03-09 23:19 PerfectLi 阅读(295) 评论(0) 推荐(0)
摘要:参考博客:蟹粉小笼包https://www.cnblogs.com/aalex/p/8480112.html [美团技术团队文章]('https://tech.meituan.com/2022/05/12/principles-and-practices-of-completablefuture.h 阅读全文
posted @ 2021-12-02 18:54 PerfectLi 阅读(162) 评论(0) 推荐(0)
摘要:对于我们而言,经常会遇到服务器服务出现异常的情况,一般情况下,我们可以通过查看应用日志解决。但是有些特殊情况就不适用了。 例如:服务器有段时间总是莫名挂掉了;应用访问变得特别慢;cpu占用突然变高又突然变低等等,这些就涉及到服务器管理相关操作。 最常见的异常:1.oom异常,服务器kill应用,我们 阅读全文
posted @ 2020-10-15 14:33 PerfectLi 阅读(566) 评论(0) 推荐(0)
摘要:在集合使用中,我们经常会用到HashSet,一般用于过滤一组数据,保证数据唯一。今天看一下HashSet的源码,之前看过HashMap,再来看,HashSet可以说是很简单了。 源码分析 初始化 底层是通过HashMap存储数据的。 PRESENT成员变量用于HashMap的value值 priva 阅读全文
posted @ 2020-10-10 10:02 PerfectLi 阅读(123) 评论(0) 推荐(0)
摘要:首先,我们先了解一下什么是阻塞队列: 当队列满了时,队列会阻塞插入元素的线程,直到队列不满; 当队列为空时,获取元素的线程会等待队列变成非空。 常用到的方法 上面是对阻塞队列的简单了解,下面重点分析一下LinkedBlockingQueue。 源码分析 Node节点 可以看出是单向的链表结构 sta 阅读全文
posted @ 2020-09-24 18:15 PerfectLi 阅读(337) 评论(0) 推荐(0)
摘要:Semaphore主要用于对线程的控制,举个使用场景,几十个excel文件,数量千万。通过多线程几十个线程读取数据之后,要写入到数据库。但是数据库的连接数只有10。这个时候我们就要通过这个类对这些线程进行控制。因为数据写入时间过程,其他线程无法获取连接,出现无法获取数据库连接报错的情况。 主要的方法 阅读全文
posted @ 2020-09-24 10:35 PerfectLi 阅读(131) 评论(0) 推荐(0)
摘要:CyclicBarrier一般也是用于对多个线程任务进行同步执行。是多线程并发开发中重要的一个工具类; 分析一下源码 初始化 //用于控制栅栏进入的锁 private final ReentrantLock lock = new ReentrantLock(); //条件锁 private fina 阅读全文
posted @ 2020-09-23 17:17 PerfectLi 阅读(282) 评论(0) 推荐(0)
摘要:源码解析 内部锁结构 (共享锁) /** * 继承AQS,实现共享锁的获取和释放方法 */ private static final class Sync extends AbstractQueuedSynchronizer { Sync(int count) { setState(count); 阅读全文
posted @ 2020-09-22 08:02 PerfectLi 阅读(109) 评论(0) 推荐(0)
摘要:数据结构(和ConcurrentHashMap类似) 存储数据的基础结构时Node的数组; 节点中保存的是当前节点的hash,主键Key,对应值value,链表的next; transient Node<K,V>[] table; static class Node<K,V> implements 阅读全文
posted @ 2020-09-21 22:53 PerfectLi 阅读(221) 评论(1) 推荐(1)
摘要:参考书:《Java并发编程艺术》 在学习这一块知识之前,可以先学习一下JMM相关的知识,回过来再看这个问题,就很好理解:https://www.cnblogs.com/perferect/p/13680158.html volatile 特性 可见性:对一个volatile变量的读,总能看到任意线程 阅读全文
posted @ 2020-09-21 00:21 PerfectLi 阅读(179) 评论(0) 推荐(0)
摘要:参考书:《Java并发编程艺术》 附图均来自:《Java并发编程艺术》 先了解一下基础的概念:什么是JMM? JMM(全称:Java Memory Model), JMM定义的是线程和主内存间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Lo 阅读全文
posted @ 2020-09-18 23:55 PerfectLi 阅读(340) 评论(0) 推荐(0)