今晚打老虎
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个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP