网络命令配置

随笔记录

目录

1. 背景介绍

2. 配置网络命令空间

3 验证

3.1 未网络命令空间外网卡配置IP

3.2 验证配置

3.2.1  在网络命令空间外接口启动iperf3

3.2.2 网络命令空间内启动iperf3 client


1. 背景介绍

2. 配置网络命令空间

1. 配置前[root@localhost SDK-V1.10.1.7]# ip netns exec netABC bash
Cannot open network namespace "netABC": No such file or directory
[root@localhost SDK-V1.10.1.7]# 2. 创建网络命令空间  
# ip netns add <网络命令空间名>[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip netns add netABC  
[root@localhost SDK-V1.10.1.7]# 3. 查看存在的网络命令空间
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip netns list    
netABC
[root@localhost SDK-V1.10.1.7]# 4. 查询网络接口,并将接口添加到网络命令空间
# 查询网阔接口
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.1.22.73  netmask 255.255.255.0  broadcast 10.1.22.255inet6 fe80::5a11:22ff:fe9e:2888  prefixlen 64  scopeid 0x20<link>ether 58:11:22:9e:28:88  txqueuelen 1000  (Ethernet)RX packets 98650  bytes 112990563 (107.7 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 49070  bytes 4039655 (3.8 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 58  bytes 4946 (4.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 58  bytes 4946 (4.8 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 32:74:4f:81:e0:e2  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 847  dropped 0  overruns 0  frame 847TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether f6:38:ce:dd:9f:ed  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:56:07:08  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# 5. 将指定网络接口添加到网络命令空间
# ip link set <网络接口> netns netABC[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip link set swift1f1 netns netABC
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip netns exec netABC bash
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig swift1f1 up
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet6 fe80::f438:ceff:fedd:9fed  prefixlen 64  scopeid 0x20<link>ether f6:38:ce:dd:9f:ed  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6  bytes 516 (516.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# 
root@localhost SDK-V1.10.1.7]# ip netns exec netABC bash
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig swift1f1 up
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig               # 分配IP 前
swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet6 fe80::f438:ceff:fedd:9fed  prefixlen 64  scopeid 0x20<link>ether f6:38:ce:dd:9f:ed  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6  bytes 516 (516.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# [root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip route     # 配置Route 前
[root@localhost SDK-V1.10.1.7]# 6. 为网络命令空间中接口指定IP/Route
# 指定IP
# ifconfig <接口名> <IP/掩码>root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig swift1f1 11.1.1.77/24
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 11.1.1.77  netmask 255.255.255.0  broadcast 11.1.1.255inet6 fe80::f438:ceff:fedd:9fed  prefixlen 64  scopeid 0x20<link>ether f6:38:ce:dd:9f:ed  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 15  bytes 1146 (1.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip route      # 添加Route
11.1.1.0/24 dev swift1f1 proto kernel scope link src 11.1.1.77 
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# 7. 退出网络命令空间
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# exit
logoutConnection closed.Disconnected from remote host(10.1.22.73-NDPP) at 10:47:57.Type `help' to learn how to use Xshell prompt.
[C:\~]$ 8. 删除网络命令空间
# ip netns delete <网络命令空间名称> 
[root@localhost ~]# 
[root@localhost ~]# ip netns delete netABC  //删除网络命令空间
[root@localhost ~]# 
[root@localhost ~]# ip netns list
[root@localhost ~]# 

注意:不进入网络命令空间也可以进行以上配置。

# 不进入网络命令空间,进行以上配置,只需要在执行命令前添加
# ip netns exec <网络命令空间名称> <需要执行命令>比如查询 ip route
# ip netns exec netABC ip route# 如 启动网络命令空间中接口
# ip netns exec netABC ifconfig swift1f1 up等等。[root@localhost SDK-V1.10.1.9]# ifconfig
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.1.22.73  netmask 255.255.255.0  broadcast 10.1.22.255inet6 fe80::5a11:22ff:fe9e:2888  prefixlen 64  scopeid 0x20<link>ether 58:11:22:9e:28:88  txqueuelen 1000  (Ethernet)RX packets 1182797  bytes 1628346524 (1.5 GiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 592699  bytes 123898394 (118.1 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 16755  bytes 381672557 (363.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 16755  bytes 381672557 (363.9 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 88:63:c5:ee:e2:52  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether b2:c2:ae:e6:dc:47  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:56:07:08  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# ip link set swift1f1 netns netABC
[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ifconfig
[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ifconfig swift1f1 up
[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ifconfig
swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet6 fe80::b0c2:aeff:fee6:dc47  prefixlen 64  scopeid 0x20<link>ether b2:c2:ae:e6:dc:47  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6  bytes 516 (516.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ifconfig swift1f1 11.1.1.77/24
[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ifconfig
swift1f1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 11.1.1.77  netmask 255.255.255.0  broadcast 11.1.1.255inet6 fe80::b0c2:aeff:fee6:dc47  prefixlen 64  scopeid 0x20<link>ether b2:c2:ae:e6:dc:47  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9  bytes 726 (726.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# ip netns exec netABC ip route
11.1.1.0/24 dev swift1f1 proto kernel scope link src 11.1.1.77 
[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# 
[root@localhost SDK-V1.10.1.9]# ip route
default via 10.1.22.1 dev enp5s0 proto static metric 100 
10.1.22.0/24 dev enp5s0 proto kernel scope link src 10.1.22.73 metric 100 
192.168.2.0/24 via 10.1.22.1 dev enp5s0 proto static metric 100 
192.168.4.0/22 via 10.1.22.1 dev enp5s0 proto static metric 100 
192.168.30.0/24 via 10.1.22.1 dev enp5s0 proto static metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
[root@localhost SDK-V1.10.1.9]# 

3 验证

3.1 未网络命令空间外网卡配置IP

# 注意:
# 因个人需求需要 网络命令空间内的网卡 swift1f1 与 网口命令空间外的网卡 swift1f0 互通,
所以需要配置同一网段。即:
swift1f0: 11.1.1.73/24
swift1f1: 11.1.1.77/24# 配置IP 前
[root@localhost SDK-V1.10.1.7]# ifconfig
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.1.22.73  netmask 255.255.255.0  broadcast 10.1.22.255inet6 fe80::5a11:22ff:fe9e:2888  prefixlen 64  scopeid 0x20<link>ether 58:11:22:9e:28:88  txqueuelen 1000  (Ethernet)RX packets 100905  bytes 113208973 (107.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 50245  bytes 4158774 (3.9 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 94  bytes 10310 (10.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 94  bytes 10310 (10.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 32:74:4f:81:e0:e2  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 847  dropped 0  overruns 0  frame 847TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:56:07:08  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# # 配置IP
# ip addr add <IP>/<掩码> dev <网卡名>[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ip addr add 11.1.1.73/24 dev swift1f0
[root@localhost SDK-V1.10.1.7]# 
[root@localhost SDK-V1.10.1.7]# ifconfig
enp5s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.1.22.73  netmask 255.255.255.0  broadcast 10.1.22.255inet6 fe80::5a11:22ff:fe9e:2888  prefixlen 64  scopeid 0x20<link>ether 58:11:22:9e:28:88  txqueuelen 1000  (Ethernet)RX packets 101034  bytes 113221673 (107.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 50314  bytes 4166866 (3.9 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 106  bytes 11330 (11.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 106  bytes 11330 (11.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0swift1f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 11.1.1.73  netmask 255.255.255.0  broadcast 0.0.0.0ether 32:74:4f:81:e0:e2  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 847  dropped 0  overruns 0  frame 847TX packets 8  bytes 858 (858.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:56:07:08  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost SDK-V1.10.1.7]# 

3.2 验证配置

3.2.1  在网络命令空间外接口启动iperf3

#启动 iperf3 Server
#  iperf3 -B <网络命令空间外网卡IP> -p <Port> -i 1 -s[root@localhost SDK-V1.10.1.7]#
[root@localhost SDK-V1.10.1.7]# iperf3 -B 11.1.1.73 -p 54321 -i 1 -s
-----------------------------------------------------------
Server listening on 54321
-----------------------------------------------------------

3.2.2 网络命令空间内启动iperf3 client

# 网络命令空间内 启动 ipfer3 client# 1. 进入 网络命令空间#  ip netns exec netABC bash# 2. 启动iperf3 client# iperf3 -c <iperf3 Server IP> -p <Server Port> -t <发包时间>   # 发包时间单位 S[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# ip netns exec netABC bash
[root@localhost ~]# 
[root@localhost ~]# ip netns list
netABC
[root@localhost ~]# 
[root@localhost ~]# ip route list
11.1.1.0/24 dev swift1f1 proto kernel scope link src 11.1.1.77 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# iperf3 -c 11.1.1.73 -p 54321 -t 10

到此已完成网络命令空间配置 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Megatron 和 deepspeed 大模型训练框架

文章目录 相同点不同点开发团队&#xff1a;专长领域&#xff1a;GPU优化&#xff1a;功能特性&#xff1a;框架支持&#xff1a; 优势比较Megatron优势&#xff1a;DeepSpeed优势&#xff1a;Megatron训练框架最主要的特点、优缺点优点:缺点: 扩展对比深入探究其他训练框架各种…

STM32进阶 定时器3 通用定时器 案例1:LED呼吸灯——PWM脉冲

功能 它有基本定时器所有功能&#xff0c;还增加以下功能 TIM2、TIM3、TIM4、TIM5 多种时钟源&#xff1a; 外部时钟源模式1&#xff1a; 每个定时器有四个输入通道 只有通道1和通道2的信号可以作为时钟信号源 通道1 和通道2 的信号经过输入滤液和边缘检测器 外部时钟源…

详解Vue设计模式

详解 vue 设计模式 ​ Vue.js 作为一个流行的前端框架&#xff0c;拥有许多设计模式&#xff0c;这些设计模式帮助开发者更好地组织和管理代码&#xff0c;提升代码的可维护性、可扩展性和可读性。Vue 设计模式主要体现在以下几个方面&#xff1a; 1. 组件化设计模式 (Compon…

Tomcat使用教程

下载地址&#xff1a;https://tomcat.apache.org/ 配置环境变量 变量名: CATALINA_HOME 变量值: D:\tools\apache-tomcat-9.0.97 Path: %CATALINA_HOME%\bin 启动Tomcat(打开命令提示符) startup.bat 解决乱码问题(打开conf\logging.properties) java.util.logging.Conso…

免押租赁系统助力资源共享新模式开创便捷租赁体验

内容概要 免押租赁系统&#xff0c;听起来是不是很酷&#xff1f;这个新模式不仅仅是为了让你少花点钱&#xff0c;它的到来简直就是个革命&#xff01;以前&#xff0c;租东西时首先想到的就是那个令人心痛的押金&#xff0c;对吧&#xff1f;但现在&#xff0c;免押租赁系统…

17. Threejs案例-Three.js创建多个立方体

17. Threejs案例-Three.js创建多个立方体 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 WebGL 场景的核心类。它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选…

【kettle】mysql数据抽取至kafka/消费kafka数据存入mysql

目录 一、mysql数据抽取至kafka1、表输入2、json output3、kafka producer4、启动转换&#xff0c;查看是否可以消费 二、消费kafka数据存入mysql1、Kafka consumer2、Get records from stream3、字段选择4、JSON input5、表输出 一、mysql数据抽取至kafka 1、表输入 点击新建…

如何让谷歌外链看起来更真实?

在SEO优化过程中&#xff0c;外链的自然性往往会被忽视&#xff0c;尤其是在一些急于见效的策略中&#xff0c;外链往往集中在高权重的少数几个网站上&#xff0c;导致外链结构单一且缺乏多样性。这样的外链网络容易让搜索引擎怀疑其真实性&#xff0c;进而影响网站排名。如何才…

【Qt移植LVGL】QWidget手搓LVGL软件仿真模拟器(非直接运行图形库)

【Qt移植LVGL】QWidget手搓LVGL软件仿真模拟器&#xff08;非直接运行图形库&#xff09; 打包开源地址&#xff1a; Qt函数库gitee地址 更新以gitee为准 移植后的demo工程&#xff1a; gitee 有些没实现的 后续我会继续优化 文章目录 别碰瓷看清楚&#xff1a;是移植&#…

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录 一、Servlet详细。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 &#xff08;1&#xff09;实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…

如何利用内链策略提升网站的整体权重?

内链是谷歌SEO中常常被低估的部分&#xff0c;实际上&#xff0c;合理的内链策略不仅能帮助提升页面间的关联性&#xff0c;还可以增强网站的整体权重。通过正确的内链布局&#xff0c;用户可以更流畅地浏览你的网站&#xff0c;谷歌爬虫也能更快地抓取到更多页面&#xff0c;有…

jeecg-uniapp 跨域问题解决方法记录

今天折腾这个很恶心的问题,工作需要经验才行,根本没有什么技术难点,都是经验而已 问题在此 发现没有替换掉前缀 :8085/#/pages/login/login:1 Access to XMLHttpRequest at http://192.168.152.32:8194/h5api/api/user/login from origin http://localhost:8085 has been bloc…

解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)

笔者在完成各项作业和做笔记时&#xff0c;经常用到jupyter notebook&#xff1b;其因为可以同时运行python并提供格式化的数字公式的输入方式&#xff0c;得到了广大用户的喜爱。 当我们想要将.ipynb文件导出为pdf时&#xff0c;有两种常用方法。 1.Ctrlp 2.通过File ->…

69 mysql 中 is null 的实现

前言 Mysql 中我们偶尔会用到 字段为 NULL 的情况 这时候 我们只能使用查询 “select * from tz_test_02 where field1 is null;” 来进行 field1 字段为 null 的行的查询 然后如果是使用 “select * from tz_test_02 where field1 null;” 你会发现查询 不出数据 但是如…

Java进阶(注解,设计模式,对象克隆)

Java进阶(注解&#xff0c;设计模式&#xff0c;对象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation)&#xff0c;又称java标注&#xff0c;是一种特殊的注释 可以添加在包&#xff0c;类&#xff0c;成员变量&#xff0c;方法&#xff0c;参数等内容上 注解会随同…

数据结构考研考点(持续更新)

一、绪论 1、数据元素是数据的基本单位&#xff0c;一个数据元素可以由若干数据项组成&#xff0c;数据项是构成数据元素的不可分割的最小单位。 2、数据结构是数据元素与数据元素之间的关系。 3、数据结构三要素&#xff1a;逻辑结构&#xff1a;独立于计算机&#xff08;线…

C# Dapper在项目中的使用(mvvm)

Dapper 简介 Dapper 是一个轻量级的对象关系映射&#xff08;Object - Relational Mapping&#xff0c;ORM&#xff09;工具&#xff0c;它在.NET 应用程序中用于简化数据库访问操作。它提供了高性能、简单易用的方式来执行 SQL 查询和命令&#xff0c;并且与ADO.NET紧密集成。…

如何抽象策略模式

策略模式是什么 策略设计模式&#xff08;Strategy Pattern&#xff09;是一种面向对象设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换。这种模式使得算法可以独立于使用它们的客户端而变化。 策略设计模式包含三个主…

算法-字符串-5.最长回文子串

一、题目&#xff1a; 二、思路解析 1.思路&#xff1a; 最长子串——动态数组 2.常用方法&#xff1a; a.字符串的截断 ress.substring(start,end1); 3.核心逻辑&#xff1a; 1.特殊情况&#xff1a;字符串为空或字符串的长度为0 if(snull||s.length())return ""…