Java版本

image.png

序列化

多次序列化对象不会得到多个对象

《Java实操避坑指南》视频

serialVersionUID

  • UID不变,新加的字段不被赋值。
  • UID重新生成后,反序列化就不成功,这时你的程序会走else的分支,一般是到数据库拿数据,再放入cache.

类修改后需要重新计算serialVersionUID值_Spring.yu的专栏-CSDN博客

Jackson自定义反序列化构造函数

《Java 业务开发常见错误 100 例》-极客时间

log

异步日志AsyncAppender

《Java 业务开发常见错误 100 例》-极客时间

日志级别判断

《Java 业务开发常见错误 100 例》-极客时间

Java进程通信

  1. 管道【Pipe文件】

Java使用管道实现进程间通讯_jmppok的专栏-CSDN博客_java 管道

  1. 共享内存【RandomAccessFile,MappedByteBuffer】

Java 进程通信(共享内存) · Hov’s Blog

  1. socket

关于共享内存shm和内存映射mmap的区别是什么? - 知乎

image.png

其他知识

hash & equals & compareTo

《Java实操避坑指南》视频

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实操避坑指南》视频

Java基本数据类型是否一定存放在栈中?

局部变量被存储在栈中,对象实例静态变量存储在堆中。
如果你声明了一个局部变量 int[] ,它的数组内容存储在堆当中,栈上存储的只是数组的引用(指针)。

计算溢出

《Java 业务开发常见错误 100 例》-极客时间

finally执行时机

《Java 业务开发常见错误 100 例》-极客时间

stream

Java基础总结 - 图3
stream性能差。
image.png

线程数最多多少

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理论关系

image.png

  • BASE是对CAP中一致性和可用性(ap)权衡的结果
  • P是指一个分布式系统可以容忍网络出现分区(NP, network partitioning).

语法糖

重写桥接方法

image.png
image.png

匿名内部类

image.png