public static int topK(int[] arr, int k) { if (arr == null || k > arr.length || arr.length == 0 || k <= 0) { return -1;...
private TreeNode buildTree(Integer[] array, int index) { TreeNode treeNode; if (index < array.length) { Integer value =...
public class LRUCache<K,V>{ private final int cap; private final Map<K,V> map; private final LinkedList<K> list; public...
redis它只是做到了: 它认为的原子性。(单个命令原子,多条命令不一定原子) 隔离性。(单线程执行,各事务串行执行,天然满足隔离) AOF/RDB保证了部分的持久性。(持久化的时候可能存在数据丢失) 它不存在ACID中的C的概念,因为它...
JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,则要将以前系统的 Enumeration 接口转化为 Iterator 接口,这时就需要适配器模式。
RPC的本质是要使得微服务远程调用像调用本地方法一样无感。
- 对象的类名、实例变量(包括基本类型,数组,对其他对象的引用)都会被序列化;方法、类变量、transient实例变量都不会被序列化;
- Serializable反序列化不会调用构造方法;
- 单例类序列化,需要重写readResolve()方法;否则会破坏单例原则;
- 序列化对象的
引用类型变量
也要实现Serializable接口; - 同一对象序列化多次,只有第一次序列化为二进制流,以后都只是保存序列化编号,不会重复序列化;
- 使用Externalizable需要实现它的接口,并提供无参构造方法。
JDK Serializable
, FST
只适用于Java;Protobuf
, Thrift
, Avro
支持多种语言,但都需要先通过IDL(接口描述语言,Interface description language)定义Schema;Avro
和Kryo
序列化后的数据最小,FST
和Kryo
序列化时间开销表现最好;Hessian
支持多语言,无需IDL定义Schema,对Java数据类型、语法的支持最佳。
实验前提:MySQL默认隔离级别 = REPEATABLE-READ