前言
整理了最新笔记,地址:https://reiner.host/posts/8deaf922.html
由于记的时候比较杂,因此全放杂项里面了,可能包括各种乱七八糟的东西。。。
如有错误的地方还请指出,免得误人子弟。。。
正文
Http Tcp
为什么需要四次挥手
tcp之所以三次握手四次挥手是因为发送端的数据发送完了请求关闭连接,但接收端不一定接收完毕,因此需要来回重复确认。
为什么需要三次握手
如果只有两次握手,
tcp/udp属于传输层 基于 ip网络层 socket和http属于应用层
http的几种请求方式
get post put head delete connect options
trace
其中trace用于回显收到的请求,一般禁用
connect用于代理
java IO流
1.字节流 不缓存到缓冲区,主要操作类inputStream outputStream
2.字符流 会缓存到缓冲区,当输出内容到文件时即使不flush文件中也依旧有内容,且一个字符占两个字节,默认编码unicode 主要操作类为 Reader Writer
spring生命周期
这个太多,建议搜索
Mysql相关
Mysql的五种索引
1.主键索引 (不可以有空,唯一的)
2.普通索引
3.唯一索引 (可以有空)
4.联合索引
5.全文索引 (对文本内容分词搜索)
6.哈西索引myISAM和InnoDB不支持
联合索引按照最左匹配原则
替代like走索引方法
1.SELECT LOCATE('bar',`foobarbar`);
###返回4
2.INSTR(`str`,'substr')方法
据说mysql5.6中已经解决了 like %keyword% 第一个%分号的问题,但还未亲自验证。
索引的条件顺序可以打乱,mysql优化器会自动调整顺序
聚合索引是物理地址连续存放的索引
索引场景
假设添加了一个由三个字段组成的联合索引
1.使用条件1和3,条件1会使用索引,条件3不会使用索引
2.between 属于范围查询,因此不走索引
3.in不会使用索引 ,可使用not exists,in属于范围查询
4.mysql like 百分号在后会走索引
mysql四个隔离级别 未提交读 已提交读 可重复读 可序列化
mysql锁
mysql行锁 走索引 for update 不走索引则表锁
for update为排他锁 不可读 lock in share.mode为共享锁其他事务可读
Mysql优化
1.合理的表设计
2.水平垂直分割表
3.读写分离
4.查看慢查询sql show variables like "long_query_time"
5.适当添加索引
6.定时整理碎片数据
7.复杂操作可以使用存储过程