OSPF 协议

news2025/2/5 5:02:50

OSPF 开放式最短路径优先协议

形容:

  • 无类别链路状态协议

    无类别 ---- 存在掩码

  • IGP 内部网关协议

  • 动态路由协议

一、链路状态协议(LS)

OSPF 协议 隶属于 链路状态协议。

区别:

  1. 距离矢量协议(DV):运行距离矢量协议的路由器会 周期性的泛洪 自己的路由表。通过路由的交互,每台路由器从相邻的路由器学习到路由,并且加载进自己的路由表中;

    对于网络中的所有路由器而言,路由器 并不清楚 网络的拓扑结构,只是简单的知道要去往某个目的地的方向在哪儿,距离多远。这既是距离矢量协议的本质

  2. 链路状态协议(LS):与距离矢量协议不同,链路状态协议通告的是链路状态信息(拓扑信息),而不是路由表

    运行链路状态协议的 路由器之间 会先建立一个协议邻居关系,然后彼此之间开始交互 LSA链路状态通告)。每台路由器都会产生 LSA,路由器将接收到的 LSA 放入自己的 LSDB(链路状态数据库)中。路由器通过 LSDB,掌握了全网所有的拓扑信息。最后,由路由器通过 SPF 算法 计算出 最优路径,随后加载于自己的路由表中。

LS 图解:

1.建立邻居关系

2.互相传递链路状态信息

3.计算最优路径(SPF算法)

4.生成路由表项

OSPF 特征

  1. 支持 等开销负载均衡

  2. 基于 组播地址 进行更新 ---- 224.0.0.5 / 224.0.0.6

  3. 支持 触发更新:每 30min 进行一次 周期更新

  4. 需要 结构化 的部署 ---- 区域划分 地址规划

    相同区域传递拓扑不同区域传递路由

    区域划分的规则

    1. 星型结构0区骨干区域大于0 则为非骨干区域;所有非骨干区域必须接入到骨干区域上。

    2. 必须要有 ABR 域间路由器两个区域相连时必须存在 ABR,ABR 同时工作 在两个区域上。

Router-ID 路由器标识符

作用:

用于一个 OSPF域唯一的标识 一台路由器(取名)。

定义:

缩写RID

  1. Router-ID 的设定可以通过手工配置的方式,或使用系统自动生成的方式。

  2. 定义 RID 值,建议使用 IP地址全网唯一,要是 不进行手工配置 则会 自动生成;优先配置为 环回的最大数值,如果 没有环回,则 自动配置最大物理接口数值

路径计算:
  1. 使用 COST 值 作为 度量值/开销

    COST(开销值) = 参考带宽 / 接口带宽

  2. 默认参考带宽100M,整段路径 COST值之和最小最佳

  3. 弊端:若接口带宽 大于 参考带宽,即 cost 值为小数,则默认 度量值为 1,可能会导致 选路不佳(负载均衡);

    故而在接口带宽大于参考带宽的网络中,可以人为的 修改参考带宽

二、数据包类型

分类:
  1. HELLO 包:用于 邻居间的发现关系建立保活,每 10s 发送一次。

  2. DBD/DD 包数据库描述包,用于携带 本地数据库目录

  3. LSR 包:链路状态请求包,在查看完 对端邻居的 DD 包 后,基于 本地的位置 查询 LSA,随后去 索要未知的 LSA 信息,就通过这个 LSR 包。

  4. LSU 包:链路状态更新包,用于携带 各种 LSA 信息

  5. LSACK 包:链路状态确认包,用于确认 接收到 对端的信息

三、状态机

图解:

  1. Down 状态:表示未激活的状态,一旦 本地发出 hello包,则进入下一个状态,接收到 hello包后,也会 被动进入 Init状态。

  2. Init 状态:表示初始化状态,发出 或者 接收 到 hello 包 都会进入到 Init 状态。

  3. Two-way/2-way 状态双向通信,表示建立了邻居关系;经过 条件匹配,成功则进入下一个状态机,失败则停留在 2-way 状态。

  4. Ex-start 状态预启动状态,发出 空的 DD 包,比较 RID 的大小,进行 主从选举,以 RID 大的为主

  5. Exchange 状态准交换状态,发送 有目录的 DD 包,双方交换 DD 报文,描述自己拥有的 LSA 信息

  6. Loading 状态加载状态,在查看完 对端邻居 的 DD 包 后,使用 LSR 包询问自己位置的 LSA 信息对端 使用 LSU 包 进行回复本地还需要 使用 LSACK 包 进行确认回复

  7. Full 状态邻接关系建立的标识,两者从 邻居关系 变为 邻接关系。

四、工作过程

  1. 启动配置完成后,本地组播 224.0.0.5 发送 hello 包

  2. hello 包将携带 本地的 RID 值已知邻居的 RID 值

  3. 若接收到 对端的 hello 包中自己的RID,则视为 认识 ;双方都认识则代表 邻居关系的建立,生成邻居表,开始进行 条件匹配

  4. 匹配成功,则进入下一个阶段不成功,则永远是邻居,使用 空的DBD包 进行 主从选举

  5. 对比 RID,大为优,且 优先进入 下一个状态,优先共享数据库目录,之后使用 LSR/LSU/LSACK 包获取未知的LSA信息加载于本地的LSDB中

  6. 启用 SPF算法 ,基于 本地 LSDB 生成 有向图,再计算出 最短路径树,再基于 树形结构 算出以本地为起始点 到达 全网各个节点最优路径,最后加载于 本地路由表 中,收敛完成 后,发送 hello 包保活 即可。

  7. 30min 进行一次 周期更新,周期更新即为 对比数据库目录,如果相同,则继续 hello 包 保活,如果不相同,则重新收敛

结构突变

  1. 新增一个网段:直连新增网络设备,直接使用更新包告知邻接关系,需要 ack确认

  2. 断开一个网段:直连断开网络设备,直接使用更新包告知邻接关系,需要ack确认。

  3. 无法沟通: hello time 10s ,dead time 40s,时间到了就会删除邻居信息

五、基础配置

进程区域:

ospf [进程号] router-id [IP地址]

创建 ospf 进程号为1,仅具有本地意义,同时 定义 RID值,建议使用 IP地址,全网需要唯一

如果不定义 RID 值,则会自动生成,建议手动配置

area [区域号]

进入对应区域,只能有一个 骨干区域

宣告:

反掩码:将掩码反过来
network [宣告IP/网段] [反掩码]
  • 0 将 对应的网络位 锁死,主机位 表示 除本来的地址之外 还有的变化

  • IP地址 的反掩码 全部锁死,即为 0.0.0.0

  • 网段 的反掩码 用 255.255.255.255 减去 对应网段掩码 即可。

IP地址 1.1.1.1 反掩码为 0.0.0.0,除 1.1.1.1 外还有 0种 变化。

网段 12.1.1.0 反掩码为 0.0.0.255,除 12.1.1.0 外还有 255种 变化。

参考带宽修改:

首先 进入 ospf 域

bandwidth-reference [网速]

修改参考带宽 为1000Mbits/s

[R1-ospf-1]bandwidth-reference 1000

注意:一旦修改参考带宽,需全网所有设备都修改一致

查询配置表:

display ospf peer

查询 详细邻居关系

display ospf brief

查询 邻居表

display ospf lsdb [router-id] [RID 值]

查询 链路状态数据库

后面跟上 RID 值 可以查询 单独对应的 router 详细信息。

练习一:

 ### 首先进行基础配置 ###
 #创建 ospf 进程,进程号为 1,同时定义 RID 值
 [R1]ospf 1 router-id 1.1.1.1
 #进入 区域 0
 [R1-ospf-1]area 0
 #宣告 IP地址
 [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
 #宣告 网段
 [R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
 ​
 #R2 配置,R2 为 域间路由器
 [R2]ospf 1 router-id 2.2.2.2
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 12.1.1.2 0.0.0.0
 #R2 为 域间路由器,还要配置 骨干区域 1
 [R2-ospf-1]area 1 
 [R2-ospf-1-area-0.0.0.1]network 23.1.1.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 3.3.3.3
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 23.1.1.2 0.0.0.0
 [R3-ospf-1-area-0.0.0.1]network 3.3.3.3 0.0.0.0
 #查看 宣告配置
 [R3-ospf-1-area-0.0.0.1]display this
 #查看 ospf 配置
 [R3]display ip routing-table protocol ospf

 #连接测试,成功 ping通
 [R1]ping -a 1.1.1.1 3.3.3.3
 #查询 邻居详细关系
 [R1]display ospf peer 

 #查询 链路状态数据库
 [R1]display ospf lsdb

 #查询 数据库中 不同地址的详细信息
 [R1]display ospf lsdb router 12.1.1.1
 [R1]display ospf lsdb router 1.1.1.1

练习二:

这里我们选择 R2 作为 域间路由器 ,先进行基础配置。

 #R1 配置
 [R1]ospf 1 router-id 1.1.1.1
 #R1 为 1区
 [R1-ospf-1]area 1
 #宣告
 [R1-ospf-1-area-0.0.0.1]network 1.1.1.1 0.0.0.0
 [R1-ospf-1-area-0.0.0.1]network 12.1.1.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 4.4.4.4
 #R3 为 2区
 [R3-ospf-1]area 2
 [R3-ospf-1-area-0.0.0.2]network 4.4.4.4 0.0.0.0
 [R3-ospf-1-area-0.0.0.2]network 24.1.1.2 0.0.0.0
 ​
 #R4 配置
 [R4]ospf 1 router-id 3.3.3.3
 #R4 为 0区
 [R4-ospf-1]area 0
 [R4-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
 [R4-ospf-1-area-0.0.0.0]network 23.1.1.2 0.0.0.0
 ​
 ### R2 配置 ###
 [R2]ospf 1 router-id 2.2.2.2
 #R2 为 3区
 [R2-ospf-1]area 3
 [R2-ospf-1-area-0.0.0.3]network 2.2.2.2 0.0.0.0
 #连通 0区
 [R2-ospf-1-area-0.0.0.3]area 0
 [R2-ospf-1-area-0.0.0.0]network 23.1.1.1 0.0.0.0
 #连通 1区
 [R2-ospf-1-area-0.0.0.0]area 1
 [R2-ospf-1-area-0.0.0.1]network 12.1.1.2 0.0.0.0
 #连通 2区
 [R2-ospf-1-area-0.0.0.1]area 2
 [R2-ospf-1-area-0.0.0.2]network 24.1.1.1 0.0.0.0
 #检查 ospf 表
 [R2-ospf-1]display this

 #连接测试,依次 ping R1 R3 R4 的 环回进行检验
 [R2]ping -a 2.2.2.2 1.1.1.1六、扩展配置

六、扩展配置

1.从邻居关系建立成为邻接关系的条件

分类:
  • DR(指定路由器)

    一个网段上的 其他路由器 都和 指定路由器(DR) 构成 邻接关系,而 不是它们 互相之间 构成邻接关系。

  • BDR(备份指定路由器)

    当 DR 出现问题,由 BDR 接手 DR 的工作,同时会 再选举 出一个BDR。

  • DR Other:其他路由器。

  • ABR :域间路由器

网络类型:
  1. 点到点的网络:在一个网段中,仅支持 存在两个节点 的网络。(在点到点的网络类型中,可以 直接 成为 邻接关系

  2. MA多路访问 ---- 在一个网段内,存在的节点数量不限

在MA网络中,若所有设备 均是邻接关系,则会造成大量的 重复更新,故进行 DR/BDR 的选举,所有 非 DR/BDR 的设备 被称之为DRotherDRother 之间 维持 邻居关系

2.修改接口优先级:

选举规则:
  1. 先比较参选接口的 优先级默认为 1,范围 0~255,大为优

  2. 若参选接口的优先级相同,比较参选设备的 RID,大为优。

  3. 当优先级设置为 0 时,默认 不参加选举,就不会成为 DR/BDR。

首先要进入 对应的接口

ospf dr-priority [优先级]
注意:
  • OSPF 的 DR选举非抢占性 的,故需要 重启 ospf 进程 达到 重新选举的目的。
  • 可以在配置 OSPF 进程 之前 进行 优先级的设置,这样可以省去后续 重启进程 的步骤。

重启 OSPF 进程:
reset ospf process

注意:首先要退至 用户视图 (尖括号)。

3.手工认证

首先进入对应邻居接口

ospf authentication-mode md5 [编号] cipher [密码]

邻居间接口定义安全密钥 ,编号任意。

4.手工汇总 ---- 汇总区域

域间路由器 ABR 上将 A区域 共享到 B区域 时,方可进行 手工汇总。

首先进入到需要汇总的 ospf 区域

abr-summary [汇总网段] [展开式掩码]

在需要汇总的区域 进行 手工汇总

5.被动/沉默接口

仅接受 不发送路由信息 的接口,仅能配置在 路由器 与 PC 之间

首先进入需要设置被动接口的路由器的 ospf 进程

silent-interface g [接口号]

设置该接口为 沉默接口

6.加快收敛-改计时器

  • 修改一台路由器的 hello time,该接口的 dead time 将 自动关闭匹配

  • 邻居间直连接口hello/dead time 时间不一样,则无法建立邻居关系;

  • 修改时,不易修改的过小

7.缺省路由

边界路由器 上配置一条 缺省信息 之后,该设备将向 内部所有设备 发送缺省路由,方向 指向边界路由器

首先要进入 边界路由器 的 ospf 进程。

default-route-advertise always

下发 缺省路由。

练习三:

 ### 先进行基础配置 ###
 #R1 配置
 [R1]ospf 1 router-id 192.168.0.1
 [R1-ospf-1]area 0
 #宣告 网段
 [R1-ospf-1-area-0.0.0.0]network 192.168.0.0 0.0.0.255
 #宣告 IP地址
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0
 ​
 #R2 配置,R2 为 域间路由器 ABR,同时在 0区 和 1区 工作
 [R2]ospf 1 router-id 192.168.3.1
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 192.168.1.2 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 192.168.2.1 0.0.0.0
 [R2-ospf-1-area-0.0.0.0]network 192.168.3.1 0.0.0.0
 [R2-ospf-1]area 1
 [R2-ospf-1-area-0.0.0.1]network 192.168.4.1 0.0.0.0
 ​
 #R3 配置
 [R3]ospf 1 router-id 192.168.5.1
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 192.168.4.2 0.0.0.0
 [R3-ospf-1-area-0.0.0.1]network 192.168.5.1 0.0.0.0
手工汇总:
 #进行 手工汇总,汇总网段为 192.168.0.0 / 22
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
沉默接口/缺省路由:

给 R1 连接一台 PC;给 R3 新增加一个 外网IP 3.3.3.3/24。

 #配置 沉默/被动接口
 [R1-ospf-1]silent-interface g 0/0/1
 ​
 #下发 缺省路由
 [R3]ospf 1
 [R3-ospf-1]default-route-advertise always
 #查表检验
 [R1]display ip routing-table protocol ospf

七、作业

要求:
  1. R1~R3 为 0 区,R3~R4 为 1 区,其中 R3 环回也在 0 区

  2. R1~R3中,R3 为 DR 设备,没有 BDR

  3. R4 环回地址已固定,其他所有网段基于 192.168.1.0/24 进行合理划分

  4. R4 环回不能宣告全网可达,保障更新安全,避免环路,减少路由条目数量

子网划分:

128 64 32 16 8 4 2 1

借1位 将网段分成两部分:环回链路 0/25 和 骨干链路 128/25;

再将 环回链路 借1位 分成两部分:0/26 和 64/26,后者用于 环回接口

这里为了简便就不再将骨干链路细分成 /30 的网段了。

网段子网
192.168.1.0/25192.168.1.0/26
255.255.255.128192.168.1.64/26
192.168.1.128/25

先进行基础配置。

分区宣告:

R1~R3 为 0 区,R3~R4 为 1 区,R3 是 域间路由器 ABR

 #R1 配置
 [R1]ospf 1 router-id 192.168.1.1
 [R1-ospf-1]area 0
 [R1-ospf-1-area-0.0.0.0]network 192.168.1.1 0.0.0.0
 ​
 #R2 配置
 [R2]ospf 1 router-id 192.168.1.2
 [R2-ospf-1]area 0
 [R2-ospf-1-area-0.0.0.0]network 192.168.1.2 0.0.0.0
 ​
 #R3 配置,R3 为 域间路由器 ABR
 [R3]ospf 1 router-id 192.168.1.3
 [R3-ospf-1]area 0
 [R3-ospf-1-area-0.0.0.0]network 192.168.1.3 0.0.0.0
 ​
 [R3-ospf-1]area 1
 [R3-ospf-1-area-0.0.0.1]network 192.168.1.129 0.0.0.0
 #这里选择 宣告网段 1.64/26,掩码为 255.255.255.192
 [R3-ospf-1-area-0.0.0.1]network 192.168.1.64 0.0.0.63
 ​
 #R4 配置
 [R4]ospf 1 router-id 4.4.4.4
 [R4-ospf-1]area 1
 [R4-ospf-1-area-0.0.0.1]network 192.168.1.130 0.0.0.0
 ​
优先级:

这里建议在配置 ospf 进程前先将R1 R2 优先级 配置为 0,这样就可以省去 重启进程 的步骤。

 ### 将 R3 设置为 DR,优先级为 0 即 不参加选举
 #R1 配置 优先级
 [R1-GigabitEthernet0/0/0]ospf dr-priority 0
 #R2 配置 优先级
 [R2-GigabitEthernet0/0/0]ospf dr-priority 0
 ​
 #重启进程,在 用户视图 进行#
 ###注意:等所有 ospf 进程都配置完毕后再进行重启###
 <R1>reset ospf process
 <R2>reset ospf process
手工认证:
 #将 相连的 R1 ~ R3 都进行 手工认证,设定编号为 1
 [R1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 [R2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
 [R3-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
缺省路由:
 #在 边界路由器 R4 上配置 缺省路由
 [R4-ospf-1]default-route-advertise always
 #配置完后记得在 其他路由器 进行查表检验
 #此时已经 全网通
 <R1>ping 4.4.4.4
手工汇总:
 # 将  R1 ~ R3(0区) 进行 手工汇总,在 ABR 上进行配置
 [R3]ospf 1
 [R3-ospf-1]area 0
 #汇总网段为 192.168.1.0 / 25
 [R3-ospf-1-area-0.0.0.0]abr-summary 192.168.1.0 255.255.255.128
 #在 R4 上进行 查表检验
 <R4>display ip routing-table protocol ospf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024数学建模美赛C题详细代码思路手把手教学

问题分析 问题围绕2023年温网男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败36岁的诺瓦克德约科维奇的比赛。德约科维奇自2013年以来首次在温布尔登输球&#xff0c;结束了他在大满贯赛事中的杰出表现。这场比赛被认为是一场精彩的较量&#xff0c;经历了多次势头…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Spring Boot--08--Mybatis 之Mapper在IDEA中自动注入警告的解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1&#xff1a;为 Autowired 注解设置required false方法2&#xff1a;用 Resource 替换 Autowired方法3&#xff1a;在Mapper接口上加上Repo…

C语言实现12种排序算法

1.冒泡排序 思路&#xff1a;比较相邻的两个数字&#xff0c;如果前一个数字大&#xff0c;那么就交换两个数字&#xff0c;直到有序。 时间复杂度&#xff1a;O(n^2)&#xff0c;稳定性&#xff1a;这是一种稳定的算法。 代码实现&#xff1a; void bubble_sort(int arr[],…

java-JUC并发编程学习笔记03(尚硅谷)

线程间通信 例子&#xff1a; 对一个值1 -1交替完成&#xff0c;a的值就是1 b的值就是0 这个过程就是线程间通信 Synchronized实现&#xff1a; 虚假唤醒问题&#xff1a; 我们再添加两个线程。 我们发现我们的结果就不对了。 我们只需要使用while即可。 我们线程通信的最后一…

【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)

从高层设计的角度去探讨框架需要关注的问题。 参考&#xff1a;速读《Vue.js 设计与实现》 - 掘金 (juejin.cn) 系列目录&#xff1a; 标题博客第一篇&#xff1a;框架设计概览【Vue.js设计与实现】第一篇&#xff1a;框架设计概览-阅读笔记第二篇&#xff1a;响应系统【Vue.…

blender 画笔的衰成曲线Falloff Curve

Blender画笔是用来在雕刻模式或绘画模式下对物体进行修改的工具。画笔有不同的类型和设置&#xff0c;可以影响画笔的效果和外观。你提到的选项是画笔的衰减曲线&#xff08;Falloff Curve&#xff09;的预设&#xff0c;它们决定了画笔的强度如何随着距离中心的距离而变化。 …

32OLED中断系统&对射式红外计数&旋转编码计数

目录 一.程序调试方式 二.OLED简介 三. 中断系统 四.代码实现 (1)对射式红外计数 &#xff08;2&#xff09;旋转编码计数 一.程序调试方式 二.OLED简介 stm32引脚上电后&#xff0c;如果不初始化&#xff0c;默认是浮空输入的模式&#xff0c;在这个模式下引脚不会输出电平…

免费版XShell7下载安装

1.下载地址 家庭/学校免费 - NetSarang Websitehttps://www.xshell.com/zh/free-for-home-school/ 不同时期下载&#xff0c;版本会有不同&#xff0c;实时下载即可。 2.安装 Xshell和Xftp都要安装&#xff0c;点击下一步&#xff0c;直至安装完成。 3.邮箱注册&#xff0c;免…

Redis核心技术与实战【学习笔记】 - 16.Redis 缓存异常:缓存和数据库不一致

概述 只要使用 Redis 缓存&#xff0c;就必须面对缓存和数据库的一致性问题。 重要的是&#xff0c;如果数据不一致&#xff0c;那么业务应用从缓存中读取的数据就不是最新数据&#xff0c;这会导致严重的问题。比如说&#xff0c;我们把电商商品的库存信息缓存在 Redis 中&am…

【网站项目】065健康综合咨询问诊平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Python入门到精通(七)——Python文件操作

Python文件操作 一、文件的编码 二、文件的读取 1、操作汇总 2、model 常用的三种基础访问模式 三、文件的写入 四、文件的追加 五、综合案例 一、文件的编码 1、什么是编码&#xff1f; 编码就是一种规则集合&#xff0c;记录了内容和二进制间进行相互转换的逻辑。编…

合约短线高胜率策略-扭转乾坤指标使用说明

扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…

带你玩转股票的价值投资,上市公司典型案例分析

一、教程描述 上市企业&#xff0c;一般是新经济的典型代表&#xff0c;它的变化最能折射出新的商业模式及未来的产业机会。无论你是企业管理层、新兴创业者&#xff0c;还是职场精英及在校学生&#xff0c;都可以从上市公司的演变规律中&#xff0c;找到自己的职业晋升路径和…

LNMP环境搭建动态网站

一、环境准备 服务器&#xff1a;openEuler 22.03 Linux IPV4 &#xff1a;192.168.110.144/24 网页服务器&#xff1a;Nginx1.21.0 数据库&#xff1a;MySQL 8.0.36 PHP&#xff1a;8.0.30 1.安装软件 [rootnode3 ~]# yum install php-mysqlnd php php-gd php-fpm php-xml -y…

运维SRE-02 正则表达式、grep

1.特殊符号补充 1.1位置相关的特殊符号 . 当前目录 .. 当前目录的上级目录 ~ 当前用户家目录 / 根目录 cd - 返回上次所在目录1.2熟练掌握 # 注释符号,root命令提示符 | 管道符号.1.3了解其他特殊符号 $ 取值(取出变量的值),普通用户的提示符 ! % ^ & * (){} [] ; ? \…

git使用以及工作中开发流程

Git是当前最先进、最主流的分布式版本控制系统&#xff0c;免费、开源。 主要概念&#xff1a; 基本流程&#xff1a; 命令&#xff1a; git commit -a # 省略了add到暂存区的步骤&#xff0c;直接提交工作区的修改内容到版本库&#xff0c;不包括新增的文件。git fetc…

Python之PySpark简单应用

文章目录 一、介绍1.准备工作2. 创建SparkSession对象&#xff1a;3. 读取数据&#xff1a;4. 数据处理与分析&#xff1a;5. 停止SparkSession&#xff1a; 二、示例1.读取解析csv数据2.解析计算序列数据map\flatmap 三、问题总结1.代码问题2.配置问题 一、介绍 PySpark是Apa…

【Linux-常用命令】Linux 常用命令大全

【Linux-常用命令】Linux 常用命令大全 1&#xff09;文件管理1.1.目录操作1.2.vim 操作1.3.打包压缩相关命令1.4.Linux 管道1.5.Linux 远程拷贝命令1.6.查看文件目录大小 2&#xff09;文件权限管理2.1.三种基本权限2.2.更改权限 3&#xff09;运行程序3.1.命令行运行3.2.后台…