Java版本
序列化
多次序列化对象不会得到多个对象
serialVersionUID
- UID不变,新加的字段不被赋值。
- UID重新生成后,反序列化就不成功,这时你的程序会走else的分支,一般是到数据库拿数据,再放入cache.
类修改后需要重新计算serialVersionUID值_Spring.yu的专栏-CSDN博客
Jackson自定义反序列化构造函数
log
异步日志AsyncAppender
日志级别判断
Java进程通信
- 管道【Pipe文件】
Java使用管道实现进程间通讯_jmppok的专栏-CSDN博客_java 管道
- 共享内存【RandomAccessFile,MappedByteBuffer】
- socket
关于共享内存shm和内存映射mmap的区别是什么? - 知乎
其他知识
hash & equals & compareTo
Object.hashCode()
目前对于一个Object的hashCode方法的第一次计算,默认情况下是通过xor-shift scheme的一个伪随机函数生成的。
hashcode值在第一次生成后会写入到内存里,和Object存储在一起(存在Object的头部)
还有部分陈旧的实现(老版本的JDK里)是通过使用Object存储的地址实现的。
Hash函数与xor-shift scheme,HashCollections,BloomFilter_weixin_30566111的博客-CSDN博客
switch的比较
先比较hashcode,再使用equals()函数比较。
和map一样。
lombok @EqualsAndHashCode父字段
Java基本数据类型是否一定存放在栈中?
局部变量被存储在栈中,对象实例和静态变量存储在堆中。
如果你声明了一个局部变量 int[] ,它的数组内容存储在堆当中,栈上存储的只是数组的引用(指针)。
计算溢出
finally执行时机
stream
stream性能差。
线程数最多多少
Java虚拟机本身:-Xms,-Xmx,-Xss;
系统限制:
/proc/sys/kernel/pid_max,
/proc/sys/kernel/thread-max,
max_user_process(ulimit -u),
/proc/sys/vm/max_map_count。
cap理论和base理论关系
- BASE是对CAP中一致性和可用性(ap)权衡的结果
- P是指一个分布式系统可以容忍网络出现分区(NP, network partitioning).