jdk 基于 8 版本 在平时的开发中,我们会经常用到 HashMap, 非常有必要了解源码。 HashMap 基于拉链法和红黑树来实现,关于这两个算法,这里不做解释。 使用方式 1 2 3 4 5
java 的线程池可以充当一个任务执行器的,但是有时候不符合我们的要求,所以需要自定义开发。 满足1:可以根据任务数量来动态调整核心线程数和最大线程数
在 java 中有四种引用类型,分为强引用,软引用,弱引用,虚引用,这里介绍如何使用软引用来实现一个缓存。 实现代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
jdk 基于 8 版本 在平时的开发中,我们会经常用到 ArrayList, 非常有必要了解源码。 使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 public class ArrayListTest { @Test void test() { List<String> ids = new ArrayList<>(); assertThat(ids.add("1")).isEqualTo(true); assertThat(ids.add("2")).isEqualTo(true); assertThat(ids.add("3")).isEqualTo(true); assertThat(ids.remove("2")).isEqualTo(true); assertThat(ids.set(0, "4")).isEqualTo("1"); assertThat(ids.get(0)).isEqualTo("4"); }
jdk 基于 8 版本 在平时的开发中,我们会经常用到 LinkedList, 非常有必要了解源码。 使用方式 1 2 3 4 5 6 7 8 9 10 11 12 13 public class LinkedListTest { @Test void test() { List<String> ids = new LinkedList<>(); assertThat(ids.add("1")).isEqualTo(true); assertThat(ids.add("2")).isEqualTo(true); assertThat(ids.add("3")).isEqualTo(true); assertThat(ids.remove("2")).isEqualTo(true); assertThat(ids.set(0, "4")).isEqualTo("1"); assertThat(ids.get(0)).isEqualTo("4"); }
只要涉及到数据库操作,必定就会使用 @Transactional 注解,其中有一个属性就是 propagation(传播类型),掌握它的用法很重要。演示代码见末尾。 演示事务