05 2021 档案
摘要:行为参数化传递 1.首先看一个小的例子 我们要将一个库存排序,再进行苹果重量比较 // inventory 库存 Collections.sort(inventory, new Comparator<Apple>() { public int compare(Apple a1,Apple a2){
阅读全文
摘要:事务 事务的特性 原子性:所有操作要么都做要么都不做 一致性:数据在事务操作前后都满足业务规则的约束 隔离性:数据库允许多个并发事务同时对数据进行读写和修改的能力 持久性:对数据的修改是永久的 truncate与delete 区别: truncate是DDL语句操作,delete是DML语句操作 简
阅读全文
摘要:使用Build模式 不是直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象 然后客户端在builder对象上调用类似于setter的方法,来设置每个相关的可选参数 最后,客户端调用无参的build方法来生成不可变的对象 // 在这当中 FF是不可变的,所有的默认
阅读全文
摘要:CopyOnWriteArrayList介绍 ###CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了类似写时复制的策略,只不过这里是直接复制一个数组 源码分析 初始化:内部创建了一个大小为0的Obj
阅读全文
摘要:ThreadLocal介绍 ThreadLocal是JDK包提供的,它提供了线程本地变量,也就是如果你创建了一个ThreadLocal变量, 那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量时, 实际操作的是自己本地内存里面的变量,从而避免了线程安全问题。 基本使用 t
阅读全文
摘要:进程与线程 ==进程==:系统进行资源分配的最小单元,每个进程都有独立的代码和数据空间--进程的上下文 ==上下文切换==:cpu从一个进程切换到另一个进程的动作 ==线程==:cpu调度的对消单位,是进程的一部分,只能由进程创建(分为用户线程和守护线程) 每个线程共享进程的数据空间,它们分别有独立
阅读全文
摘要:synchronized锁 1.用法 修饰代码块,称为同步块,作用范围就是整个一个代码块 synchronized(data){ data.add(i); } 修饰一个非静态方法,被修饰的方法称为同步方法,作用范围为整个方法 pulic synchronized void add(int i){ d
阅读全文

浙公网安备 33010602011771号