IP地址、MAC地址与DNS

IP地址:就好比每个人的身份证一样,可以通过IP地址精准找到你的设备
有一种特殊的IP地址:内网IP地址。由于IP地址有限,IP地址不够用,于是每个局域网就对外共用同一个IP地址,内部的设备就用内网的IP地址,内网和外网采用路由器进行连接和转发消息,内网IP有三个保留的IP地址段:10,192,172
MAC地址:也叫物理地址,是硬件厂家直接烧在网卡上的。理论上MAC地址是唯一的,但是MAC地址可以通过程序修改,可能会重复
IP地址与MAC地址在计算机里都是以二进制的方式进行表示的,IP地址是32位的,MAC地址是32位的
DNS:由于IP地址是一堆数字不容易被记住,所以有了域名(域名就是相当于IP地址的一个别名),DNS就是把域名转换成IP地址的


XML与JSON区别

  • JSON数据体积更小,传输速度快
  • jJSON跟js交互更方便
  • JSON数据可读性比xml低

索引失效

  1. 模糊查询:使用like关键字的时候,以%号开头索引就会失效
  2. 数据类型错误,索引也会失效
  3. 对索引的字段使用内部函数,索引也会失效。这种情况应该建立基于函数的索引
  4. null,索引不存储空值,如果不限制索引列not null,数据库会认为索引列有可能存在空值,所以不会按照索引值进行计算
  5. 对索引列进行加减乘除运算,会导致索引失效
  6. 最左原则,在复合索引中,索引列的顺序非常重要,如果不是按照索引列最左列,开始进行查找,则无法使用索引
  7. 如果数据库预计使用全表扫描比使用索引更快,数据库不会使用索引

从浏览器输入URL到页面展现的过程

第一步:专业说法:DNS 查询分级缓存策略(DNS Query)

找缓存顺序:浏览器 —-> 操作系统 —-> 本地服务商 —-> 根服务器

  1. 先查询浏览器的本地缓存(通常在内存中)
  2. 本地没找到,查找操作系统的 host 文件,该文件在 Linux 中在 /etc/hosts 里
  3. 上述还没找到,DNS会查询本地服务提供商(ISP)
  4. ISP没找到,请求指向ROOT根服务器,返回顶级域名服务器地址
  5. 浏览器发送请求给顶级域名服务器,返回权威域名服务器地址
  6. 浏览器发送 Lookup 请求给权威域名服务器,找到具体DNS记录,返回给浏览器

第二步:向IP地址发起连接请求,进行TCP三次握手四次挥手

image.png
三次握手image.png
四次挥手image.png
第三步:页面展现
首先解析HTML文件创建DOM树,之后解析CSS形成CSS对象模型,将CSS模型跟DOM树合并成渲染树


cookie、session、token的区别

  • cookie:是存储在浏览器端的一小段文本数据(大小不超过4kb),cookie里的内容会在请求头里随着http请求一起发送到服务器端
  • session:是存储在服务器端的一组数据,用来存储用户会话的数据,有的网址是采用session机制来验证用户身份的,通常会把session ID存储在cookie中
  • token:通常用来代表一小段字符串,token可以存储在cookie里,也可以存储在服务器的内存里
    • 有一种特殊的token :JSON WEB TOKEN(都叫它Jwt)

什么是CDN

CDN中文名称:内容分发网络,用来做内容分发的一套网络体系,用来提升文件下载速度的一种机制,让用户在离自己最近的CDN服务器进行下载,减少路由次数,提升用户体验。(有点像在京东购物,会在距离你下单地址最近的仓库给你发货的意思)
image.pngimage.png
CDN


JWT

在网络应用中传递一些小批量的安全数据时使用,这个token的特点是紧凑并且安全,特别适用于分布式站点的单点登录
jwt结构主要分为三部分:header头部、payload负载、signature签名
主要应用场景:身份认证:

  • 传统方法在服务器端存储一个session,给客户端返回一个cookie。把SessionID存储在cookie中,使用JWT就是当用户登陆系统之后,后台会返回一个jwt给用户(浏览器端)。用户只需要本地保存这个token
  • web应用通常使用cookie或者是local storage来存储
  • APP应用使用app自己的存储机制来存储,用户请求后台资源时,每次都要带上这个token,后台会对这个token进行验证

类加载器

JDK自带三个类加载器:启动类加载器、扩展类加载器、应用类加载器
假设有这样一段代码:String s = “abc”;
代码开始执行前,会将所有需要的类全部加载到JVM中,通过类加载器加载,看到上述代码类加载器会找String.class文件,找到就加载。
1.首先通过”启动类加载器”加载:
启动类加载器专门加载:”D:\JAVA\JDK\jdk1.8.0_251\jre\lib\rt.jar”,rt.jar中都是JDK最核心的类库
2.如果启动类加载器加载不到的时候,会通过”扩展类加载器”加载:
扩展类加载器专门加载:”D:\JAVA\JDK\jdk1.8.0_251\jre\lib\ext*.jar”
3.如果扩展类加载器加载不到的时候,会通过”应用类加载器”加载:
应用类加载器专门加载:classpath中的jar包(class文件)