本文共 1896 字,大约阅读时间需要 6 分钟。
Unique
键作为主键,如果表中连 Unique
键都没有定义的话,则 InnoDB
会为表默认添加一个名为 row_id
的隐藏列作为主键。 延伸问题:Innodb为什么一定需要主键?(从聚簇索引的角度去思考) 9、什么是聚簇索引? MySQL索引分类,90%的开发都不知道 10、myIsam里有聚簇索引吗? 没有。myIsam里的索引都是二级索引,因此myIsam里索引跟数据是分开存储的。 11、synchronized底层是怎么实现的? 在 Java 中每个对象都隐式包含一个 monitor(监视器)对象,加锁的过程其实就是竞争 monitor 的过程,当线程进入字节码 monitorenter 指令之后,线程将持有 monitor 对象,执行 monitorexit 时释放 monitor 对象,当其他线程没有拿到 monitor 对象时,则需要阻塞等待获取该对象。 延伸问题:synchronized锁升级过程?Java对象的内存布局? 12、volatile的理解 面试:Java并发之volatile我彻底懂了 13、伪共享 CPU缓存从内存读数据时,是按缓存行读取的,即使只用到一个变量,也要将整行数据进行读取,这行数据量可能包含其他变量。当多个线程同时修改同一个缓存行里的不同变量时,由于同时只能有一个线程在操作,所以相比将每个变量放到不同缓存行里,性能会有所下降。(补充:缓存一致性协议) 伪共享出现的原因:因为CPU缓存和内存交换数据的单位是缓存行,而同一个缓存行里的多个变量不能同时被多个线程修改 如何避免伪共享:字节填充(创建变量时,使用字段对其进行填充,避免多个变量被分派到同一个缓存行里) 14、TCP keepalive机制 聊聊 TCP 长连接和心跳那些事 延伸问题:HTTP的keepalive 15、SYN Flood “首包丢弃”防御SYN Flood攻击的基本原理解析 16、TCP粘包拆包 粘包拆包,Netty及远洋通信中的解决方案!超实用 17、服务端推送涉及的技术 几种服务端推送技术方案的比较 18、多路复用I/O 模型如何演进及 I/O 多路复用是什么? 点我一起多人运动 转载地址:http://mhqsx.baihongyu.com/