IO/NIO
IO面向流 阻塞式 直接读取字节
NIO 面向缓冲区 非阻塞式 一个线程管理多个通道channel 先将数据读入缓冲区
mybaitis
#{}预编译处理 ${} 直接替换成变量的值 #{}因为是预编译处理 防注入
批量插入 用executype.BATCH
多线程
wait() 与 sleep() sleep不会释放锁 wait释放锁 需要notify唤醒
线程池
作用 创建和销毁线程的代价太高 提高效率,方便管理
execute与submit execute无需返回 submit有返回
shutdownnow 与 shutdown shutdownnow 停止正在执行的线程 shutdown不执行新的线程 原有的线程不受影响
wait notify notifyall 为什么在 object 类中 java提供的锁是对象级的
活锁 饥饿 死锁 活锁:释放资源自己不使用 饥饿:优先级高的一直占据资源 死锁:占据对方的资源不释放
避免死锁:规定所有进程申请资源必须以一定的顺序
jvm
jvm堆和栈
常用jvm调优
map hashmap LinkedHashMap ConcurrentHashMap
list arraylist linkedlist
数据库
常见的sql调优方式
那些字段不适合加索引 为什么
索引的数量控制