铠甲网络面试(部分)

所以可能需要五六十个结点。

  • 哪些场景会导致索引失效?使用OR一定会失效吗,什么情况下使用OR不会失效?

    相关知识:[1](#1) or语句前后没有同时使用索引,会发生索引失效。将key<>0 改为 key>0 or key<0,会用到索引;

    为了可以用到索引,可将 OR 运算符拆分成多个查询条件,并使用 UNION进行组合[2](#2),[3](#3) 。

    但是也有可能会发生索引合并[4](#4) : The Index Merge[5](#5) access method retrieves rows with multiple range scans and merges their results into one. This access method merges index scans from a single table only, not scans across multiple tables.

  • Redis在存储方面有哪些优化?采取了一些特殊编码。epoll的底层有了解吗?相关知识(参考bing与[6](#6)):

epoll是Linux下的一种高效的IO多路复用机制,它可以监听多个文件描述符(fd)(一个IO连接是通过套接字(socket)来实现的,套接字是一种特殊的文件描述符) 的事件,如可读、可写、异常等。epoll的底层原理主要有三个方面:

  1. epoll使用一个红黑树来管理所有的fd,每个fd对应一个epoll_event结构体,存储了fd的信息和事件类型。
  2. epoll使用一个双向链表来存储就绪的fd,每次调用epoll_wait时,只需要遍历这个链表,而不需要像select那样遍历所有的fd。
  3. epoll使用内核回调函数 来通知用户空间的进程或线程,当某个fd发生了感兴趣的事件 时,内核会将该fd插入到就绪链表中,并唤醒等待在epoll_wait上的进程或线程。
    • epoll的流程,和它的几个关键的函数?Answer by bing:
      epoll的流程大致如下:
      调用epoll_create()函数创建一个epoll对象,返回一个文件描述符(fd)。
      调用epoll_ctl()函数将要监听的fd添加到epoll对象中,指定感兴趣的事件类型(如读、写、异常等)。
      调用epoll_wait()函数等待epoll对象中的fd发生事件,返回就绪的fd和事件类型。
      处理就绪的fd和事件,然后重复第三步,直到不需要监听了。
      调用close()函数关闭epoll对象的fd,释放资源。

epoll的关键函数有:

epoll_create():创建一个epoll对象,返回一个fd。

epoll_ctl():向epoll对象中添加、修改或删除要监听的fd和事件类型。

epoll_wait():等待epoll对象中的fd发生事件,返回就绪的fd和事件类型。

  • TCP如何实现流量控制?相关知识from bing: 发送窗口的大小取决于接收方窗口和拥塞窗口的最小值。接收端通过TCP首部的通告窗口字段来向发送端通告接收窗口。Q:发送方超时重传后,有没有可能导致接收方重复接收数据

  • JDK从哪个版本开始使用G1作为默认垃圾回收器的?A:JDK9


  1. Mysql索引失效的场景 ↩︎

  2. or为什么会导致索引失效 ↩︎

  3. Stackoverflow : MySQL: how to index an "OR" clause ↩︎

  4. https://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html ↩︎

  5. 为什么where条件中使用or索引不起作用? ↩︎

  6. 知乎----深入理解 Linux 的 epoll 机制及epoll原理 ↩︎

相关推荐
底层玩家老张3 天前
什么是关系型数据库:一次库存超卖事故的内核复盘
高并发·mvcc·关系型数据库·存储引擎·acid
拒绝内耗。8 天前
高并发系统如何提升吞吐量?从扩容、缓存、异步到数据库优化
架构·高并发
凤山老林8 天前
高并发系统架构设计:Spring Boot 多级限流、库存预扣减与异步下单全链路实战
springboot·高并发·限流·异步
kolyle9 天前
万级 QPS 下的 Token 分发系统架构:从 0 到 1 跑通 AI 时代的“水电煤“
开发语言·人工智能·系统架构·token·qps·极智词元·大模型私有化部署
敲代码的嘎仔11 天前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发
敲代码的嘎仔11 天前
互动问答系统实战:两级评论模型、ES 搜索集成、Caffeine 多级缓存全记录
java·开发语言·数据库·elasticsearch·缓存·mybatis·高并发
隐擎fox11 天前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
Java爱好狂.14 天前
Java初学者如何设计一个高并发系统?
程序员·高并发·架构师·并发编程·java面试·java面试题·java八股文
爱和冰阔落16 天前
【Linux】epoll 真的是 O(1) 吗?从阻塞 I/O、select/poll 到 LT/ET 与 Reactor 一次讲透
linux·运维·高并发·tcp
醉颜凉16 天前
Redis网络层解析:高性能服务器架构设计与实现
redis·epoll·网络架构·i/o多路复用·事件驱动