- Sep 2024
-
interviewguide.cn interviewguide.cn
-
属性不依赖于其它非主属性
非主键字段必须直接依赖于主键,而不能通过其他非主键字段间接依赖于主键
-
-
interviewguide.cn interviewguide.cn
-
保证客户端发送的最后一个ACK报文段能够到达服务端
保证被动关闭连接的一方能正确关闭
-
在2MSL等待期间,定义这个连接的插口(客户的IP地址和端口号,服务器的IP地址和端口号)不能再被使用
在2MSL的Time_Wait时间内,该TCP连接不能被复用。因此time_wait状态过多,会造成资源浪费。 客户端time_wait状态过多,会导致很多端口被占用,无法向相同目标IP和相同目标Port的服务端建立连接。 服务端time_wait状态过多,会占用很多系统资源。
-
-
interviewguide.cn interviewguide.cn
-
为什么需要三次握手,两次不行吗
阻止历史连接的建立,避免资源浪费。 ⼀个「旧 SYN 报⽂」⽐「最新的 SYN」 报⽂早到达了服务端,那么此时服务端就会回 ⼀个 SYN + ACK 报⽂给客户端,此报⽂中的确认号是 91(90+1)。 客户端收到后,发现⾃⼰期望收到的确认号应该是 100 + 1,⽽不是 90 + 1,于是就会回 RST 报⽂。 在两次握⼿的情况下,服务端在收到 SYN 报⽂后,就进⼊ ESTABLISHED 状态,意 味着这时可以给对⽅发送数据,但是客户端此时还没有进⼊ ESTABLISHED 状态,假设这次 是历史连接,客户端判断到此次连接为历史连接,那么就会回 RST 报⽂来断开连接,⽽服务 端在第⼀次握⼿的时候就进⼊ ESTABLISHED 状态,所以它可以发送数据的,但是它并不知 道这个是历史连接,它只有在收到 RST 报⽂后,才会断开连接。
-
-
interviewguide.cn interviewguide.cn
-
一个 TCP 连接是可以发送多个 HTTP 请求
长连接
-
- Jul 2024
-
www.programmercarl.com www.programmercarl.com代码随想录1
-
-prices[i]
切忌写成:dp[i-1][1] - prices[i],因为全程只能买入一次
-
-
www.programmercarl.com www.programmercarl.com代码随想录1
-
AVL
AVL树也要满足二叉搜索树的性质: 1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3. 它的左、右子树也分别为二叉搜索树
-
-
www.programmercarl.com www.programmercarl.com代码随想录1
-
优先级队列的定义正好反过来了,可能和优先级队列的源码实现有关
即: 小顶堆的比较函数是:return a > b; 大顶堆的比较函数是:return a < b;
-
-
www.programmercarl.com www.programmercarl.com代码随想录2
-
stack 提供迭代器来遍历stack空间么
stack 不提供迭代器来遍历其空间: stack 的设计目的是只能访问顶部元素,不支持直接遍历其所有元素。 它只提供了有限的接口,如 push(), pop(), top() 等。 这是为了保持 stack 数据结构的完整性和后进先出的特性。
-
C++中stack 是容器么
C++中 stack 是容器适配器,不是容器。 stack 是建立在其他容器之上的容器适配器(container adapter)。 它提供了一个特定的接口来使用底层容器的功能,主要是实现后进先出(LIFO)的数据结构。
-
-
www.programmercarl.com www.programmercarl.com代码随想录1
-
位运算
位运算不需要额外空间,但是left和right不能相等。 while(left < right){ s[left] ^= s[right]; s[right] ^= s[left]; s[left] ^= s[right]; ++left; --right; }
-
-
blog.csdn.net blog.csdn.net
-
shared_from_this()是什么意思
shared_from_this()的作用是使类对象安全的获取自己的 shared_ptr 引用
-
当没有共享智能指针指向这个TcpConnection对象时(引用计数为0),这个TcpConnection对象就会被析构删除(堆内存释放)
由于是在for循环内创建了一个临时的conn对象来持有item.second这个智能指针,然后把item.second这个智能指针释放掉,但item.second指向的堆内存未被释放(现在由conn管理),然后conn在其所属的sub eventloop线程中执行TcpConnection::connectDestroyed(),将conn作为参数传给TcpConnection::connectDestroyed()函数会使conn的引用计数+1,因此即使for循环结束conn离开for循环作用域,其管理的堆内存仍然不会被释放,直到TcpConnection::connectDestroyed()函数执行完毕,没有任何智能指针指向此堆内存了,此TCPConnection对象占用的堆内存才真正被释放
-
全局概览Poller、Channel和EventLoop在整个Multi-Reactor通信架构中的角色
图的说明: 在这个模型中,
main reactor
(主反应堆)主要负责接受新的客户端连接请求。这包括处理accept
事件,接受新连接,并将新连接分派给sub reactor
(子反应堆)。sub reactor
则负责处理具体的I/O事件,如读事件(read
)、写事件(write
)、以及错误事件(error
)。这些I/O事件的处理由sub reactor
中的各个EventLoop
实例来完成,每个实例都会有自己的Poller
和Channel
来处理具体的事件。总结来说: -
main reactor
负责处理新的连接请求(连接事件)。 -sub reactor
负责处理已建立连接的I/O事件(可读、可写、错误事件)。
-
- Apr 2024
-
www.bilibili.com www.bilibili.com
-
UNION:A并B,去除重复部分(不去除交集) UNION ALL:A并B,不去除重复部分(不去除交集) UNION ALL不执行去重操作,效率高
-
-
www.bilibili.com www.bilibili.com
-
SQL99语法: 内连接:INNER JOIN ON 左外连接:LEFT OUTER JOIN ON 右外连接:RIGHT OUTER JOIN ON 满外连接:FULL OUTER JOIN INNER, OUTER可省略
-
-
www.bilibili.com www.bilibili.com
-
FROM之后,先WHERE,再ORDER BY, 再LIMIT
-
-
www.bilibili.com www.bilibili.com
-
where name like '_a'; ——第二个字符是下划线,第三个字符是a的name; 或者这样写: where name like '$_a' escaep '$'
Tags
Annotators
URL
-
-
www.bilibili.com www.bilibili.com
-
WHERE必须在FROM后面
Tags
Annotators
URL
-
-
www.bilibili.com www.bilibili.com
-
IFNULL(x, 0) 若x为null,则用0来代替x
-
-
www.bilibili.com www.bilibili.com
-
删掉该节点的一个关键字,它剩余的关键字个数是不是仍然>=(m / 2)向上取整 - 1
Tags
Annotators
URL
-
-
www.bilibili.com www.bilibili.com
-
B+树的非叶子节点,只保存关键字和指针;所有data都保存在叶子节点
-