记录- 4.26
mysql
176.第二高的薪水
limit n子句表示查询结果返回前n条数据
offset n表示跳过x条语句
limit y offset x 分句表示查询结果跳过 x 条数据,读取前 y 条数据
177.第N高的薪水
不能直接用limit N-1是因为limit和offset字段后面只接受正整数(意味着0、负数、小数都不行)或者单一变量(意味着不能用表达式),也就是说想取一条,limit 2-1、limit 1.1这类的写法都是报错的。
窗口函数

超过经理收入的员工
内连接,同一个select from 两张表
4.25
mysql
196.删除重复的电子邮箱

delete p1
DELETE p1就表示从p1表中删除满足WHERE条件的记录。
2.p1.Id > p2.Id
a. 从表p1取出3条记录;
b. 拿着第1条记录去表p2查找满足WHERE的记录,代入该条件p1.Email = p2.Email AND p1.Id > p2.Id后,发现没有满足的,所以不用删掉记录1;
c. 记录2同理;
d. 拿着第3条记录去表p2查找满足WHERE的记录,发现有一条记录满足,所以要从p1删掉记录3;
e. 3条记录遍历完,删掉了1条记录,这个DELETE也就结束了。
HTTP
状态码:
200 OK
一切正常204 No Content
与200基本。但响应头没有body数据206 Partial Content
是应用于HTTP 分块下载或断点续传,表示响应返回的body数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。301 Moved Permanently
表示永久重定向,说明请求的资源已经不存在了,需改用新的URL再次访问。302 Foud
表示临时重定向,说明请求的资源还在,但暂时需要用另一个URL来访问。
301 和302 都会在响应头使用字段 Location
,致命后续要跳转的URL,浏览器会重定向新的URL。
304 Not Modified
缓存重定向400 Bad Request
403 Forbidden
表示服务器禁止访问资源,并不是客户端的请求出错404 Not Found
500 Internal Server Error
与400同类型。501 Not Implemented
表示客户端的请求的功能还不支持,类似“即将开业,敬请期待”的意思。502 Bad Gatway
503 Service Unavailabnle
表示服务器当前很忙,暂时无法响应。
HTTP/1.1
优点:简单、灵活和易于扩展、应用广泛和跨平台。
缺点:无状态、明文传输、不安全。
性能:基于【请求-应答】 模式。 长连接、管道网络传输(未使用)、队头阻塞
HTTPS
HTTP 默认端⼝号是 80,HTTPS 默认端⼝号是 443。
HTTPS 解决的问题:信息加密(混合加密)、校验机制(摘要算法)、身份证书(数字证书)
混合加密:在通信建⽴前采⽤⾮对称加密的⽅式交换「会话秘钥」,后续就不再使⽤⾮对称加密。在通信过程中全部使⽤对称加密的「会话秘钥」的⽅式加密明⽂数据。
两个的区别:
对称加密只使⽤⼀个密钥,运算速度快,密钥必须保密,⽆法做到安全的密钥交换。
⾮对称加密使⽤两个密钥:公钥和私钥,公钥可以任意分发⽽私钥保密,解决了密钥交换问题但速度慢。
4.26
HTTP
HTTP /1.1 存在的问题:请求/响应头部未经压缩就发送,浪费多;队头阻塞;没有请求优先级控制;请求只能从客户端开始。
HTTP /2 相比HTTP /1.1 的改进
头部压缩(HPACK算法,在服务端和服务端同时维护一张头信息表,发送时只发送索引就可以)
二进制格式(分为头信息帧 和 数据帧)
并发传输(一个TCP有多个Stream,Stream可以包含1个或多个Message,Message 包含一个或多个Frame,这是HTTP/2 的最小单位 ) 通过Stream ID 来有序组装HTTP消息,不同Stream可以并发发送。
服务器主动推送资源。(服务器建立的Stream ID 必须是偶数)
HTTP /2的缺陷:
队头阻塞,体现在TCP丢包重传上。因为TCP是面向字节流的,TCP必须保证收到的字节数据是完整且连续的,内核才会把缓冲区里的数据返回给 HTTP 应用。
HTTP3 优点:使用QUIC协议;无队头阻塞、更快的连接建立;连接迁移
HTTP /1.1 如何优化:
缓存方案避免发送HTTP 请求
减少HTTP 请求次数: 减少重定向请求次数(交由代理服务器完成)、合并请求(合并资源,以大资源请求代替多个小资源请求,但这样会带来额外的带宽消耗)
延迟发送请求(不重要的后加载)