随笔分类 - 面经(非常规)
记录一些八股背不到的问题
摘要:CPU读取内存数据时并非一次只读一个字节,而是会读一段64字节长度的连续的内存块(chunks of memory),这些块我们称之为缓存行(Cache line)。 假设你有两个线程(Thread1和Thread2)都会修改同一个volatile变量x: volatile long x; 如果Th
阅读全文
摘要:Mysql使用limit m,n分页查询,性能很低,原因在于MySQL是先查出m+n个数据,然后抛弃掉前m个数据。 优化方法:
阅读全文
摘要:1.开放定址法:线性探测法、平方探测法等。就是哈希冲突后,加上一个便宜,寻找不冲突的位置。ThreadLocal采用这种方法。 2.拉链法:哈希冲突后,通过链表解决。HashMap采用这种方法。 3.双哈希法。哈希冲突后,再使用另一个哈希重新计算位置。 4.建立公共溢出区。将哈希表分为基本表和溢出表
阅读全文
摘要:哈希算法:取哈希后模节点的数目 假设有一个由A、B、C三个节点组成的KV服务,每个节点存放不同的KV数据。通过哈希算法,每个key都可以寻址到对应的服务器,比如,查询key是key-01,计算公式为hash(key-01)%3,经过计算寻址到了编号为1的服务器节点A 但如果服务器数量发生变化,基于新
阅读全文
摘要:#Q1:客户端连接一个不存在的 IP 地址,会发生什么? 这个问题要分两种情况来思考,不同的情况得到的结论是不同的。 第一个情况:目标 IP 地址和客户端的 IP 地址是同一个局域网(网络号相同)。 第一种情况,客户端无法发出 SYN 报文,主要卡在数据链路层。 因为目标地址不存在 IP 地址,客户
阅读全文
摘要:select 实现多路复用的方式是,将已连接的 Socket 都放到一个文件描述符集合,然后调用 select 函数将文件描述符集合拷贝到内核里,让内核来检查是否有网络事件产生,检查的方式很粗暴,就是通过遍历文件描述符集合的方式,当检查到有事件产生后,将此 Socket 标记为可读或可写, 接着再把
阅读全文
摘要:
阅读全文
摘要:1.自定义runnable接口实现类 public class MySyncThreadTest { public static void main(String[] args) throws Exception { CustomRunnable cRunnacle = new CustomRunn
阅读全文
摘要:核心线程数:如果任务是 CPU 密集型,即计算任务比较多,可以设置线程数为核心数+1,这样可以让 CPU 资源得到充分利用。如果任务是 IO 密集型,即网络请求比较多,可以根据实际情况设置线程数,一般可以设置为 2 * 核心数。 最大线程数:最大线程数一般设置为 2 * 核心线程数,可以根据实际情况
阅读全文