HCIP BGP综合实验

题目
1、AS1存在两个环回,一个地址为192.168.1.0/24该地址不能在任何协议中宣告;
2、AS3中存在两个环回,一个地址为192.168.2.0/24该地址不能在任何协议中宣告,最终要求这两个环回可以互相通讯;
3、AS间的骨干链路IP地址随意指定;
4、使用BGP协议让整个网络所有设备的环回可以互相访问;
5、减少路由条目数量,避免环路出现。
实验步骤
第一步、IP地址规划
网段划分如下
AS2在172.16.0.0/16网段划分
建邻居环回:
R2:172.16.0.2/32
R3:172.16.0.3/32
R4:172.16.0.4/32
R5:172.16.0.5/32
R6:172.16.0.6/32
R7:172.16.0.7/32
逻辑环回
R2:172.16.2.0/24
R3:172.16.3.0/24
R4:172.16.4.0/24
R5:172.16.5.0/24
R6:172.16.6.0/24
R7:172.16.7.0/24
骨干链路:
R2-R3:172.16.1.0/30
R3-R4:172.16.1.4/30
R2-R5:172.16.1.8/30
R4:R7:172.16.1.12/30
R5-R6:172.16.1.16/30
R6-R7:172.16.1.20/30
R1
题目要求环回:192.168.1.0/24
环回:1.1.1.0/24
R8
题目要求环回:192.168.2.0/24
环回:8.8.8.0/24
AS之间的骨干链路
R1-R2:12.1.1.0/30
R7-R8:78.1.1.0/30
设备接口IP地址如
| 设备 | 接口 | IP地址 | 
| R1 | G0/0/0 | 12.1.1.1/30 | 
| Lo0 | 1.1.1.1/24 | |
| Lo1 | 192.168.1.1/24 | |
| R2 | G0/0/0 | 12.1.1.2/30 | 
| G0/0/1 | 172.16.1.1/30 | |
| G0/0/2 | 172.16.1.9/30 | |
| Lo0 | 172.16.0.2/32 | |
| Lo1 | 172.16.2.1/24 | |
| R3 | G0/0/0 | 172.16.1.2/30 | 
| G0/0/1 | 172.16.1.5/30 | |
| Lo0 | 172.16.0.3/32 | |
| Lo1 | 172.16.3.1/24 | |
| R4 | G0/0/0 | 172.16.1.6/30 | 
| G0/0/1 | 172.16.1.13/30 | |
| Lo0 | 172.16.0.4/32 | |
| Lo1 | 172.16.4.1/32 | |
| R5 | G0/0/0 | 172.16.1.10/30 | 
| G0/0/1 | 172.16.1.17/30 | |
| Lo0 | 172.16.0.5/32 | |
| Lo1 | 172.16.5.1/24 | |
| R6 | G0/0/0 | 172.16.1.18/30 | 
| G0/0/1 | 172.16.1.21/30 | |
| Lo0 | 172.16.0.6/32 | |
| Lo1 | 172.16.6.1/24 | |
| R7 | G0/0/0 | 172.16.1.22/30 | 
| G0/0/1 | 172.16.1.14/30 | |
| G0/0/2 | 78.1.1.7/30 | |
| Lo0 | 172.16.0.7/32 | |
| Lo1 | 172.16.7.1/30 | |
| R8 | G0/0/0 | 78.1.1.1.8/30 | 
| Lo0 | 8.8.8.8/24 | |
| Lo1 | 192.168.2.1/24 | 

第二步、接口IP地址配置
R1
<Huawei>system-view 
[Huawei]sysname R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip address 12.1.1.1 24
[R1-GigabitEthernet0/0/0]int lo0
[R1-LoopBack0]ip address 1.1.1.1 24
[R1-LoopBack0]int lo1
[R1-LoopBack1]ip address 192.168.1.1 24
R2
<Huawei>system-view 
[Huawei]sysname R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip address 12.1.1.2 24 
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip address 172.16.1.1 30
[R2-GigabitEthernet0/0/1]int g0/0/2
[R2-GigabitEthernet0/0/2]ip address 172.16.1.9 30
[R2-GigabitEthernet0/0/2]int lo0
[R2-LoopBack0]ip address 172.16.0.2 32
[R2-LoopBack0]int lo1
[R2-LoopBack1]ip address 172.16.2.1 24
R3
<Huawei>system-view 
[Huawei]sysname R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip address 172.16.1.2 30
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip address 172.16.1.5 30
[R3-GigabitEthernet0/0/1]int lo0
[R3-LoopBack0]ip address 172.16.0.3 32
[R3-LoopBack0]in lo1
[R3-LoopBack1]ip address 172.16.3.1 24
R4
<Huawei>system-view 
[Huawei]sysname R4
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip address 172.16.1.6 30
[R4-GigabitEthernet0/0/0]in g0/0/1
[R4-GigabitEthernet0/0/1]ip address 172.16.1.13 30
[R4-GigabitEthernet0/0/1]int lo0
[R4-LoopBack0]ip address 172.16.0.4 32
[R4-LoopBack0]int lo1
[R4-LoopBack1]ip address 172.16.4.1 24
R5
<Huawei>system-view 
[Huawei]sysname R5
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip address 172.16.1.10 30
[R5-GigabitEthernet0/0/0]int g0/0/1
[R5-GigabitEthernet0/0/1]ip address 172.16.1.17 30
[R5-GigabitEthernet0/0/1]int lo0
[R5-LoopBack0]ip address 172.16.0.5 32
[R5-LoopBack0]int lo1   
[R5-LoopBack1]ip address 172.16.5.1 24
R6
<Huawei>system-view 
[Huawei]sysname R6
[R6]int g0/0/0
[R6-GigabitEthernet0/0/0]ip address 172.16.1.18 30
[R6-GigabitEthernet0/0/0]int g0/0/1
[R6-GigabitEthernet0/0/1]ip address 172.16.1.21 30
[R6-GigabitEthernet0/0/1]int g0/0/1
[R6-GigabitEthernet0/0/1]int lo0    
[R6-LoopBack0]ip address 172.16.0.6 32
[R6-LoopBack0]int lo1
[R6-LoopBack1]ip address 172.16.6.1 24
R7
<Huawei>system-view 
[Huawei]sysname R7
[R7]int g0/0/0
[R7-GigabitEthernet0/0/0]ip address 172.16.1.22 30 
[R7-GigabitEthernet0/0/0]in g0/0/1
[R7-GigabitEthernet0/0/1]ip address 172.16.1.14 30
[R7-GigabitEthernet0/0/1]int g0/0/2
[R7-GigabitEthernet0/0/2]ip address 78.1.1.7 24
[R7-GigabitEthernet0/0/2]int lo0
[R7-LoopBack0]ip address 172.16.0.7 32
[R7-LoopBack0]int lo1
[R7-LoopBack1]ip address 172.16.7.1 24
R8
<Huawei>system-view 
[Huawei]sysname R8
[R8]int g0/0/0
[R8-GigabitEthernet0/0/0]ip address 78.1.1.8 24
[R8-GigabitEthernet0/0/0]int lo0
[R8-LoopBack0]ip address 8.8.8.8 24
[R8-LoopBack0]int lo1              
[R8-LoopBack1]ip address 192.168.2.1 24
第三步、写静态路由
R1-R2
[R1]ip route-static 172.16.0.2 32 12.1.1.2
[R2]ip route-static 1.1.1.1 32 12.1.1.1 R7-R8
[R7]ip route-static 8.8.8.8 32 78.1.1.8  
[R8]ip route-static 172.16.0.7 32 78.1.1.7第四步、AS 200启用IBGP
IBGP使用的是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 172.16.2.0 0.0.255.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 172.16.3.0 0.0.255.255
R4
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 172.16.4.0 0.0.255.255
R5
[R5]ospf 1 router-id 5.5.5.5
[R5-ospf-1]area 0
[R5-ospf-1-area-0.0.0.0]network 172.16.5.0 0.0.255.255
R6
[R6]ospf 1 router-id 6.6.6.6
[R6-ospf-1]area 0
[R6-ospf-1-area-0.0.0.0]network 172.16.6.0 0.0.255.255
R7
[R7]ospf 1 router-id 7.7.7.7
[R7-ospf-1]area 0
[R7-ospf-1-area-0.0.0.0]network 172.16.7.0 0.0.255.255
第五步、修改环回接口OSPF网络类型
因为环回接口在OSPF宣告默认类型为p2mp,其他路由器学习到网段就为32位掩码,所以这里需要修改环回接口OSPF网络类型为broadcast。
先查看其他路由器通过OSPF学到其他网段的环回网段位32位

#R2
[R2]int lo1
[R2-LoopBack1]ospf network-type broadcast 
#R3
[R3]int lo1
[R3-LoopBack1]ospf network-type broadcast 
#R4
[R4]int lo1
[R4-LoopBack1]ospf network-type broadcast 
#R5
[R5]int lo1
[R5-LoopBack1]ospf network-type broadcast 
#R6
[R6]int lo1
[R6-LoopBack1]ospf network-type broadcast 
#R7
[R7]int lo1
[R7-LoopBack1]ospf network-type broadcast 修改后再进行查看,学习到的就是那个网段了

第六步、启动BGP建邻
在建邻居的时候同时修改本地路由器传递,便于后期路由传递变优。
R1
[R1]bgp 100
[R1-bgp]router-id 1.1.1.1 
[R1-bgp]peer 12.1.1.2 as-number 200
R2
R2]bgp 64512
[R2-bgp]router-id 2.2.2.2
[R2-bgp]confederation id 200
[R2-bgp]peer 12.1.1.1 as-number 100          
[R2-bgp]peer 172.16.0.3 as-number 64512 
[R2-bgp]peer 172.16.0.3 connect-interface lo0
[R2-bgp]peer 172.16.0.3 next-hop-local 
[R2-bgp]confederation peer-as 64513
[R2-bgp]peer 172.16.0.5 as-number 64513           
[R2-bgp]peer 172.16.0.5 connect-interface lo0               
[R2-bgp]peer 172.16.0.5 ebgp-max-hop 2             

R3
[R3]bgp 64512
[R3-bgp]router-id 3.3.3.3
[R3-bgp]confederation id 200
[R3-bgp]peer 172.16.0.2 as-number 64512         
[R3-bgp]peer 172.16.0.2 connect-interface lo0
[R3-bgp]peer 172.16.0.2 next-hop-local
[R3-bgp]peer 172.16.0.4 as-number 64512      
[R3-bgp]peer 172.16.0.4 connect-interface lo0
[R3-bgp]peer 172.16.0.4 next-hop-local
R4
[R4]bgp 64512
[R4-bgp]router-id 4.4.4.4
[R4-bgp]confederation id 200
[R4-bgp]peer 172.16.0.3 as-number 64512
[R4-bgp]peer 172.16.0.3 connect-interface lo0
[R4-bgp]peer 172.16.0.3 next-hop-local
[R4-bgp]confederation peer-as 64513
[R4-bgp]peer 172.16.0.7 as-number 64513
[R4-bgp]peer 172.16.0.7 connect-interface lo0
[R4-bgp]peer 172.16.0.7 ebgp-max-hop 2
R5
[R5]bgp 64513
[R5-bgp]router-id 5.5.5.5
[R5-bgp]confederation id 200
[R5-bgp]confederation peer-as 64512
[R5-bgp]peer 172.16.0.2 as-number 64512          
[R5-bgp]peer 172.16.0.2 connect-interface lo0                 
[R5-bgp]peer 172.16.0.2 ebgp-max-hop 2
[R5-bgp]peer 172.16.0.6 as-number 64513        
[R5-bgp]peer 172.16.0.6 connect-interface lo0
[R5-bgp]peer 172.16.0.6 next-hop-local
R6
[R6]bgp 64513 
[R6-bgp]router-id 6.6.6.6 
[R6-bgp]confederation id 200
[R6-bgp]peer 172.16.0.5 as-number 64513         
[R6-bgp]peer 172.16.0.5 connect-interface lo0
[R6-bgp]peer 172.16.0.5 next-hop-local
[R6-bgp]peer 172.16.0.7 as-number 64513
[R6-bgp]peer 172.16.0.7 connect-interface lo0
[R6-bgp]peer 172.16.0.7 next-hop-local
R7
[R7]bgp 64513
[R7-bgp]router-id 7.7.7.7
[R7-bgp]confederation id 200       
[R7-bgp]peer 78.1.1.8 as-number 300
[R7-bgp]peer 172.16.0.6 as-number 64513
[R7-bgp]peer 172.16.0.6 connect-interface lo0
[R7-bgp]peer 172.16.0.6 next-hop-local
[R7-bgp]confederation peer-as 64512     
[R7-bgp]peer 172.16.0.4 as-number 64512          
[R7-bgp]peer 172.16.0.4 connect-interface lo0                  
[R7-bgp]peer 172.16.0.4 ebgp-max-hop 2
R8
[R8]bgp 300
[R8-bgp]router-id 8.8.8.8
[R8-bgp]peer 78.1.1.7 as-number 200
第七步、BGP宣告
R1上进行宣告1.1.1.0/24
[R1]bgp 100
[R1-bgp]network 1.1.1.0 24然后进行查看在R3上面进行查看,发现R3是学到这条路由了。

再去R4上面查看,发现没有学习到这条路由。

那么我们就需要使用反射器来满足要求,为反射器指定一个客户端,因为两个非客户端是不会进行传递路由,只有非->客、客->客;还有就是在ebgp和ibgp之间会进行传递。
选用一个路由器作为反射器,我这里是指定的R3为反射器,R1为客户端。
[R3]bgp 64512
[R3-bgp]peer 172.16.0.2 reflect-client 再去R4上面查看,以及收到这条路由。

在去R8上面看也可以看见这条路由,因为到R4会用过EBGP传递给R7,R7在由EBGP关系传给R8。

R8上进行宣告8.8.8.0/24网段
也是同样的需要用到一个反射器指定R7为客户端,不然R5也会没有8.8.8.0/24这个网段
[R6]bgp 64513
[R6-bgp]peer 172.16.0.7 reflect-client在R5上面进行查看

在R1上面进行查看

在AS200 进行宣告
AS200汇总指向空接口, 然后再对网段进行BGP宣告。这样便于其他路由器也只会有一条路由。
R2
[R2]ip route-static 172.16.0.0 21 NULL 0
[R2]bgp 64512                           
[R2-bgp]network 172.16.0.0 21           去R1和R8上面查看,只学到一条路由,这样也减少了路由条目


为了不在R2上面找到空接口才把黑洞路由丢掉,我们在R7上面也进行一个同样的操作,这样也可以避免造成AS内部的资源消耗。
R7
[R7]ip route-static 172.16.0.0 21 NULL 0
[R7]bgp 64513
[R7-bgp]network 172.16.0.0 21 第八步、建立隧道
让192.168.1.0 和 192.168.2.0这两个网段不能宣告,但是又能互相访问,可以采用Tunnel隧道来解决,因为我们的物理线路以实现全网可达,然后通过静态路由指向对方网段,把下一跳扔进隧道里面。
R1
[R1]int t0/0/0   
[R1-Tunnel0/0/0]ip address 10.1.1.1 24
[R1-Tunnel0/0/0]tunnel-protocol gre 
[R1-Tunnel0/0/0]source 1.1.1.1 
[R1-Tunnel0/0/0]destination 8.8.8.8
[R1-Tunnel0/0/0]q
[R1]ip route-static 192.168.2.0 24 Tunnel 0/0/0
R8
[R8]int t0/0/0   
[R8-Tunnel0/0/0]ip address 10.1.1.2 24
[R8-Tunnel0/0/0]tunnel-protocol gre 
[R8-Tunnel0/0/0]source 8.8.8.8 
[R8-Tunnel0/0/0]destination 1.1.1.1
[R8-Tunnel0/0/0]q
[R8]ip route-static 192.168.1.0 24 Tunnel 0/0/0进行一个测试:


第九步、测试

 
 
测试是实现各环回可以互相访问。
相关文章:
 
HCIP BGP综合实验
题目 1、AS1存在两个环回,一个地址为192.168.1.0/24该地址不能在任何协议中宣告; 2、AS3中存在两个环回,一个地址为192.168.2.0/24该地址不能在任何协议中宣告,最终要求这两个环回可以互相通讯; 3、AS间的骨干链路I…...
 
【mysql学习篇】Order by与Group by优化以及排序算法详解
一、Order by与Group by优化 Case1: 分析: 利用最左前缀法则:中间字段不能断,因此查询用到了name索引,从key_len74也能看出,age索引列用在排序过程中,因为Extra字段里没有using filesort 注意…...
 
【业务功能篇60】Springboot + Spring Security 权限管理 【终篇】
4.4.7 权限校验扩展 4.4.7.1 PreAuthorize注解中的其他方法 hasAuthority:检查调用者是否具有指定的权限; RequestMapping("/hello")PreAuthorize("hasAuthority(system:user:list)")public String hello(){return "hello Sp…...
 
文章详情页 - 评论功能的实现
目录 1. 准备工作 1.1 创建评论表 1.2 创建评论实体类 1.3 创建 mapper 层评论接口和对应的 xml 实现 1.4 准备评论的 service 层 1.5 准备评论的 controller 层 2. 总的初始化详情页 2.1 加载评论列表 2.1.1 实现前端代码 2.1.2 实现后端代码 2.2 查询当前登录用户的…...
 
使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
 
Day 69-70:矩阵分解
代码: package dl;import java.io.*; import java.util.Random;/** Matrix factorization for recommender systems.*/public class MatrixFactorization {/*** Used to generate random numbers.*/Random rand new Random();/*** Number of users.*/int numUsers…...
 
数据结构:树的存储结构
学习树之前,我们已经了解了二叉树的顺序存储和链式存储,哪么我们如何来存储普通型的树结构的数据?如下图1: 如图1所示,这是一颗普通的树,我们要如何来存储呢?通常,存储这种树结构的数…...
 
Vue前端渲染blob二进制对象图片的方法
近期做开发,联调接口。接口返回的是一张图片,是对二进制图片处理并渲染,特此记录一下。 本文章是转载文章,原文章:Vue前端处理blob二进制对象图片的方法 接口response是下图 显然,获取到的是一堆乱码&…...
 
Java的标记接口(Marker Interface)
Java中的标记接口(Marker Interface)是一个空接口,接口内什么也没有定义。它标识了一种能力,标识继承自该接口的接口、实现了此接口的类具有某种能力。 例如,jdk的com.sun.org.apache.xalan.internal.xsltc.trax.Temp…...
 
Kafka基础架构与核心概念
Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。架构特点是分区、多副本、多生产者、多订阅者,性能特点主要是…...
 
观察者模式与观察者模式实例EventBus
什么是观察者模式 顾名思义,观察者模式就是在多个对象之间,定义一个一对多的依赖,当一个对象状态改变时,所有依赖这个对象的对象都会自动收到通知。 观察者模式也称为发布订阅模式(Publish-Subscribe Design Pattern)࿰…...
 
科普 | OSI模型
本文简要地介绍 OSI 模型 1’ 2’ 3。 更新:2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点( Node &#…...
redis相关异常之RedisConnectionExceptionRedisCommandTimeoutException
本文只是分析Letture类型的Redis 池化连接出现的连接超时异常、读超时异常问题。 1.RedisConnectionException 默认是10秒。 通过如下可以配置: public class MyLettuceClientConfigurationBuilderCustomizer implements LettuceClientConfigurationBuilderCusto…...
 
Merge the squares! 2023牛客暑期多校训练营4-H
登录—专业IT笔试面试备考平台_牛客网 题目大意:有n*n个边长为1的小正方形摆放在边长为n的大正方形中,每次可以选择不超过50个正方形,将其合并为一个更大的正方形,求一种可行的操作使所有小正方形都被合并成一个n*n的大正方形 1…...
 
STM32 串口学习(二)
要用跳线帽将PA9与RXD相连,PA10与TXD相连。 软件设计 void uart_init(u32 baud) {//UART 初始化设置UART1_Handler.InstanceUSART1; //USART1UART1_Handler.Init.BaudRatebound; //波特率UART1_Handler.Init.WordLengthUART_WORDLENGTH_8B; //字长为 8 位数据格式U…...
 
点大商城V2_2.5.0 全开源版 商家自营+多商户入驻 百度+支付宝+QQ+头条+小程序端+unipp开源前端安装测试教程
安装测试环境:Nginx 1.20PHP7.2MySQL 5.6 修复了无法上传开放平台问题 安装说明: 1、上传后端目录至网站 2、导入提供的数据库文件 3、修改数据库配置文件根目录下config.php,增加数据库用户名和密码 4、网站后台直接访问网址ÿ…...
“深入理解SpringBoot:从入门到精通“
标题:深入理解Spring Boot:从入门到精通 摘要:本文将介绍Spring Boot的基本概念和核心特性,并通过示例代码演示如何使用Spring Boot构建一个简单的Web应用程序。 1. 简介 Spring Boot是一个开源的Java框架,旨在简化基…...
 
PCB绘制时踩的坑 - SOT-223封装
SOT-223封装并不是同一的,细分的话可以分为两种常用的封装。尤其是tab脚的属性很容易搞错。如果你想着用tab脚连接有属性的铺铜,来提高散热效率,那么你一定要注意你购买的器件tab脚的属性。 第一种如下图,第1脚为GND,第…...
 
Go语法入门 + 项目实战
👂 Take me Hand Acoustic - Ccile Corbel - 单曲 - 网易云音乐 第3个小项目有问题,不能在Windows下跑,懒得去搜Linux上怎么跑了,已经落下进度了.... 目录 😳前言 🍉Go两小时 🔑小项目实战 …...
 
QT控件通过qss设置子控件的对齐方式、大小自适应等
一些复杂控件,是有子控件的,每个子控件,都可以通过qss的双冒号选择器来选中,进行独特的样式定义。很多控件都有子控件,太多了,后面单独写一篇文章来介绍各个控件的子控件。这里就随便来几个例子 例如下拉列…...
 
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
 
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
 
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
 
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
 
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
