热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

华为OSPF及OSPFv3协议详解

OSPFOpenshortestpathFirst特征:链路状态协议基于IP协议,协议号89所有的路由器使用组播地址224.0.0.5还有224.0.0

OSPF Open shortest path First
特征:
链路状态协议
基于IP协议,协议号 89
所有的路由器使用组播地址224.0.0.5 还有224.0.0.6 – DR
或单播地址

OSPF 默认路由优先级:
Route Preference: 10 区域内或区域间
ASE Route Preference: 150 外部路由(引入的路由)

三张表:
1.邻居表
邻居关系:
若两台路由器能用同一种路由协议交换路由信息,则两者互为邻居。

邻接关系:
若两台路由器都将对方识别为邻居路由器,并判定己方同样为对方所识别,且经过验证,双方可以“畅通无阻”地交换路由信息,则两台路由器建立邻接关系。

在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。
邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。
邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。
display ospf peer brief
2.链路状态数据库 LSDB
display ospf lsdb
3.路由表
]display ospf routing

===============================================
OSPF 区域概念:骨干区域和非骨干区域

1.推荐OSPF 必须存在区域0 骨干区域
2.区域内描述的是详细的拓扑信息,详细的描述拓扑结构的链路状态信息。
区域间传递的是抽象的路由信息。
原则:
1.所有的非骨干区域必须与骨干区域相连
2.骨干区域不能被分割

为了避免区域间路由环路,非骨干区域之间不允许直接相互发布区域间路由信息。

路由器的角色:
内部路由器(Internal Router):
内部路由器是指所有所连接的网段都在一个区域的路由器。属于同一个区域的IR维护相同的LSDB。
区域边界路由器(Area Border Router):
区域边界路由器是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB。
骨干路由器(Backbone Router):
骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器。包括所有的ABR和所有端口都在骨干区域的路由器。
AS边界路由器(AS Boundary Router):
AS边界路由器是指和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路

ABR(区域边界路由器),需要满足以下三个条件才能成为一台真正意义上的ABR:
1、至少连接两个区域
2、连接的区域中有一个是区域0(骨干区域),至少有一个接口属于区域0
3、在区域0中至少有一个活跃的邻居

ASBR:引入外部路由协议的路由器 (产生5类LSA的路由器)


OSPF配置:
配置方法:
1.区域宣告

ospf 1 //进程ID,本地有效,如果直接回车,默认创建进程ID 为 1
area 0.0.0.0 //使能区域0
network 11.1.1.1 0.0.0.0 //network作用,该接口使能OSPF协议,且把该接口宣告进OSPF协议中
network 12.1.1.0 0.0.0.255 //宣告一个网段地址。推荐:只宣告某个接口的主机地址,不是宣告一个网段

2.接口宣告
ospf 1
area 0.0.0.0
area 0.0.0.1

interface GigabitEthernet0/0/1
ip address 10.1.1.3 255.255.255.0
ospf enable 1 area 0.0.0.1 //前期条件,OSPF进程下存在该区域number

[AR2]dis ospf int //查看使能OSPF接口
[AR2]dis ospf peer brief //查看OSPF邻居关系
[AR2]dis ospf lsdb //查看OSPF链路状态数据库 LSDB
[AR2]dis ospf brief

===============================================
router-id
作用:1.在网络中标识自己 2.虚连接 会用router-id
router-id 要保证在每个OSPF进程中全网唯一。

选举原则:
1.优先选择手工配置的 (推荐方法)
2.如果没有手工指定router-id,优先使用环回口地址,如果有多个环回口地址,选择环回口地址大的
3.如果没有环回口地址,使用物理接口地址,优选物理接口地址大的

router-id配置方法:
1.路由管理中的配置
[AR1]router id 111.1.1.1 //如果没有手工指定router-id,该路由器中所有的动态路由协议都使用该地址作为协议的router-id
Info: Router ID has been modified, please reset the relative protocols manually to update the Router ID.

2.ospf 1 router-id 111.1.1.1 //指定OSPF进程中的router-id
Info: The configuration succeeded. You need to restart the OSPF process to validate the new router ID.

注意:手工指定router-id以后,一定要重启OSPF进程

reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y

===============================================
影响OSPF建立邻居的条件:
1.router id --------header packet
同一个区域相邻的设备router-id不能相同
同一个区域不相邻的设备,router-id可以相同,但是会影响路由的接收
不同的区域,不相邻的设备,router-id可以相同,也不会影响路由的接收

2.区域ID —header packet
直连的接口区域ID一定要相同

dis ospf error

1 : Bad area id

3.掩码
默认情况下以太链路(网络类型为broadcast)掩码长度必须相同
默认情况下串行链路掩码长度可以不同 或者(网络类型为P2P链路掩码长度可以不同)
网络类型P2MP,掩码长度必须相同,(也可以不相同,但是必须通过OSPF P2MP-netmask-ignore忽略对网络掩码的检查)

interface Serial4/0/1
ospf network-type p2mp //修改OSPF网络类型为P2MP
ospf p2mp-mask-ignore //忽略对网络掩码的检查

dis ospf error
HELLO packet errors:
8 : Netmask mismatch

4.hello 及dead time 必须相同
不同的OSPF的网络类型hello time 和dead time时间不一样
默认情况下,dead time 是hello时间的4倍
当修改hello time,dead time会自动发生变化
如果只修改dead time,hello time不会自动发生变化

interface Serial4/0/1
ospf timer hello 15 //修改hello时间15s
ospf timer dead 45 //修改dead 时间45s

[AR1]dis ospf int s4/0/1

5.认证

6.option 选项 E/N位

7.MTU值 DD报文
华为设备默认是不检测MTU的,可以通过命令配置检测MTU(思科设备默认是检测MTU)
如果MTU不一致,会卡在什么状态
如果从设备的MTU小于主设备的MTU,两端都会卡在Estart状态
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ospf mtu-enable 开启MTU检测

8.silent-interface 禁止接收和发送OSPF报文
一般配置在连接终端的接口,不会影响路由的通告
注意:千万不要配置在路由器之间相连的接口
配置:
ospf 1 router-id 11.1.1.1
silent-interface all //所有使能OSPF的接口都会被变成静默接口
undo silent-interface Serial4/0/1 //排除S4/0/1接口

9.过滤 OSPF报文

acl number 3000
rule 10 deny ip
interface Serial4/0/1
traffic-filter inbound acl 3000 //接口调用ACL

10.NBMA
单播指定邻居

==============================================
OSPF 网络类型:
网络类型: OSPF网络类型
以太网链路 ----广播
串行链路 ----P2P
帧中继链路 ----NBMA

在这里插入图片描述
注意:
P2P—broadcast 可以建立邻居关系,但是学不到路由

===============================================

OSPF cost计算
cost =100M参考带宽/接口的物理带宽 bandwidth
cost的总和=计算去往目的地沿途数据层面出方向接口的总和
或者控制层面的入方向

数据层面:数据业务的访问层面
控制层面:路由更新,策略的层面

ECMP 路由负载

配置1:
interface Serial4/0/1
ospf cost 1 //修改OSPF cost值为1

配置2:
ospf 1 router-id 11.1.1.1 设置通过公式计算接口开销所依据的带宽参考值。
bandwidth-reference 1000 //修改参考带宽

1.路由选择
(1)最长匹配原则
(2)从相同协议学到相同的路由前缀和掩码的时候,比较metric值,metric值越小越优先
(3)从不同的协议学到相同的路由前缀和掩码时候,比较优先级,优先级越小越优先

==============================================
OSPF报文类型:
1、Hello报文:建立和发现邻居 维护OSPF的邻居关系
2、DBD报文:用于描述LSDB的摘要信息
3、LSR:用于向对方请求所需的具体的LSA信息
4、LSUpdate 更新报文:用于向对方发送具体的LSA
5、LSACK:用来对收到的LSA的确认

LSA link-state advertisement 链路状态通告 不是数据包

=============================================
ospf建立邻居的过程:
1.DOWN 表示没有从邻居收到Hello信息。在NBMA网络中仍然使用较低的频率向down状态的邻居发送Hello报文
2.Atempt(NBMA环境):没有从邻居收到Hello报文,但是仍然需要进一步尝试,用于邻居联系,这时按poll interval向外发送hello报文
3.Init:在此状态,表示了hello报文,但是报文中没有看到自己的router ID,
4.two-way:表明收到邻居的Hello 报文,报文中包含自己的router id,进入2-way,双方同时进入two-way表明邻居关系的建立
5.exstart
开始发送DD报文,此时只发送包含router-ID的DD报文,用于选举Master/Slave ,在此状态下选举 router-id大的成为master
由Master来决定发送DD报文,来决定DD序列号
I位为1 表明开始协商 DD报文
M位为1 表明不是ospf router 发送最后一个包,M位为0,表明是OSPF路由器发送的最后一个包
M/S为1 表明为master 主从关系协商
在华为设备里面,默认不会检查MTU值,默认为0
DD报文通过序列号进行隐式确认
6.exchange 交互真实的DBD报文
7.loading交互LSU,LSR及LSAck
8.full 计算完毕

===============================================
DR和BDR选举:
作用:减少邻接关系,降低OSPF 协议流量
在MA网络中,才会涉及DR和BDR的选举
DR是基于链路的,基于接口的,而不是基于路由器

224.0.0.5 —ALLospfrouter
224.0.0.6 —DRrouter & BDR

DR 指定路由器
BDR 备份指定路由器 为了防止DR挂掉,起到备份作用。当DR挂掉时候,BDR成为DR
Drother 普通路由器
DR和所有的路由器建立邻接关系

DR和BDR选举原则:
前提条件 在选举期内 默认时间为40s waiting time等于hold time时间
1.先选BDR,然后才选DR
2.选DR 接口的优先级越大越优先,默认为1 优先级范围(0-255)如果优先级为0,放弃选举,成为DRother Drohter之间处于two-way
3.如果优先级相同,则比较router-id大,越大越优先

4.选举期结束以后,DR不能被抢占
5.DR失效,则BDR成为DR

===============================================

手工指定邻居关系

ospf 1 router-id 11.1.1.1
peer 21.1.1.2 //指定对端的接口IP地址

==============================================
OSPF LSA

1.LS seq 序列号越大,该LSA越新
2.LS age 越小越新
刷新时间 30分钟 1800s
max-age 1个小时 3600s
OSPF不能够删除不是自己生成的LSA(这条LSA有誰生成的,由删除)

LSA—链路状态通告
在这里插入图片描述
Router-LSA
1类LSA 传播范围 本区域内不能穿越ABR 通告者 网络中每个路由器 包含的内容 拓扑信息,路由信息 掩码 metric Link state-ID 路由器的RID ADV-router每个路由的RID
一条Router-LSA可以描述多条链接,每条链接描述信息由Link ID,Data,Link Type和Metric组成,其关键字含义如下:
Type:链接类型(并非OSPF定义的四种网络类型),Router LSA描述的链接类型主要有:
Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。
TransNet:描述一个从本路由器到一个Transit网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。
StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息

Point-to-Point
如果点到点链路 : 拓扑信息
link-id :邻居的router-id
Data : 宣告该router LSA的接口ip地址,也就是自身的接口IP地址
Link Type: P-2-P
Metric : 1

TransNet
如果MA链路:拓扑信息
link-id :DR的接口IP地址
Data:宣告该router LSA的接口ip地址,也就是自身的接口IP地址
Link Type: TransNet
Metric : 1 表示到达DR的开销值

P2P 描述的连接中包含路由信息携带网络号及掩码
TransNet描述的链接中仅包括与DR的连接关系及开销,没有网络号/掩码及共享链路上其他路由器的任何信息。

dis ospf abr-asbr //查看路由器的角色
dis ospf lsdb router //查看1类LSA
dis ospf lsdb network 172.16.10.7 查看二类LSA(Network LSA)

============================================

二类LSA 传播范围 (存在DR的环境)本区域内不能穿越ABR 通告者MA网络DR 包含的内容纯拓扑信息,包含了该MA网段直连的所有路由器的RID信息,该MA网段的掩码 Link state-ID DR的接口IP地址 ADV-router DR的RID

1.SPF算法
(1)构建 SPF树
根据1类中的P2P,transnet 和2类LSA中的拓扑信息,构建SPF树干

(2)计算最优的路由
根据SPF树干及1类LSA中的Stubnet及2类LSA,计算出最短的路径

=============================================
三类LSA summary LSA
3类LSA 传播范围 除了该区域外的整个OSPF区域 通告者ABR 包含的内容前缀信息 掩码 cost值 3类LSA的前缀信息 Link state-ID ABR的RID, ADV-router跨区域以后ABR会重新生成
3类LSA中的 cost值是ABR到达目标网段的距离

dis ospf lsdb summary 77.77.77.0 查看三类lsa

3类LSA的过滤: 通告者是ABR
第一种方法:
通过前缀列表进行匹配路由

acl —只能够匹配前缀,不能够匹配掩码
前缀列表 —可以匹配前缀,也可以匹配掩码

需求:过滤44.1.1.1/32的三类LSA,放行其他

ip ip-prefix 44 index 10 deny 44.1.1.1 32 //拒绝44.1.1.1/32
ip ip-prefix 44 index 20 permit 0.0.0.0 0 less-equal 32 //允许其他路由

ospf 1 router-id 22.1.1.1
area 0.0.0.0
filter ip-prefix 44 import //匹配到的前缀信息,不允许进入区域0
或者:
area 0.0.0.1
filter ip-prefix 44 export //匹配到的前缀信息,不允许离开区域1

第二种方法:

interface GigabitEthernet0/0/0
ospf filter-lsa-out summary //对OSPF接口出方向的3类LSA进行过滤

===============================================

为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。
1、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。骨干区域不能被分割。
2、OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
3、OSPF要求ABR设备至少有一个接口属于骨干区域
4、从非骨干区域接收到的3类LSA,ABR能接收到,但不会使用这条3类LSA

真假ABR的问题
真ABR 在骨干区域有邻居,满足 ABR从非骨干区域接收到的三类LSA只接收不选路
假ABR 在骨干区域没有邻居, 不满足

===============================================
5类LSA
5类LSA 传播范围整个区域内,除了特殊区域 通告者 ASBR 包含的内容 FA地址 cost值 掩码 TAG等 Ls-ID 外部路由的前缀 ADV-rtr ASBR RID(不变)
域外的路由 :
ospf 1 router-id 55.1.1.1
import-route static //把路由表中存在的静态路由,引入到OSPF协议的数据库中
作用:用于描述如何从ASBR到达外部目的地
dis ospf lsdb ase 6.6.6.6 查看五类lsa
cost值 :默认为1.描述ASBR到达目的外部路由的cost值
type: 默认为2,不会将ospf域内的cost值进行累加
tag值: 默认为1,主要用于路由策略
FA地址:默认为0.0.0.0 ,也会存在非0.0.0.0 的情况

4类LSA 传播范围 除了ASBR所在区域之外的整个区域 通告者ASBR所处区域的ABR设备 包含的内容纯拓扑信息 cost值 Link state-IDASBR的RID ADV-router通告者ABR RID(每穿越一个区域,ABR会重新生成)
cost值:ABR到达ASBR的cost值
作用:用于描述如何从ABR到达ASBR
[AR1]display ospf lsdb asbr self-originate 查看4类LSA

ospf 1 router-id 55.1.1.1
import-route static cost 100 type 1 tag 666 //修改外部路由的外部开销值为100,type为1,tag为666
area 0.0.0.2
type2 = 外销开销值 (不累加,默认)
type1 = 外部开销值+ 内部开销值

===============================================

OSPF路由的选路原则:
1.区域内 > 区域之间 > type 1 > type 2
2.type1 = 外部开销值+ 内部开销值 .cost值越小越优先
如果cost值相同,来自于同一个区域,则路由负载。
3.type2 = 外销开销值 (不累加,默认)
先比较外部开销值,cost值越小越优先。
如果外部开销值相同,则比较内部开销值,cost值越小越优先。
如果内部开销值也相同,则比较区域号ID大的。
如果来自于同一个区域,则路由负载。

负载的条件:
1.cost值一致。 2.区域一致。

===============================================
FA地址:作用为了解决次优路由,防环

FA地址:默认为0.0.0.0 ,也会存在非0.0.0.0 的情况

首先检查type5 LSA的FA地址是否为0.
如果为0,说明路由必须经过ASBR转发,那么就要优先选择到达ASBR metric 最短路径的。
如果FA非0.那么优选到FA地址metric值最短的路径,而且到FA的路由必须为域内或域间的,否则外部路由无法装载进路由表中。

五类和七类LSA FA地址
五类需要满足条件才会携带FA地址
七类始终会携带FA地址

===============================================
OSPF 汇总:

域间汇总: 针对3类LSA的汇总 只能在ABR上进行汇总
只通告汇总的路由,不通告明细
R2: ABR
ospf 1 router-id 22.1.1.1
area 0.0.0.1
abr-summary 172.16.0.0 255.255.252.0 //注意区域,想汇总的明细来自于哪个区域,就进入哪个区域进行汇总

3类LSA过滤:
area 0.0.0.1
abr-summary 172.16.0.0 255.255.252.0 not-advertise //汇总以后,不通告该3类LSA的汇总

域外汇总: 针对外部路由的汇总,针对5类LSA,只能在ASBR上进行汇总
R5: ASBR
ospf 1 router-id 55.1.1.1
asbr-summary 192.168.0.0 255.255.0.0 //针对外部路由进行汇总,汇总默认的cost值等于自身cost值1加上外部引入的cost值1

asbr-summary 192.168.0.0 255.255.0.0 cost 5 //手工设置汇总以后的cost值

5类LSA的过滤:
asbr-summary 192.168.0.0 255.255.0.0 not-advertise //外部路由汇总以后,不通告

===============================================
OSPF 默认路由:

默认情况,在OSPF协议中,不能把0.0.0.0/0的静态默认路由,通过外部引入的方式引入到OSPF区域中

default-route-advertise,默认情况下不会产生默认路由
前提条件:该路由表中必须有默认路由,才会产生一条5类LSA的0.0.0.0/0 默认路由

ip route-static 0.0.0.0 0.0.0.0 null 0 //在现网中,默认路由的下一跳,写真实的接口IP地址

ospf 1 router-id 55.1.1.1
default-route-advertise //下发默认路由,

default-route-advertise always //always参数,不管路由表中是否存在默认路由,自身都会产生一条5类LSA的0.0.0.0/0默认路由 ,推荐做法

efault-route-advertise always cost 10 //设置下发默认路由的cost值为10

===============================================
虚连接:逻辑上属于区域0
注意:当区域0做认证时候,虚连接也必须使能认证。

应用的场景 :
1.远离区域0
2.分割区域0
3.不存在骨干区域,只有非骨干区域之间相连的情况
4.为了备份,防止区域0被分割

配置:
R6:
ospf 1 router-id 66.1.1.1
area 0.0.0.26 //传输区域
vlink-peer 22.1.1.1 //指对方设备的router-id,不是接口IP地址

[AR6]dis ospf vlink

Virtual-link Neighbor-id -> 22.1.1.1, Neighbor-State: Full //邻居状态一定要FULL,虚连接邻居建立成功

===============================================
特殊区域
option选项 —hello报文
默认情况下,E位为1 --可以接收外部路由的
E位为0,N位为0 ----stub区域
E位为0,N位为1 ----NSSA区域
1.stub区域
过滤4类,5类LSA,存在1类、2类、3类LSA
由stub区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由,发布给stub区域中的其他路由器

配置:特殊区域的所有设备都要配置
ospf
area 0.0.0.2
stub //把区域2设置为stub区域

2.totally stub区域
过滤3类、4类、5类LSA,只存在1类、2类LSA
由stub区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由,发布给stub区域中的其他路由器

配置:特殊区域的所有设备都要配置
ospf
area 0.0.0.2
stub no-summary //把区域2设置为stub区域,stub 区域的ABR上配置就可以

3.NSSA Not-so-stub-area
过滤4类,5类LSA,由NSSA区域的ABR设备产生一条7类LSA O N2 0.0.0.0/0的默认路由
本NSSA区域的路由器可以拥有ASBR,可以引入外部路由,该外部路由以7类LSA的形式在NSSA区域中存在。
由NSSA区域的ABR路由器将7类LSA转换成5类LSA,如果有多个ABR,router-id大的ABR成为转发者路由器。

配置:属于nssa区域的所有设备都需要配置

ospf 1 router-id 55.1.1.1
area 0.0.0.2
nssa //把区域2设置为nssa区域

ospf 1 router-id 11.1.1.1
nssa translator-always //强制指定R1作为转发者
参数:no-import-route //NSSA区域中的路由器,不允许引入外部路由

4.totally NSSA 区域

过滤3类、4类,5类LSA,由NSSA区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由
配置:属于nssa区域的ABR设备需要配置

ospf 1 router-id 11.1.1.1
area 0.0.0.2
nssa no-summary //把区域2设置为totally nssa区域

七类LSA:NSSALSA
[AR1]dis ospf lsdb nssa 88.1.1.0
在这里插入图片描述

===============================================
OSPF认证:在OSPF header 包头格式中

认证的类型:
1.null --type=0
2.明文 —type=1
3.密文 --type=2

接口认证及区域认证:
接口认证优于区域认证

接口认证:
明文认证:
interface GigabitEthernet0/0/0
ip address 24.1.1.4 255.255.255.0
ospf authentication-mode simple cipher huawei

密文认证:

interface GigabitEthernet0/0/0
ospf authentication-mode md5 1 cipher huawei

区域认证:
如果区域使能认证,该区域下的接口都使能认证

明文认证:
ospf 1 router-id 22.1.1.1
area 0.0.0.1
authentication-mode simple cipher huawei

密文认证:

ospf 1 router-id 22.1.1.1
area 0.0.0.1
authentication-mode md5 1 cipher huawei

注意:
如果区域0认证,存在虚链路时,虚链路也要进行认证

===============================================
MTU值 最大传输单元 1500
MRU 最大接收单元

默认情况下,华为设备是不协商MTU值,忽略检查该值。
在DD报文中,华为设备不协商MTU值,默认为0

如果强制协商MTU值,MTU不匹配时候,ospf邻居状态卡在exstart或者exchange状态

interface GigabitEthernet0/0/0
mtu 1400
ip address 24.1.1.2 255.255.255.0
ospf mtu-enable //强制检查DD报文中的MTU值

==============================================
OSPFv3
基本配置:
ospfv3 1
router-id 11.1.1.1
area 0
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address auto link-local //使用链路本地地址即可建立邻居
ospfv3 1 area 0.0.0.0 //启动OSPFv3的区域0
interface LoopBack0
ipv6 enable
ipv6 address 2011::1/128 //用于数据转发的全局单播地址
ospfv3 1 area 0.0.0.0

dis ospfv peer //查看邻居表
OSPFv3 Process (1)
OSPFv3 Area (0.0.0.2)
Neighbor ID Pri State Dead Time Interface Instance ID
66.1.1.1 1 Full/DR 00:00:33 GE0/0/2 0


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
author-avatar
w3shuajiang2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有