一、计算机网络(速览速背)
1 分层结构
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
1、物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。
物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
2、数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
3、网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
4、传输层:定义了一些传输数据的协议和端口号(WWW 端口80等),如TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。常常把这一层数据叫做段。
5、会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
6、表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够识别的东西,如图片、声音等)
7、应用层:主要是一些终端的应用,比如说FTP(File Transfer Protocol,文件传输协议,各种文件下载),WEB(World wide web,IE浏览),QQ之类的(你就把它理解成我们在电脑屏幕上可以看到的东西,就是终端应用)
https://www.runoob.com/w3cnote/summary-of-network.html#_label0
IP协议(Internet Protocol,因特网互联协议)
OSI/RM模型(Open System Interconnection/Reference Model,开放式系统互联通信参考模型)
2 TCP/UDP
TCP协议(Transmission Control Protocol,传输控制协议)
UDP协议(User Datagram Protocol,用户数据报协议)
区别
1.基于连接与无连接; 2.对系统资源的要求(TCP较多,UDP少); 3.UDP程序结构较简单; 4.流模式与数据报模式 ; 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
TCP三次握手,四次挥手
TCP 在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般 称为“四次挥手”
三次握手
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cijBNKgo-1637070730659)(C:\Users\liuzc\AppData\Roaming\Typora\typora-user-images\image-20211116132529456.png)]
四次挥手
四次挥手是用来断开服务器和客户端之间的通信的,之所以要断开连接,是因为TCP/IP 协议是要占用端口号的,而 计算机的端口却是有限的,不进行断开的话,势必会造成计算机资源的浪费。 第一次挥手:客户端发送关闭请求 第二次挥手:服务端响应客户端关闭请求 第三次挥手:服务端发送关闭请求 第四次挥手:客户端发送关闭确认请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0QCrfqe7-1637070730661)(C:\Users\liuzc\AppData\Roaming\Typora\typora-user-images\image-20211116132737397.png)]
TCP状态中TIME_WAIT的作用 客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器 设置的时间。这么做有两个理由: (1)确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。(为实现TCP全双工连接的可靠释放)
(2)可能存在已失效的连接请求报文段,为了防止这种报文段出现在本次连接之外,需要等待一段时间。(为使旧的数据包在网络因为过期而消失)
为什么要三次握手?
解释1:在只有两次"握手"的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据…问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,"三次握手"很有必要!
解释2:三次握手中的每一次都是必须的。如果是两次握手,在第二次结束后,服务器并不能保证客户端已经收到了第二次的请求,如此一来的话,服务器会一直保存着这个通信过程,因为TCP通信都是要占用端口的,造成了一定的资源浪费。所以,就一定要让客户端来发送ACK的确认请求。
为什么要四次挥手?
解释1:试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!
解释2:因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手
使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。
3 HTTP/HTTPS
https://www.runoob.com/w3cnote/http-vs-https.html
基本概念
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 默认工作在 TCP 协议443端口
区别
-
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。 注:SSL,Secure Sockets Layer ,安全套接字协议 -
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。 -
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。 -
http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。 -
HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
无状态
无状态协议(Stateless Protocol)是指浏览器对于事物的处理没有记忆功能
? 例如:通过账户密码登录进了一个网站,当再次进入时则需要重新输入账户密码……
HTTP就是一种无状态协议,它对用户的操作没有记忆功能。为了解决这种情况,引出了Cookie&Session机制,让浏览器具备了记忆功能
长连接、短连接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
—————————————————————————————————————————————
tcp长连接优缺点:长连接可以省去较多的tcp建立/关闭的操作,减少浪费,节省时间,对于频繁请求资源的客户,较适用于长连接;client和server如果长时间不关闭的话,会存在一个问题,随着客户的越来越多,server早晚会有扛不住的一天,这时需要采取一些策略,如关闭一些长时间不读写操作的连接,这样可以避免一些恶意连接导致server端服务受损,如果条件再允许,就可以以客户端为颗粒度,限制每个客户端的最大连接数
tcp短连接优缺点:短连接对于服务器来说较为简单,存在的连接都是有用的连接,不需要额外的控制,但如果客户端连接频繁,会在tcp的建立和关闭上浪费时间。
https://blog.csdn.net/qq_38270106/article/details/83539289
—————————————————————————————————————————————
4 状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
https://www.runoob.com/http/http-status-codes.html
200 OK //客户端请求成功 301 Moved Permanently(永久移除),请求的 URL 已移走。 Response 中应该包含一个 Location URL, 说明资 源现在所处的位置 302 found 重定向 400 Bad Request //客户端请求有语法错误, 不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在, eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
5 Cookie和Session
? 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
? Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie。 ? Session 是存储在 web 服务器端的一块信息。 session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
Cookie 和 session 的不同点: 1、无论客户端做怎样的设置, session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。
2、在存储的数据量方面: session 能够存储任意的 java 对象, cookie 只能存储 String 类型的对象。
详解cookie和session
https://www.cnblogs.com/l199616j/p/11195667.html
6 URI和URL
URI = Uniform Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。 URL = Uniform Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串。 URN = Uniform Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。 URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集。 因为一个人的身份证是不可以重复的,那么一个身份证就可以唯一标识一个人,但是你是找不到这个人的,只能是唯一标识。那么这就相当于是URI。 而身份证上的地址加上姓名,就可以唯一标识你这个人并且还能找到你。这就相当于URL。 URI是唯一标识,但是不一定能找到,不是定位资源,是标识资源, URL是唯一标识,但同时还能找到,可以定位资源。
二、操作系统(能理解最好,不理解先背,不要花太多时间)
1 线程和进程
区别
状态
同步
死锁
三、数据结构和算法
1 数据结构
数组
链表
栈
队列
树
堆
2 算法
先练习最简单的几个排序查找
www.zhihu.com/question/24964987
四、设计模式(23种)
1 单例
2 工厂
3 代理
4 适配器
5 观察者
6 模板
五、实操工具
1 Git/SVN
2 Maven/Gradle
3 Linux基本操作
4 Nginx
5 ELK
6 postman
六、JAVA基础
1 HelloWorld
Java特点、优点
环境
JDK
JRE
开发环境配置
2 基础语法
语法
关键字
数据类型
逻辑控制语句
3 面向对象
思想
细细品
对象之间的关系(依赖、关联、聚合、组合)
原则
封装
继承
多态
四个常考关键字
static
final
this
super
初始化
属性和方法
1、构造方法
2、重载和重写
向上转型、向下转型
内部类
4 接口和抽象类
考烂了的题目
5 集合(重要!!!)
集合家谱
https://www.runoob.com/java/java-collections.html
各种list
各种Set
各种Map
6 注解、反射、泛型、I/O、枚举、异常
7 多线程
线程池
并发容器
原子类
线程与进程
并发与并行
死锁
生命周期和状态
两个常问关键字
synchronized
volatile
8 JVM(突击记忆)
内存模型
垃圾回收
类加载机制
调优
七、数据库(MYSQL)
1 SQL基本能力
www.runoob.com/sql/sql-tutorial.html
2 事务
3 索引
4 锁
5 连接池
6 分库分表
1、为什么分?
2、如何分?
水平
垂直
7 主从
8 读写分离
八、JavaWeb
1 html
2 css
3 js
4 ajax
5 vue
6 Servlet(前五个走马观花,这个要学明白,为springMVC做准备)
九、中间件
1 缓存 redis
数据类型
string
hash
list
set
zset
基础学习
www.runoob.com/redis/redis-tutorial.html
常见问题
1、数据类型
2、持久化
3、集群
4、通道
5、事务
6、Redis分布式锁
7、缓存穿透、缓存雪崩、缓存击穿。是什么?原因,如何避免
2 消息队列
消息队列一般的业务rabbitMQ已经足够使用了,了解一下几种MQ的异同和优缺点
1、rabbitMQ
2、rocketMQ
3、kafka
3 搜索引擎
1、elasticsearch(玩这个就行,另一个往这上面引)
2、solr
十、框架
1 Spring
1、AOP
2、IoC
3、BeanFactory
4、bean的作用域、生命周期
5、事务隔离级别
2 SpringMVC
1、工作流程图
2、DispatcherServlet
3、WebApplicationContext
3 MyBatis
4 SpringBoot
启动过程、自动装配原理
十一、微服务/分布式
1 理论
1、CAP
2、BASE
2 服务发现/注册(容易问)
1、Eureka
2、zookeeper
3、etcd
4、Nacos
5、Consul
3 网关
1、Zuul
2、Gateway
4 负载均衡
Ribbon
5 服务调用
Feign
6 熔断降级
Hystrix
7 统一配置
1、Config
2、Nacos
8 链路追踪
1、Sleuth
2、zipkin
3、skywalking
9 认证、鉴权、单点登录
1、Shiro
2、Spring Security
3、OAuth2
4、SSO
10 消息总线
1、Bus
11 SpringCloud和dubbo的区别
|