Ubuntu 第11章 网络管理
可以肯定地说,如果没有Linux,今天的互联网可能不会这么发达,Linux天生与网络有着密不可分的关系。据统计,Linux和UNIX在互联网服务器操作系统中已经占据了60%以上的市场份额。网络管理对于Ubuntu系统维护来说是一项非常重要的技能。本章将介绍在Ubuntu网络管理中经常用到的配置文件,以及常用的网络管理命令。
本章主要涉及的知识点有:
- Ubuntu 网络配置文件:主要介绍 Ubuntu 基本网络配置文件/etc/network/interfaces 以及其他与网络有关的配置文件。
- 常用的网络管理命令:介绍ifconfig、nslookup、ping、ip、netstat以及route等常用的与网络配置有关的命令的使用方法。
- 防火墙:介绍Ubuntu防火墙(ufw)的配置方法。
11.1 网络接口
在Linux中,所有的网络通信都是通过网络接口完成的,网络接口是Linux操作系统以及运行在Linux操作系统中的各种应用与网络上其他的主机或者设备进行数据交换的交通枢纽。网络接口不仅包括物理硬件,即网卡,还包括Linux中与网络有关的底层服务。
本节首先介绍Ubuntu中的网络接口的查看方法、命名规则以及常用的配置文件。
11.1.1 查看网络接口
作为系统管理员,经常需要了解当前Linux中的网络接口以及状态,尤其是在出现网络故障时。Linux 系统提供了一个非常有用的命令来帮助用户完成这个任务,该命令的名称为ifconfig。顺名思义,该命令由接口interface的前两个字母和配置config这个单词拼接而成。在终端窗口中输入该命令,就会列出当前系统中的网络接口及其状态,Ubuntu 默认不会安装ifconfig,先要执行安装sudo apt install net-tools,如下所示:
root@node1:~# ifconfig
找不到命令 “ifconfig”,但可以通过以下软件包安装它:
apt install net-tools
root@node1:~# apt install net-tools
root@node1:~# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether 7e:8c:e7:bd:16:df txqueuelen 0 (以太网)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 29 overruns 0 carrier 0 collisions 0ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.6.101 netmask 255.255.255.0 broadcast 192.168.6.255inet6 fe80::fc0:15fc:cb36:c90a prefixlen 64 scopeid 0x20<link>ether 00:0c:29:da:76:27 txqueuelen 1000 (以太网)RX packets 606 bytes 409096 (409.0 KB)RX errors 0 dropped 15 overruns 0 frame 0TX packets 581 bytes 87143 (87.1 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 19 base 0x2000 lo: 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 (本地环回)RX packets 190 bytes 19170 (19.1 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 190 bytes 19170 (19.1 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
通过以上输出,用户可以非常清楚地了解到当前系统中有三个活动的(UP)网络接口,其名称
分别为docker0、ens33和lo。其中,docker0为容器使用的桥接网卡,ens33为以太网(Ethernet)接口,其物理地址为00:0c:29:da:76:27,IPv4地址为192.168.6.101,广播地址为192.168.6.255,子网掩码为默认的255.255.255.255.0,IPv6地址为fe80::fc0:15fc:cb36:c90a/64,当前状态为UP,即启用状态。而lo为内部环路(Loopback)。
与其他的Linux命令一样,ifconfig命令也提供了许多选项和参数,用户可以通过man命令来
查看,在此不再赞述。但是,有一个选项非常值得重点介绍一下,即-a。
在前面的例子中,我们没有为ifconfig命令提供任何选项和参数,这种情况下,ifconfig会把当前系统中所有的处于活动状态(UP)的网络接口罗列出来,而处于非活动状态(DOWN)的网络接口则会被忽略掉。而对于一个系统管理员来说,通常需要掌握所有网络接口的情况,即使该接口处于非活动状态。此时,我们只要使用-a选项就可以了,其中字母a表示所有(all)。命令如下所示:
root@node1:~# ifconfig -a
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether 7e:8c:e7:bd:16:df txqueuelen 0 (以太网)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 32 overruns 0 carrier 0 collisions 0ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.6.101 netmask 255.255.255.0 broadcast 192.168.6.255inet6 fe80::fc0:15fc:cb36:c90a prefixlen 64 scopeid 0x20<link>ether 00:0c:29:da:76:27 txqueuelen 1000 (以太网)RX packets 1101 bytes 450228 (450.2 KB)RX errors 0 dropped 120 overruns 0 frame 0TX packets 634 bytes 92927 (92.9 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 19 base 0x2000 lo: 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 (本地环回)RX packets 193 bytes 19389 (19.3 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 193 bytes 19389 (19.3 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果用户只关注某个特定的网络接口,而不是系统中所有的网络接口,可以直接将接口名称作为参数传递给ifconfig命令,如下所示:
root@node1:~# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.6.101 netmask 255.255.255.0 broadcast 192.168.6.255inet6 fe80::fc0:15fc:cb36:c90a prefixlen 64 scopeid 0x20<link>ether 00:0c:29:da:76:27 txqueuelen 1000 (以太网)RX packets 1447 bytes 478870 (478.8 KB)RX errors 0 dropped 178 overruns 0 frame 0TX packets 690 bytes 99216 (99.2 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 19 base 0x2000
可以发现,加入参数之后,ifconfig命令就只显示指定网络接口的状态信息了。
除ifconfg命令之外,用户还可以通过Ishw命令来查看当前系统中的网络接口。该命令的主要
功能是列出当前系统的硬件系统,这里面就包含网络接口。
root@node1:~# lshw -class network*-network description: Ethernet interfaceproduct: 79C97x [PCnet32 LANCE]vendor: Advanced Micro Devices, Inc. [AMD]physical id: 1bus info: pci@0000:02:01.0logical name: ens33version: 10serial: 00:0c:29:da:76:27size: 10Mbit/swidth: 32 bitsclock: 33MHzcapabilities: bus_master rom ethernet physical logical tp auiconfiguration: autonegotiation=off broadcast=yes driver=pcnet32 driverversion=6.11.0-8-generic duplex=half ip=192.168.6.101 latency=64 link=yes maxlatency=255 mingnt=6 multicast=yes port=twisted pair speed=10Mbit/sresources: irq:19 ioport:2000(size=128) memory:fd500000-fd50ffff
在上面的命令中,-class network 选项表示只显示与网络有关的硬件信息。可以发现,Ishw命令侧重于显示硬件信息,其中包含网络接口的逻辑名称、状态以及物理地址等信息,而没有包含与TCP/IP 协议有关的信息。
11.1.2 网络接口命名
在前面的11.1.1节中,我们介绍了查看网络接口的各种信息,其中提到了网络接口的名称。实际上,在Linux中,为了便于用户记忆和使用,系统为每个网络接口指定了一个逻辑名称,这个逻辑名称遵循一定的规则,逻辑名称的各个部分都有具体的含义。在各种命名中,最常见的,也是大家最熟悉的就是ethn。在这个命名中,前3个字母ct表示网络接口类型为以太网,后面一个n是一个从0开始的数字,表示网络接口的顺序。其中,第一个网络接口为etho,以此类推。当然,在现实中,除以太网之外,还会有其他类型的网络,其网络接口也有相应的命名规则,例如fc表示光纤网络,ge表示千兆以太网,xe表示万兆以太网等。用户可以通过这些规则来了解网络接口的类型。
从16.04版本开始,Ubuntu的网络接口命名规则发生了变化,例如在11。1。1节中,我们看到的网络接口名称分别为enp0s8、enp0s9等。其中,en表示以太网,p表示网卡的位置,s表示网卡所处的槽位,其中的数字表示序号。这种命名规则是基于固件和网卡的位置信息的,与传统的ethn相比有一定的优势。当然,用户也可以通过修改配置文件,使得网络接口的命名规则变为传统的ethn规则。
11.1.3 配置网络接口IP地址
Linux支持临时IP地址配置和静态IP地址配置。前者是通过ifconfig命令完成的,而后者则是通过修改配置文件完成的。下面分别对这两种配置方式进行介绍。
1. 临时IP地址配置
在某些情况下,管理员可能只是想临时为某个网络接口配置一个IP地址,使得Linux系统能够通过该接口访问网络。当Linux系统重新启动后,该配置信息则无须保留。这个任务可以通过ifconfig命令来完成。在11.1.1节中,我们已经介绍了使用该命令来查看网络接口,实际上该命令的功能远不止这些,它还可以用来配置网络接口,包括更改网络接口的状态。ifconfig配置网络接口的基本语法如下:
ifconfig interface ip netmask netmask
在上面的语法中,参数interface表示网络接口的返辑名称,例如eth0或者ens37等;ip表示要为该接口配置的IP地址;netmask表示子网掩码。例如,使用下面的命令将网络接口ens37的IP地址配置为192.168.8.132,子网掩码为255.255.0.0:
root@node1:~# ifconfig ens37 192.168.8.132 netmask 255.255.255.0
注意:由于配置网络接口需要root用户权限,因此在上面的命令中,通过sudo命令来使得该命令以root用户的身份执行。
执行完以上命令之后,网络接口ens37的IP地址就变成了192.168.8.132。可以通过ifconfig命令来查看,如下所示:
root@node1:~# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.8.132 netmask 255.255.255.0 broadcast 192.168.8.255inet6 fe80::5c9e:756e:9bcb:3f1f prefixlen 64 scopeid 0x20<link>ether 00:0c:29:da:76:31 txqueuelen 1000 (以太网)RX packets 93 bytes 35905 (35.9 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 122 bytes 16226 (16.2 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 19 base 0x2080
为了使得该网络接口能够通信,除配置IP地址之外,还需要为该网络接口指定默认网关。配置网关需亜使用route命令,例如,使用下面的命令为网络接口ens37指定默认网关为192.168.8.2:
root@node1:~# route add default gw 192.168.8.2 ens37root@node1:~# route -n
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
0.0.0.0 192.168.8.2 0.0.0.0 UG 0 0 0 ens37
0.0.0.0 192.168.6.1 0.0.0.0 UG 100 0 0 ens33
0.0.0.0 192.168.8.2 0.0.0.0 UG 101 0 0 ens37
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.6.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.8.0 0.0.0.0 255.255.255.0 U 101 0 0 ens37
指定默认网关之后,经由ethl接口发送出去的数据包都会经由默认网关发送出去。
配置完网关之后,实际上该网络接口已经能够正常收发数据包了。但是在互联网上面,绝大部分网站和主机都是通过域名来标识和访问的,所以还需要配置DNS服务器的地址。在Ubuntu中,DNS 服务器的配置信息保存在/etc/resolv.conf 文件中,如下所示:
root@node1:~# cat /etc/resolv.conf
nameserver 223.5.5.5
nameserver 223.6.6.6
在上面的配置中,每1行配置一个DNS服务器,可以为该系统指定多个DNS服务器。每1行包含两列,第1列nameserver关键字,表示该行配置一个DNS服务器:第2列为DNS服务器的IP地址。用户可以在该配置文件的末尾追加自己所需的DNS服务器。
如果用户不再需要为该接口保留IP地址,则可以通过ip命令来清除IP地址配置信息,如下所
示:
root@node1:~# ip addr flush ens37
注意:通过ifconfig命令配置的临时IP地址会立即生效,无须重新启动该接口。
2. 静态地址配置
为了给网络接口指定一个静态IP地址,用户需要修改/etc/netplan/01-network-manager-all.yaml配置文件。下面首先看一个样本文件,内容如下:
root@node1:~# cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManager
通过查看以上代码,我们可以发现ens33是从DHCP服务器获取IP地址的,下面我们为该网络接口提供一个静态IP地址,使用以下命令修改/etc/netplan/01-network-manager-all.yaml文件:
root@node1:~# vim /etc/netplan/01-network-manager-all.yaml
将该文件的内容修改如下:
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManagerethernets:# ip addr 默认 ens37ens37:dhcp4: false# IP 地址addresses: [192.168.8.150/24]routes:- to: default# 网关,对应宿主机提供的IPvia: 192.168.8.2dhcp6: false
addresses 关键字表示指定的IP地址,斜杠后的24表示子网掩码,routes下面的via关键字表示网关。
修改完配置文件之后,所进行的修改还不能马上生效。为了能够使得该网络接口按照配置文件中的参数进行配置,需要重启连网络接口。
通过ifconfig命令可以查看该接口的网络参数:
root@node1:~# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.8.150 netmask 255.255.255.0 broadcast 192.168.8.255inet6 fe80::20c:29ff:feda:7631 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:da:76:31 txqueuelen 1000 (以太网)RX packets 223 bytes 93609 (93.6 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 298 bytes 34448 (34.4 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 19 base 0x2080
3. 动态分配IP地址(dhcp)
如果用户的网络中有DHCP服务器,并且Linux主机的IP地址允许动态获取,则用户可以为Linux主机的网络接口配置DHCP客户端。配置的方法同样也在/etc/netplan/01-network-manager-all.yaml文件中,只是将多余的静态配置删除,如下所示:
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManager
配置完成之后,重新应用一下,如下所示:
root@node1:~# netplan apply
上面的输出信息实际上显示了整个DHCP客户端从DHCP服务器申请IP地址的整个过程。
11.1.4 域名解析
所谓域名解析,是将域名转换为IP地址的过程。Linux主机想要通过域名访问某项网络服务,需要指定域名服务器为其解析域名。下面介绍如何在Ubuntu系统中配置DNS玄白
传统的做法是将域名解析服务器的配置信息保存在/ete/resolv.conf 文件中。但是在新版本的Ubuntu中,这个文件的功能发生了变化。它的主要作用已经转换为跟踪用户网络的变化。用户已经不需要人工修改该文件,该文件会被系统自动更新。即使用户手动修改了该文件,在系统重新启动之后,所有的改动都会丢失。目前该文件已经变成了一个符号链接,如下所示:
root@node1:~# ll /etc/resolv.conf
lrwxrwxrwx 1 root root 39 10月 9 2024 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
那么用户应该在哪里配置DNS服务器信息呢?与前面配置网络接口一样,DNS服务器的信息也在/etc/netplan/01-network-manager-all.yaml 文件中指定,如下所示:
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManagerethernets:# ip addr 默认 ens37ens37:dhcp4: false# IP 地址addresses: [192.168.8.150/24]routes:- to: default# 网关,对应宿主机提供的IPvia: 192.168.8.2nameservers:addresses: [8.8.8.8,114.114.114.114]#dhcp6: false
与前面的内容相比,可以发现上面的代码多了3行。nameservers表示后面配置的是DNS服务器。用户可以同时指定多个域名服务器,中间用空格或者制表符隔开。例如,在上面的代码中,同名服务器。时指定8.8.8.8和114.114.114.114两个域名服务器。Linux在解析城名时会按照顺序依次使用这个域名服务器。
相关文章:
Ubuntu 第11章 网络管理
可以肯定地说,如果没有Linux,今天的互联网可能不会这么发达,Linux天生与网络有着密不可分的关系。据统计,Linux和UNIX在互联网服务器操作系统中已经占据了60%以上的市场份额。网络管理对于Ubuntu系统维护来说是一项非常重要的技能…...
深入解析进程间通信与Socket原理:从理论到TypeScript实战
文章目录 一、进程中如何通信1.1 管道1.1.1 核心特性1.1.2 缺点1.1.3 匿名管道与命名管道的对比 1.2 信号1.2.1 核心特性1.2.2 缺点1.2.3 信号分类对比 1.3 消息队列1.3.1 核心特性1.3.2 缺点 1.4 共享内存1.4.1 核心特性1.4.2 缺点 1.5 信号量1.5.1 核心特性1.5.2 缺点 二、So…...
[特殊字符] Milvus + LLM大模型:打造智能电影知识库系统
今天给大家分享一个超酷的技术组合:Milvus向量数据库 智谱AI大模型!我们将创建一个能理解电影内容的智能搜索系统,不仅能找到相关电影,还能用自然语言总结答案! 🌟 项目背景 这个项目基于Milvus官方案例…...
MapReduce架构-打包运行
(一)maven打包 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序(例如:jar…...
信创生态核心技术栈:国产芯片架构适配详解
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
BBDM学习笔记
1. configs 1.1 LBBDM: Latent BBDM [readme]...
6. HTML 锚点链接与页面导航
在开发长页面或文档类网站时,锚点链接(Anchor Links)是一个非常实用的功能。通过学习 HTML 锚点技术,将会掌握如何在同一页面内实现快速跳转,以及如何优化长页面的导航体验。以下是基于给定素材的学习总结和实践心得 一、什么是锚点链接? 锚点链接(也称为页面内链接)允…...
绘制拖拽html
<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width, initial-scale1" /> <title>拖拽绘制矩形框 - 可移动可调整大小</ti…...
OpenCV计算机视觉实战(3)——计算机图像处理基础
OpenCV计算机视觉实战(3)——计算机图像处理基础 0. 前言1. 像素和图像表示1.1 像素 2. 色彩空间2.1 原色2.2 色彩空间2.3 像素和色彩空间 3. 文件类型3.1 图像文件类型3.2 视频文件3.3 图像与视频 4. 计算机图像编程简史5. OpenCV 概述小结系列链接 0. …...
零基础学Java——第九章:数据库编程(三)
第九章:数据库编程 - ORM框架(下) 在上一部分中,我们学习了ORM框架的基础知识和Hibernate框架。在这一部分中,我们将继续学习其他流行的ORM框架,包括MyBatis和Spring Data JPA。 1. MyBatis框架 1.1 MyB…...
Linux/AndroidOS中进程间的通信线程间的同步 - 信号量
1 概述 本文将介绍 POSIX 信号量,它允许进程和线程同步对共享资源的访问。有两种类型的 POSIX 信号量: 命名信号量:这种信号量拥有一个名字。通过使用相同的名字调用 sem_open(),不相关的进程能够访问同一个信号量。未命名信号量…...
精益数据分析(46/126):深入剖析用户生成内容(UGC)商业模式
精益数据分析(46/126):深入剖析用户生成内容(UGC)商业模式 在创业与数据分析的征程中,每一种商业模式都蕴含着独特的价值与挑战。今天,我们依旧怀揣着共同进步的信念,深入研读《精益…...
vue +xlsx+exceljs 导出excel文档
实现功能:分标题行导出数据过多,一个sheet表里表格条数有限制,需要分sheet显示。 步骤1:安装插件包 npm install exceljs npm install xlsx 步骤2:引用包 import XLSX from xlsx; import ExcelJS from exceljs; 步骤3&am…...
Android 10.0 SharedPreferences in credential encrypted storage are not avai
1.前言 在10.0的系统rom定制化开发中,在开机的过程中,由于某些应用在开机解锁阶段就开始访问查询短信和联系人等功能,所以 会出现抛异常的情况出现,接下来分析下相关的情况,然后来解决这些问题 2.SharedPreferences in credential encrypted storage are not available …...
面试高频算法:最长回文子串
题目:5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 回文:如果字符串向前和向后读都相同,则它满足回文性;子串:子字符串 是字符串中连续的非空字符序列。 示例 1: 输入&…...
RDK X5 交叉编译OSS\QT\opencv\openssl
RDK X5 交叉编译环境配置 1 资源2 使用vm安装Ubuntu22.043 安装依赖4 安装ide5 下载交叉编译工具6 编译oss库6.1 设置临时环境变量6.2 编译arm版本的openssl6.2 编译arm版本的curl6.1 下载oss源码6.1.1 创建arm-toolchain.cmake6.1.2 修改CMakeLists.txt6.1.3 编译 7 编译openc…...
Python cv2边缘检测与轮廓查找:从理论到实战
在计算机视觉领域,边缘检测与轮廓查找是图像分析的核心技术。本文将结合OpenCV库(cv2模块),从理论原理到代码实战,系统讲解如何通过Python实现这两个关键操作。 一、基础概念解析 1.1 边缘检测的本质 边缘是图像中灰…...
5月7日星期三今日早报简报微语报早读
5月7日星期三,农历四月初十,早报#微语早读。 1、1101名优秀运动员拟保送,全红婵、黄雨婷、盛李豪在列; 2、世界羽联主席巴达玛:中国组织赛事的能力无与伦比; 3、中国首位、亚洲首位!赵心童夺…...
智慧医院的可视化变革:可视化工具助力数字化转型
在科技飞速发展的当下,智慧医院已从概念逐步落地,深刻改变着传统医疗模式。它借助互联网、数字孪生及人工智能等前沿技术,在医疗服务领域掀起革新,涵盖面向医务人员的“智慧医疗”、面向患者的“智慧服务”以及面向医院的“智慧管…...
python+open3d选择点云上的某个点并获取其对应三维坐标
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! python+open3d选择点云上的某个点并获取其对应三维坐标 1,引言2,效果展示3,点云获取4,程序1,引言 有时候我们只想在点云上获取某个目标的具体坐标,通过程序根据…...
ROS第十三梯:RViz+Marker——自定义几何形状可视化
1)概述 在ROS(Robot Operating System)中,Marker是一种用于在RViz(Robot Visualization)中显示自定义几何形状和注释的工具。Marker是通过visualization_msgs/Marker消息类型发布的。可以在RViz中以各种形式(如点、线、文本、立方体等)显示数据。 2)主要消息格…...
Java高频面试之并发编程-13
hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:详解原子性、可见性、有序性 在并发编程中,原子性(Atomicity)、可见性(…...
WSL 的 Ubuntu 子系统中启用图形化界面
sudo chmod w /home sudo apt update sudo apt install cifs-utils 1. 选择合适的 X 服务器 在 Windows 系统上,需要安装一个 X 服务器来处理 WSL 中 Ubuntu 的图形显示。常用的 X 服务器有 VcXsrv 和 X410,这里以 VcXsrv 为例: 从VcXsrv 官…...
项目模拟实现消息队列第二天
消息应答的模式 1.自动应答: 消费者把这个消息取走了,就算是应答了(相当于没有应答) 2.手动应答: basicAck方法属于手动应答(消费者需要主动调用这个api进行应答) 小结 1.需要实现生产者,broker server,消费者这三个部分的 2.针对生产者和消费…...
MySQL OCP和Oracle OCP怎么选?
近期oracle 为庆祝 MySQL 数据库发布 30 周年,Oracle 官方推出限时福利:2025 年 4 月 20 日至 7 月 31 日期间,所有人均可免费报考 MySQL OCP(Oracle Certified Professional)认证考试(具体可查看MySQL OCP…...
SR触发器为什么能够消抖
SR触发器(Set-Reset触发器)能够用于**消抖(Debounce)**,主要是因为它的双稳态特性和对输入信号的锁定能力。机械开关(如按键、拨动开关)在闭合或断开时,由于金属触点的弹性ÿ…...
2025ISCC练武校级赛部分题解WP
Web 战胜卞相壹 <!-- 路过的酒罐王柯洁九段说: --> <!-- 会叠棋子有什么用!你得在棋盘内战胜他!我教你个定式,要一直记得!一直! --> <!-- SGF B[ae];B[ce];B[df];B[cg];B[ag];B[ai];B[ci];…...
Microsoft Azure 在印度尼西亚区域正式上线
微软正式宣布,其首个落地印度尼西亚的云区域——Indonesia Central 已全面上线并正式投入使用!这一区域精心设置了三个可用性区(Availability Zones),每个可用性区均配备独立的电源、冷却系统以及网络设施,…...
day18 python聚类分析对数据集模型性能影响
聚类后的分析:推断簇的类型 知识点回顾: 推断簇含义的2个思路:先选特征和后选特征通过可视化图形借助ai定义簇的含义科研逻辑闭环:通过精度判断特征工程价值 作业:参考示例代码对心脏病数据集采取类似操作,并且评估特征…...
vue3的新特性
vue2 data属性和方法名散落于各个位置,量大了不好找 顺序变了,script在最前面 setup vue3中不用this,setup的执行时期比beforeCreate还要早,所以不要用this setup中写代码的特点 必须要有return,才能在上面使用 什么…...
NX二次开发——BlockUI 弹出另一个BlockUI对话框
最近在研究,装配体下自动导出BOM表格中需要用到BlockUI 弹出另一个BlockUI对话框。通过对网上资料进行整理总结,具体如下: 1、明确主对话框、子对话框1和子对话框2 使用BlockUI创建.cpp和.hpp文件,dlx文件内容如下所示 主对话框…...
《Overlapping Experiment Infrastructure: More, Better, Faster》论文阅读笔记
文章目录 1 背景2 三个核心概念3 Launch层:特性发布的专用机制4 流量分发策略和条件筛选4.1 四种流量分发类型4.2 条件筛选机制 5 工具链与监控体系6 实验设计原则7 培训参考与推荐 1 背景 谷歌(Google)以数据驱动著称,几乎所有可…...
【Machine Learning Q and AI 读书笔记】- 05 利用数据减少过拟合现象
Machine Learning Q and AI 中文译名 大模型技术30讲,主要总结了大模型相关的技术要点,结合学术和工程化,对LLM从业者来说,是一份非常好的学习实践技术地图. 本文是Machine Learning Q and AI 读书笔记的第5篇,对应原…...
前端面试测试题目(一)
一、Vue的双向绑定机制(v-model底层实现原理) Vue的双向绑定核心由 响应式系统 和 指令语法糖 共同实现,具体原理如下: 响应式系统 Vue通过数据劫持和依赖收集实现数据变化到视图的同步: • 数据劫持:在Vue…...
最优化方法Python计算:无约束优化应用——线性回归分类器
一、线性回归分类器 假设样本数据为 ( x i , y i ) (\boldsymbol{x}_i, y_i) (xi,yi),其中 i 1 , 2 , … , m i 1, 2, \dots, m i1,2,…,m。标签 y i y_i yi 取值于 k k k 个整数 { 1 , 2 , … , k } \{1, 2, \dots, k\} {1,2,…,k},从而构…...
【汇正自控阀门集团】签约智橙PLM,智橙助泵阀“以国代进”
签约智橙,汇正阀门的“以国代进”举措 随着阀门市场竞争日益激烈、市场需求日益多样化,无论是出口海外、以国代进,还是进军新能源、造船、油气等投资景气的下游市场,阀门企业能否在快速迭代产品、保持技术领先的同时,…...
【macOS】iTerm2介绍
iTerm2 和 iTerm 是 macOS 上两个不同的终端模拟器,虽然名字相似,但它们是两个独立的项目,且 iTerm2 是 iTerm 的现代化继承者。以下是它们的核心区别和演进关系: 1. 历史背景 项目诞生时间状态开发者iTerm2002 年已停止维护Greg…...
2025年五一假期旅游市场新趋势:理性消费、多元场景与科技赋能
2025年五一假期,国内旅游市场再次迎来爆发式增长,官方数据显示,假期期间国内出游人次达3.14亿,游客总消费1802.69亿元。尽管数据规模亮眼,但深入分析可发现,旅游市场正经历结构性变革——消费行为趋于理性、…...
第3章 模拟法
3.1 模拟法概述 模拟法设计思想 模拟法通过将现实问题抽象成计算机可识别的符号与操作,按逻辑顺序“模拟”其过程,从而得到结果;它不依赖复杂公式或高深技巧,只需理清问题背景与实现步骤即可。 示例:鸡兔同笼问题 题…...
16.状态模式:思考与解读
原文地址:状态模式:思考与解读 更多内容请关注:深入思考与解读设计模式 引言 在开发软件系统时,特别是当对象的行为会随着状态的变化而变化时,系统往往会变得复杂。你是否遇到过这样的情况:一个对象的行为在不同的状…...
ActiveMQ 源码剖析:消息存储与通信协议实现(二)
四、KahaDB 消息存储实现细节 (一)存储原理分析 KahaDB 作为 ActiveMQ 从 5.4 版本开始的默认消息存储引擎,其基于日志文件的存储原理具有独特的设计和优势 。在 KahaDB 的存储目录(如${activemq.data}/kahadb)下&am…...
明远智睿SD2351核心板:工业AIoT时代的创新引擎
在当今工业互联网飞速发展的浪潮中,人工智能(AI)与物联网(IoT)的深度融合正以前所未有的态势重塑着传统制造业的格局。从自动化生产线的精准控制到智能仓储的高效管理,从设备运行的实时监测到产品质量的严格…...
iPhone 和 Android 在日期格式方面的区别
整篇文章由iPhone 和 Android 在日期格式方面有所不同引起,大致介绍了,两种时间标准,以及在 JavaScript 下的格式转换方法。 Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 iPhone 和 Android 在日期格式方面有所不同。其中,iPhone(iOS)使…...
使用VSCode在Windows 11上编译运行项目
使用VSCode在Windows 11上编译运行项目 VSCode是一个功能强大的跨平台代码编辑器,可以很好地支持C/C项目开发。以下是使用VSCode在Windows 11上编译运行此项目的详细步骤。 1. 安装VSCode 访问VSCode官网下载并安装VSCode安装完成后,启动VSCode 2. 安…...
边缘计算,运维架构从传统的集中式向分布式转变
在当今数字化时代,边缘计算的崛起正在改变着运维的格局。随着物联网、5G 等技术的快速发展,越来越多的数据和应用正在向边缘设备迁移,这给运维团队带来了新的挑战和机遇。 一、边缘计算崛起带来的运维挑战 边缘计算将计算和数据存储靠近数据…...
【基础篇】prometheus热更新解读
文章目录 本篇内容讲解热更新参数源码解读本篇总结本篇内容讲解 prometheus热更新源码解读 热更新参数 –web.enable-lifecycle : 代表开启热更新配置 修改配置文件发http请求# curl -X POST -vvv localhost:9090/-/reload * About to connect() to localhost port 9090 (…...
为了结合后端而学习前端的学习日志(1)——纯CSS静态卡片案例
前端设计专栏 使用纯CSS创建简洁名片卡片的学习实践 在这篇技术博客中,我将分享我的前端学习过程,如何使用纯HTML和CSS创建一个简洁美观的名片式卡片,就像我博客首页展示的那样。这种卡片设计非常适合作为个人简介、产品展示或团队成员介绍…...
汽车服务小程序功能点开发
汽车养护服务功能 智能保养预约:根据车辆品牌、型号及行驶里程,自动推荐保养项目,支持线上预约 4S 店或合作维修厂,选择服务时间与地点。故障诊断与维修:车主上传车辆故障现象,系统智能初步诊断࿰…...
SENSE2020BSI sCMOS科学级相机主要参数及应用场景
SENSE2020BSI sCMOS科学级相机是一款面向宽光谱成像需求的高性能科学成像设备,结合了背照式(Back-Side Illuminated, BSI)CMOS技术与先进信号处理算法,适用于天文观测、生物医学成像、工业检测等领域。以下是其核心特点及技术细节…...
《汽车噪声控制》复习重点
题型 选择 填空 分析 计算 第一章 噪声定义 不需要的声音,妨碍正常工作、学习、生活,危害身体健康的声音,统称为噪声 噪声污染 与大气污染、水污染并称现代社会三大公害 声波基本概念 定义 媒质质点的机械振动由近及远传播&am…...