1、数据库索引为什么使用B+树而不是hashmap?
hash表只能匹配索引是否相等,不能实现范围查找;
当需要按照索引进行order by时,hash值没办法支持排序;
组合索引可以支持部分索引查询,如(a,b,c)的组合索引,查询中只用到了a和b也可以查询的,如果使用hash表,组合索引会将几个字段合并hash,没办法支持部分索引;
当数据量很大时,hash冲突的概率也会非常大;
B+树作为索引时,非叶子节点只保存索引,叶子节点才会保存数据,这样方便扫库,只扫描一遍叶子结点即可,但是B树因为其分支节点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以B+树用于数据库索引。
2、tcp为什么比udp可靠?
TCP协议进行数据通信之前需要三次握手建立连接,UDP协议不需要建立连接即可发送数据;
TCP有确认机制,丢包可以重发,保证数据的正确性;UDP不保证正确性,只是单纯的负责发送数据包。
3、常见HTTP协议的状态码
200(成功)
302 (重定向):请求重定向到指定网页
304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
401(未授权):请求要求身份验证
403(禁止):服务器拒绝请求(比如死循环了,一直访问)
404(未找到):服务器找不到请求的网页
405 (方法禁用):Post请求当成了Get请求直接访问
500 (服务器内部错误):有bug导致程序嗝屁了
502 (错误网关):服务器从上游接到了无效响应
504 ( 网关超时):nginx请求超时,请求一直没有返回

欢迎交流指正~