随笔分类 - java
摘要:找出字符串里面相同的字符 /*找出字符串里面相同的字符*/ public static List<Character> test5(String aa ) { //String aa = "abcaefbhijk"; List<Character> li = new ArrayList<>(); /
阅读全文
摘要:/*将字符串拆分成相邻字符串的组合字符*/ public static String[] test4() { String aa = "abcaefbhijk"; int result = 1; int number = aa.length(); for (int i = 2; i <= numbe
阅读全文
摘要:为了避免简单工厂模式的缺点,不完全满足 OCP(对扩展开放,对修改关闭)。 工厂方法模式和简单工厂模式最大的不同在于,简单工厂模式只有一个(对于一 个项目或者一个独立的模块而言)工厂类,而工厂方法模式有一组实现了相同接 口的工厂类。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模 式里不同
阅读全文
摘要:CAS(Compare and Swap)是一种原子操作,用于实现乐观锁的一种方式。CAS 操作包括三个参数:内存地址(或变量),期望值和新值。CAS 操作会先比较内存地址处的值和期望值是否相等,如果相等,则将该内存地址的值更新为新值;如果不相等,则不做任何操作。CAS 操作是一种无锁算法,可以保证
阅读全文
摘要:概念 CyclicBarrier 是 Java 中的另一个同步辅助类,它可以让一组线程互相等待,直到所有线程都达到一个屏障点后再继续执行。与 CountDownLatch 不同的是,CyclicBarrier 的计数器可以循环使用,当所有线程都到达屏障点后,计数器会重置,可以被复用。 所谓 Cycl
阅读全文
摘要:概念解释 CountDownLatch 是 Java 中的一个同步辅助类,它可以让一个或多个线程等待其他线程完成操作后再继续执行。CountDownLatch 内部维护了一个计数器,当计数器的值减为0时,所有等待的线程就会被唤醒。 CountDownLatch 的主要方法包括: 构造方法:Count
阅读全文
摘要:使用 native 关键字说明这个方法是原生函数,也就是这个方法是用 C/C++等非Java 语言实现的,并且被编译成了 DLL,由 java 去调用。 (1)为什么要用 native 方法 java 使用起来非常方便,然而有些层次的任务用 java 实现起来不容易,或者我们对程序的效率很在意时,问
阅读全文
摘要:ABA 问题描述: 假设有两个线程,线程 1 和线程 2,线程 1 工作时间需要 10 秒,线程 2 工作需要 2 秒; 主内存值为 A,第一轮线程 1 和线程 2 都把 A 拿到自己的工作内存; 第 2 秒,线程 2 开始执行,线程 2 工作完成把 A 改成了 B ; 第 4 秒,线程 2 把 B
阅读全文
摘要:AQS(AbstractQueuedSynchronizer)是 Java 中用于构建锁和同步器的框架,它是并发包中很多同步类的基础。AQS 提供了一种基于 FIFO 等待队列的同步器实现,通过内置的队列和状态管理机制,可以实现各种同步器,如 ReentrantLock、CountDownLatch
阅读全文
摘要:ReentrantReadWriteLock 介绍 ReentrantReadWriteLock 是 Java 中的一个读写锁实现,它包含了两种锁:读锁和写锁。读锁是共享锁,多个线程可以同时获取读锁进行读操作,但是写锁是排他锁,只有一个线程可以获取写锁进行写操作。ReentrantReadWrite
阅读全文
摘要:ReentrantLock 介绍 ReentrantLock 是 Java 中的一个可重入锁,它提供了与 synchronized 关键字类似的功能,但相比 synchronized,ReentrantLock 提供了更多的灵活性和功能。 定义:ReentrantLock 是一个可重入且独占式的锁,
阅读全文
摘要:可以使用Java 8的Stream API来实现这个需求。具体步骤如下: 1. 创建一个新的集合,用于存放合并后的元素。2. 使用Stream的filter()方法过滤出id相同的元素。3. 使用Stream的map()方法将id相同的元素合并成一个新的元素,其中别的属性可以通过自定义的合并规则来实
阅读全文
摘要:方法引用(Method References) 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! 方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的
阅读全文
摘要:到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为J
阅读全文
摘要:Stream API说明 Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则 是 Stream API。 Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以
阅读全文
摘要:Optional类是Java 8中引入的一个新特性,它可以用来解决空指针异常的问题。在之前的版本中,如果一个方法返回的结果有可能为空,我们通常需要在使用该结果之前进行判空操作,以避免出现NullPointerException。而使用Optional类可以更加简洁和安全地处理这种情况。 下面是一个使
阅读全文

浙公网安备 33010602011771号