Skip to content

Commit

Permalink
读书笔记
Browse files Browse the repository at this point in the history
  • Loading branch information
BoCai666 committed Jun 5, 2024
1 parent 4ce8b74 commit 1ba7373
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 3 deletions.
18 changes: 17 additions & 1 deletion Algorithm/Hello算法-笔记/第二章-复杂度分析.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,20 @@
- **尾递归:** 递归调用是函数返回前的最后一个操作,则函数可以被编译器优化,使其迭代效率相当。
- **递归树:** 在递归函数内调用两个递归函数,以此不断递归下去,最终形成递归树

## 2.3 时间复杂度
## 2.3 时间复杂度
- **2.3.1 统计时间增长趋势:** 时间复杂度分析统计的不是算法的运行时间,而是算法运行时间随着数据量变大时的增长趋势。
- **2.3.2 函数渐进上界:** 计算T(n)的渐近上界就是寻找一个函数法f(n),使得当n趋近于无穷大时,f(n)是T(n)处于相同增长级别,仅相差一个常数项c的倍数。
- **2.3.3 推算方法**
- **第一步 统计操作数量**
- 忽略T(n)中的常数项
- 省略所有系数,如2n、5n+1都可简化为n次
- 循环嵌套时使用乘法,如两个嵌套循环,外层循环次数为n,内层循环次数为n,则总操作次数为n^2
- **第二步 判断渐进上界:** 时间复杂度有T(n)中的最高阶的项来决定,当n趋近于无穷大时,最高阶的项发挥主导作用,其他项可以忽略。
- **2.3.4 常见类型:** O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)
- **常数阶O(1):** 常数阶的操作数量与输入数据大小n无关,即不随着n的变化而变化
- **线性阶O(n):** 线性阶的操作数量相对于输入数据大小n以线性级别增长
- **平方阶O(n^2):** 平方阶的操作数量随着输入数据n以平方级别增长,通常出现在循环嵌套中
- **指数阶:O(2^n):** 指数阶相当于细胞分裂,由一分为二,二分为四,四分为八依次下去,通常出现在递归函数中
- **对数阶O(logn):** 对数阶反映了一分为多、化繁为简的思想,通常出现在基于分治策略的算法中,一分为m的时间复杂度为O(logm为底的n次方),通过换底公式可以省略底数m,将对数阶记为O(logn)
- **线性对数阶O(nlogn):** 常出现于嵌套循环中,两层循环分别为O(n)和O(logn),总时间复杂度为O(nlogn),如快速排序、归并排序、堆排序等
- **阶乘阶O(n!):** 通常出现在全排列问题中,使用递归实现,如第一层分裂出n个,第二层分裂出n-1个,依次类推,直至第n层停止分裂
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 第一章.计算机网络与因特网
# 第一章 计算机网络与因特网
## 1.1 什么是因特网
- **1.1.1 具体构成:** 主机或端系统通过通信链路和分组交换机连接在一起
- **分组:** packet,发送端将数据分段,并每段加上首部字节,形成的信息包。
Expand Down Expand Up @@ -35,4 +35,32 @@
- **排队时延:** 分组在队列中等待传输的时间。
- **传输时延:** 将分组的所有比特推向链路所需的时间。
- **传播时延:** 一个比特从链路的起点到终点所需的时间。
- **1.4.2 排队时延和丢包**
- **1.4.2 排队时延和丢包**
- **流量强度:** 假定所有分组都是由L比特组成,a表示分组到达队列的平均速率(分组/s,pkt/s),R表示队列中推出比特的速率(bps),则比特到达队列的平均速率为La(bps),La/R称为流量强度。
- **1.4.3 端到端时延**
- 端系统、应用程序或其他时延
- **1.4.4 计算机网络中的吞吐量**
- **瞬时吞吐量:** 在任何时间瞬间主机接收数据的速率(bps)
- **平均吞吐量:** 假定主机接收F比特用去T秒,则平均吞吐量为F/T bps
- **源到目的地的吞吐量:** 取决于链路中的最小传输速率(在没有其他干扰流量的情况下)

## 1.5 协议层次及其服务模型
- **1.5.1 分层的体系结构**
- **协议分层:** 因特网的协议栈分为物理层、链路层、网络层、运输层、应用层。
- **应用层:** 是网络应用程序及它们的应用层协议存留的地方。包括HTTP、SMTP、FTP、DNS等协议,位于应用层的信息分组称为报文。
- **运输层:** 在应用程序端点之间传输应用层报文,有TCP和UDP两种协议,TCP提供面向连接服务和拥塞控制机制,UDP提供无连接的服务。位于运输层的信息分组称为报文段。
- **网络层:** 将数据报从一台主机移动到另一台主机,有IP协议、路由选择协议,位于网络层的信息分组称为数据报。
- **链路层:** 将数据报从一个节点移动到相邻节点,一个数据报可能被沿途的不同链路的不同链路层协议处理,有以太网、WiFi、链路层交换机等,位于链路层的信息分组称为帧。
- **物理层:** 将帧中的一个个比特从一个节点移动到下一个节点,该层协议与链路的实际传输媒体有关,如双绞线、同轴电缆、光纤等,在这些链路上移动一个比特的方式是不同的。
- **OSI模型:** 开放系统互连模型,共有七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- **表示层:** 使通信的应用程序能够解释交换数据的含义,包括数据压缩、加密、数据描述(解决不同计算机中表示或存储的内部格式不同的问题)。
- **会话层:** 提供数据交换的定界和同步功能,包括建立检查点和恢复方案的方法
- **封装:** 每层的分组有两种类型的字段分别是首部字段和有效载荷字段(来自上一层的分组),一个大报文可能被划分为多个运输层报文段(每个报文段可能分为多个网络层数据报),接收端需从连续的数据报中重构一个报文段

## 1.6 面对攻击的网络
- **DoS攻击:** Denial-of-Service,拒绝服务攻击,使得网络、主机和其他基础设置部分不能被合法用户使用,具体有以下三种类型
- **弱点攻击:** 向目标主机一个易受攻击的应用程序或操作系统发送制作精细的报文,使其停止运行或崩溃。
- **带宽洪泛:** 向目标主机发送大量的分组,使得目标的接入链路变的拥塞,导致合法的分组无法到达目标主机。但单一主机无法产生足够的大的流量来占满目标的接入链路,并且容易被发现,因此出现DDos,分布式拒绝服务攻击,通过多个主机向目标主机发送大量的分组,使得目标主机的带宽被占满,无法处理合法的分组。
- **连接洪泛:** 在目标主机中创建大量半开或全开的TCP连接,使得目标主机的TCP连接表被填满,导致合法的TCP连接无法建立。

## 个人总结
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# 第二章 应用层

0 comments on commit 1ba7373

Please sign in to comment.