深入理解 Bash 中的 $‘...‘ 字符串语法糖
在 Bash 脚本编程中,字符串处理是不可或缺的一部分。为了让开发者更高效地处理特殊字符和控制字符,Bash 引入了一种独特的字符串语法糖:$''
(带单引号的 ANSI-C 风格字符串)。这种语法来源于 C 语言的 ANSI-C 标准(C89/C90),通过模仿其转义字符机制, Bash 用提供了一种简洁、直观的方式来表达换行符、制表符、Unicode 字符等。本文将从 $''
的起源开始,全面探讨其定义、用法、实现机制、与 ANSI-C 的异同、安全影响以及实际应用场景,带您深入理解这一强大的特性。
1. $''
的起源:ANSI-C 字符串语法
要理解 Bash 中的 $''
,我们需要先从其源头——ANSI-C 字符串语法说起。
1.1 什么是 ANSI-C 字符串语法?
ANSI-C 字符串语法是 C 语言标准(特别是 C89/C90)中定义的一种字符串处理规范,主要用于支持转义字符(escape sequences)。它允许程序员在字符串字面量中嵌入非打印字符(如换行符)、控制字符(如响铃)以及其他特殊字符。这种机制通过反斜杠 \
后接特定字符或数字序列来实现。
例如,在 C 语言中:
printf("Hello\nWorld");
这里的 \n
会被解析为换行符(ASCII 码 0x0A),输出两行文本。这种语法不仅提高了代码的可读性,还为程序员提供了表达复杂字符序列的能力。
1.2 ANSI-C 转义字符规范
根据 C89 标准(§2.2.4.2),ANSI-C 支持以下几类转义序列:
1.2.1 标准转义字符
这些是常见的单字符转义序列,广泛用于表示控制字符或特殊符号:
转义字符 | 意义 | ASCII 码(十六进制) |
---|---|---|
\n | 换行 | 0x0A |
\r | 回车 | 0x0D |
\t | 水平制表符 | 0x09 |
\b | 退格 | 0x08 |
\a | 响铃(Beep) | 0x07 |
\f | 换页 | 0x0C |
\v | 垂直制表符 | 0x0B |
\\ | 反斜杠 | 0x5C |
\' | 单引号 | 0x27 |
\" | 双引号 | 0x22 |
\? | 问号 | 0x3F |
其中,\?
的设计是为了避免与 C 语言中的三字母序列(trigraph,如 ??=
)混淆,但在实际应用中较少使用。
1.2.2 八进制转义序列
格式为 \ooo
,其中 ooo
是 1 到 3 位的八进制数字,范围从 \000
到 \377
(即 ASCII 码 0 到 255)。它可以表示任意 ASCII 字符。例如:
char c = '\141'; // 表示字符 'a'(ASCII 码 97)
1.2.3 十六进制转义序列
格式为 \xhh
,其中 hh
是十六进制数字,理论上长度不限,但在实际实现中通常受限于编译器。例如:
char c = '\x41'; // 表示字符 'A'(ASCII 码 65)
1.2.4 Unicode 扩展
从 C99 标准开始,增加了对 Unicode 字符的支持:
\uXXXX
:表示 16 位 Unicode 字符(4 位十六进制)。\UXXXXXXXX
:表示 32 位 Unicode 字符(8 位十六进制)。
例如:
printf("\u263A"); // 输出笑脸符号 ☺
这些扩展为国际化程序提供了便利,后来也被 Bash 借鉴。
1.3 ANSI-C 字符串的意义
ANSI-C 字符串语法为 C 语言提供了一种标准化的字符表示方式,广泛应用于文本处理、终端控制和文件操作中。它的设计简洁而强大,成为许多编程语言和工具模仿的对象。
2. Bash 如何引入 $''
?
Bash 中的 $''
是 GNU Bash 团队引入的一项扩展功能,旨在将 ANSI-C 字符串语法的优势带入 Shell 环境。在传统的 Bash 单引号字符串(如 'abc'
)中,转义字符不会被解析,例如:
echo 'Hello\nWorld' # 输出:Hello\nWorld
这种行为虽然简单,但在需要嵌入换行符或制表符时显得不够灵活。为了解决这一问题,Bash 引入了 $''
,将其定义为一种支持 ANSI-C 转义序列的字符串语法糖。
2.1 $''
的基本用法
在 $''
中,Bash 会按照 ANSI-C 标准解析转义序列,并将其转换为对应的字符。以下是几个典型示例:
示例 1:换行符
echo $'Hello\nWorld'
输出:
Hello
World
示例 2:制表符
echo $'Name:\tAlice'
输出:
Name: Alice
示例 3:十六进制字符
echo $'A is \x41'
输出:
A is A
示例 4:Unicode 字符
echo $'Smile: \u263A'
输出:
Smile: ☺
注意:Unicode 支持从 Bash 4.2 版本开始引入,早期版本可能无法解析 \u
和 \U
。
2.2 与传统方法的对比
在 Bash 中,如果不使用 $''
,处理转义字符通常需要借助 echo -e
:
echo -e "Hello\nWorld"
相比之下,$''
有以下优势:
- 简洁性:无需额外的
-e
选项,直接在字符串中定义转义字符。 - 一致性:与 C 语言的语法保持一致,便于程序员迁移。
- 灵活性:支持复杂的转义序列,如 Unicode 和控制字符。
例如,使用 $''
定义带颜色的输出:
red=$'\e[31m'
reset=$'\e[0m'
echo "${red}Error${reset}: Failed"
输出:红色文字 “Error” 后接普通文字 “Failed”。
3. Bash 中 $''
的实现机制
$''
的实现依赖于 Bash 的语法解析器(parser)。在 GNU Bash 的源码中(例如 shell_parse.y
),可以看到以下处理逻辑:
- 当解析器遇到
$''
时,进入 ANSI-C 字符串解析模式。 - 对字符串内的转义序列进行扫描,将其转换为对应的 ASCII 或 Unicode 字符。
- 解析完成后,将结果作为普通字符串返回,供后续使用。
这种机制与普通单引号字符串('...'
)形成鲜明对比,后者不会解析任何转义符,而是按字面输出。
例如:
str=$'Hello\nWorld'
echo "$str" # 输出两行:Hello 和 World
在内部,Bash 会将 \n
替换为实际的换行符(0x0A),而非保留原始文本。
4. $''
与 ANSI-C 字符串的区别
尽管 $''
模仿了 ANSI-C 字符串语法,但由于 Bash 和 C 的运行环境不同,二者存在一些细微差异:
特性 | ANSI-C 字符串 | Bash $'' |
---|---|---|
\x 长度支持 | 任意长度(编译器依赖) | 限制为 1-2 个字符 |
\u 和 \U | C99+ 支持 | Bash 4.2+ 支持 |
转义范围 | ASCII 及扩展 | 同 ANSI-C |
处理方式 | 编译时解析 | 运行时解析 |
Unicode 依赖 | 系统库支持 | Bash 内部实现 |
4.1 \x
的长度限制
在 ANSI-C 中,\x
后的十六进制数字长度理论上可以很长(取决于编译器),例如 \x1234
是合法的。而在 Bash 中,\x
通常只支持 1 到 2 位,例如:
echo $'\x4142' # 输出:AB(解析为 \x41 和 42)
超过 2 位可能会导致未定义行为。
4.2 Unicode 支持的版本差异
Bash 4.2 之前不支持 \u
和 \U
,而 ANSI-C 的 Unicode 支持从 C99 开始。因此,在较旧的 Bash 版本中,尝试使用 \u263A
会失败。
5. $''
的安全影响
$''
的强大功能也带来了潜在的安全风险。由于它可以构造不可见字符、控制字符和命令变种,攻击者可能利用其隐蔽性绕过安全检查。
5.1 绕过字符串黑名单
假设某个脚本过滤了命令 sh
,攻击者可以用 $''
构造等效命令:
$($'\x73\x68') # 等效于 $(sh)
这里,\x73
表示 ‘s’,\x68
表示 ‘h’,成功绕过了基于字符串匹配的过滤。
5.2 构造危险 Payload
更复杂的攻击可能涉及构造不可见的命令序列。例如:
cmd=$'printf\x20\x22\x63\x61\x74\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64\x22'
eval "$cmd"
这段代码等效于:
printf "cat /etc/passwd"
执行后会输出 /etc/passwd
的内容,但原始字符串中没有明显的 cat
,增加了检测难度。
5.3 防范措施
- 输入验证:避免直接将用户输入传递给
$''
或eval
。 - 限制环境:在关键脚本中禁用不必要的 Bash 扩展。
- 日志审计:记录原始输入,检查是否存在异常转义序列。
6. $''
的实际应用
$''
在脚本开发和系统管理中有着广泛的应用。以下是几个典型场景:
6.1 格式化输出
生成带换行或制表符的日志:
log=$'INFO\t$(date)\tStarting process'
echo "$log"
输出:
INFO Fri Apr 4 12:00:00 2025 Starting process
6.2 构造控制字符
生成 NULL 字符(\x00
)用于测试:
x=$'\x00'
echo -n "$x" | hexdump -C
输出:
00000000 00 |.|
6.3 远程命令执行
在 SSH 中执行多行命令:
cmd=$'uname -a\nid'
ssh user@host "$cmd"
输出远程主机的系统信息和用户 ID。
6.4 终端颜色控制
定义 ANSI 颜色代码:
bold=$'\e[1m'
green=$'\e[32m'
reset=$'\e[0m'
echo "${bold}${green}Success${reset}"
输出:粗体绿色文字 “Success”。
相关文章:
深入理解 Bash 中的 $‘...‘ 字符串语法糖
在 Bash 脚本编程中,字符串处理是不可或缺的一部分。为了让开发者更高效地处理特殊字符和控制字符,Bash 引入了一种独特的字符串语法糖:$(带单引号的 ANSI-C 风格字符串)。这种语法来源于 C 语言的 ANSI-C 标准&#x…...
机器人强化学习入门学习笔记(二)
基于上一篇的《机器人强化学习入门学习笔记》,在基于 MuJoCo 的仿真强化学习训练中,除了 PPO(Proximal Policy Optimization)之外,还有多个主流强化学习算法可用于训练机器人直行或其他复杂动作。 🧠 一、常见强化学习算法对比(可用于 MuJoCo) 算法类型特点适合场景PP…...
Vue3携手Echarts,打造炫酷数据可视化大屏
一、引言 在数字化时代,数据如同企业的血液,蕴含着巨大的价值。而如何将这些抽象的数据转化为直观、易懂的信息,以便更好地支持决策和展示成果,成为了众多开发者和企业关注的焦点。数据可视化大屏应运而生,它以直观、醒…...
Java Web项目部署指南2025
Java Web项目部署指南 适用场景:本地 Windows 开发打包 → 远程 Ubuntu 服务器部署(2025年最佳实践) 适合人群:Java Web初学者、运维新手、需要一站式部署流程的开发者 🚀 部署流程横向流程图 #mermaid-svg-aznXsajzfU…...
STC单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】
大家好,我是『芯知识学堂』的SingleYork,上一讲笔者给大家介绍了STC单片机与淘晶驰串口屏通讯例程之03【单片机程序解析】,今天笔者要跟大家分享的淘晶驰串口屏的密码登录与密码修改功能的实现。 很多项目中,为了保护某些参数不被随意修改,往往需要增加密码来保护,这也是…...
青听音乐 1.0.6| 全网音乐免费听,无损下载,4条音源,界面简洁无广告
一款强大的音乐播放器,内部集成了相当丰富的功能,可以一键搜索任何想要的歌曲或歌手专辑,同时还支持下载和收藏,拥有非常流畅的速度,使用起来没有任何限制!软件自带有大厂的解析音源,运行非常稳…...
FISCO BCOS【初体验笔记】
飞梭区块链搭建初体验笔记 环境部署创建四个节点的飞梭区块链用的VMware17 centos 7.9 区块链是飞梭2.0用的webase-frontJava环境的正确安装Webase-front搭建 智能合约设计一点合约调试笔记 智能合约abi文件转为go文件后端项目配置相关工具linux常用命令(防忘记&…...
56.[前端开发-前端工程化]Day03-webpack构建工具
邂逅Webpack和打包过程 1 认识webpack工具 前端开发的流程 内置模块path path常见的API 在webpack中的使用 认识webpack 脚手架依赖webpack Webpack到底是什么呢 Webpack官方的图片 Vue项目加载的文件有哪些呢? Webpack的使用前提 Webpack的安装 2 webpack基本打包…...
两次解析格式化字符串 + 使用SQLAlchemy的relationship执行任意命令 -- link-shortener b01lersCTF 2025
题目描述: A fast and reliable link shortener service, with a new feature to add private links! 我们走一遍逻辑 注册 app.route("/register", methods[GET, POST]) def register(): """ 用户注册路由,处理用户注册请求ÿ…...
双目测量中的将视差图重投影成三维坐标图
双目测距主要步骤如下: 左右两张图片 → 匹配 → 得到视差图 disp; 使用 cv2.reprojectImageTo3D(disp, Q) 将视差图 重投影 成三维坐标图 → 得到 points_3d 什么是 points_3d? points_3d cv2.reprojectImageTo3D(disp, Q)points_3d.shap…...
WebAssembly(Wasm):现代Web开发的超级加速器
在当今的Web开发领域,性能和效率是开发者们永恒的追求目标。随着Web应用的复杂度不断增加,传统的JavaScript在某些场景下已经难以满足高性能计算和复杂逻辑处理的需求。此时,WebAssembly(Wasm)作为一种新兴的Web技术&a…...
学习黑客Nmap 命令法诀
筑基期第二重 — Nmap 命令法诀 修炼目标 这一重我们要把上一阶段学到的“神识探查原理”化成 实战招式:掌握日常最常用的 Nmap 命令,并能随心组合。每条命令都配上“修仙比喻”,让你边笑边记。 1. 基础法诀速查表(凡修版…...
基于思考过程评价的心理问题咨询对话记性评估
基于思考过程评价的心理问题咨询对话记性评估 摘要: 在心理问题咨询的对话场景中,传统记性评价多局限于对话结果的相似度计算,无法全面捕捉来访者及咨询师在对话过程中的思维动态。本文提出一种聚焦此对话场景的记性评价新方法,将思考过程纳入评估范畴。详细阐释其基于认知…...
SQL数据库操作大全:从基础到高级查询技巧
大家好,欢迎来到程序视点!我是你们的老朋友.小二! SQL数据库操作核心语法精要 数据库基础操作 创建/删除数据库:CREATE DATABASE / DROP DATABASE 备份SQL Server:使用sp_addumpdevice和BACKUP DATABASE命令 数据库…...
基于MATLAB图像中的圆形目标识别和标记
一、前言 在数字图像处理中,有些图像类别可以使用圆形度进行区分。圆度有时被称为圆形度,其定义为:圆度 4πA / P,其中A是面积,P是周长。这个公式的来源是,对于圆来说,这个值等于1,…...
android-ndk开发(4): linux开发机有线连接android设备
android-ndk开发(4): linux开发机有线连接android设备 2025/05/05 1. 概要 linux 系统, 例如最常见的 ubuntu, 在通过 USB 线把 android 设备连接到开发机上时, 仅仅是 ”物理上的连接”。 这时候 adb 是无法识别到 android 设备的。 需要…...
相机biaoding
需要先安装linux客户端(海康机器人官网),sudo dpkg -i MVS-2.1.2_x86_64_20221208.deb cd /opt/MVS/bin/ 再./MVS.sh运行,客户端启动。 打开海康相机客户端 cd /opt/MVS/bin export LD_LIBRARY_PATH/opt/MVS/bin/:$LD_LIBRARY_PATH ./MVS …...
linux 中inotify与inode的关系是什么?
在 Linux 系统中,inotify 和 inode 是两个密切相关但功能不同的概念,它们共同构成了文件系统的核心机制。以下是它们的关系解析: 一、基本概念 1. inode(索引节点) 定义:inode 是 Linux 文件系统中存储文…...
Paramiko 核心类关系图解析
类图关键说明 SSHClient 核心类 用户主要交互入口,聚合 Transport 对象依赖策略类处理主机密钥验证(AutoAddPolicy/RejectPolicy) Transport 引擎 管理底层连接生命周期组合 AuthHandler 处理认证逻辑组合 KexBase 实现密钥交换可创建多个 C…...
LeetCode算法题 (反转链表)Day17!!!C/C++
https://leetcode.cn/problems/reverse-linked-list/description/ 一、题目分析 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。今天这道题目非常的言简意赅,就是给定一个链表将其反转后返回反转后的头节点。 二、示例分析 输…...
3.5/Q1,GBD数据库最新一区文章解读
文章题目:Global burden of low vision and blindness due to age-related macular degeneration from 1990 to 2021 and projections for 2050 DOI:10.1186/s12889-024-21047-x 中文标题:1990年至2021年因年龄相关性黄斑变性导致的低视力和失…...
【AI论文】像素修补师(PixelHacker):具有结构和语义一致性的图像修复(Image Inpainting)
摘要:图像修复是图像编辑和图像生成之间的一个基础研究领域。 最近最先进的方法(SOTA)探索了新的注意力机制、轻量级架构和上下文感知建模,展示了令人印象深刻的性能。 然而,他们经常在复杂的结构(如纹理、…...
卡洛诗中式西餐,打破“高价即高端”认知
在餐饮消费从“功能满足”向“意义消费”跃迁的今天,Z世代对饮食的期待早已超越“吃饱”的生理需求。萨莉亚原团队成员出来升级孵化的新概念西餐卡洛诗作为中式西餐赛道的破局者,通过场景重构、产品升维与情感绑定,将西餐体验转化为情绪的载体…...
Sui 上线两周年,掀起增长「海啸」
两年前的 5 月 3 日,Sui 的主网正式发布,将在开发网和测试网上验证过的下一代技术承诺变为现实。这一新兴网络旨在优化现有区块链技术,结合高性能计算环境与安全性、可验证性及韧性。 随着 Sui 迎来两周年,这股浪潮已成长为「海啸…...
手写 Vue 源码 === reactive 方法
目录 1. 响应式系统概述 2. Proxy与Reflect的应用 3. 响应式对象的创建 4. WeakMap的使用 主要特点 WeakMap 与 Map 的区别 应用场景 5. 依赖收集与触发更新 6. 响应式标记 7. 性能优化 8. 与Vue2的对比 9. 实际应用示例 10. 总结 Vue3的响应式系统是其核心特性…...
第一章-Rust入门
Rust 简介 Rust 是一种强类型的静态编程语言,它可以编写更快、更可靠的软件,兼备高层次的易用性与低层次的控制力。 Rust 具有以下几个特点: 内存安全,且不牺牲性能“编译通过就能正常运行”令人愉悦的语法和强大的语言特性优秀…...
【AI入门】Cherry入门1:Cherry Studio的安装及配置
前言 尝试了Trae配置MCP,测试了n8n设置MCP工作流,但感觉好累啊,CherryStudio横空出世,开着中文界面,就倍感亲切,看着大家操作很丝滑的样子,咱也鸟枪换炮了,哇哈哈😄&…...
雷电模拟器-超好用的Windows安卓模拟器
一、雷电模拟器介绍 雷电模拟器是一款功能强大的软件,它能够在电脑上模拟出安卓手机系统,让你可以在电脑上运行各类手机应用及游戏。其采用虚拟安卓手机操作界面,为玩家带来了独特的体验。 (一)强大的兼容性 雷电模拟…...
数据集-目标检测系列- 蜥蜴 检测数据集 lizard >> DataBall
数据集-目标检测系列- 蜥蜴 检测数据集 lizard >> DataBall DataBall 助力快速掌握数据集的信息和使用方式。 贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview…...
Kubernetes控制平面组件:Controller Manager 之 NamespaceController 全方位讲解
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
数据结构小扫尾——栈
数据结构小扫尾——栈 jarringslee 文章目录 数据结构小扫尾——栈栈本质上是一种特殊的线性表。(一)线性表的定义(二)线性表的运算 什么是栈。(一)栈的定义(二)栈的分类࿰…...
策略模式(Strategy Pattern)
🧠 策略模式(Strategy Pattern) 策略模式是一种行为型设计模式,它允许定义一系列的算法或行为,然后将每个算法封装到一个类中,使得它们可以互换。策略模式让算法独立于使用它的客户端进行变化,…...
Qwen2_5-Omni-3B:支持视频、音频、图像和文本的全能AI,可在本地运行
Qwen2.5-Omni-3B是阿里云推出的全能AI模型。它能同时处理视频、音频、图像和文本。只有3B参数,却能在本地运行强大的多模态功能。 近日,已经在Hugging Face上发布。它是小型多模态AI系统的重要突破。 特点 Qwen2.5-Omni-3B与普通语言模型不同。它是真正的多模态系统,可以同…...
GZIPOutputStream 类详解
GZIPOutputStream 类详解 GZIPOutputStream 是 Java 中用于压缩数据为 GZIP 格式的输出流类,属于 java.util.zip 包。它是 DeflaterOutputStream 的子类,专门生成符合 GZIP 格式(.gz 文件)的压缩数据。 1. 核心功能 将数据压缩为…...
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama解释这行代码的含义
这行命令用于为 OLLAMA 服务创建专用的系统用户,具体参数解析如下: sudo 以管理员权限执行命令,确保有足够权限创建系统用户。 useradd Linux 用户创建命令,用于在系统中新增用户。 -r 创建系统账户(非登录用户&…...
自注意力(Self-Attention)和位置编码
自注意力 给定序列 x 1 , … , x n \mathbf{x}_1, \ldots, \mathbf{x}_n x1,…,xn, ∀ x i ∈ R d \forall \mathbf{x}_i \in \mathbb{R}^d ∀xi∈Rd 自注意力池化层将 x i \mathbf{x}_i xi 当做key, value, query来对序列抽取特征得到 y 1 , … , y n \mathbf{y}…...
Linux压缩和解压类
一、gzip/gunzip 压缩 1、基本语法 gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件) gunzip 文件.gz (功能描述:解压缩文件命令) 2、经验技巧 (1&#…...
Kubernetes控制平面组件:Controller Manager详解
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
使用 JavaScript 实现数据导出为 Excel 和 CSV 文件
在 Web 开发中,经常会遇到需要将数据导出为文件的需求,例如将数据导出为 Excel 或 CSV 文件。今天,我们就来探讨如何使用 JavaScript 实现这一功能。 一、实现思路 我们通过 HTML 创建一个按钮,点击按钮时,触发 Java…...
设一个测试情境,新用户注册后显示的名字不完整,测试思路是怎么样的?
问题分析:新用户注册后显示名称不完整 典型表现:用户注册时输入"张三丰",系统仅显示"张"或"张三"等不完整信息 一、测试排查思维导图 二、详细测试方案 1. 前端测试 输入验证: 测试不同长度名称(1字符/10字符/50字符) 测试含空格名称(如…...
NHANES指标推荐:ZJU index
文章题目:Association between ZJU index and gallstones in US adult: a cross-sectional study of NHANES 2017-2020 DOI:10.1186/s12876-024-03553-9 中文标题:ZJU指数与美国成年人胆结石的关联:2017-2020年NHANES横断面研究 发…...
数据存储——高级存储之PV和PVC
一、概述 PV ( Persistent Volume )是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下 PV 由 kubernetes 管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。 PVC &a…...
Astro Canvas 数据中心→设备一览大屏操作指南
✅ Astro Canvas 数据中心→设备一览大屏操作指南 📌 目标 通过API连接器 → 转换器 → 数据源 → 数据集 → Astro大屏设计,展示从 IoTDA 获取的设备影子数据,并在 Astro 大屏中以设备一览形式可视化展示(如设备ID、温度、湿度、烟雾浓度等状态)。 🔁 一、整体流程概…...
Cisco NDO - Nexus Dashboard Orchestrator
目录 一、什么是 Cisco NDO? 二、ND vs. NDO? 三、NDO vs. NDFC 四、NDO 用例: 一、什么是 Cisco NDO? Nexus Dashboard Orchestrator(NDO)可通过单一界面,实现跨多个数据中心的一致性网络与策略编排、可扩展性与灾难恢复等。 当在本地、多种私有云或公有云中同时运…...
Android 控件CalendarView、TextClock用法
一 UI代码 <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto…...
Socket 编程 TCP
Socket 编程 TCP TCP socket API 详解V1 - Echo ServerV2 - Echo Server 多进程版本V3 - Echo Server 多线程版本V4 - Echo Server 线程池版本多线程远程命令执行v5 引入线程池版本翻译 TCP socket API 详解 socket(): socket()打开一个网络通讯端口,如果成功的话,就像 open…...
信息系统项目管理师-软考高级(软考高项)2025最新(七)
个人笔记整理---仅供参考 项目立项管理 7.1项目建议与立项申请 项目建议书内容必背! 7.2项目可行性研究 项目可行性研究必考 7.3项目的评估与决策...
Qt中的UIC
Qt中的UIC(User Interface Compiler, 用户界面编译器):读取由Qt Widgets Designer生成的XML格式(.ui)文件并创建相应的C头文件或Python源文件。如将mainwindow.ui文件生成ui_mainwindow.h。 uic.exe位置在6.8.0\msvc2019_64\bin ,其支持的输入参数如下所…...
【MATLAB例程】基于RSSI原理的Wi-Fi定位程序,N个锚点(数量可自适应)、三维空间,轨迹使用UKF进行滤波,附代码下载链接
本文所述程序实现了一种基于信号强度(RSSI)的Wi-Fi定位算法,并结合无迹卡尔曼滤波(UKF)对动态目标轨迹进行滤波优化。代码支持自适应锚点数量,适用于三维空间定位,可模拟目标运动、信号噪声及非…...
vulkanscenegraph显示倾斜模型(6.5)-vsg::DatabasePager
前言 上章深入分析了帧循环过程中,多线程下的记录与提交机制。本章将分析vsg::DatabasePager在更新场景图过程中的作用,进一步揭露vsg中场景图管理机制,并通过分析代码,详细解释vsg中场景图管理机制中的节点添加、节点删除、节点加…...