04 2020 档案
摘要:Extra 是指包含不适合在explain的其他列中显示,但是却十分重要的额外信息。 Extra 的值有 Using index : 表示SQL语句使用了覆盖索引(在索引列中直接得到结果,不用回表),查询效率最高。eg:explain select id from test; Using where
阅读全文
摘要:explain命令可以模拟优化器执行sql查询语句,从而知道mysql是如何处理你的sql语句的,并用于分析你的查询语句或是表结构的性能瓶颈。 使用方式为:explain+sql语句 通过explain可以得到 表的读取顺序 数据读取操作的操作类型 可用索引 实际使用索引 表间引用 每张表被优化器查
阅读全文
摘要:部署服务器分为7步 创建主机(可考虑云服务) 创建用户 安装运行环境(如php环境) 将项目同步至服务器(git同步) 安装进程管理程序 使用ip和端口调试,使用Nginx作为反向代理服务器 使用域名访问 当然我不是运维,所以部署服务器暂时作为一个了解,不需要太深研究。 参考来自https://ww
阅读全文
摘要:我们都知道redis缓存时可以设置过期时间,那么redis是如何识别这个key已经过期并将该key清掉呢? 当redis的内存满了之后,为什么还可以继续写缓存呢?而某些key又会被清掉,是什么原因呢? 以上问题就涉及到了redis的过期策略和淘汰机制,我们可以来了解一下。 redis为什么要有淘汰机
阅读全文
摘要:php是个单继承的语言 可以用interface或trait实现多继承。 trait我用的比较多,就是代码片段,比如某个trait定义了几个function,在类引用该trait后,该类也会有这几个成员函数。 interface是接口,它像定义一个标准类一样定义,不过定义的方法都是public的空方
阅读全文
摘要:昨天被问到两者间的关系,有着模糊的印象却又说不清楚。那么现在我来系统的找找资料做做笔记温习一下。 要说两者的关系,首先要缕缕网络分层,具体可以看我的网络分层那篇随笔https://www.cnblogs.com/smallzhen/p/12709442.html。 http协议是应用层协议,主要是解
阅读全文
摘要:目前的存在两种网络分层模型 OSI模型:共有7层 应用层(Application) 用户打开浏览器打开网页后通过DNS提供的域名解析服务,然后通过http协议下载页面内容。这个过程都是在应用层上进行的。 该层支持的协议:HTTP(超文本传输协议)、DNS、FTP(文件传输协议)、DHCP(动态主机配
阅读全文
摘要:今日面试官问我,假设存在(a,b,c)三个字段的联合索引,问我 1、如果where a=x and b=x,是否会用到索引? 2、如果 where a=x and b=x order by c desc 会不会用到索引? 3、如果 where a=x and b=x group by c 会不会用到
阅读全文
摘要:什么是数据库的瓶颈? IO瓶颈和CPU瓶颈都会导致数据库的活跃连接数增加,临近数据库可承载活跃连接数的阀值,即可用的数据库连接少甚至无连接可用(崩溃)。 如何应对IO瓶颈? ①磁盘读IO瓶颈,数据太多,数据库缓存放不下,每次查询会产生大量的IO导致查询速度低 -> 可考虑分库和垂直分表。 ②网络IO
阅读全文
摘要:什么是DDoS? DDoS(Distributed Denial of Service)是“分布式拒绝服务”。拒绝服务的攻击是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。 分布式拒绝服务攻击一旦实施,攻击网络包会从很多DOS攻击源(肉鸡)如洪水般涌向受害主机,从而把合法用户的网
阅读全文
摘要:什么是CSRF? CSRF(Cross Site Request Forgery 跨站域请求伪造),是一种对网站的恶意利用,他通过伪装来自受信任用户的请求来利用受信任的网站,与XSS攻击相比,CSRF不大流行且难以防范。 CSRF能够做到:以你的名义发送邮件、发消息、盗用账号、购买商品、转账等等。
阅读全文
摘要:DNS(Domain Name System)域名系统,是一个能够将域名和IP地址互相映射的分布式数据库,使用TCP和UDP端口53,对每一级域名长度的限制是63个字符,域名总长度不能超过253个字符。 DNS协议是用来将域名转换为IP地址,或者将IP地址转换为相应的域名地址。
阅读全文
摘要:四次挥手,连接终止协议。其性质就是终止协议。指断开一个TCP连接时,需要客户端和服务端总共发4个包以确认连接的断开。 TCP有6个标志位,分别是 SYN,同步序列编号(Synchronize Sequence Numbers)是TCP/IP建立连接时使用的握手信号。在客户端和服务端之间建立正常的TC
阅读全文
摘要:什么是lingering_close? lingering_close是延迟关闭,当Nginx要关闭连接时,并非立即关闭连接,而是先关闭tcp连接的写,再等待一段时间后在关闭连接的读。 为什么要有lingering_close? Nginx在接收客户端请求的时候,如果客户端或服务端出错,Nginx要
阅读全文
摘要:什么是pipeline? pipeline是http1.1引入的新特性,流水线作业,是keepalive长连接的升华,可以实现一个连接做多次请求。 pipeline与keepalive的区别 当客户端提交多个请求的时候,keepalive场景下,第二个请求必须等到第一个请求响应接收完全后才能发起,跟
阅读全文
摘要:什么是keepalive? keepalive是长连接的意思。客户端发起http请求前需要先与服务端建立TCP连接,每次TCP连接都需要三次握手来确定,三次交互不仅会增加消费时间,还会增加网络流量。http请求是请求应答式,如果能知道每个请求头与响应体的长度,就可以在一个连接上执行多个请求,这个就是
阅读全文
摘要:http1.1 默认使用长连接,可有效减少TCP三次握手的开销 http1.1 支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端接收到100才开始把请求body发送给服务器,这样当服务器返回401的时候,客户端就不用发送b
阅读全文
摘要:为了建立连接TCP连接,通信双方必须从对方了解如下信息 ①对方报文发送的开始序号 ②对方发送数据的缓冲区大小 ③能被接收的最大报文段长度MSS ④被支持的TCP选项。 在TCP协议中,通信双方将通过三次TCP报文段彭对以上信息的了解,并在此基础上建立一个TCP连接,而通信双方的三次TCP报文段的交换
阅读全文
摘要:什么是request? request是指Nginx中的http请求,Nginx用结构体ngx_http_request_t对一个http请求进行封装,其中一个http请求包括请求行、请求头、请求体、响应行、响应头、响应体。 webserver是如何处理http请求的? http请求是请求-响应类型
阅读全文
摘要:connection是什么? connection是对tcp连接的封装,包括连接的socket和读事件、写事件。利用connection,我们可以很方便的建立连接、发送数据和接受数据,我们可以与任何后端服务打交道。其中,Nginx的http请求处理也是建立在connection上的。 Nginx如何
阅读全文
摘要:1、为什么一定要设一个主键? 因为不设主键,innodb也会帮你生成一个隐形列作为自增主键。反正都要生成主键,自己指定主键可以显示用上主键索引,提高查询效率。 2、主键是用自增还是UUID(随机)? 自增。innodb住的主键是聚簇索引,如果主键是自增的,每次插入新的记录,记录就会顺序添加到当前索引
阅读全文
摘要:聚簇索引:将数据存储与索引放在一块,找到索引也就找到了数据。 非聚簇索引:将数据存储与索引分开,索引结构的叶子节点指向数据的对应行。myisam通过key_buffer把索引先缓存在内存中,访问数据时,在内存中直接搜索索引,然后通过索引找到磁盘对应数据。 注意:innodb中,在聚簇索引之上创建的索
阅读全文