java面试总结之杂项【三】

前言

 

整理了最新笔记,地址: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.复杂操作可以使用存储过程

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值