GRE和MGRE

news2024/12/27 2:01:35

目录

GRE

GRE环境的搭建

MGRE

MGRE的配置

MGRE环境下的RIP网络

MGRE实验


VPN

说到GRE,我们先来说个大家熟悉一点的,那就是VPN技术。

背景需求

企业、组织、商家等对专用网有强大的需求。

高性能、高速度和高安全性是专用网明显的优势。

物理专用网价格高昂,物理架设实施有难度。传统的通过租用专线或拨号网络的方式越来越不适用。(性价比较低)

        VPN--- Vitual Private Network,*虚拟私有网)︰是指依靠ISP或其他NSP在公用网络基础设施之上构建的专用的安全数据通信网络,只不过这个专线网络是逻辑上的而不是物理的,所以称为虚拟专用网。

        虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立自己的私有网络。

        专用:用户可以定制最符合自身需求的网络。

        核心技术:隧道技术

GRE

        VPN技术的核心其实是隧道技术。而我们今天要讲的这个GRE其实就是―种隧道封装技术。

        隧道技术∶在隧道的两端,通过封装及解封装技术在公网上建立一条数据通道,使用这条通道进行数据传输

        GRE ---通用路由封装,标准的三层隧道技术,是一种点对点的隧道

GRE环境的搭建

这里可以先使用ENSP搭建一个GRE的工作环境进行演示讲解。

        搭建如上的示意拓扑。我们现在的需求就是通过GRE技术保证左边的1.0网段可以正常的访问右边2.0网段。

我们先按照现在所学的把我们该配的都配好。R1,R2,R3的IP,及R1,R3 上应该配置到达ISP路由器的缺省路由,配置完后,12.0.0.1应

该可以ping通23.0.0.1。当然,两边的私网IP地址肯定是不可能通的。

其实这个隧道的原理很简单,就是我们假装中间有一个虚 拟的链路将两边的路由器连接。这个虚拟的链路也需要在-个内网的网段

当中。我们这样配,肯定没问题,问题是,你配好了数据包也没办法去走这个虚拟的链路啊,因为他本身就不存在。数据还是只能从

真实的接口中出走真实的链路。

所以,这中间就需要GRE帮忙搬运流量。

GRE实验

实验步骤:

第⼀步:配置IP地址

R1配置:

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24

[R1]interface g0/0/1

[R1-GigabitEthernet0/0/1]ip address 12.1.1.1 24

R2配置

[R2]interface g0/0/0

[R2-GigabitEthernet0/0/0]ip address 12.1.1.2 24

[R2]interface g0/0/1

[R2-GigabitEthernet0/0/1]ip address 23.1.1.2 24

R3配置

[R3]interface g0/0/0

[R3-GigabitEthernet0/0/0]ip address 23.1.1.3 24

[R3]interface g0/0/1

[R3-GigabitEthernet0/0/1]ip address 34.1.1.3 24

R4配置

[R4]interface g0/0/0

[R4-GigabitEthernet0/0/0]ip address 34.1.1.4 24

[R4]interface g0/0/1

[R4-GigabitEthernet0/0/1]ip address 192.168.2.1 24

第⼆步:公⽹路由配置,此处采⽤OSPF

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.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

R3配置

[R3]ospf 1 router-id 3.3.3.3

[R3-ospf-1]area 0

[R3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]network 34.1.1.0 0.0.0.255

 

第三步:配置内⽹缺省路由

R1配置

[R1]ip route-static 0.0.0.0 0 12.1.1.2

R4配置

[R4]ip route-static 0.0.0.0 0 34.1.1.3

 

第四步:配置NAT

R1配置

[R1]acl 2000

[R1-acl-basic-2000]rule 1 permit source any

[R1-acl-basic-2000]q

[R1]interface g0/0/1

[R1-GigabitEthernet0/0/1]nat outbound 2000

R4配置

[R4]acl 2000

[R4-acl-basic-2000]rule 1 permit source any

[R4-acl-basic-2000]q

[R4]interface g0/0/0

[R4-GigabitEthernet0/0/0]nat outbound 2000

第五步:配置GRE

R1配置

[R1]interface Tunnel 0/0/0 //创建隧道⼝

[R1-Tunnel0/0/0]tunnel-protocol gre //定义封装⽅式为GRE

[R1-Tunnel0/0/0]ip address 10.1.1.1 24 //配置隧道IP地址

[R1-Tunnel0/0/0]source 12.1.1.1 //定义封装内容源

[R1-Tunnel0/0/0]destination 34.1.1.4 //定义封装内容⽬标

 

R4配置

[R4]interface Tunnel 0/0/0

[R4-Tunnel0/0/0]tunnel-protocol gre

[R4-Tunnel0/0/0]ip address 10.1.1.2 24

[R4-Tunnel0/0/0]source 34.1.1.4

[R4-Tunnel0/0/0]destination 12.1.1.1

第六步:书写静态路由指向隧道

[R1]ip route-static 192.168.2.0 24 Tunnel 0/0/0

[R4]ip route-static 192.168.1.0 24 Tunnel 0/0/0

第七步:测试

PC>ping 192.168.2.2

Ping 192.168.2.2: 32 data bytes, Press Ctrl_C to break

Request timeout!

Request timeout!

From 192.168.2.2: bytes=32 seq=3 ttl=126 time=47 ms

From 192.168.2.2: bytes=32 seq=4 ttl=126 time=31 ms

From 192.168.2.2: bytes=32 seq=5 ttl=126 time=47 ms

--- 192.168.2.2 ping statistics ---

5 packet(s) transmitted

3 packet(s) received

40.00% packet loss

round-trip min/avg/max = 0/41/47 ms

 

GRE报文结构

GRE在封装数据时,会添加GRE头部信息,还会添加新的传输协议头部信息。

GRE封装报文时,封装前的报文成为净荷,封装前的报文协议成为乘客协议,然后GRE会封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的协议成为传输协议。

MGRE

        当然,GRE本身还是存在缺陷的,主要是他创建的通道是一个点到点的隧道,导致其扩展性较差。要是存在多个分公司需要和总部连接,融为一个私网时,利用GRE技术需要打通的通道就太多了。

        这种场景就可以使用另一种技术,MGRE,即多点通用路由封装协议。

        在这种场景下,如果想要将四个私网融合成一个私网的话,使用GRE隧道,则需要四个私网之间彼此打通一条隧道,这样显然是不方便的。我们希望所有可以像MA网络一样,用一个网段将所有的私网连接起来。虚拟链路的逻辑图应该如下所示。

        但这样有个问题,我们GRE是点到点的虚拟隧道,他在发送的时候必须要指定要封装的源IP和目标IP。而现在这种场景下,他是没有办法指定一个具体的目标IP的。所以MGRE的核心任务就是需要想办法将这个过程变成动态的,我和谁通信,目标地址就修改成谁。

        这里就需要用到一个协议的辅助,那就是NHRP协议。

NHRP---下一跳解析协议**.-—原理也很简单,我们在这些私网中选择一个出口物理IP不会变的作为NHRP的中心(NHS--下一跳服务器)。这样,剩下的分支就都可以知道中心的隧道IP和物理IP。然后,NHRP要求所有分支都需要将自己物理接口IP和隧道IP发给NHS。(发生变化就需要重新发送。)这样我们的NHS会将所有的分支的地址映射关系动态的记录在本地。发送信息时查询即可。分支之间需要发送信息也需要获取这个映射关系,就需要先问NHS要。

        我们发现我们用MGRE搭建的这个逻辑拓扑也是网络中存在多个节点,但是本身他在发送的时候还是一个点到点的发送,并不存在广播或者组播行为,所以,这样的网络我们可以近似的看作是NBMA网络(这是逻辑上的NBMA,也就是靠技术模拟的。真实的物理上的NBMA网络需要靠帧中继技术搭建,我们不去研究。)

MGRE的配置

基于上述环境来进行MGRE环境的搭建。

配置完成之后我们就可以通过命令:[r1]display nhrp peer all

之后再补全路由信息就可以完成通讯过程了。

第一步:配置IP地址

第二步:配置内⽹缺省路由

[R1]ip route-static 0.0.0.0 0 15.1.1.5

[R2]ip route-static 0.0.0.0 0 25.1.1.5

[R3]ip route-static 0.0.0.0 0 35.1.1.5

[R4]ip route-static 0.0.0.0 0 45.1.1.5

第三步:配置NAT

R1

[R1]acl 2000

[R1-acl-basic-2000]rule 1 permit  source any

[R1-acl-basic-2000]q

[R1]interface  GigabitEthernet 0/0/0

[R1-GigabitEthernet0/0/0]nat outbound 2000

R2

[R2]acl 2000

[R2-acl-basic-2000]rule 1 permit  source any

[R2-acl-basic-2000]q

[R2]interface  GigabitEthernet 0/0/0

[R2-GigabitEthernet0/0/0]nat outbound 2000

R3

[R3]acl 2000

[R3-acl-basic-2000]rule 1 permit  source any

[R3-acl-basic-2000]q

[R3]interface  GigabitEthernet 0/0/0

[R3-GigabitEthernet0/0/0]nat outbound 2000

R4

[R4]acl 2000

[R4-acl-basic-2000]rule 1 permit  source any

[R4-acl-basic-2000]q

[R4]interface  GigabitEthernet 0/0/0

[R4-GigabitEthernet0/0/0]nat outbound 2000

R5

[R5]acl 2000

[R5-acl-basic-2000]rule 1 permit  source any

[R5-acl-basic-2000]q

[R5]interface  GigabitEthernet 0/0/0

[R5-GigabitEthernet0/0/0]nat outbound 2000

第四步:配置MGRE

中心站点R1:

[R1]interface Tunnel 0/0/0   创建tunnel口

[R1-Tunnel0/0/0]ip address 10.1.1.1 24  配置接口ip地址

[R1-Tunnel0/0/0]tunnel-protocol gre p2mp 先修改接口模式为多点

[R1-Tunnel0/0/0]source 15.1.1.1  再定义公有的IP地址

[R1-Tunnel0/0/0]nhrp network-id 100

分支站点

R2:

[R2]interface  Tunnel 0/0/0

[R2-Tunnel0/0/0]ip address 10.1.1.2 24

[R2-Tunnel0/0/0]tunnel-protocol gre p2mp

[R2-Tunnel0/0/0]source 25.1.1.2

[R2-Tunnel0/0/0]nhrp network-id 100

[R2-Tunnel0/0/0]nhrp entry 10.1.1.1 15.1.1.1 register

R3

[R3]interface  Tunnel 0/0/0

[R3-Tunnel0/0/0]ip address 10.1.1.3 24

[R3-Tunnel0/0/0]tunnel-protocol gre p2mp

[R3-Tunnel0/0/0]source 35.1.1.3

[R3-Tunnel0/0/0]nhrp network-id 100

[R3-Tunnel0/0/0]nhrp entry 10.1.1.1 15.1.1.1 register

R4

[R4]interface  Tunnel 0/0/0

[R4-Tunnel0/0/0]ip address 10.1.1.4 24

[R4-Tunnel0/0/0]tunnel-protocol gre p2mp

[R4-Tunnel0/0/0]source 45.1.1.4

[R4-Tunnel0/0/0]nhrp network-id 100

[R4-Tunnel0/0/0]nhrp entry 10.1.1.1 15.1.1.1 register

第五步:书写静态路由

R1:

[R1]ip route-static 192.168.2.0 24 10.1.1.2

[R1]ip route-static 192.168.3.0 24 10.1.1.3

[R1]ip route-static 192.168.4.0 24 10.1.1.4

R2:

[R2]ip route-static 192.168.1.0 24 10.1.1.1

[R2]ip route-static 192.168.3.0 24 10.1.1.3

[R2]ip route-static 192.168.4.0 24 10.1.1.4

R3:

[R3]ip route-static 192.168.1.0 24 10.1.1.1

[R3]ip route-static 192.168.2.0 24 10.1.1.2

[R3]ip route-static 192.168.4.0 24 10.1.1.4

R4:

[R4]ip route-static 192.168.1.0 24 10.1.1.1

[R4]ip route-static 192.168.2.0 24 10.1.1.2

[R4]ip route-static 192.168.3.0 24 10.1.1.3

MGRE环境下的RIP网络

        这里补全路由的过程可以采用最简单的静态路由来完成,那自然也可以通过动态路由协议来完成,这里,我们先通过RIP协议来完成MGRE环境下的路由获取,至于OSPF协议,之后我们在学习了OSPF的细节知识之后,我们再去尝试。

        注意,在做RIP宣告的时候,只需要宣告环回网段(私网网段),以及隧道网段即可,公网接口可以不用激活,因为并不需要他去收发RIP数据。也不需要其路由信息,这部分路由我们走的是缺省,我们一开始就配置好了。

        当然,在执行完RIP的配置操作之后,我们会发现,这也环境下的网络存在一些问题,并没有完全的按照我们预想的结果来。我们做如下总结:

在MGRE环境下使用RIP来获取未知网段的路由信息

1,只有中心获取到分支的路由信息,但是分支并没有获取到中心的路由信息

----解决方案---在中心上开启伪广播。---通过给所有分支分别发送数据包达到类似广播的效果。

[r1-Tunnel0/o/0]nhrp entry multicast dynamic

2,分支在中心开启伪广播后,只能获取到中心的路由信息,但是无法获取分支之间的路由信息。

主要是因为华为设备默认开启了RIP的水平分割,导致中心不会再从隧道接口将学来的分支路由发送给其他分支解决方案---关闭接口的水平分割

[r1-Tunnel0/0/0]undo rip split-horizon

 

MGRE实验

实验步骤

第⼀步:IP地址规划

PC地址

设备                                 地址                             ⽹关

PC1                        192.168.1.2/24              192.168.1.2/24

PC2                       192.168.2.2/24              192.168.2.1/24

PC3                      192.168.3.2/24               192.168.3.1/24

PC4                      192.168.4.2/24                192.168.4.1/24

设备地址

设备            接⼝               地址

R1                 S4/0/0              15.1.1.1/24

R2                 S4/0/0               25.1.1.2/24

R3                 S4/0/0               35.1.1.3/24

R4                 S4/0/0               45.1.1.4/24

R5                 S4/0/0               15.1.1.5/24

                     S4/0/1                25.1.1.5/24

                     S3/0/0                35.1.1.5/24

                    G0/0/0                45.1.1.5/24

                    loopback0           5.5.5.5/24

 

第⼆步:配置IP地址

R1配置

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24

[R1]interface s4/0/0

[R1-Serial4/0/0]ip address 15.1.1.1 24

R2配置

[R2]interface g0/0/0

[R2-GigabitEthernet0/0/0]ip address 192.168.2.1 24

[R2]interface s4/0/0

[R2-Serial4/0/0]ip address 25.1.1.2 24

R3配置

[R3]interface g0/0/0

[R3-GigabitEthernet0/0/0]ip address 192.168.3.1 24

[R3]interface s4/0/0

[R3-Serial4/0/0]ip address 35.1.1.3 24

R4配置

[R4]interface g0/0/0

[R4-GigabitEthernet0/0/0]ip address 45.1.1.4 24

[R4]interface g0/0/1

[R4-GigabitEthernet0/0/1]ip address 192.168.4.1 24

R5配置

interface Serial3/0/0

ip address 35.1.1.5 255.255.255.0

interface Serial4/0/0

ip address 15.1.1.5 255.255.255.0

interface Serial4/0/1

ip address 25.1.1.5 255.255.255.0

interface GigabitEthernet0/0/0

ip address 45.1.1.5 255.255.255.0

 

第三步:配置缺省路由

[R1]ip route-static 0.0.0.0 0 15.1.1.5

[R2]ip route-static 0.0.0.0 0 25.1.1.5

[R3]ip route-static 0.0.0.0 0 35.1.1.5

[R4]ip route-static 0.0.0.0 0 45.1.1.5

 

第四步:NAT

[R1]acl 2000

[R1-acl-basic-2000]rule 1 permit source any

[R1-acl-basic-2000]q

[R1]inter s4/0/0

[R1-Serial4/0/0]nat outbound 2000

第五步:PAP认证

主认证⽅配置

[R5]aaa

[R5-aaa]local-user huawei password cipher huawei

[R5-aaa]local-user huawei service-type ppp

[R5]interface s4/0/0

[R5-Serial4/0/0]ppp authentication-mode pap

被认证⽅配置

[R1]interface s4/0/0

[R1-Serial4/0/0]ppp pap local-user huawei password cipher huawei

第六步:CHAP认证

主认证⽅配置

[R5]aaa

[R5-aaa]local-user huawei password cipher huawei

[R5-aaa]local-user huawei service-type ppp

[R5]interface s4/0/0

[R5-Serial4/0/0]ppp authentication-mode chap

被认证⽅配置

[R2]interface s4/0/0

[R2-Serial4/0/0]ppp chap user huawei

[R2-Serial4/0/0]ppp chap password cipher huawei

第七步:HDLC封装

[R3]inter s4/0/0

[R3-Serial4/0/0]link-protocol hdlc

 [R5]interface s3/0/0

[R5-Serial3/0/0]link-protocol hdlc

第⼋步:R1R2R3构建MGRE环境

R1配置

[R1]interface Tunnel 0/0/0

[R1-Tunnel0/0/0]ip address 10.1.1.1 24

[R1-Tunnel0/0/0]tunnel-protocol gre p2mp

[R1-Tunnel0/0/0]source 15.1.1.1

[R1-Tunnel0/0/0]nhrp network-id 100

R2配置

[R2]interface Tunnel 0/0/0

[R2-Tunnel0/0/0]ip address 10.1.1.2 24

[R2-Tunnel0/0/0]tunnel-protocol gre p2mp

[R2-Tunnel0/0/0]source s4/0/0

[R2-Tunnel0/0/0]nhrp entry 10.1.1.1 15.1.1.1 register

[R2-Tunnel0/0/0]nhrp network-id 100

R3配置

[R3]interface Tunnel 0/0/0

[R3-Tunnel0/0/0]ip address 10.1.1.3 24

[R3-Tunnel0/0/0]tunnel-protocol gre p2mp

[R3-Tunnel0/0/0]source s4/0/0

[R3-Tunnel0/0/0]nhrp network-id 100

[R3-Tunnel0/0/0]nhrp entry 10.1.1.1 15.1.1.1 register

第九步:R1R4配置GRE

R1配置

[R1]interface Tunnel 0/0/1

[R1-Tunnel0/0/1]ip address 20.1.1.1 24

[R1-Tunnel0/0/1]tunnel-protocol gre

[R1-Tunnel0/0/1]source 15.1.1.1

[R1-Tunnel0/0/1]destination 45.1.1.4

R4配置

[R4]interface Tunnel 0/0/1

[R4-Tunnel0/0/1]ip address 20.1.1.2 24

[R4-Tunnel0/0/1]tunnel-protocol gre

[R4-Tunnel0/0/1]source 45.1.1.4

[R4-Tunnel0/0/1]destination 15.1.1.1

第⼗步:书写RIP路由

MGRE环境下RIP路由配置

R1配置

[R1]rip 1

[R1-rip-1]version 2

[R1-rip-1]network 192.168.1.0

[R1-rip-1]network 10.0.0.0

注意:MGRE环境下RIP需要开启伪⼴播和关闭⽔平分割

[R1]interface Tunnel 0/0/0

[R1-Tunnel0/0/0]nhrp entry multicast dynamic //开启伪⼴播

[R1-Tunnel0/0/0]undo rip split-horizon //关闭⽔平分割

R2配置

[R2]rip 1

[R2-rip-1]version 2

[R2-rip-1]network 192.168.2.0

[R2-rip-1]network 10.0.0.0

R3配置

[R3]rip 1

[R3-rip-1]version 2

[R3-rip-1]network 192.168.3.0

[R3-rip-1]network 10.0.0.0

GRE环境下配置

R1配置

[R1]rip 1

[R1-rip-1]version 2

[R1-rip-1]network 20.0.0.0

R4配置

[R4]rip 1

[R4-rip-1]version 2

[R4-rip-1]network 20.0.0.0

[R4-rip-1]network 192.168.4.0

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

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

相关文章

【数据结构】时间复杂度---OJ练习题

目录 🌴时间复杂度练习 📌面试题--->消失的数字 题目描述 题目链接 🌴解题思路 📌思路1: malloc函数用法 📌思路2: 📌思路3: 🌴时间复杂度练习 &…

具有吸引子的非线性系统(MatlabSimulink实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码&Simulink仿真实现 💥1 概述 要在Simulink中实现具有吸引子的非线性系统,可以按照以下步骤进行操作: 1. 打开Simulink并创建一个…

Nginx基础(复习理论篇)

一、Nginx基本概念 1、Nginx是什么 Nginx是一个高性能的Http和反向代理服务器,其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx专为性能优化而开发,性能是其最重要的考量&…

Oracle/plsql报错ORA-01932:ADMIN选项未授权给角色‘CONNECT’

情况如下: create user hikeytdm identified by hikeytdm default tablespace hikeytdm temporary tablespace temp; grant connect,resource,dba to hikeytdm; --grant报错ORA-01932:ADMIN选项未授权给角色‘CONNECT’,应该在cmd里或plsql里…

pytorch学习--第一个模型(线性模型)

目标 我们想通过随机初始化的参数 ω , b \omega ,b ω,b能在迭代过程中使预测值和目标值能无限接近 y ω x b y\omega xb yωxb 定义数据 x torch.rand([60, 1])*10 y x*2 torch.randn(60,1)构建模型 利用pytorch中的nn.Module 想要构建模型时,继承这个类…

SylixOS下SSH和SFTP连接

简要 基于网络的连接(telnet,ftp)方便高效,但其是基于明文的通信,容易被窃取、篡改和攻击,存在网络安全问题,尤其在进行远程访问时,穿过复杂未知的公网环境非常危险,为此…

linux之Ubuntu系列(八)用户管理 修改文件权限

修改文件权限 chown 修改拥有者 修改 文件|目录 的拥有者 sudo chown 用户名 文件名|目录 递归修改文件|目录的组 sudo chgrp -R 组名 文件|目录 递归修改文件权限 chmod -R xxx 文件|目录

mongoDB 分组汇总统计-执行语句(亲测)

# 注意 “gl_id” 需要分组的字段名 “gl_idlCount” 分组后获取数量的字段名(可随意命名) db.getCollection(集合名).aggregate([{ "$group": {"_id": {"gl_id": "$gl_id"},"gl_idlCount": { "…

一文读懂FPC(16)- 关于过孔盖油和过孔开窗的区分

FPC系列文章目录 1.什么是FPC 2.什么是R-FPC 3,FPC的基材 4.FPC基材压延铜和电解铜的区别 5,FPC的辅材 6,FPC常见的四种类型 7,FPC的生产流程简介 8,R-FPC的生产流程简介 9,FPC的发展及应用 10&a…

优思学院|六西格玛管理:依据事实的质量管理方式

一个企业的质量管理制度是否规范,也就是质量管理体系是否很完备的问题,要考察管理体系是否还有哪里不尽完美?各部门之间的连系、调整是否能够顺利进行?各自是否达成在质量保证上的任务等,进行质量管理体系的审核&#…

【无线通信模块】什么是PCB板载天线,PCB板载天线UART/USB接口WiFi模块

基于射频技术的无线模块需要通过天线来发射和接收电磁波信号,市场上常见的天线类型有陶瓷天线、板载天线、棒状天线以及外接天线,外接天线是通过在PCB板上预留IPEX座子,可选天线类型就比较多。本篇SKYLAB小编带大家了解一下板载天线的UART接口…

ROS:pluginlib

目录 一、前言二、概念三、作用四实际用例4.1需求4.2流程4.3准备4.4创建基类4.5创建插件4.6注册插件4.7构建插件库4.8使插件可用于ROS工具链4.8.1配置xml4.8.2导出插件 4.9使用插件4.10执行 一、前言 pluginlib直译是插件库,所谓插件字面意思就是可插拔的组件&…

vue使用docxtemplater导出word实现使用textarea输入的内容换行

注:本文只做导出word并且换行操作,不做vue引入docxtemplater步骤 先看一下实现效果 这是文本域输入的 这是导出来的结果 可以看出来导出来的结果也是换行的呢 接下来我们手摸手操作一下流程 首先咱们捋一捋思路 知道文本域的换行的换行标识符,我们发…

Spingboot 多模块引入第三方jar包

1. 在需要的模块中引入jar包 2. 在此模块中的pom.xml 中引用 3. 要想打包部署服务器&#xff0c;需要在启动模块中添加配置信息 ps&#xff1a;启动模块要引用此模块才能将此一起jar打包部署 <build><plugins><plugin><groupId>org.springframework.…

对链表进行插入排序

给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。 每次迭代中&#xff0c;插入排序只从输…

刷新vue项目后,在非routerview中的组件获取路由路径永远是“/“的解决方案

问题&#xff1a; //此文件时项目导航栏&#xff0c;不属于router-view的内容 //route.fullPath表示当前的页面路径onMounted(() > {setTimeout(() > {console.log("100ms________", route.fullPath);}, 100);setTimeout(() > {console.log("500ms___…

Comparator.comparing()实现中文排序及空指针处理

一、 Comparator.comparing()的用法请详见以下上一篇文章的汇总介绍。 Comparator用法_乞力马扎罗の黎明的博客-CSDN博客 二、应用示例&#xff1a; 1、中文排序、空值处理 Collator instance Collator.getInstance(Locale.CHINA); checkItemVoList.stream().sorted(Compar…

微服务保护——Sentinel【快速入门】

一、雪崩问题&#x1f349; (一) 什么是雪崩&#x1f95d; 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。服务D故障引起服务A故障&#xff0c;服务A引起其他服务故障&#xff0c;渐渐导致所有微服务都不可用。有人…

【深入探究人工智能】:历史、应用、技术与未来

深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语&#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &am…

Linux云服务器,docker compose文件部署多个jar,docker部署多模块boot项目

前提条件 Linux服务器 服务器已经安装docker docker已经安装jdk镜像 docker已经安装mysql镜像 将要部署的项目的jar包打包好&#xff0c;项目是多模块springboot项目 部署过程 项目是3个模块的Spring boot项目&#xff0c;打出来3个jar&#xff0c;将这些jar包拷贝到…