面试笔记一

SQL优化

业务逻辑优化

  • 根据业务需求,去分库,分表
  • SQL语句的编写与优化

索引优化

  • 尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引
  • 最左原则

下面将导致引擎放弃使用索引而进行全盘扫描

  • 尽量避免在where子句中对字段进行null值判断
  • 尽量避免在where子句中使用 != 或 <> 操作符
  • 尽量避免在where子句中使用or来连接
  • 不要使用LIKE,来进行"%abc%" 这样的操作
  • 尽量避免在where子句中对字段进行表达式操作
  • 尽量避免在where子句中对字段进行函数操作
  • 不要在where子句中 = 的左边进行函数、算术运算或者其他表达式运算

缓存机制

  • 对于用户经常访问的数据,从数据库中取出来后,放到缓存区,可大大加快访问时间,减少系统开销

Redes缓存机制

  • 内存数据库,数据存储在内存中,若掉电则数据就不存在。MySql是磁盘数据库
  • 单进程,单线程
  • Redis的删除操作
    • 懒删除:当一条数据过期后,并不会立马删除,但当再次请求该数据的时候,会删除该数据,并返回null
    • 主动删除:1.根据时间,固定时间间隔删除一次过期数据,2.当内存中的数据达到一定量时,会启动删除,删除过期数据
    • 混合删除:可以设置百分比,设置主动删除扫描多大磁盘,剩余交由懒删除

滑动窗口

  • 针对点对点通信
  • 当通信双方建立连接的时候,会协商发送以及接收数据的窗口大小,当双方能够无差错的传输数据的时候,双方会相互协定增大窗口的大小,不过一般发送窗口的大小大于接收窗口,当双方发送出错,或者一方吃不消时,会减小窗口的大小。

流量控制与拥塞控制

  • 流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据得丢失
  • TCP的流量控制是利用滑动窗口机制来实现的,接受方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据
  • 拥塞控制:就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载

两者的区别

  • 流量控制是为了预防拥塞,是点对点通信量的控制
  • 拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素

拥塞控制的方法

  • 慢开始 + 拥塞避免
  • 快重传 + 快恢复
  • 慢开始 + 快恢复

Java中的IO

    1. 基于字节操作的I/O接口:InputStream和OutputStream
    1. 基于字符操作的I/O接口:Writer和Reader
    1. 基于磁盘操作的I/O接口:File
    1. 基于网络操作的I/O接口:Socket

  • IO类有很多,但最基本的4个抽象类:InputStream, OutputStream, Reader, Writer

InputStream类

  • public abstract int read() 读取数据
  • public int read(byte b[]) 将读取到的数据放在byte数组中

影响IO性能的无非就是两大因素:数据的格式及存储的方式,前两类主要是数据格式方面的,后两个类是存储方式方面的:本地和网络

网络协议

TCP/IP

  • 应用层
  • 传输层:加端口号,报文段
  • 网络层:加IP地址, 数据包
  • 数据链路层:加MAC地址,数据帧
  • 物理层:字节流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值