路由选择算法 在这篇博客里,我们讨论两种路由选择算法全局式路由选择算法,也就是链路状态(LS)算法分散式路由选择算法,距离向量算法(DV)1、全局式路由选择算法 每个节点向网络中所有广播链路状态,即该节点和它所连接的链路的特征和费用,这样,网络中的每个节点都具有了该网络的等同的、完整的视图。接下来,每个节点各自计算都其他节点的路径。 路由选择算法使用的是dijkstra算法问题:震荡问题,比如链路传播
HTTPS 如果请求的url以https开头,认定使用SSL。SSL通过采用机密性、数据完整性、服务器鉴别和客户端鉴别来强化TCP,属于运输层协议。SSL中采用的技术:对称密钥:加密解密使用同一个密钥(机密性)非对称密钥:加密和解密使用不同的密钥,私钥由服务器自己保存,公钥可以由任何人保存。公钥解码私钥加密的信息,私钥解码公钥加密的信息(机密性)证书:证明一个公钥属于某个实体(端点鉴别),由认证中心(CA)鉴别。CA证实一个实体的身份,并且生成一个把其身份和实体公钥绑定起来的证书,证书包含公钥和公钥所有者的全
HTTP协议 HTTP协议为超文本传输协议,定义了客服端和服务器端交互的方式,使用TCP作为支撑运输协议,服务器端不保存客户的任何信息,属于无状态协议。1、持续连接与非持续连接非持续连接:每个请求/响应对是经一个单独的TCP连接发送持续连接:所有的请求/响应对是经相同的TCP连接发送持续连接是默认方式 两种方式的响应时间,比如有x个对象非持续连接:每个对象首先需要建立连接,三次握手(第三次握手客户端可以携带请求数据)加上服务器的响应为2个RTT,
TCP报文段结构 源端口号+目的端口号:多路分解和多路复用序号+确认号:接收方确认和避免冗余分组检验和:检验数据的正确性接收窗口:流量控制标志位: ACK(用于指示确认字段中的值是有效的,仅当ACK = 1时确认号字段才有效),SYN+FIN(建立连接和拆除连接)首部长度:提取TCP报文段的数据参考https://blog.csdn.net/a19881029/article/details/29557837...
多路复用和多路分解 多路复用和多路分解是运输层提供的服务,运输层并没有直接把数据交付给进程,而是交付给套接字。主要有三个问题什么是多路复用和多路分解多路复用:从不同的套接字中收集数据,封装上首部信息并传递到网络层多路分解:从套接字中接收数据并交付到正确的进程多路复用和多路分解的作用将网络层提供的主机到主机交付服务延申到进程到进程的交付服务多路复用和多路分解的实现方法每个套接字有唯一标识符每个报文段的首部有特殊字段指示报文段要交付的套接字UDP使用无连接的多路分解和多路复用,每个套接字由(目
可靠数据传输协议和TCP的可靠数据传输 1.可靠数据传输协议 可靠数据传输协议有两种大的类型停等协议,发送方只有确信接收方已经正确接收当前分组,才会发送新的分组流水线协议,发送方可以一次发送多个分组可靠数据传输协议用到的技术有序号、确认号定时器检验和重传机制窗口、流水线(提高性能)1.1 停等协议用到的技术包括序号、定时器、超时重传、接收方的确认,发送窗口=1,接收窗口=1序号:解决冗余分组问题。ACK的丢失可能会导致发送方重传分组,但是接收方
TCP的流量控制和拥塞控制 1、 拥塞控制拥塞控制主要有三个问题怎样进行拥塞控制发送方怎样感知拥塞怎样改变发送速率1、怎样进行拥塞控制: 发送方维护了一个拥塞窗口的变量,已发送未被确认的数据小于拥塞窗口。在这个过程中,发送方维护了三个变量,最早发送没有收到ACK的数据编号最晚发送的数据编号拥塞窗口2、怎样感知拥塞 &n
TCP的三次握手和四次挥手 1、三次握手客户端发送SYN报文段,该报文段的SYN=1,序列号为客户端选择的一个随机序列号a服务器端接收到SYN报文段,发送SYN ACK 报文段。该报文段的SYN=1,确认号=a+1,序列号为随机序列号b,并在服务器端分配缓存和变量客户端接收到SYN ACK报文段,发送另一个报文段,SYN=0,表明已经接收到SYN ACK报文段,确认号=序列号+1,并在客户端分配缓存和变量,可携带数据 在第二次握手,服务器接收到SYN字段,并分配缓存和变量,可能
垃圾回收算法及经典的垃圾收集器 1、垃圾回收算法1.1 分代收集理论 大多数的垃圾收集器都遵循“分代收集”,建立在两个分代假说之上弱分代假说:绝大多数对象都是朝生夕灭的熬过越多次垃圾收集过程的对象就越难消亡 将Java堆划分出不同的区域,将回收对象根据其年龄分配到不同的区域中存储,垃圾收集器每次只需要回收一部分区域-局部收集:不完整收集整个Java堆,只收集其中一部分 新生
抽象类和接口的区别 抽象类和抽象方法用abstract关键字修饰1、抽象类1.1、抽象类和抽象方法的定义规则抽象类和抽象方法必须使用abstract修饰符修饰,抽象方法只有方法签名,没有方法体抽象类不能实例化,无法使用new关键字创建实例,即使抽象类里面不包括抽象方法,也不能创建实例,只能被当作父类继承抽象类可以包含的5种成分,方法(普通方法、抽象方法)、构造器、初始化块、内部类、成员变量,构造器不能用于创建实例主要用于被子类调用含有抽象方法的类只能被定义为抽象类1.2 abstract和final、stat
java的内存分布 java的内存划分为5个部分:栈(stack):描述的是JAVA方法执行的内存模型:每个方法被执行的时候会创建一个栈帧,用于存储局部变量表、操作栈、动态链接、方法出口等信息。存放的都是方法中的局部变量。方法的运行一定是在栈中运行 .线程私有.局部变量:方法的参数或者是方法{}内部的变量,有作用域,一旦超出作用域,立刻从栈内存中消失堆(Heap):存放实例对象 ,运行时动态分配内存凡是new出来的东西,都在堆当中。所有的实例对象和数组都要在堆上分配堆内存里面的东西都有一个地址值(16进制
React兄弟组件之间的通讯 案例要求:达到这样一个效果组件拆分:搜索框是一个组件,传递状态下面的展示列表是一个组件,使用状态方式一:状态存在父组件之间父组件传递给子组件消息可以使用props,子组件给父组件之间传递消息可以使用函数实现APP组件代码import React, { Component } from 'react'import Search from './components/Search/Search'import './App.css'import List from './compone
React使用axios配置代理 一、配置原因前端页面的端口号为3000,请求的服务器的端口号也得为3000。如果服务器的端口号为5000,就会出现跨域问题。请求可以过去,但是响应回不来。为了解决这种问题,就要配置代理。二、配置代理代理的端口号和前端的端口号是一样的,前端代码开启后,会运行一个小的代理服务器。跨域问题是因为ajax引起的,所以端口号为3000的代理服务器可以收到来自端口号为5000的服务器的response,进而转发给前端。方法1、package.json中配置’proxy’1)在文件中配置’proxy‘
组件实例三大属性之refs 作用:组件内的标签可以定义ref属性来标识自己存储形式:{key:value},key为节点ref等号后面的值,value为当前节点三种用法字符串形式的refs回调函数形式的refscreateRef接口形式的refs字符串形式的refs例子<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" conten
组件实例三大属性之props 1、作用:给组件传递参数2、存储形式:{key:value}props的基本使用例子1<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title>
组件实例三大属性之state 1、作用:控制组件的状态2、存储形式:{key:value}3、初始化state的方式:在构造函数里面初始化在类中但不在任何函数里面初始化4、更新组件state: this.setState()函数,以合并的方式更新在构造函数里初始化state代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" con
展开运算符 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script ty
React小案例 展示以下页面代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script type="text/ja