62、自动化系统:Bash 脚本部署指南

自动化系统:Bash 脚本部署指南

1. 引言

在 Linux 系统管理中,经常需要重复执行相同的任务,如检查系统可用磁盘空间或创建用户账户。为了提高效率,我们可以编写在 shell 中运行的脚本,自动完成这些任务。本文将探讨 Bash shell 脚本的工作原理,并展示如何编写自己的脚本来自动化 Linux 系统上的日常活动。

2. 脚本基础

2.1 运行多个命令

在 Linux 命令行中,可以在同一行输入多个命令,用分号分隔,Linux 会依次处理这些命令。例如:

$ date ; who
Thu Feb 24 19:20:06 EST 2022
rich     :0           2022-02-24 19:15 (:0)
$

Bash shell 先运行 date 命令并显示输出,然后运行 who 命令并显示其输出。这是 shell 脚本工作的基础。

2.2 重定向输出

Bash shell 提供了输出重定向功能,允许将命令的输出从显示器重定向到其他设备,如文件。这在记录脚本运行数据时非常有用。
- 使用大于号 > 重定向输出到文件:

$ date > today.txt
$ cat today.txt
Thu Feb 24 19:21:12 EST 2022
$

此时, date 命令的输出不会显示在显示器上,而是存储在 today.txt 文件中。
- 使用双大于号 >> 将输出追加到现有文件:

$ who >> today.txt
$ cat today.txt
Thu Feb 24 19:21:12 EST 2022
rich     :0           2022-02-24 19:15 (:0)
$

在 Linux 中,一切皆文件,每个文件都有一个文件描述符。Bash shell 保留前三个文件描述符用于输入和输出:
| 文件描述符 | 名称 | 用途 |
| ---- | ---- | ---- |
| 0 | STDIN | 标准输入,通常是键盘 |
| 1 | STDOUT | 标准输出,通常是显示器 |
| 2 | STDERR | 错误输出,默认指向显示器 |

可以使用 2> 将错误输出重定向到单独的文件。

2.3 管道数据

管道允许将一个命令的输出重定向到另一个命令,作为其输入数据。管道符号是竖线 | 。例如:

$ ls | sort
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
test.txt
today.txt
Videos
$

ls 命令的输出直接作为 sort 命令的输入,最终显示 sort 命令的输出。可以使用管道连接任意数量的命令。

> 、 >> 和 | 等符号是元字符,在 Linux shell 中有特殊含义。如果需要将元字符作为普通字符使用,需要进行转义,即在其前面加反斜杠或用单引号、双引号括起来。

2.4 脚本格式

可以将多个命令放在一个文本文件中,将其作为程序在命令行运行,这就是 shell 脚本。创建 shell 脚本文件可以使用任何文本编辑器,如 KDE 桌面环境下的 KWrite、GNOME 桌面环境下的 GEdit,或者命令行环境下的 pico、nano 或 vi 编辑器。

shell 脚本文件的第一行通常指定运行脚本所需的 Linux shell,格式如下:

#!/bin/bash

#! 组合被称为 shebang,它告诉操作系统使用哪个 shell 来运行脚本。大多数 Linux 发行版支持多种 shell,但最常用的是 Bash shell。

在指定 shell 后,就可以列出脚本中的命令,不需要将所有命令放在同一行,每行被视为一个新命令,不需要使用分号分隔。例如:

$ cat test1.sh
#!/bin/bash
# This script displays the date and who's logged in
date
who
$ 

以井号 # 开头的行是注释行,shell 在处理脚本时会跳过这些行。虽然 .sh 扩展名不是必需的,但已成为程序员的默认标准,有助于识别文本文件是可以在命令行运行的 shell 脚本。

2.5 运行脚本

直接在命令行输入脚本文件名运行脚本可能会失败,因为 shell 使用 PATH 环境变量来查找命令。如果脚本文件所在的目录不在 PATH 列表中,需要使用相对或绝对路径来运行脚本。例如:

$ test1.sh
test1.sh: command not found
$
$ ./test1.sh
bash: ./test1.sh: Permission denied
$

此时,虽然 shell 能找到脚本文件,但没有执行权限。可以使用 chmod 命令为文件所有者添加执行权限:

$ chmod u+x test1.sh
$ ls -l test1.sh
-rwxr--r-- 1 rich rich 73 Feb 24 19:37 test1.sh
$
$ ./test1.sh
Thu Feb 24 19:48:27 EST 2022
rich     :0           2022-02-24 19:15 (:0)
$

3. 高级脚本编写

3.1 显示消息

在 shell 脚本中,可以使用 echo 命令显示文本消息,以自定义输出。例如:

$ cat test1.sh
#!/bin/bash
# This script displays the date and who's logged in
echo The current date and time is:
date
echo
echo "Let's see who's logged into the system:"
who
$ ./test1.sh
The current date and time is:
Thu Feb 24 19:55:44 EST 2022

Let's see who's logged into the system:
rich     :0           2022-02-24 19:15 (:0)
$

第一个 echo 命令不使用引号,第三个使用双引号,因为其输出包含单引号,单引号是元字符,会使 echo 命令混淆。第二个 echo 命令没有文本,用于输出空行,分隔不同命令的输出。

3.2 使用变量

编程的一部分是能够临时存储数据,以便在程序中稍后使用,这可以通过变量来实现。Linux shell 中有两种类型的变量:环境变量和用户变量。

3.2.1 环境变量

环境变量跟踪特定的系统信息,如系统名称、登录用户的名称、用户 ID(UID)、用户的默认主目录以及 shell 查找可执行程序的搜索路径。可以使用 set 命令显示当前 shell 中所有活动的环境变量:

$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote
:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-pc-lin
ux-gnu")
BASH_VERSION='4.4.19(1)-release'
CLUTTER_IM_MODULE=xim
COLORTERM=truecolor
COLUMNS=80
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=ubuntu
DIRSTACK=()
DISPLAY=:0
EUID=1000
GDMSESSION=ubuntu
...

在脚本中,可以使用美元符号 $ 引用环境变量。例如:

$ cat test2.sh
#!/bin/bash
# display user information from the system.
echo User info for userid: $USER
echo UID: $UID
echo HOME: $HOME
$
$ chmod u+x test2.sh
$ ./test2.sh
User info for userid: rich
UID: 1000
HOME: /home/rich
$

常用的环境变量有 $USER 、 $UID 和 $HOME ,用于显示登录用户的信息。如果编写的脚本要分发给其他 Linux 管理员使用,还可以检查 $SHELL 和 $PATH 环境变量,以确保脚本在任何 Linux 环境中都能正确运行。

3.2.2 用户变量

用户变量允许在脚本中存储自己的数据。使用等号赋值,变量名、等号和值之间不能有空格。例如:

var1=10
var2=23.45
var3=testing
var4="Still more testing"

脚本会自动确定变量值的数据类型。在脚本中定义的变量是局部变量,只能在脚本内部访问;在主 shell 级别定义的全局变量会被脚本继承。
- 使用 set 命令显示所有全局变量。
- 使用 printenv 命令查看当前会话的局部变量。
- 使用 export 命令将变量标记为可导出,子进程可以看到该变量。
- 使用 env 命令运行脚本并修改脚本内部的环境变量,而不影响系统环境变量。

可以使用美元符号 $ 引用用户变量。例如:

$ cat test3.sh
#!/bin/bash
# testing variables
days=10
guest=Katie
echo $guest checked in $days days ago
$
$ chmod u+x test3.sh
$ ./test3.sh
Katie checked in 10 days ago
$

3.3 命令行参数

shell 脚本的一个强大功能是在运行时传递数据,这可以通过命令行参数实现。在命令行运行命令时,在命令后面列出参数,用空格分隔:

command argument1 argument2 ...

在脚本中,可以使用特殊的数字位置变量来获取这些参数的值。 $1 表示第一个参数, $2 表示第二个参数,依此类推。

3. 总结

通过本文的介绍,我们了解了 Bash shell 脚本的基础知识和高级特性,包括运行多个命令、重定向输出、管道数据、脚本格式、运行脚本、显示消息、使用变量和命令行参数等。掌握这些知识后,你可以编写自己的脚本,自动化 Linux 系统上的日常任务,提高工作效率。

下面是一个简单的 mermaid 流程图,展示了编写和运行 shell 脚本的基本流程:

graph LR
    A[选择文本编辑器] --> B[创建脚本文件]
    B --> C[指定 shebang 行]
    C --> D[列出命令]
    D --> E[保存脚本文件]
    E --> F[添加执行权限]
    F --> G[运行脚本]

希望这些内容对你有所帮助,让你在 Linux 系统管理中更加得心应手!

3.4 处理命令行参数示例

为了更好地理解如何使用命令行参数,下面给出一个具体的示例。假设我们要编写一个脚本,根据用户输入的两个数字进行加法运算。

$ cat add_numbers.sh
#!/bin/bash
# This script adds two numbers provided as command-line arguments
if [ $# -ne 2 ]; then
    echo "Usage: $0 num1 num2"
    exit 1
fi
sum=$(($1 + $2))
echo "The sum of $1 and $2 is $sum"
$
$ chmod u+x add_numbers.sh
$ ./add_numbers.sh 5 3
The sum of 5 and 3 is 8
$

在这个脚本中, $# 表示命令行参数的数量。如果参数数量不等于 2,脚本会输出使用说明并退出。然后,使用 $(()) 进行数学运算,计算两个参数的和,并输出结果。

3.5 条件语句

在 shell 脚本中,条件语句可以根据不同的条件执行不同的代码块。常见的条件语句有 if-else 和 case 语句。

3.5.1 if-else 语句

if-else 语句根据条件的真假来执行不同的代码块。以下是一个简单的示例:

$ cat check_file.sh
#!/bin/bash
# This script checks if a file exists
if [ -e $1 ]; then
    echo "$1 exists."
else
    echo "$1 does not exist."
fi
$
$ chmod u+x check_file.sh
$ ./check_file.sh test.txt
test.txt exists.
$ ./check_file.sh non_existent_file.txt
non_existent_file.txt does not exist.
$

在这个脚本中, -e 是一个测试条件,用于检查文件是否存在。如果文件存在,输出相应信息;否则,输出文件不存在的信息。

3.5.2 case 语句

case 语句用于根据变量的值进行多分支选择。以下是一个示例:

$ cat choose_option.sh
#!/bin/bash
# This script allows the user to choose an option
echo "Choose an option: a, b, or c"
read option
case $option in
    a)
        echo "You chose option a."
        ;;
    b)
        echo "You chose option b."
        ;;
    c)
        echo "You chose option c."
        ;;
    *)
        echo "Invalid option."
        ;;
esac
$
$ chmod u+x choose_option.sh
$ ./choose_option.sh
Choose an option: a, b, or c
a
You chose option a.
$

在这个脚本中,使用 read 命令读取用户输入的选项,然后根据选项的值执行相应的代码块。如果输入的选项不是 a 、 b 或 c ,则输出无效选项的信息。

3.6 循环语句

循环语句可以重复执行一段代码,直到满足特定的条件。常见的循环语句有 for 、 while 和 until 循环。

3.6.1 for 循环

for 循环用于遍历一个列表中的元素。以下是一个示例:

$ cat print_numbers.sh
#!/bin/bash
# This script prints numbers from 1 to 5
for i in 1 2 3 4 5; do
    echo $i
done
$
$ chmod u+x print_numbers.sh
$ ./print_numbers.sh
1
2
3
4
5
$

在这个脚本中, for 循环遍历列表 1 2 3 4 5 中的每个元素,并输出该元素。

3.6.2 while 循环

while 循环在条件为真时重复执行代码块。以下是一个示例:

$ cat count_down.sh
#!/bin/bash
# This script counts down from 5 to 1
count=5
while [ $count -gt 0 ]; do
    echo $count
    count=$(($count - 1))
done
echo "Blast off!"
$
$ chmod u+x count_down.sh
$ ./count_down.sh
5
4
3
2
1
Blast off!
$

在这个脚本中, while 循环在 count 大于 0 时重复执行,每次循环将 count 减 1,直到 count 等于 0 时退出循环。

3.6.3 until 循环

until 循环在条件为假时重复执行代码块,与 while 循环相反。以下是一个示例:

$ cat count_up.sh
#!/bin/bash
# This script counts up from 1 to 5
count=1
until [ $count -gt 5 ]; do
    echo $count
    count=$(($count + 1))
done
$
$ chmod u+x count_up.sh
$ ./count_up.sh
1
2
3
4
5
$

在这个脚本中, until 循环在 count 小于等于 5 时重复执行,每次循环将 count 加 1,直到 count 大于 5 时退出循环。

3.7 函数

在 shell 脚本中,函数可以将一段代码封装起来,方便重复使用。以下是一个简单的函数示例:

$ cat greet.sh
#!/bin/bash
# This script defines and calls a function
greet() {
    echo "Hello, $1!"
}
greet "John"
$
$ chmod u+x greet.sh
$ ./greet.sh
Hello, John!
$

在这个脚本中,定义了一个名为 greet 的函数,该函数接受一个参数并输出问候语。然后调用该函数并传递参数 "John" 。

3.8 脚本调试

在编写复杂的 shell 脚本时,调试是必不可少的。可以使用 set -x 命令开启调试模式,该模式会在执行每条命令之前输出命令及其参数。以下是一个示例:

$ cat debug_example.sh
#!/bin/bash
set -x
# This script demonstrates debugging
num1=5
num2=3
sum=$(($num1 + $num2))
echo "The sum is $sum"
set +x
$
$ chmod u+x debug_example.sh
$ ./debug_example.sh
+ num1=5
+ num2=3
+ sum=8
+ echo 'The sum is 8'
The sum is 8
$

在这个脚本中, set -x 开启调试模式, set +x 关闭调试模式。在调试模式下,每条命令执行前会输出命令及其参数,方便定位问题。

4. 总结与展望

通过前面的介绍,我们深入了解了 Bash shell 脚本的各种高级特性,包括命令行参数处理、条件语句、循环语句、函数和脚本调试等。这些特性使得我们能够编写更加复杂和强大的脚本,自动化 Linux 系统上的各种任务。

下面是一个 mermaid 流程图,展示了一个完整的 shell 脚本开发流程:

graph LR
    A[确定脚本需求] --> B[设计脚本逻辑]
    B --> C[编写脚本代码]
    C --> D[调试脚本]
    D --> E[测试脚本]
    E --> F[优化脚本]
    F --> G[部署脚本]

在未来的 Linux 系统管理工作中,我们可以进一步利用这些知识,结合实际需求,编写更加高效、稳定的脚本。同时,不断学习和探索新的脚本编程技巧,提升自己的技能水平。希望大家能够在实际应用中充分发挥 Bash shell 脚本的优势,提高工作效率。

相关推荐

NLP研究者的信息决策系统:语义脉搏监测与结构化解析

在自然语言处理(NLP)领域,技术迭代快、论文数量激增,导致研究者面临高密度低信噪比的信息过载困境。传统RSS或摘要工具无法支撑真实工程决策,而基于语义解析与结构化建模的决策支持系统,正成为提升技术选型效率的关键路径。这类系统融合概念热度图谱、任务影响量化、实现障碍评估等维度,将模糊的技术描述转化为可验证、可比较、可落地的字段输出。尤其在prompt tuning、few-shot learning等热点方向快速演进的背景下,具备时间锚定、传播网络建模与上下文加权能力的语义监测机制,已成为NLP工程师与博士

weixin_34203832的博客 367

AI模型自进化系统:实时感知-贝叶斯决策-沙箱执行三阶闭环

AI模型在线演化能力,本质是应对数据分布漂移与业务概念变迁的动态适应机制。其核心原理在于构建可量化的漂移检测、概率化进化决策与原子化模型更新三位一体架构。技术价值在于显著缩短模型退化响应时间、降低人工运维依赖、提升线上服务长期稳定性。典型应用场景包括电商大促期间的用户行为突变、医疗术语迭代、金融团伙欺诈模式识别等需持续适配真实世界变化的工业级AI系统。本文聚焦‘自己进化’这一关键能力,深入解析感知层轻量探针、决策层贝叶斯置信度建模、执行层沙箱驱动流水线等落地实践。

weixin_33860553的博客 451

62、大规模深度学习模型的分布式训练:从理论到实践

本文提出了一种基于BigDL、Apache Spark和Hadoop的大规模深度学习模型分布式训练方法,旨在利用普通硬件实现高效、低成本的深度学习训练。通过构建自动化系统,支持用户轻松配置多节点集群,实现任务分配与脚本自动生成。实验在三节点CPU集群、Google Colab和单服务器环境下进行对比,评估了超参数调整效率、CPU利用率、模型训练速度及通信开销。结果表明,该方法在多数模型上显著优于本地训练和Colab环境,尤其适合缺乏GPU资源的用户,可提升研究效率20%以上。未来将聚焦算法优化、通用性验证及

desk3的博客 79

62、大规模深度学习模型的分布式训练:Hadoop、Spark与BigDL的协同应用

本文提出了一种基于Hadoop、Spark与BigDL协同的分布式深度学习训练架构,旨在为缺乏昂贵GPU资源的用户提供经济高效的解决方案。通过构建三节点CPU集群,结合自动化GUI配置工具和SSH安全通信机制,系统实现了深度学习模型在普通硬件上的高效分布式训练。实验表明,该方案在超参数调整和模型训练性能方面显著优于本地环境,并在多数模型上接近甚至超越Google Colab的表现。文章详细阐述了系统搭建流程、关键技术组件及性能评估结果,展示了其在大数据环境下训练CNN、RNN、LSTM等模型的有效性,并展望

h6i7j8的博客 68

YOLO26算法水面与液体识别+训练好的模型+393张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 52 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.8528** mAP50-95 | 0.3441 Precision | 0.7729 Recall | 0.8354 train/box_loss | 1.5367 train/cls_loss | 1.0228 val/box_loss | 1.6809 val/cls_loss | 1.1758 【训练过程分析】 我这次训练了52个周期,模型在训练初期确实收敛速度很快,前20个周期mAP50从0.74逐步提升至0.82,这说明模型开始适应数据集,学习到一些关键特征。但到第30个周期后,提升速度逐渐放缓,到了40个周期时,mAP50达到0.85,这个阶段的曲线走势有些像磨砂玻璃,平滑且不规则,后期更是趋于平缓,表明模型可能已经达到最优解,再继续训练可能会有少量提升但代价较大。整体而言,从loss曲线来看,训练集的box_loss和cls_loss在52个周期内分别从1.80和1.25降到1.54和1.02,下降曲线较为稳定,但到了后期,这两项指标下降幅度逐渐减缓,尤其cls_loss下降至1.10左右后趋于稳定,这可能是模型对训练数据已有了较强的泛化能力,但也提示我们分类的稳定性可能还欠些火候。 至于验证集的表现,box_lo... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

AI大模型医学影像诊断智能识别应用方案.pptx

AI大模型医学影像诊断智能识别应用方案.pptx

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx

LLC谐振变换器恒压恒流双竞争闭环控制simulink仿真(附说明文档)

内容概要:本资源是一套面向电力电子与智能控制领域的综合性科研仿真资料合集,核心聚焦于LLC谐振变换器的恒压恒流双竞争闭环控制策略设计与Simulink建模仿真实现,涵盖半桥LLC、双向全桥LLC等拓扑结构的调频闭环仿真,并提供详尽的说明文档与PPT辅助材料。资源体系不仅深入呈现LLC变换器的动态响应与控制逻辑,还扩展至双有源桥(DAB)变换器的软开关协同优化、最小应力控制、EPS调制策略及新扩展移相角优化等前沿技术,同时集成三相PWM整流器在电网不平衡条件下的功率平衡控制、VOC+SVPWM双闭环控制等典型应用场景。此外,资源包涵盖状态估计(如EKF、UKF、PF)、微电网经济调度、卡尔曼滤波融合、神经网络控制、PID优化、储能系统管理等多个交叉方向,特别强调对顶级EI期刊研究成果的高精度复现,旨在帮助科研人员快速掌握先进控制算法的核心思想与仿真实现方法。; 适合人群:电气工程、自动化、电力电子、新能源科学与工程等相关专业的硕士博士研究生、高校科研人员,以及从事新能源变换器、智能电网、电动汽车、微电网系统研发的工程技术人员。; 使用场景及目标:① 深入理解LLC与DAB变换器的闭环控制机理,掌握恒压恒流切换、软开关实现与损耗优化方法;② 利用Simulink平台构建复杂电力电子系统模型,开展动态性能分析与控制器参数整定;③ 复现高水平期刊论文中的先进控制策略,提升科研创新能力与论文发表竞争力;④ 支持毕业设计、科研课题、项目申报及工程原型开发中的仿真验证环节。; 阅读建议:建议结合提供的完整资源目录循序渐进学习,优先研读标注“顶级EI复现”的案例以获取权威方法参考,配合MATLAB/Simulink动手搭建模型,重点关注控制框图设计、调制逻辑实现与仿真结果对比,深入理解算法背后的物理意义与数学推导过程。

概率神经网络的分类预测-基于PNN的变压器故障诊断(Matlab代码实现)

内容概要:本文系统阐述了基于概率神经网络(PNN)的变压器故障诊断方法,结合Matlab代码实现分类预测。通过提取变压器运行过程中的关键特征参数,构建PNN模型以实现对正常状态与典型故障状态(如绕组短路、铁芯故障等)的高效分类识别。文章深入剖析了PNN的网络结构、概率密度估计原理、训练机制及分类决策过程,并通过仿真实验验证了该方法在故障诊断任务中具备较高的准确率与鲁棒性,展现了其在电力系统状态监测与智能运维中的良好应用前景。; 适合人群:具备一定机器学习理论基础和Matlab编程能力的电气工程、自动化、智能电网等相关领域的研究生、科研人员以及从事电力设备状态监测与故障诊断工作的工程技术人员。; 使用场景及目标:①实现变压器早期故障的智能化诊断与预警,提升电力系统运行安全性;②为基于神经网络的工业设备故障分类任务提供可复现的算法实现范例与技术验证平台; 阅读建议:建议读者结合文中提供的Matlab代码,动手复现实验流程,深入理解PNN在实际分类问题中的参数配置、训练策略、性能评估方法,并鼓励将该方法迁移至其他电力设备或机电系统的故障诊断场景中进行拓展研究与优化改进。

优快云首页 发布文章 优快云同步助手 多无人机面向城市空中交通的多无人机路径规划研究(Matlab代码实现) 37 100 摘要:会在推荐、列表等场景外露,帮助读者快速了解内容,支持

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,系统阐述了该领域的核心挑战与关键技术。文章首先定义了多无人机路径规划的问题,明确了包括飞行安全、避障、协同效率在内的多项约束条件与性能指标。随后,重点介绍了三大类路径规划方法:基于改进RRT算法和图论的全局路径规划方法,用于构建初始可行路径;基于动态风险场的模型预测控制和动态窗口法(DWA)的动态避障方法,以应对环境中的突发障碍;以及多无人机协同规划策略和分布式协同控制算法构成的局部协同调整方法,确保多机间的飞行安全与任务协同。研究通过搭建Matlab仿真实验平台,设计了多种复杂城市飞行场景,对所提方法进行了全面的仿真验证与结果对比分析,展示了各方法在不同场景下的有效性与优劣。; 适合人群:具备一定自动化、计算机或航空航天领域基础知识,从事无人机、智能交通、路径规划等相关方向研究的研发人员和研究生。; 使用场景及目标:①为城市空中交通管理系统(UATM)的设计与开发提供理论基础和技术参考;②应用于物流配送、城市巡检、应急救援等多无人机协同任务的路径规划算法设计与仿真验证;③作为相关领域科研工作的技术参考资料,推动多智能体协同决策与控制技术的发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,通过复现仿真结果加深对各类算法原理与实现细节的理解。在学习过程中,应重点关注全局规划与局部避障的结合机制,以及多机协同策略中的冲突消解逻辑。

深入解析Carry4的内部结构与工作原理

本文深入解析了Xilinx/AMD FPGA中的核心硬件资源Carry4的内部结构和工作原理。作为实现超前进位的关键物理电路,Carry4通过其CI、DI、S、O、CO等端口,高效处理4位算术运算的进位逻辑。文章通过端口详解、结构分析和实战计算示例,揭示了其如何加速加法、减法等运算,并探讨了其在优化FPGA设计时序与资源利用中的关键作用。

n4o5p6q7r的博客 501

kali破解WIFI密码

今天我们来学习一下通过kali和一个好的字典来破解WIFI密码。 声明:此教程仅供学习研究使用,严禁使用此技术进行非法行为 首先我们需要一个具有监听功能的无线网卡(这里我给大家推荐:rt3070) 本章实验通过虚拟机VMware进行: 先通过services.msc来打开VMware USB Arbitration Service 插上监听网卡,连接USB到虚...

#的博客 5809

centos7 python3.12.1 报错 No module named _ssl,坑我几个小时

网上的教程很多,但几乎是无效的,跟着我这教程,可以完美解决。

Amio_的博客 1万+

Innovus每日精要 | 用setScanReorderMode优化扫描链,效率翻倍!

在数字后端物理设计的世界里,扫描链优化就像修路一样,既要保证数据流的顺畅,又要尽量减少绕路和资源浪费。它的主要任务是优化扫描链的连接方式,确保数据能快速、安全地流动。无论是多电压域设计、分区设计,还是复杂的逻辑门,它都能帮你搞定。后,你会发现它不仅能帮你节省时间,还能让你的设计更优雅、更高效。下次遇到扫描链问题时,不妨试试这些技巧,说不定你的设计效率会翻倍!,它能帮你搞定扫描链优化的那些事儿,让你的设计更高效、更优雅。接下来,我们看看这个命令的几个关键选项,以及它们的实际用途。扫描链优化看似枯燥,但掌握。

weixin_50820814的博客 1442

STM32按键中断切换红绿蓝灯

通过以上步骤,我们实现了使用STM32的按键中断来切换红绿蓝LED灯的功能。在实际应用中,可能还需要考虑更多的细节,如按键消抖、更精确的延时实现等。但上述代码提供了一个基本的框架和思路,可以根据具体需求进行扩展和优化。希望这篇博客对您有所帮助!

2301_79865940的博客 952

2023.03.27更新大麦网PC端抢购软件和使用教程

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。

猫敷雪 1万+

【异常】Antigravity IDE 登录异常与网络连接错误排查指南

在使用 Google 推出的 AI 原生 IDE时,部分用户可能会遇到身份验证失效与网络环境冲突导致的叠加错误。本文将针对此类典型故障提供完整的解决思路。

奶爸的编程之路,也就一周冷个三天 1708

10年上位机开发踩过的20个坑:C#通信/线程/UI适配避坑指南

通信层:所有通信操作异步化、异常全覆盖,加断线重连+心跳检测,多设备隔离资源;线程层:UI更新必做跨线程判断,共享数据加锁,线程池限流,异常不静默;UI层:适配高分屏/DPI,用布局容器替代固定坐标,多屏场景绑定主屏幕。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 904

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 61、Linux 应用与硬件问题排查指南
下一篇: 5、教育与机构分析框架:概念、应用与实践
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值