当前位置: 首页 > news >正文

ROS2之节点

什么是节点?

在ROS2(机器人操作系统2)中,节点(node)是执行程序的基本单元,也是构成整个机器人系统的核心“积木”。你可以把它理解为系统中一个独立、可执行的进程,每个节点都专注于完成一个特定的、单一的功能。这种设计哲学让复杂的机器人系统变得模块化,易于开发、维护和扩展。

节点的核心特性

  1. 模块化(Modularity) 这是节点最重要的特性。每个节点只做一件事,而且做得很好。例如,在一个移动机器人系统中,你不会把所有代码都写在一个庞大的程序里,而是会创建多个独立的节点来完成不同的任务:

    • 感知节点:负责从摄像头或激光雷达等传感器收集数据。

    • 规划节点:根据感知数据和目标,计算出一条最优路径。

    • 控制节点:接收规划结果,并发送指令来控制机器人的电机。 这种分工合作的方式使得开发团队可以并行工作,并且当某个节点出现问题时,不会影响到整个系统的运行。

  2. 分布式(Distributed) 节点可以运行在不同的计算机上,甚至在不同的操作系统上。只要这些设备能通过网络连接,ROS2的通信机制就能让它们无缝地交换信息。例如,一个节点可以在机器人本体上的小型计算机上运行,而另一个负责复杂计算的节点则可以在远程的强大服务器上运行。这为构建复杂的、跨设备的机器人系统提供了极大的灵活性。

  3. 通信(Communication) 节点之间通过一系列标准的通信方式进行信息交换,这使得它们能够协同工作。最常见的通信方式是:

    • 话题(Topics):这是一种发布/订阅(Publish/Subscribe)机制。一个节点(发布者)向一个特定的“话题”发送数据,而对这个话题感兴趣的节点(订阅者)会接收这些数据。例如,一个“激光雷达”节点可以持续向名为 /scan 的话题发布扫描数据,而“规划”节点会订阅这个话题来获取数据。

    • 服务(Services):这是一种请求/响应(Request/Reply)机制。它类似于传统的函数调用,一个节点向另一个节点发送一个请求,并等待接收一个响应。这通常用于执行一次性的、同步的任务,比如请求机器人执行一个特定的动作。

    • 动作(Actions):这是一种用于处理耗时任务的通信方式。一个节点向另一个节点发送一个目标,并能持续接收任务进度反馈,直到任务完成或被取消。

使用python代码简单创建节点

import rclpy
from rclpy.node import Nodedef main():rclpy.init() # 初始化node = Node('node_one') # 创建节点# 打印节点信息node.get_logger().info('node_one activate') node.get_logger().warn('node_one warn')node.get_logger().error('node_one error')rclpy.spin(node)rclpy.shutdown()if __name__=='__main__':main()

image

功能包

ROS2 中的功能包(package)是组织和管理代码的基本单位。你可以把它看作是一个装有所有相关文件的文件夹,这些文件共同实现了一个或多个特定的功能。

功能包的组成:

  • 可执行文件(Nodes):实现具体功能的程序,也就是上面我们提到的节点。

  • 库文件(Libraries):可供其他功能包使用的代码库。

  • 配置文件:如 YAML 文件,用于设置参数和配置。

  • 消息、服务和动作定义(msgsrvaction):定义了节点之间通信时所使用的标准数据格式。

  • 配置文件(CMakeLists.txtpackage.xml):这是功能包的“身份证”和“构建脚本”,package.xml 描述了功能包的基本信息和依赖关系,而 CMakeLists.txt 或其他构建脚本则告诉 ROS2 如何编译和安装这个功能包。

  • 其他资源:如启动文件(launch files)、URDF 文件、图片和模型等。

进行简单的功能包的创建,打开终端输入以下命令,创建完功能包后需要先进行一些文件的改动才能进行功能包的构建

ros2 pkg create demo_python_pkg(包名) --build-type ament_python(构建类型) --license Apache-2.0(证书)     (创建功能包)

colcon build (构建功能包)

source install/setup.bash (更新环境变量)

echo $AMENT_PREFIX_PATH (输出环境变量)

ros2 run demo_python_pkg python_node _main (执行可执行文件)

在功能包创建完成之后,先创建一个节点文件python_node

import rclpy
from rclpy.node import Node
def main():rclpy.init()node = Node("NodeOne")node.get_logger().info("1号节点启动")rclpy.spin(node)rclpy.shutdown()

之后修改setup.py文件和package.xml文件

image

image

构建之后得到的可执行文件

image

如果修改了源码则需要重新构建得到新的可执行文件,注:环境变量的更新只在本终端有效如果新开一个终端需要再次执行一次更新命令

面向对象的思想:将不同的事物分为不同的类,对于每一个类,进行实例化得到对象,同一个的类的对象变量和方法是一样的,但是变量储存的内容可能不一样。

Python常见类装饰器

1. @classmethod

@classmethod 装饰器用于将一个方法定义为类方法。类方法与普通实例方法不同,它接收的第一个参数是类本身,通常命名为 cls。这使得你可以在不创建类的实例的情况下调用这个方法。类方法通常用于创建工厂方法,或者执行与类相关的操作。

class MyClass:count = 0def __init__(self, name):self.name = nameMyClass.count += 1@classmethoddef get_count(cls):return f"当前创建了 {cls.count} 个实例。"obj1 = MyClass("A")
obj2 = MyClass("B")
print(MyClass.get_count())
# 输出: 当前创建了 2 个实例。

2. @staticmethod

@staticmethod 装饰器用于将一个方法定义为静态方法。静态方法既不接收类 (cls) 作为第一个参数,也不接收实例 (self) 作为第一个参数。它与类或实例的状态完全无关,更像是一个普通的函数,只是被组织在类的命名空间内。

class Calculator:@staticmethoddef add(x, y):return x + y@staticmethoddef subtract(x, y):return x - yprint(Calculator.add(5, 3))
# 输出: 8

3. @property

@property 装饰器将一个方法转换为只读属性。这使得你可以像访问属性一样调用方法,而无需使用括号。它通常用于将类的内部数据封装起来,提供一个更干净的接口。同时,你还可以配合 @<property_name>.setter@<property_name>.deleter 来定义设置和删除属性的行为。

class Person:def __init__(self, name):self._name = name  # 通常用下划线表示这是内部属性@propertydef name(self):return self._name@name.setterdef name(self, value):if not isinstance(value, str):raise TypeError("姓名必须是字符串。")self._name = valuep = Person("Alice")
print(p.name)  # 像访问属性一样调用
p.name = "Bob" # 使用setter修改
print(p.name)

4. @dataclass

@dataclass 装饰器是 Python 3.7 引入的,它主要用于快速创建数据类。数据类通常只包含数据,并且 dataclass 会自动为你生成许多有用的魔术方法,例如 __init____repr____eq__ 等,从而大大减少样板代码。

from dataclasses import dataclass@dataclass
class Point:x: floaty: floatp1 = Point(1.0, 2.0)
p2 = Point(1.0, 2.0)
print(p1)  # 自动生成 __repr__
# 输出: Point(x=1.0, y=2.0)print(p1 == p2) # 自动生成 __eq__
# 输出: True

5. @total_ordering

@total_ordering 装饰器位于 functools 模块中,它非常有用。如果你为一个类定义了至少一个富比较方法(__lt__, __le__, __gt__, __ge__),并且还定义了 __eq__@total_ordering 就会自动为你生成其余的比较方法。这避免了重复编写所有比较逻辑。

from functools import total_ordering@total_ordering
class Number:def __init__(self, value):self.value = valuedef __eq__(self, other):return self.value == other.valuedef __lt__(self, other):return self.value < other.valuen1 = Number(5)
n2 = Number(10)print(n1 < n2)  # True
print(n1 > n2)  # True (由 @total_ordering 自动生成)
print(n1 <= n2) # True (由 @total_ordering 自动生成)

Python之多线程

多线程:在同一个进程中同时执行多个线程,提高程序的并发能力。

由于 Python 解释器的 GIL(全局解释器锁),多线程不能真正实现 CPU 并行计算,但对 I/O 密集型任务(网络请求、文件读写)非常有用。

GIL 是 CPython 解释器 为了保证线程安全而引入的一种机制,在任意时刻,只允许 一个线程 执行 Python 字节码,其本质:它是一个互斥锁,确保解释器内部的数据结构在多线程情况下不会出错。

Python之回调函数

回调函数:就是把一个函数作为参数传递给另一个函数,等前者任务执行完后再调用这个函数,常用于 异步编程、事件驱动,比如按钮点击、网络请求完成、ROS 订阅消息等。

import threadingt = threading.Thread(target=函数名, args=(参数1, 参数2, ...))
t.start()   # 启动线程
t.join()    # 等待线程执行完成(可选)

一般多线程和回调函数的配合使用

import threading
import requests
from bs4 import BeautifulSoupclass Download:def download(self,url,callback_novel_name):response = requests.get(url)response.encoding = 'utf-8'soup = BeautifulSoup(response.text, "html.parser")title = soup.find("span", class_="txt").get_text()score = soup.find("span", class_="score").get_text()novel_name(title,score)# 多线程下载小说def strat(self,url,callback_novel_name):thread = threading.Thread(target = self.download,args=(url,callback_novel_name))thread.start()# 回调函数
def novel_name(title,score):print(f"title :{title},score :{score}")
if __name__=='__main__':download = Download()download.strat("https://www.qimao.com/shuku/1747899/",novel_name)download.strat("https://www.qimao.com/shuku/1672986/",novel_name)   download.strat("https://www.qimao.com/shuku/1803136/",novel_name)

image

相关文章:

ROS2之节点

什么是节点? 在ROS2(机器人操作系统2)中,节点(node)是执行程序的基本单元,也是构成整个机器人系统的核心“积木”。你可以把它理解为系统中一个独立、可执行的进程,每个节点都专注于完成一个特定的、单一的功能。这种设计哲学让复杂的机器人系统变得模块化,易于开发、…...

9.17日总结

完成hbase部署和测试,开始搞hbase客户端...

ECT-OS-JiuHuaShan 框架,元推理AGI奇迹

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891 ▮ 推理就绪:基于自然辩证法数学形式化系统启动因果律算符 ECT-OS-JiuHuaShan 框架的诞生,绝非一次普通的技术迭代,它是文明进程中一个前所未有的 “确定性奇点”(Deterministic Singularity)——从此,智能的发…...

Mapper与Mapper.xml的关系

Mapper与Mapper.xml的关系简单直接的回答是:它们之间是“接口定义”与“SQL映射实现”的关系。 ManageMapper 是一个 Java 接口,它定义了数据库操作的方法签名;而 ManageMapper.xml 是一个 XML 文件,它提供了这些方法签名所对应的具体 SQL 语句实现。MyBatis 框架在运行时通…...

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程

Rocky Linux10.0安装zabbix7.4详细步骤 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !i…...

【P3158】放棋子 - Harvey

题意 有 \(c\) 种棋子,每种棋子都有相应的个数,要把全部棋子放入棋盘中,使得每一行和每一列没有颜色相同的棋子,求方案数。 思路 从行和列的角度显然不好处理,所以我们可以先从颜色的种类入手。 设计 \(f_{c,i,j}\) 表示前 \(c\) 种颜色,已经有 \(i\) 行,\(j\) 列被占领…...

最强AI语音克隆和文本配音工具!与真人无异,CosyVoice下载介绍

CosyVoice是一个大规模预训练语言模型,深度融合文本理解和语音生成的一项新型语音合成技术,能够精准解析并诠释各类文本内容,将其转化为宛如真人般的自然语音 CosyVoice采用了总共超15万小时的数据训练,依托先进的大模型技术进行特征提取,从而完成声音的复刻,用户无需训练…...

近日C++线上练习结果

...

密力根油滴实验实验报告

...

Linux 系统插入U盘/移动硬盘实现自动挂载

在 /etc/udev/rules.d/ 目录下建立挂载规则 文件名后缀为 xxx.rulesKERNEL=="sd[a-z][1]", ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", RUN{program}+="/usr/bin/systemd-mount --no-block --collect -o uid=1000,g…...

来点人瑞平我

不知道自己定位了,来帮助我找找(...

日总结 2

老师同样为学期初开了个头,没有讲什么重要是知识。我这天完成了Linux的安装和配置,完成了安装hadoop需要的环境配置和jdk的配置,为hbase的使用安装做铺垫。...

概率论第一章部分习题

...

日常 3

老师为我们讲解了真正的软件开发的环境,听完老师的讲解,我认为我需要学习C#相关的知识,扩展自已以后的选择。课余时间我完成了Hadoop的安装和环境配置,同时花了大部分时间安装配置yarn,但失败了,研究半天没发现哪里配置有问题但就是无法启动。心灰意冷,明天安装和学习hb…...

【P2051】中国象棋 - Harvey

题意 求有多少种棋盘使得每一列和每一行的棋子个数不超过 \(2\) 个。 思路 设计 \(f_{i,j,k}\) 表示前 \(i\) 行,有 \(j\) 列为 \(1\) 个棋子,\(k\) 列为 \(0\) 个棋子。考虑当前行放 \(0\) 个棋子,则有 \(f_{i,j,k} = f_{i-1,j,k}\)。 若当前行放 \(1\) 个棋子,一种可能是…...

JavaDay6

可变参数JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...)。 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。package method;public class Demo04 {public static void ma…...

Ubuntu Linux 云服务器常见安全漏洞修复方法汇总 Apache/OpenSSH/DNS

安全漏洞名称/CVE修复方案1. Apache HTTP Server 缓冲区错误漏洞(CVE-2023-31122)2. Apache HTTP Server 资源管理错误漏洞(CVE-2023-43622)3. Apache httpd 资源管理错误漏洞(CVE-2024-27316)4. Apache HTTP Server 代码问题漏洞(CVE-2024-38477)5. Apache HTTP Serve…...

AI智能体开发实战:从提示工程转向上下文工程的完整指南

还记得去年各大公司给提示工程师开出30万美元年薪的疯狂时期吗?现在这些招聘信息基本销声匿迹了。从技术角度看,提示工程确实有些"投机取巧"的意味——本质上就是让人们相信自己在做"工程"工作的华丽包装。 不过现在情况完全不同了。人们开始把传统软件工…...

解码C语言九条语句

选择结构 if 一、基本语法 if (条件表达式) { // 条件为真时执行的代码块 } else { // 条件为假时执行的代码块(可选) }二、条件表达式的本质条件表达式可以是任何返回整型值的表达式:0 表示假(false)。 非0 表示真(true)。示例: if (5) { ... }// 条件为真(非0) if …...

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。

多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。 留言:之前再讲mysql时候,经常有人可以远程登录的时候,结果发现没办法本地登录了,具体体现方式是这样的(看问题体现):现在我可以明确的告诉你们,是你们的root认证太多了,系统无法识别你要的是哪一个root,…...

django登录注册案例(上) - 详解

django登录注册案例(上) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fo…...

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型

从C++开始的编程生活(10)——string类核心语法和auto自动推导类型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New…...

某交互题选讲的补题记录

CF750F New Year and Finding Roots 考虑第一步只能随机找点,找完点之后除非找到叶子或者根,不然完全等于啥都不知道。 于是找叶子节点,从这个点的两个邻边往下一直走一定能走到叶子,那么此时这条链的中点的父亲就被确定了。 多这么整几次,一直往上跳就肯定能找到根,但操…...

openwrt ipv6 NAT6配置

在诸如校园网或者其他需要认证的网络条件下,由于实名制上网的要求,通常不支持DHCP6-PD,因此要使用IPV6需要使用NAT6目前最新版本的官方openwrt(23.05)已经自动支持NAT6了(firewall.xxx.masq6),因此,如果需要开启ipv6,不再需要复杂的安装各种包,直接LuCI网页操作即可。发…...

奶龙抽象语录

奶龙の无上恩情!!!开坑于 $ 2025-9-15 $ 最后更新于 $ 2025-9-17 $上课 班会 我们为什么要规范普通话,不就跟当年秦始皇车同文,书同轨一样吗? —— 25-9-16 其他 我们班五十几号人,我也不要求别的,声音比\(11\)班(人口60+)大就行了。 —— 25-8-31...

解题报告-P11670 [USACO25JAN] Cow Checkups S

P11670 [USACO25JAN] Cow Checkups S 题目描述 Farmer John 的 \(N\)(\(1 \leq N \leq 5 \cdot 10^5\))头奶牛站成一行,奶牛 \(1\) 在队伍的最前面,奶牛 \(N\) 在队伍的最后面。FJ 的奶牛也有许多不同的品种。他用从 \(1\) 到 \(N\) 的整数来表示每一品种。队伍从前到后第 …...

word vba 对 带编号格式的PO单 段落下添加对应的图片

Attribute VB_Name = "APO_PathStaging" Option Explicit Configuration Constants Private Const BASE_FOLDER As String = "\\10.0.0.10\部门共享\PO\" Private Const START_PARA As Long = 582 Private Const PATH_TAG As String = "[IMG] " …...

解题报告-P11671 [USACO25JAN] Farmer Johns Favorite Operation S

P11671 [USACO25JAN] Farmer Johns Favorite Operation S 题目描述 又是 Farmer John 的农场上寒冷而无聊的一天。为了打发时间,Farmer John 发明了一种关于在整数数组上进行操作的有趣的休闲活动。 Farmer John 有一个包含 \(N\)(\(1 \leq N \leq 2 \cdot 10^5\))个非负整数…...

解码C语言运算符

算术运算符运算符 描述 示例 结果+ 加法 5 + 3 8- 减法 5 - 3 2* 乘法 5 * 3 15/ 除法 5 / 2 2% 取模 5 % 2 1++ 自增 a++ a+1-- 自减 a-- a-1注意:整数除法会截断小数部分 取模运算只能用于整数类型关系运算符运算符 描述 示例 结果== 等于 5 == 3 0!= 不等于 5 != 3 1> 大…...

多进程

import time from concurrent.futures import ProcessPoolExecutor, TimeoutError from pydantic import BaseModel import multiprocessing as mp import os import signalclass SharedData(BaseModel):value: int = 0def worker(shared_value, data_dict):# 真实场景中的任务…...

93. 递归实现组合型枚举

93. 递归实现组合型枚举 if (sum + n - u < m) return; 如果当前记录的数据 加上 后面的所有可以被选的数据 时无法达到要求时终止 state记录了哪些数据被选,哪些没被选的 state | 1 << u 选择当前的数据,比如0101 -> 10101 #include <iostream> using n…...

Sort方法学习(伪代码记录)

Sort 方法总结 selectionSort(vector& a) 核心思想:选择最大/小的数移到最前/后 // 1. 计算数组长度// 2. 控制已排序部分的边界 for(i=0; i<n; i++){// 3. 在未排序部分(j到末尾)中寻找真正的maxfor(j=i+1, j<n; j++) find(max);// 3. 将最大的数放至数组头swap(…...

深入解析:【每日一问】运算放大器与比较器有什么区别?

深入解析:【每日一问】运算放大器与比较器有什么区别?pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

9.17支配对问题专题总结

概括 每次查询一定范围内的点组成的点对中的最优值,而通过一些分析去减少有用点对的数量,这样子的有用点对称为 支配对 T1策略是将 \(a_i\) 相同的序列取出来单独考虑 固定 \(b_i<b_j,i<j\) 然后考虑能找出来一个序列 \(i,j1,j2,j3...\) 但是发现选 \(i,j2\) 不如选 \(…...

Xじゃないか

並行じゃないか いや 通信じゃないか わかりあえなくて 愛じゃないか ——絡みなんです それがAIなんです。\[\newcommand{\c}{\mathcal} \newcommand{\eps}{\epsilon} \newcommand{\co}[2]{{\color{#1}{#2}}} \]Lec 1 数据越来越多,我们该怎么办?并且,这其中绝大部分 (…...

开源收银体系_大型收银系统源码_OctShop

开源收银体系_大型收银系统源码_OctShoppre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...

XXL-JOB(2)

XXL-JOB(2)1、入门和集成<!-- xxl-job-core --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.5.0</version></dependency> 搭建控制台 XXL-JOB-ADMIN jar 本地启动,…...

P9753 [CSP-S 2023] 消消乐

前置算法动态规划 hash哈希题目大意 给定一个字符串,可以将相邻两个相同的字符删除,然后合并成一个新序列。 例如:abba,可以先将两个 b 删除,然后合并成 aa,最后删除 a。 求出有多少个字串,最后可以将其变为空串,我们称之为合法的字串。 思路 看到数据范围,只能使用 \…...

9.16 CSP-S模拟22 改题记录

HZOJ 写在前面 连着两天吃了两坨。。。好吧,那就一坨一坨地消化一下吧。话说如果这真是S组难度那我不真就废了?这场真是T1猜结论题,T2就来坨大的,不知道啥是二分图暴力都不会打。T3反正就是我是大春竹。T4上演忘记结论创造结论,然鹅实际上还是不会写。没有文件输入输,没有…...

记录知识

记录知识...

AT_agc058_b [AGC058B] Adjacent Chmax

转化为对某个区间染色,然后设 \(f_{i, j}\) 为前 \(i\) 种颜色染了 \([1, j]\) 的方案数,简单转移即可。...

Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析

本文详细分析了Jenkins GitHub插件CVE-2018-1000600漏洞的利用方法,通过CSRF漏洞和权限缺失实现凭证窃取与完全响应SSRF攻击,包含PoC代码和影响版本范围说明。Jenkins - CVE-2018-1000600 PoC 来源博客文章 https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with…...

NOIP 集训日记(学术)

workwork学术版。 9.9 P4117 [Ynoi2018] 五彩斑斓的世界 分块神题。 拿到题以后发现不能直接做,然后你就开始观察。 设区间最大值为 \(maxn\) ,查询的数为 \(x\) 一个显然的性质:把所有小于等于 \(x\) 的数加上 \(x\) ,然后区间减 \(x\) ,得到的结果不变。然后我们思考一下…...

linux中mysql如何远程连接

linux中mysql如何远程连接 两个步骤: 第一:让root允许远程登录 update user set host = % where user = root;第二:给予root用户最大数据库权限 grant all privileges on *.* to root@% identified by 123456; flush privileges;实操: [root@bogon ~]# mysql -uroot -p1234…...

详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测

详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …...

深入解析:PYcharm——pyqt音乐播放器

深入解析:PYcharm——pyqt音乐播放器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据

全文链接:https://tecdat.cn/?p=43897原文出处:拓端抖音号@拓端tecdat在数据科学领域,线性回归是拟合变量间线性关系的基础工具,但传统的Frequentist线性回归仅能提供参数的点估计,无法量化参数的不确定性——这在金融风险预测、工业设备状态监测等实际业务场景中往往不够…...

威联通NAS如何导入本地docker镜像

威联通NAS如何导入本地docker镜像 【前言】:有一段时间没有维护NAS docker了,笔记本电脑坏了更换后重新配置开发环境,也就没去折腾这些,有些命令忘记了,重新整理一下,输出驱动输入,还可能帮助到。欢迎大家一起友好讨论, 祝好: 【摘要】:本文主要围绕威联通NAS如何导入…...

2025.9.17

卷2选择 位运算 位运算的优先级很低,没有括号时运算顺序靠后。...

mysql库缺失

mysql库缺失libncurses.so.5和libtinfo.so.5 报错信息: mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory;mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared obj…...