探索 Shell 中的扩展通配符:从 Bash 到 Zsh
在 Unix 系统中,通配符(globbing)是 shell 的核心功能,用于快速匹配文件或目录。基础通配符(如 *
、?
、[]
)虽简单实用,但在复杂场景下往往力不从心。为此,许多现代 shell 提供了“扩展通配符”功能,通过特定选项(如 Bash 的 shopt -s extglob
或 Zsh 的 setopt extendedglob
)解锁更强大的匹配能力。这些扩展通配符不仅增强了灵活性,还引入了类似正则表达式的语法,使文件操作更加高效。本文将详细介绍 Bash 和 Zsh 的扩展通配符特性,区分其功能与应用场景,并探讨其实际价值,帮助读者全面掌握这一高级工具。
一、扩展通配符的背景与意义
基础通配符在 Unix 系统中由来已久,但其功能局限于简单匹配,无法满足复杂需求,例如否定匹配、递归查找或多条件过滤。为弥补这一不足,现代 shell 引入了扩展通配符,通过额外的配置选项提供更丰富的模式匹配能力。Bash 的 extglob
和 Zsh 的 extendedglob
是其中的佼佼者,它们不仅扩展了通配符的表达能力,还为用户提供了近乎正则表达式级别的控制力。
扩展通配符的意义在于,它将 shell 从简单的命令执行工具提升为强大的文件处理平台。无论是批量操作、日志筛选还是项目管理,这些功能都能显著提升效率。
二、主流 Shell 的扩展通配符详解
1. Bash 的扩展通配符(extglob
)
Bash 的扩展通配符需通过 shopt -s extglob
启用,提供比基础通配符更强大的匹配能力。
1.1 启用方法
- 临时启用:
shopt -s extglob
- 永久启用:
echo "shopt -s extglob" >> ~/.bashrc source ~/.bashrc
1.2 核心语法与功能
!(pattern)
:否定匹配,匹配不符合pattern
的内容。*(pattern)
:匹配零次或多次。+(pattern)
:匹配一次或多次。@(pattern)
:匹配恰好一次。?(pattern)
:匹配零次或一次。- 示例:
ls !(*.txt)
:列出非.txt
文件。ls *(a|b)
:匹配含零次或多次a
或b
的文件。ls +(v[0-9])
:匹配含一次或多次版本号(如v1
、v2
)的文件。ls @(test|prod).conf
:匹配test.conf
或prod.conf
。ls ?(file|dir)
:匹配file
、dir
或空字符串。
1.3 特点与局限
- 特点:语法直观,适合中等复杂度的匹配任务。
- 局限:
- 不支持原生递归匹配(需另启用
shopt -s globstar
使用**
)。 - 语法较繁琐,嵌套能力有限。
- 无法直接组合多个条件(如排除多类文件需嵌套多个模式)。
- 不支持原生递归匹配(需另启用
1.4 递归扩展(配合 globstar
)
- 启用:
shopt -s globstar
- 语法:
**/*.ext
- 示例:
ls **/*.sh
(递归匹配.sh
文件)。 - 说明:
globstar
是独立选项,与extglob
可组合使用,但功能仍不及 Zsh。
2. Zsh 的扩展通配符(extendedglob
)
Zsh 的扩展通配符通过 setopt extendedglob
启用,功能远超 Bash,提供更灵活和强大的匹配能力。
2.1 启用方法
- 临时启用:
setopt extendedglob
- 永久启用:
echo "setopt extendedglob" >> ~/.zshrc source ~/.zshrc
2.2 核心语法与功能
^pattern
:否定匹配,匹配不符合pattern
的内容。pattern1~pattern2
:匹配符合pattern1
但不符合pattern2
的内容。(pattern1|pattern2)
:分组匹配,匹配任一模式。pattern#
:匹配零次或多次。pattern##
:匹配一次或多次。**/*.ext
:递归匹配子目录(默认支持,无需额外选项)。(#X)
:修饰符,如(#i)
(忽略大小写)、(#l)
(仅小写)。- 示例:
ls ^*.txt
:列出非.txt
文件。ls *.txt~*.old.txt
:匹配.txt
文件,排除.old.txt
。ls *(txt|log)
:匹配.txt
或.log
文件。ls *#v[0-9]*.log
:匹配含零次或多次版本号的.log
文件。ls **/*.sh
:递归匹配所有.sh
文件。ls *test*(#i)
:匹配含test
的文件,忽略大小写。
2.3 特点与优势
- 特点:
- 语法简洁直观,操作符(如
^
、~
)易于理解。 - 默认支持递归匹配(
**
),无需额外配置。 - 支持复杂逻辑组合(如多重排除、分组)。
- 语法简洁直观,操作符(如
- 优势:
- 比 Bash 的
extglob
更强大,接近正则表达式。 - 与 Zsh 其他特性(如限定符
(#q)
)无缝集成。
- 比 Bash 的
3. 其他 Shell 的扩展通配符(简述)
- Ksh(Korn Shell):
- 支持类似 Bash 的扩展通配符(如
!(pattern)
),语法与 Bashextglob
接近。 - 示例:
ls !(*.bak)
。 - 特点:功能较 Bash 略强,但普及度较低。
- 支持类似 Bash 的扩展通配符(如
- Fish Shell:
- 不依赖传统扩展通配符,注重简洁性。
- 使用
**
递归匹配,但无复杂模式支持。 - 示例:
ls **/*.txt
。 - 特点:用户友好,但高级功能有限。
三、Bash 与 Zsh 扩展通配符的对比
特性 | Bash (extglob ) | Zsh (extendedglob ) |
---|---|---|
启用方式 | shopt -s extglob | setopt extendedglob |
否定匹配 | !(pattern) | ^pattern |
排除匹配 | 无直接支持,需嵌套 !(...) | pattern1~pattern2 |
分组匹配 | @(pattern1|pattern2) | (pattern1|pattern2) |
重复匹配 | *(pattern) 、+(pattern) 等 | pattern# 、pattern## |
递归匹配 | 需 shopt -s globstar 使用 ** | 默认支持 ** 和 *** |
修饰符 | 无 | 支持 (#i) 等 |
语法简洁性 | 较繁琐 | 更直观简洁 |
复杂逻辑支持 | 有限 | 强大(如多重排除、嵌套) |
结论:Bash 的 extglob
适合中等复杂度的任务,但语法繁琐且功能有限;Zsh 的 extendedglob
则更强大、灵活,特别在递归匹配和复杂逻辑上占据优势。
四、扩展通配符的实际应用场景
1. 文件清理
- Bash:
rm !(*.bak|*.tar.gz)
(删除除.bak
和.tar.gz
外的文件)。 - Zsh:
rm *~(*.bak|*.tar.gz)
(更简洁的排除语法)。
2. 递归查找
- Bash:
ls **/*.sh
(需启用globstar
)。 - Zsh:
ls **/*.sh~*.old.sh
(递归匹配非.old.sh
的.sh
文件)。
3. 批量重命名
- Bash:
for f in !(*.old.txt); do mv "$f" "${f%.txt}.new"; done
- Zsh:
for f in *.txt~*.old.txt; do mv $f ${f%.txt}.new; done
4. 日志筛选
- Bash:
ls +(v[0-9]).log
(匹配含版本号的日志)。 - Zsh:
ls *#v[0-9]#*.log
(更灵活的版本号匹配)。
5. 忽略大小写
- Bash:无直接支持,需借助
tr
或其他工具。 - Zsh:
ls *test*(#i)
(忽略大小写匹配)。
五、使用扩展通配符的注意事项
-
兼容性
- Bash:启用
extglob
后不影响基础通配符。 - Zsh:
^
、~
等符号含义改变,可能影响现有脚本。 - 解决:脚本中明确控制选项(如
setopt noextendedglob
)。
- Bash:启用
-
性能
- 递归匹配(如
**
)在大型目录中可能较慢。 - 解决:缩小范围或结合
find
。
- 递归匹配(如
-
调试
- 用
echo
测试匹配结果,如echo !(*.txt)
或echo ^*.txt
。
- 用
-
与其他选项的交互
- Bash:
extglob
和globstar
可组合。 - Zsh:
extendedglob
与globstar
等选项需一致配置。
- Bash:
六、总结
扩展通配符是 shell 功能的重要进化,Bash 的 extglob
提供了实用的增强,而 Zsh 的 extendedglob
则将这一能力推向巅峰。从否定匹配到递归查找,从分组到修饰符,Zsh 的扩展通配符以其简洁性和强大性脱颖而出。无论您是 Bash 用户还是 Zsh 爱好者,掌握这些工具都能让命令行操作更加得心应手。不妨现在尝试启用 shopt -s extglob
或 setopt extendedglob
,体验扩展通配符的魅力!
相关文章:
探索 Shell 中的扩展通配符:从 Bash 到 Zsh
在 Unix 系统中,通配符(globbing)是 shell 的核心功能,用于快速匹配文件或目录。基础通配符(如 *、?、[])虽简单实用,但在复杂场景下往往力不从心。为此,许多现代 shell 提供了“扩…...
电脑清洁常用工具
清洁布:用于擦拭电脑表面和屏幕。一般选择柔软、不掉毛的微纤维清洁布,它能有效去除灰尘和污渍,同时不会刮伤电脑表面。压缩空气罐:可以产生强力气流,用于吹走电脑内部的灰尘,如主机箱、键盘缝隙等部位的灰…...
深入理解Spring是如何解决循环依赖的
1、简介循环依赖 在 Spring 框架中,循环依赖是指两个或多个 Bean 互相依赖,形成了一个闭环。例如,Bean A 依赖于 Bean B,而 Bean B 又依赖于 Bean A。这种依赖关系可能会导致初始化失败。Spring 提供了一种机制来解决这种循环依赖…...
AIGC时代的新风口!MCP协议引领未来无限可能
文章目录 一、引言二、MCP的定义与架构三、MCP的使用案例1. Cursor MCP Figma:工程化项目自动化2. Claude Desktop与本地文件系统交互3. 智能客服系统中的MCP应用 四、MCP的应用前景1. 更广泛的应用场景拓展2. 更高的性能要求和优化3. 更强的安全性和隐私保护措施…...
NO.81十六届蓝桥杯备战|数据结构-Trie树-字典树-前缀树|于是他错误的点名开始了|最大异或对 The XOR Largest Pair(C++)
字典树的概念 Trie树⼜叫字典树或前缀树,是⼀种能够快速插⼊和查询字符串的数据结构。它利⽤字符串的公共前缀,将字符串组织成⼀棵树形结构,从⽽⼤⼤提⾼了存储以及查找效率。 我们可以把字典树想象成⼀棵多叉树,每⼀条边代表⼀个…...
go语言应该如何学习
以下是学习Go语言的高效路径及关键技巧,结合多个优质来源整理而成,适合不同基础的学习者: 一、基础语法快速入门(1-2周) 1、环境搭建 下载安装Go SDK,配置GOPATH和GOROOT环境变量,推荐使用Go…...
struct结构体、union联合体和枚举
目录 一、结构体的声明和使用 1.1 结构体正常声明和创建 1.2 结构体特殊声明 1.3 结构体的自引用 二、结构体内存对齐 2.1 对齐规则 2.2 #pragma修改 三、结构体传参 四、结构体位段 4.1 位段内存分配 4.2 位段内存应用 五、结构体中的柔性数组概念 六、union联合…...
el-tree 实现树形菜单子级取消选中后父级选中效果不变
背景 在复杂的企业级管理系统中,树形菜单是一种常见的数据展示和交互组件。传统的树形菜单通常存在以下交互局限: 子节点取消选中时,父节点会自动取消选中无法满足复杂的权限分配和数据筛选场景实际应用场景: 组织架构权限管理多层级资源分配复杂的数据筛选与展示实现需求…...
centos7系统搭建nagios监控
~监控节点安装 1. 系统准备 1.1 更新系统并安装依赖 sudo yum install -y httpd php php-cli gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel wget unzip sudo yum install -y epel-release # 安装 EPEL 仓库 sudo yum install -y automake autoconf lib…...
Gitlab的迁移升级
Gitlab11.6.5的迁移升级 Gitlab升级是不能跨大版本升级的,根据官方升级路径来操作。 gitlab迁移 首先需要查看当前gitlab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 当前版本是11.6.5 备份源数据 原仓库备份所有的文件 /opt/gitlab/bin/git…...
C++11QT复习 (十九)
文章目录 Day13 C 时间库和线程库学习笔记(Chrono 与 Thread)一、时间库 <chrono>1.1 基本概念1.2 使用示例1.3 duration 字面量单位 二、线程库 <thread>2.1 基本用法2.2 数据竞争(Race Condition)2.3 加锁ÿ…...
3 版本控制:GitLab、Jenkins 工作流及分支开发模式实践
一、引言 在软件开发过程中,版本控制是保障代码质量、提高开发效率的关键环节。有效的版本控制能够帮助团队成员更好地协作,追踪代码变更,快速定位和解决问题。GitLab 和 Jenkins 作为两款广泛使用的工具,在版本控制和持续集成 / 持续部署(CI/CD)流程中发挥着重要作用。本…...
docker配置远程连接,dockerfile-maven-plugin插件打包到远程
我开发机器上的内存不大,能不安装在本地的应用就都跑在服务器上了,但是本地打包时需要用到docker打包成镜像,这时会本地运行docker,所以准备本地只使用docker客户端,连接服务器上的docker服务端 服务端配置 docker服…...
Skyline配置指南-微信小程序
Skyline 是微信小程序推出的新一代渲染引擎,提供了更强大的渲染能力和更流畅的性能体验。以下是配置 Skyline 的详细步骤: 一、app.json文件配置 "componentFramework": "glass-easel", "lazyCodeLoading": "requi…...
【c语言】倒置字符串
将一句话的单词进行倒置,符号不变,用例长度不超过100 思路: 逆序整个字符串逆序每个单词 #include <stdio.h> #include <string.h> void reverse(char* left, char* right) {while (left < right) {//char *tmp left;//error…...
MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析)
MySQL多表查询实战指南:从SQL到XML映射的完整实现(2W+字深度解析) 第一章 多表查询基础与核心原理 1.1 关系型数据库设计范式 以电商系统为例的三范式实践: -- 原始数据表(违反第三范式) CREATE TABLE orders (order_id INT PRIMARY KEY,customer_name VARCHAR(50),p…...
【图书管理系统】全栈开发图书管理系统获取图书列表接口(后端:计算图书页数、查询当前页展示的书籍)
图书列表 实现服务器代码(计算图书总数量查询当前页需要展示的书籍) 后端响应时,需要响应给前端的数据 records:第 pageNum 页要展示的图书有哪些(存储到List集合中)total:计算一共有多少本书(用于告诉前…...
SpringMvc的请求-获得请求参数
客户端请求参数的格式是: namevalue&namevalue..… 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 基本类型参数 POJO类型参数 数组类型参数 集合类型参数 获得基本类型参数 Controller中的业务方法…...
CSS 笔记——Flexbox(弹性盒布局)
目录 1. Flex 容器与 Flex 项目 2. 主轴与交叉轴 3. Flex 容器的属性 display flex-direction justify-content align-items align-content flex-wrap 4. Flex 项目的属性 flex-grow flex-shrink flex-basis flex align-self 5. Flexbox 的优点 6. Flexbox 的…...
Redis 缓存 + MySql 持久化 实现点赞服务
前言 为什么所用 redis 作为缓存来实现点赞服务, 而不是直接就使用 mysql 来完成? 使用 Redis 的集合数据结构来存储点赞用户的 ID,方便快速判断用户是否已点赞; 当用户频繁的点赞和取消点赞时, 无需操作数据库, 减轻服务器压力 Redis 可以承受高并发的读写操作…...
Oracle OCP知识点详解2:yum 等服务的搭建
一、YUM/DNF 服务架构解析 1.1 核心组件交互流程 sequenceDiagram participant Client participant YUM participant Repository participant RPMDBClient->>YUM: yum install oracle-database-preinstall YUM->>Repository: 获取元数据(repodata) Repository--&…...
JavaScript Hook XMLHttpRequest操作:逆向与调试实战指南
在JavaScript逆向工程中,Hook XMLHttpRequest操作是一种重要的技术,可以用来捕获、修改或分析网络请求的发送和接收过程。本文将结合具体案例,详细讲解如何实现XMLHttpRequest的Hook操作。 一、Hook XMLHttpRequest的基本原理 (…...
21 天 Python 计划:MySQL视图、触发器、存储过程、函数与流程控制
文章目录 一、视图1.1 创建视图1.2 使用视图1.3 修改视图1.4 删除视图 二、触发器2.1 创建触发器2.2 使用触发器2.3 删除触发器 三、存储过程3.1 介绍3.2 创建简单存储过程(无参)3.3 创建存储过程(有参)3.4 执行存储过程3.5 删除存…...
机器学习 Day10 逻辑回归
1.简介 流程就是: 就是我们希望回归后激活函数给出的概率越是1和0. 2.API介绍 sklearn.linear_model.LogisticRegression 是 scikit-learn 库中用于实现逻辑回归算法的类,主要用于二分类或多分类问题。以下是对其重要参数的详细介绍: 2.1.…...
Hadoop的序列化和反序列化
//1 package com.example.sei;import org.apache.hadoop.io.Writable;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException;//学生类,姓名,年龄 //支持hadoop的序列化 //1.要实现Writable接口 //2.补充一个空参构造 publi…...
Altera Cyclone EP1C20F400C8N FPGA 阿尔特拉 介绍
在可编程逻辑器件领域,Altera 的 Cyclone 系列 FPGA 以其低成本、低功耗和灵活的 I/O 支持而著称。EP1C20F400C8N 作为 Cyclone I 家族中规模最大的成员之一,提供约 20 060 个逻辑单元,面向通信、工业控制、视频处理等多种嵌入式应用场景。…...
VTK随笔十四:QT与VTK的交互示例(平移)
VTK(Visualization Toolkit)是一个开源的软件系统,用于三维计算机图形学、图像处理和可视化。它提供了丰富的工具和类来处理三维数据和交互。在 VTK 中,拾取操作通常通过 vtkCellPicker 或 vtkPointPicker 等类来实现。 本文将展示…...
用户注册(阿里云手机验证码)
阿里云开通三网106短信 ①、在阿里云市场搜索“短信”,开通三网短信,并可以查看其中的请求示例(java PHP^) 并在个人中心的管理控制台中查到,获取其中的AppKey AppCode ②、接口开发 service-user模块中依赖spr…...
【BFT帝国】20250409更新PBFT总结
2411 2411 2411 Zhang G R, Pan F, Mao Y H, et al. Reaching Consensus in the Byzantine Empire: A Comprehensive Review of BFT Consensus Algorithms[J]. ACM COMPUTING SURVEYS, 2024,56(5).出版时间: MAY 2024 索引时间(可被引用): 240412 被引:…...
学习海康VisionMaster之边缘交点
一:进一步学习了 今天学习下VisionMaster中的边缘交点,这个还是拟合直线的衍生应用,可以同时测量两条直线并且输出交点或者判定是否有交点 二:开始学习 1:什么是边缘交点? 按照传统的算法,必须…...
公司级项目-AD9914扫频源(三)评估板与上位机的初步调试
硬件平台搭建1-评估板与上位机 第一阶段,先使用评估板配套的上位机软件进行控制,学习一下各种功能的实现方式和寄存器配置方式。 硬件连接 需要的设备仪器包括:多路直流稳压电源、信号发生器、示波器、电脑。 按照图中的方式进行连接&am…...
技术优化实战解析:Stream重构与STAR法则应用指南
目录 一、真实案例背景:老代码的"历史厚重感" 二、屎山代码解剖课:这些写法到底烂在哪? 三、Stream流式重构:给老代码做个大保健 2.1 重构后代码实现 2.2 核心API技术拆解 2.3 进阶优化技巧 三、STAR法则技术文档…...
基于Qt的串口通信工具
程序介绍 该程序是一个基于Qt的串口通信工具,专用于ESP8266 WiFi模块的AT指令配置与调试。主要功能包括: 1. 核心功能 串口通信:支持串口开关、参数配置(波特率、数据位、停止位、校验位)及数据收发。 AT指令操作&a…...
Xilinx FPGA XCZU5EV‑2FBVB900I Zynq UltraScale+™ MPSoC EV 系列
XCZU5EV‑1FBVB900I XCZU5EV‑2FBVB900E XCZU5EV‑1FBVB900I 是 Xilinx Zynq UltraScale™ MPSoC EV 系列中功能最为丰富的器件之一,采用 16 nm FinFET 工艺,封装为 31 mm 31 mm、900‑ball FCBGA(FBVB900)。该系列在传统的…...
如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理
背景 许多用户都会借助OCP平台来进行OceanBase集群的运维与监控,且因为考虑单节点的OCP部署,在遇故障时可能会短时间出现无法管控 OceanBase集群,多数用户倾向于采用多节点方式来部署OCP,即 OCP的 metadb集群也是三节点的集群部署…...
Databricks: Why did your cluster disappear?
You may found that you created a cluster many days ago, and you didnt delete it, but it is disapear. Why did this happen? Who deleted the cluster? Actually, 30 days after a compute is terminated, it is permanently deleted automaticlly. If your workspac…...
深入解析Java内存与缓存:从原理到实践优化
一、Java内存管理:JVM的核心机制 1. JVM内存模型全景图 ┌───────────────────────────────┐ │ JVM Memory │ ├─────────────┬─────────────────┤ │ Thread │ 共享…...
macos下 ragflow二次开发环境搭建
参考官网链接 https://ragflow.io/docs/dev/launch_ragflow_from_source虚拟环境 git clone https://github.com/infiniflow/ragflow.git cd ragflow/ # if not pipx, please install it at first pip3 install pipxpipx install uv uv sync --python 3.10 --all-extras 安装 …...
从 Excel 到你的表格应用:条件格式功能的嵌入实践指南
一、引言 在日常工作中,面对海量数据时,如何快速识别关键信息、发现数据趋势或异常值,是每个数据分析师面临的挑战。Excel的条件格式功能通过自动化的视觉标记,帮助用户轻松应对这一难题。 本文将详细介绍条件格式的应用场景&am…...
安徽京准:NTP网络时钟服务器功能及同步模式的介绍
安徽京准:NTP网络时钟服务器功能及同步模式的介绍 安徽京准:NTP网络时钟服务器功能及同步模式的介绍 1、NTP网络时钟服务器概念: NTP时钟服务器,表面意思是时间计量工具的服务设备,其在现代工业中是用于对客户端设备…...
基于ueditor编辑器的功能开发之百度编辑器自带的查找和替换功能无法对目标文字进行滚动定位修复
在查找百度编辑器的查找和替换功能,发现当页面文字过多,用户在检索文字点击上一个下一个的时候,滚动条不跟随滚动了 分析了ueditor关于searchpalce方法的处理时,他会在目标文字的前面插入一个span标签用户获取当前需要高亮的文字节…...
MYSQL——SQL语句到底怎么执行
查询语句执行流程 MySQL 查询语句执行流程 查询缓存(Query Cache) MySQL内部自带了一个缓存模块,默认是关闭的。主要是因为MySQL自带的缓存应用场景有限。 它要求SQL语句必须一摸一样表里面的任何一条数据发生变化时,该表所有缓…...
[蓝桥杯 2022 省 B] 李白打酒加强版
题目链接: 思路: ①定义dp数组,f[i][j][k],表示经过 i 店, 遇到 j 花, 还有 k 酒。如果酒的数量超过了花的数量,那么一定喝不完。因此,k 不能超过 M。 ②从店推过来,f[…...
计算机视觉——图像金字塔与目标图像边缘检测原理与实践
一、两个图像块之间的相似性或距离度量 1.1 平方差和(SSD) 平方差和(SSD) 是一种常用的图像相似性度量方法。它通过计算两个图像在每个对应位置的像素值差的平方和来衡量两个图像之间的整体差异。如果两个图像在每个位置的像素值…...
复现QGIS-MCP教程
由于Claude国内下载不了尝试使用Cursor 下载安装Cursor Cursor - The AI Code Editor 本示例安装的是0.46版本 UV安装 简介 安装 安装成功 配置环境变量 验证 下载代码 git clone gitgithub.com:jjsantos01/qgis_mcp.git QGIS插件安装 文件拷贝 您需要将 qgis_mcp_plu…...
人工智能图像识别Spark Core
Spark Core 一.spark运行架构 1.运行架构 Spark 框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。 如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master,负责管理整个集群中的作…...
决策树+泰坦尼克号生存案例
决策树简介 学习目标 1.理解决策树算法的基本思想 2.知道构建决策树的步骤 【理解】决策树例子 决策树算法是一种监督学习算法,英文是Decision tree。 决策树思想的来源非常朴素,试想每个人的大脑都有类似于if-else这样的逻辑判断,这其中…...
怎么查看苹果手机和ipad的设备信息和ios udid
你知道吗?我们每天使用的iPhone和iPad,其实隐藏着大量详细的硬件与系统信息。除了常见的系统版本和序列号外,甚至连电池序列号、摄像头序列号、销售地区、芯片型号等信息,也都可以轻松查到! 如果你是开发者、维修工程…...
智能驱动教育变革:人工智能在高中教育中的实践路径与创新策略
一、引言 随着信息技术的飞速发展,人工智能(Artificial Intelligence, AI)已成为推动社会进步的重要力量。在教育领域,人工智能的应用正逐渐改变着传统的教学模式和方法,为教育现代化注入了新的活力。高中教育作为教育…...
TCP 和 UDP 可以使用同一个端口吗?
TCP 和 UDP 可以使用同一个端口吗? 前言 在深入探讨 TCP 和 UDP 是否可以使用同一个端口之前,我们首先需要理解网络通信的基本原理。网络通信是一个复杂的过程,涉及到多个层次的协议和机制。在 OSI 模型中,传输层是负责端到端数…...