2023-07-19
LeetCode Hot 100
回顾:
✅ 94. 二叉树的中序遍历 - stack
✅ 101. 对称二叉树 - queue
✅ 104. 二叉树的最大深度 - dfs
✅ 121. 买卖股票的最佳时机 - dp? 贪心!
✅ 136. 只出现一次的数字 - 异或 位运算
继续:
✅ 141. 环形链表 - 快慢指针 龟兔赛跑
✅ 160. 相交链表 - 双指针 同时指向的节点值即代表是否有相交节点
# Today?
## 面向对象-interface接口
`接口是一种类型,一种抽象的类型`
### 空接口
空接口是指没有定义任何方法的接口。因此任何类型都实现了空接口。
空接口类型的变量可以存储任意类型的变量。
## 网络分层协议
### OSI七层模型
应用层
展示层
会话层
传输层
网络层
数据链路层
物理层
#### 数据链路层
解读电信号,解读数据包中的0和1有什么意义
一组电信号构成一个数据包,叫做帧,一个帧包含标头和数据部分
标头中包含:发送者、接收者、数据类型...
数据则是数据包具体内容
标头Head固定长度18字节
那么发送者和接收者如何标志的?
每个连入网络的设备都有一个网卡,有自己的MAC地址,这里要提到广播的概念,一台设备不会单独发送给指定设备网络地址,反而这台设备会向网络中每一台设备发送数据包,每台计算机去读取包的标头Head,查看其中的MAC地址和自己的MAC地址是否对应,如果对应则接收,如果不对应则抛弃。
#### 网络层
网络层出现以后,每台计算机拥有了两个地址,一个是MAC地址,一个是网络地址-IP地址
MAC地址用于子网络间发送接收数据-广播
IP地址用于路由方式发送数据包
#### udp/tcp
有了MAC和IP地址,这样可以实现计算机在互联网中的通信,但是还有一个问题,不知道这个数据包是给谁用的,这里多了个信息就是:端口port——每一个程序的编号
端口号-0~65535
0~1023被系统占用
此时IP 端口就可以绑定互联网上指定的应用程序
在数据包中加入端口信息,这里提出新概念-UDP通信协议,很直接简单,数据前面加个端口就能实现,但是数据包发出后,发出者无法知道数据包是否得到了对方的正确接收。
为了解决某些问题,TCP协议出现了,TCP协议可以保证数据不会丢失,但是TCP过程复杂,消耗资源多
#### 应用层
应用层接收到传输层的数据后,需要进行解包,此时就需要提前商量好的协议,否则接收方无法解包获取信息,TCP协议上的Email、HTTP、FTP等协议就是互联网协议的应用层。
举个例子:TCP就像货到付款的快递,送到家还必须见到你人才算一整套流程。UDP就像某快递快递柜一扔就走管你收到收不到,一般直播用UDP。
### TCP粘包?
为什么会出现粘包??
```
1.由Nagle算法造成的发送端的粘包:Nagle算法是一种改善网络传输效率的算法。简单来说就是当我们提交一段数据给TCP发送时,TCP并不立刻发送此段数据,而是等待一小段时间看看在等待期间是否还有要发送的数据,若有则会一次把这两段数据发送出去。
2.接收端接收不及时造成的接收端粘包:TCP会把接收到的数据存在自己的缓冲区中,然后通知应用层取数据。当应用层由于某些原因不能及时的把TCP的数据取出来,就会造成TCP缓冲区中存放了几段数据。
```
### HTTP 超文本传输协议
### webSocket是什么
- WebSocket是一种在单个TCP连接上进行全双工通信的协议
- WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据
- 在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输
- 需要安装第三方包:
- cmd中:go get -u -v github.com/gorilla/websocket
0
0
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
