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低
索引失效
- 模糊查询:使用like关键字的时候,以%号开头索引就会失效
- 数据类型错误,索引也会失效
- 对索引的字段使用内部函数,索引也会失效。这种情况应该建立基于函数的索引
- null,索引不存储空值,如果不限制索引列not null,数据库会认为索引列有可能存在空值,所以不会按照索引值进行计算
- 对索引列进行加减乘除运算,会导致索引失效
- 最左原则,在复合索引中,索引列的顺序非常重要,如果不是按照索引列最左列,开始进行查找,则无法使用索引
- 如果数据库预计使用全表扫描比使用索引更快,数据库不会使用索引
从浏览器输入URL到页面展现的过程
第一步:专业说法:DNS 查询分级缓存策略(DNS Query)
找缓存顺序:浏览器 —-> 操作系统 —-> 本地服务商 —-> 根服务器
- 先查询浏览器的本地缓存(通常在内存中)
- 本地没找到,查找操作系统的 host 文件,该文件在 Linux 中在 /etc/hosts 里
- 上述还没找到,DNS会查询本地服务提供商(ISP)
- ISP没找到,请求指向ROOT根服务器,返回顶级域名服务器地址
- 浏览器发送请求给顶级域名服务器,返回权威域名服务器地址
- 浏览器发送 Lookup 请求给权威域名服务器,找到具体DNS记录,返回给浏览器
第二步:向IP地址发起连接请求,进行TCP三次握手四次挥手
三次握手
四次挥手
第三步:页面展现
首先解析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服务器进行下载,减少路由次数,提升用户体验。(有点像在京东购物,会在距离你下单地址最近的仓库给你发货的意思)
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文件)