记录- 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 Request403 Forbidden表示服务器禁止访问资源,并不是客户端的请求出错404 Not Found500 Internal Server Error与400同类型。501 Not Implemented表示客户端的请求的功能还不支持,类似“即将开业,敬请期待”的意思。502 Bad Gatway503 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 请求次数: 减少重定向请求次数(交由代理服务器完成)、合并请求(合并资源,以大资源请求代替多个小资源请求,但这样会带来额外的带宽消耗)
延迟发送请求(不重要的后加载)

