标签:com tcp的三次握手 malloc 部分 分割 简单 标志位 收集 怎么
谈谈一致hash算法?
按照hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间。将这些数字头尾相连,想象成一个闭合的环形。如果集群中加入新的机器,采用它的IP或者唯一别名计算哈希值,也映射到环中。新增key值以顺时针的方向,存储到离自己最近的机器中。
参考:https://blog.csdn.net/cb_lcl/article/details/81448570
说说乐观锁和悲观锁?
乐观锁:假设每次操作别人不会修改数据,当更新的时候根据版本号判断数据是否变化,适合读多写少的场景。
悲观锁:假设每次操作别人会修改数据,操作前先加上锁,后面的操作被阻塞,直至操作完毕释放锁。
说说数据库的索引原理,聚簇索引和非聚簇索引?
索引本质上是一种数据结构(存储结构+算法),目的是为了加快数据检索的速度。
https://www.jianshu.com/p/e1dce41a6b2b
select
是快照读。select for update,insert,update,delete
是当前读。HashTable & HashMap & ConcurrentHashMap区别及优缺点?
相比HashMap,HashTable和ConcurrentHashMap都是线程安全的。HashTable在put和get操作上加上synchronize实现同步控制。而ConcurrentHashMap通过分段锁,避免锁住全哈希表,提高了同步效率。
参考:https://www.cnblogs.com/sunshinekevin/p/10625516.html
Synchronize是可重入锁吗,实现原理?
可重入锁,
参考:https://blog.csdn.net/zc19921215/article/details/84780335
说说JVM类加载过程?
加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。
装载:查找和导入Class文件。
链接:把类的二进制数据合并到JRE中。
校验:检查载入Class文件数据的正确性。
准备:给类的静态变量分配存储空间。
解析:将符号引用转成直接引用。
初始化:对类的静态变量,静态代码块执行初始化操作。
Collections.sort底层排序方式?排序稳定性?具体场景的排序策略?
Arrays.sort和Collections.sort最终使用的都是TimSort的算法。
Timsort的核心过程:
1、数组个数小于32的情况使用二分插入排序。
2、数组大于32时,先算出一个合适的大小,在将输入按其升序和降序特点进行了分区。排序的输入的单位不是一个个单独的数字,而是一个个的块-分区。其中每一个分区叫一个run。针对这些 run 序列,每次拿一个run出来按规则进行合并。每次合并会将两个run合并成一个 run。合并的结果保存到栈中。合并直到消耗掉所有的run,这时将栈上剩余的 run合并到只剩一个 run 为止。这时这个仅剩的 run 便是排好序的结果。
3、Timsort是稳定的算法,当待排序的数组中已经有排序好的数,它的时间复杂度会小于nlogn。与其他合并排序一样,Timesort是稳定的排序算法,最坏时间复杂度是O(n log n)。在最坏情况下,Timsort算法需要的临时空间是n/2,在最好情况下,它只需要一个很小的临时存储空间
ps -ef|grep your_application
jstat -gcutil 172046 1000
jmap -histo 172046 > jmap.txt
阻塞队列不用java提供的自己怎么实现,condition和wait不能用?
https://blog.csdn.net/h525483481/article/details/80347485
拥塞窗口为什么要用慢启动?
https://www.cnblogs.com/losbyday/p/5847041.html
Redis的数据一致性问题(分布式多节点环境 & 单机环境)
https://blog.csdn.net/qq_27384769/article/details/79499373
简述docker容器?
Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。
设计模式的看法和认知,有哪些设计模式?
设计模式就是一套被反复使用,多数人知晓的代码设计经验的总结。常用的设计模式如下:
工厂模式:Spring通过工厂模式创建bean
代理模式:Spring AOP通过动态代理增强原对象的功能
责任链模式:SpringMVC的过滤器
单例模式:spring构建的对象默认是单例
如何实现分布式缓存?
分布式缓存系统要满足动态扩展和高可用性,通常采用Redis实现。Sentinel模式实现主从,
Cluster模式实现集群。通过key做一致性哈希,实现key对应redis结点的分布。
简述对JVM中的Runtime?
Runtime类代表Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,可以通过Runtime.getRuntime()方法来获取当前程序的Runtime实例。
如何实现何高并发下的削峰和限流?
限流算法:漏桶算法和令牌桶算法(基于Redis的分布式令牌桶实现)
标签:com tcp的三次握手 malloc 部分 分割 简单 标志位 收集 怎么
原文地址:https://www.cnblogs.com/xiaoyangjia/p/11393733.html