什么是 I/O 多路复用:I/O 多路复用指的是可以通过某种机制,监视多个文件描述符,一旦某个文件描述符准备就绪后,就能够通知程序进行相关的读写操作,目前 I/O 多路复用机...
什么是 I/O 多路复用:I/O 多路复用指的是可以通过某种机制,监视多个文件描述符,一旦某个文件描述符准备就绪后,就能够通知程序进行相关的读写操作,目前 I/O 多路复用机...
ARQ 协议是一个自动重传请求协议,主要通过确认和超时两个机制,在不可靠服务的基础上实现可靠信息的发送。如果发送方在发送后的一段时间没有接收到确认,则会自动再次重新发送,AR...
Cookie 和 Session 都是会话技术,Cookie 运行在客户端,Session 运行在服务器端 Cookie 的大小有限制,并且浏览器对保存 Cookie 的个数...
检验和:这是一个端到端的检验和,目的是用于检测数据在传输过程中有没有发生变化,如果接受到的 TCP 报文段检验和发生了差别,那么 TCP 会丢弃这个报文段 流量控制:TCP ...
TCP 是面向连接的,可靠性高一些;UDP 是基于非连接的,可靠性低一些 由于 TCP 是面向连接的通信,需要三次握手、确认连接等过程,会有延时,实时性差一些,并且建立连接的...
MySQL 主从复制原理:主库(Master) 有一个 I/O 线程,从库(Slave) 有一个 I/O 线程和 SQL 线程,从库的 I/O 线程负责读取主库的 binlo...
PHP 中的所有变量都是被存储在 zval 变量容器中,在 zval 变量容器中主要是包含 变量名、变量值、变量类型 Type、以及另外两个额外的字段 is_ref、refc...
PHP 数组的底层主要是通过 HashTable 实现,HashTable 通过映射函数或者散列函数将 String Key 转换成一个普通的数字下标,然后再将 Value ...
MySQL 用于衡量数据查询的效率是 磁盘 I/O 次数,一般来讲索引比较大,尤其是对于关系型数据库这种数据量俺的所以能达到亿级别的,为了节省内存的使用,一般会将索引存储到...
共享锁:共享锁是读锁,是在执行读取操作的时候创建的。如果事务 T 对 数据 A 添加了共享锁,那么其他事务只能再对数据 A 添加 共享锁而不能添加其他类型的锁,对于已经添加了...
乐观锁:操作数据的时候,乐观锁不会认为别人同时也会修改数据,乐观锁本身是不会加锁的,只是在执行更新操作的时候,会检查在这个期间是否有其他人修改数据,如果有则停止操作,否则的话...
redis 常见的数据结构类型主要包含五种:String、Hash、List、Set、Sorted Set String String 数据结构是最简单的 Key->Valu...
LRU 是一个缓存置换算法,在缓存有限的情况下,如果有新的数据加载至缓存,则需要考虑将不会再继续被访问的数据剔除掉,但是缓存是否会被访问是没有办法预测的,所以,LRU 是基于...
1.redis 服务器主进程调用 fork() 函数,生成一个子进程2.redis 服务器主进程可以继续处理来自其他客户端的请求,子进程将内存中的数据写入到一个临时的 rdb...
数据结构是算法的基石,如果没有扎实的数据结构基础,要想把算法学好甚至融会贯通是非常困难的,而优秀的算法又往往取决于你采用哪种数据结构 数组、字符串(Array & Strin...
栈的定义 在我们软件应用中,栈这种 后进先出 的数据结构应用非常广泛。比如最常见到的浏览器,在使用浏览器访问网页时我们会发现无论是什么浏览器都会有一个 后退 键,点击后退键可...
这篇文章开启线性表的大版本更新2.0----循环链表 单循环链表 由前面关于单链表的介绍我们知道,在单链表中每个结点都只存储了下一个结点的存储地址,直到尾结点为 NULL,我...
这篇文章依然介绍线性表的链式存储结构-单链表 单链表的整表创建 线性表顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和容量确定的数组并赋值的过程。单链表和线性表...
顺序存储结构不足的解决办法 通过 线性表之数组 这篇文章的介绍,我们知道线性表的顺序存储是有缺点的,最大的缺点就是 插入、删除时需要移动大量元素,对于像数组这样在编程中常用的...
数组在开发中是我们最常见的一种数据结构,数组也是最重要的数据结构之一,刚开始接触编程的时候我就有一个疑惑:数组的下标为什么是从 0 开始的,而不是从 1 开始,这样不是更加直...