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

shell 正则表达式与文本处理器

目录

前言

一、正则表达式

(一)定义与用途

(二)基础正则表达式

(三)基础正则表达式元字符

(四)扩展正则表达式

二、文本处理器:Shell 编程的得力助手

(一)sed 工具

(二)awk 工具


前言

在 Shell 编程领域,正则表达式与文本处理器是极为关键的技术,对于系统管理员、开发人员以及数据分析师而言,熟练掌握这些技能,能够显著提升文本处理的效率和准确性,为编写高效、灵活的 Shell 脚本奠定坚实基础。

一、正则表达式

(一)定义与用途

正则表达式(Regular Expression,简称 RE),又被称作正规表达式、常规表达式,在代码中常简写为 regex、regexp。它是一种利用单个字符串来描述、匹配一系列符合特定句法规则字符串的强大工具 。在 Shell 编程中,正则表达式主要用于文本的查找、替换、删除等操作,广泛应用于文本编辑器、程序设计语言以及各类数据处理场景。

(二)基础正则表达式

为深入理解基础正则表达式,我们准备一个名为 test.txt 的测试文件,内容如下:

he was short and fat. He was wearing a blue polo shirt with black pants.The home
of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword. The year ahead will test our political
establishment to the limit. P1=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood #
#woooooood #
Axy zxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

  1. 查找特定字符:使用 grep 命令结合正则表达式可实现特定字符的查找。

例如,执行 “grep -n 'the' test.txt”,“-n” 选项用于显示行号,该命令会在 test.txt 文件中查找包含 “the” 的行,并输出行号及匹配行内容 。若加上 “-i” 选项,即 “grep -in 'the' test.txt”,则表示不区分大小写进行查找。若要反向选择,查找不包含 “the” 字符的行,可使用 “grep -vn 'the' test.txt”,“-v” 选项表示反向匹配。

  1. 利用中括号查找集合字符:中括号 “[]” 在正则表达式中用于匹配集合内的任意一个字符。

比如,查找 “shirt” 与 “short” 这两个字符串,可执行 “grep -n'sh [io] rt' test.txt” ,因为 “[io]” 表示匹配 “i” 或者 “o”。查找包含重复单个字符 “oo” 的行,执行 “grep -n 'oo' test.txt”。若要查找 “oo” 前面不是 “w” 的字符串,可使用集合字符的反向选择 “[^]”,即 “grep -n '[^w] oo' test.txt”。查找包含数字的行,执行 “grep -n '[0-9]' test.txt”。

  1. ** 查找行首 “^” 与行尾字符 “:表示行首,” 表示行尾。
“grep -n '^the' test.txt”             #查询以 “the” 字符串为行首的行        
“grep -n '^[a-z]' test.txt”           #查询以小写字母开头的行
“grep -n '^[A-Z]' test.txt”           #查询大写字母开头的行
“grep -n '[a-zA-Z]' test.txt”         #查询不以字母开头的行
“grep -n '^$' test.txt”								#查询空白行

查找以小数点 “.” 结尾的行时,由于小数点在正则表达式中是元字符,需使用转义字符 “\”,即 “grep -n '.' test.txt”。

  1. 查找任意一个字符 “.” 与重复字符 “*”:在正则表达式中,小数点 “.” 代表任意一个字符(除换行符外)。

例如,执行 “grep -n 'w..d' test.txt”,可查找以 “w” 开头、“d” 结尾且中间有两个任意字符的字符串。“” 代表重复零个或多个前面的单字符。如 “grep -n 'oo' test.txt”,“oo*” 表示第一个 “o” 必须存在,第二个 “o” 则是零个或多个 “o”。若查询包含至少两个 “o” 以上的字符串,执行 “grep -n 'ooo*' test.txt”。查询以 “w” 开头 “d” 结尾,中间包含至少一个 “o” 的字符串,执行 “grep -n 'woo*d' test.txt”;查询以 “w” 开头 “d” 结尾,中间的字符可有可无的字符串,执行 “grep -n 'w.d' test.txt”查询任意数字所在行,执行 “grep -n '[0-9][0-9]' test.txt”。

  1. 查找连续字符范围 “{}”:“{}” 用于限制重复字符的范围,在 Shell 中使用时需用转义字符 “\”。

例如:

“grep -n 'o {2}' test.txt”         #查询两个 “o” 的字符
“grep -n 'wo {2,5} d' test.txt”    #查询以 “w” 开头以 “d” 结尾,中间包含 2 - 5 个 “o” 的字符串
“grep -n 'wo {2,} d' test.txt”     #查询以 “w” 开头以 “d” 结尾,中间包含 2 个或 2 个以上 “o” 的字符串

(三)基础正则表达式元字符

常见的基础正则表达式元字符如下表所示:

字符

说明

|

将 | 前命令的输出作为 | 后命令的输入

^

匹配输入字符串的开始位置

$

匹配输入字符串的结束位置

*

匹配前面的子表达式零次或多次

+

匹配前面的子表达式一次或多次

?

匹配前面的子表达式零次或一次

.

匹配除换行符(\n、\r)之外的任何单个字符

[a - z]

字符范围。匹配指定范围内的任意字符

{n}

n 是一个非负整数,匹配确定的 n 次

{n,}

n 是一个非负整数,至少匹配 n 次

{n,m}

m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次

\d

匹配一个数字字符。等价于 [0 - 9]

\D

匹配一个非数字字符。等价于 [^0 - 9]

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\n\t\v]

\S

匹配任何非空白字符。等价于 [^\n\t\v]

\w

匹配字母、数字、下划线。等价于 '[A - Za - z0 - 9_]'

\W

匹配非字母、数字、下划线,等价于 '[^A - Za - z0 - 9_]'

\n

匹配一个换行符

\r

匹配一个换页符

\v

匹配一个回车符

(四)扩展正则表达式

在某些场景下,为简化指令,可使用扩展正则表达式。例如,查看生效的配置文件(排除空白行与行首为 “#” 的行),使用基础正则表达式需执行 “grep -v '^' test.txt|grep -v '^\#'”,而使用扩展正则表达式,可简化为“egrep -v '^|^#' test.txt”,其中单引号内的管道符号 “|” 表示 “或者(or)” 。grep 命令仅支持基础正则表达式,若使用扩展正则表达式,需使用 egrep 或 awk 命令。egrep 命令与 grep 命令用法基本相似,可用于搜索文件中的任意字符串和符号。
扩展正则表达式常见元字符如下:

元字符

作用与示例

+

重复一个或者一个以上的前一个字符。

?

零个或者一个的前一个字符。

**

使用或者(or)的方式找出多个字符。

()

查找 “组” 字符串。

()+

辨别多个重复的组。

二、文本处理器:Shell 编程的得力助手

在 Linux/UNIX 系统中,grep、sed、awk 被称为 Shell 编程的 “三剑客”,下面重点介绍 sed 和 awk 这两个强大的文本处理器。

(一)sed 工具

sed(Stream EDitor)是一款强大且简单的文本解析转换工具,可读取文本,并依据指定条件对文本内容进行编辑(如删除、替换、添加、移动等),最后输出所有行或仅输出处理后的某些行。sed 常用于 Shell 脚本,以完成各种自动化处理任务。

  1. 工作流程与命令选项:sed 的工作流程包含读取、执行和显示三个过程。读取时,sed 从输入流(文件、管道、标准输入)读取一行内容并存储到临时缓冲区(模式空间);执行阶段,默认所有 sed 命令在模式空间顺序执行,除非指定行地址;显示过程则将修改后的内容发送到输出流,之后模式空间被清空。常见的 sed 命令选项包括:“-e” 或 “-expression=”,用于指定命令或脚本来处理输入文本文件;“-f” 或 “-file=”,表示用指定的脚本文件处理输入文本文件;“-h” 或 “--help”,用于显示帮助信息;“-n”、“--quiet” 或 “silent”,仅显示处理后的结果;“-i”,直接编辑文本文件。
  2. 用法示例:以 test.txt 文件为例:
“sed -n 'p' test.txt” 	#可输出所有内容,等同于 “cat test.txt”;
“sed -n '3p' test.txt” 	#输出第 3 行;
“sed -n '3,5p' test.txt” 	#输出 3 - 5 行。

结合正则表达式时:

“sed -n '/the/p' test.txt” 	#输出包含 “the” 的行;
“sed -n '/the/=' test.txt”	#输出包含 “the” 的行所在的行号。

在删除操作方面,如:

“sed '3d'” 												#删除第 3 行;
“sed '3,5d'” 											#删除 3 - 5 行;
“sed '/cross/d'” 									#删除包含 “cross” 的行。
“sed '/^[a - z]/d' test.txt”		 	#删除以小写字母开头的行
“sed '/./d' test.txt”							#删除以 “.” 结尾的行
“sed -e '/^/{n;/^/d}' test.txt” 	#删除重复的空行 其效果与“cat -s test.txt”相同

替换操作中:

“sed 's/the/THE/' test.txt”		#将每行中的第一个“the”替换为“THE”;
“sed 's/the/THE/g' test.txt”	#将文件中的所有“the”替换为“THE”;
“sed 's/o//g' test.txt”				#将文件中的所有“o”删除(替换为空串)。

迁移操作时:

“sed '/the/{H;d};G' test.txt” 		#将包含 “the” 的行迁移至文件末尾;
“sed '/the/w out.file' test.txt”  #将包含 “the” 的行另存为文件 out.file。

此外,复杂操作可通过脚本文件实现。例如,将第 1 - 5 行内容转移至第 17 行后,可先创建脚本文件 opt.list,内容为 “1,5H”“1,5d”“17G”,再执行 “sed -f opt.list test.txt”。

  1. 案例:编写脚本调整 vsftpd 服务配置,禁止匿名用户,允许本地用户(也允许写入)。示例脚本如下:
#!/bin/bash
# 指定样本文件路径、配置文件路径
SAMPLE="/usr/share/doc/vsftpd - 3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf"
CONFIG="/etc/vsftpd/vsftpd.conf"
# 备份原来的配置文件,检测文件名为/etc/vsftpd/vsftpd.conf.bak备份文件是否存在,若不存在则使用cp命令进行文件备份
[! -e "$CONFIG.bak" ] && cp $CONFIG $CONFIG.bak
# 基于样本配置进行调整,覆盖现有文件
sed -e '/anonymous_enable/s/YES/NO/g' $SAMPLE > $CONFIG
sed -i -e '/^local_enable/s/NO/YES/g' -e '/write_enable/s/NO/YES/g' $CONFIG
grep "listen" $CONFIG || sed -i '\alisten=YES' $CONFIG
# 启动vsftpd服务,并设为开机后自动运行
systemctl restart vsftpd
systemctl enable vsftpd

(二)awk 工具

awk 是 Linux/UNIX 系统中功能强大的编辑工具,可逐行读取输入文本,根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或过滤处理,广泛应用于 Shell 脚本以完成自动化配置任务。

  1. 命令格式与基本概念:awk 的命令格式为:

“awk 选项 ' 模式或条件 {编辑指令}' 文件 1 文件 2...”,也可通过 “-f” 读取脚本对目标文件进行处理。

awk 倾向于将一行分成多个 “字段” 进行处理,默认字段分隔符为空格或 tab 键,执行结果可通过 print 功能打印显示。awk 还支持逻辑操作符:“&&”(表示 “与”)、“||”(表示 “或”)、“!”(表示 “非”)以及简单的数学运算(如 +、-、*、/、%、^ 分别表示加、减、乘、除、取余和乘方)。
awk 包含几个特殊的内建变量:

  • FS(指定每行文本的字段分隔符,默认为空格或制表位)
  • NF(当前处理的行的字段个数)
  • NR(当前处理的行的行号)
  • $0(当前处理的行的整行内容)
  • $n(当前处理行的第 n 个字段)
  • FILENAME(被处理的文件名)
  • RS(数据记录分隔,默认为 \n,即每行为一条记录)
  1. 用法示例:按行输出文本时:
“awk '{print}' test.txt”    						#或 “awk '{print 0}' test.txt”输出所有内容
“awk 'NR1,NR3{print}'				            #test.txt”输出1 - 3行内容
“awk 'BEGIN {x=0};/\/bin\/bash/{x++};END {print x}' /etc/passwd”  #统计以 “/bin/bash” 结尾的行数。

按字段输出文本时:

“awk '{print $3}' test.txt”												#输出每行中(以空格或制表位分隔)的第3个字段
“awk -F ":" '$7~"/bash"{print $1}' /etc/passwd” 	#输出以冒号分隔且第 7 个字段中包含 “/bash” 的行的第 1 个字段。

相关文章:

shell 正则表达式与文本处理器

目录 前言 一、正则表达式 &#xff08;一&#xff09;定义与用途 &#xff08;二&#xff09;基础正则表达式 &#xff08;三&#xff09;基础正则表达式元字符 &#xff08;四&#xff09;扩展正则表达式 二、文本处理器&#xff1a;Shell 编程的得力助手 &#xff0…...

ZYNQ笔记(九):定时器中断

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用定时器 (私有定时器) 中断 实现 LED&#xff08;PS端&#xff09; 定时1s亮灭翻转 目录 一、介绍 二、硬件设计 三、软件设计 四、效果 一、介绍 Zynq系列是Xilinx(现为AMD)推出的集成了AR…...

idea中运行groovy程序报错

我的项目是使用的 gradle 构建的。 在 idea 中运行Groovy的面向对象程序报错如下&#xff1a; Execution failed for task :Person.main(). > Process command G:/Program Files/jdk-17/jdk-17.0.12/bin/java.exe finished with non-zero exit value 1* Try: Run with --s…...

具身智能零碎知识点(四):联合嵌入预测架构(JEPAs)详解

联合嵌入预测架构&#xff08;JEPAs&#xff09;详解 联合嵌入预测架构&#xff08;JEPAs&#xff09;详解一、核心思想二、技术原理1. 核心组件2. 训练目标 三、与传统方法的对比四、具体实例例1&#xff1a;视频预测&#xff08;如Meta的I-JEPA&#xff09;例2&#xff1a;多…...

linux 搭建 dvwa 渗透测试环境

linux 安装 dvwa 1、分为4个部分&#xff0c;搭建dvwa渗透测试环境2、安装centos 7.63、安装apache http server4、安装mysql5、安装php6、运行dvwa 1、分为4个部分&#xff0c;搭建dvwa渗透测试环境 本文基于centos 7.6 搭建 dvwa 渗透测试环境 安装一个linux系统安装apache…...

C++项目 —— 基于多设计模式下的同步异步日志系统(4)(双缓冲区异步任务处理器(AsyncLooper)设计)

C项目 —— 基于多设计模式下的同步&异步日志系统&#xff08;4&#xff09;&#xff08;双缓冲区异步任务处理器&#xff08;AsyncLooper&#xff09;设计&#xff09; 异步线程什么是异步线程&#xff1f;C 异步线程简单例子代码解释程序输出关键点总结扩展&#xff1a;使…...

【Linux学习笔记】Linux的环境变量和命令行参数

【Linux学习笔记】Linux的环境变量和命令行参数 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】Linux的环境变量和命令行参数前言一.环境变量1.1基本概念1.2常见环境变量1.3和环境变量相关的命令1…...

排序算法-快速排序

描述&#xff1a; 基准值选择&#xff1a;选取数组的最后一个元素 arr[high] 作为基准值 p。初始化索引&#xff1a;i 初始化为 low - 1&#xff0c;其作用是指向比基准值小的最后一个元素的索引。遍历数组&#xff1a;借助 for 循环从 low 到 high - 1 遍历数组。若当前元素 …...

软考高级系统架构设计师-第16章 数学与经济管理

【本章学习建议】 根据考试大纲&#xff0c;本章主要考查系统架构设计师单选题&#xff0c;预计考2分左右。主要是运筹学的计算问题&#xff0c;范围广、难度大&#xff0c;超纲题较多&#xff0c;不用深究。 16.1 线性规划 线性规划是研究在有限的资源条件下&#xff0c;如果…...

爱在冰川-慢就是快

【游资大佬の搞钱心法&#x1f525;&#xff5c;小白逆袭必看冰川语录真实案例‼️】 &#x1f4a1;刚扒完爱在冰川的万字访谈 发现游资搞钱真的靠"反人性思维" 总结6条狠人法则真实案例 建议收藏反复背诵&#x1f447; 1️⃣【周期为王】&#x1f4ab; "行情…...

Mac-VScode-C++环境配置

mac上自带了clang所以不是必须下载Homebrew 下面是配置文件&#xff08;注释记得删一下&#xff09; package.json {"name": "git-base","displayName": "%displayName%","description": "%description%",&quo…...

【JAVA EE初阶】多线程(1)

这样的代码&#xff0c;虽然也能打印hello thread&#xff0c;但是没有创建新的线程&#xff0c;而是直接在main方法所在的主线程中执行了run的逻辑 start方法&#xff0c;是调用系统api&#xff0c;真正在操作系统内部创建一个线程。这个新的线程会以run作为入口方法&#xff…...

PHP伪协议读取文件

借鉴php伪协议实现命令执行,任意文件读取_ctf php文件读取-CSDN博客 总结 在ctf中常用的有data:// , php://input , php://filter &#xff0c;file:// php://input &#xff0c;data://用来执行命令 1.php://input 的用法 http://127.0.0.1/include.php?filephp://input [P…...

动态调整映射关系的一致性哈希负载均衡算法详解

一、核心原理与设计要点 双重映射结构 一致性哈希负载均衡通过 哈希环 和 槽动态分配 实现双重映射关系&#xff1a; • 哈希环构建&#xff1a;将节点&#xff08;物理或虚拟&#xff09;和数据键&#xff08;Key&#xff09;通过哈希函数&#xff08;如MD5、CRC32&#xff09…...

控制反转(IOC)和依赖注入(DI)

Target Retention Documented 元注解 Component 将类交给IOC容器管理&#xff0c;成为IOC容器中的bean Autowired 注入运行时所需要依赖的对象 因为Mabatis DAO层注解Reponsitory 基本不用了&#xff0c;现在Mapper层Mapper注解&#xff0c;这里的Mapper层相当于原来的DAO层…...

【每日八股】复习 MySQL Day1:事务

文章目录 复习 MySQL Day1&#xff1a;事务MySQL 事务的四大特性&#xff1f;并发事务会出现什么问题&#xff1f;MySQL 事务的隔离级别&#xff1f;不同事务隔离级别下会发生什么问题&#xff1f;MVCC 的实现原理&#xff1f;核心数据结构版本链构建示例可见性判断算法MVCC 可…...

【数据结构和算法】1. 数据结构和算法简介、二分搜索

本文根据 数据结构和算法入门 视频记录 文章目录 1. 数据结构和算法简介1.1 什么是数据结构&#xff1f;什么是算法&#xff1f;1.2 数据结构和算法之间的关系1.3 “数据结构和算法”有那么重要吗&#xff1f; 2. 二分搜索&#xff08;Binary Search&#xff09;2.1 算法概念2…...

4月19日记(补)算了和周日一块写了 4月20日日记

周六啊 昨天晚上又玩的太嗨了。睡觉的时候有点晚了&#xff0c;眼睛疼就没写日记。现在补上 实际上现在是20号晚上八点半了。理论上来说应该写今天的日记。 周六上午打比赛啦&#xff0c;和研究生&#xff0c;输了&#xff0c;我是替补没上场。没关系再练一练明天就可以变强…...

面试常用基础算法

目录 快速排序归并排序堆排序 n n n皇后问题最大和子数组爬楼梯中心扩展法求最长回文子序列分割回文串动态规划求最长回文子序列最长回文子串单调栈双指针算法修改 分割回文串滑动窗口栈 快速排序 #include <iostream> #include <algorithm>using namespace std;…...

微服务与 SOA:架构异同全解析与应用指南

微服务和 SOA&#xff08;面向服务的架构&#xff09;是两种不同的软件架构风格&#xff0c;它们在很多方面存在相似之处&#xff0c;但也有一些区别。以下是对它们的详细介绍&#xff1a; 一、概念 1.微服务 微服务架构将一个大型应用程序拆分成多个小型、独立的服务&#…...

Dijkstra 算法入门笔记 (适用于算法竞赛初学者) - C++ 代码版

目录 算法是做什么的&#xff1f;核心思想&#xff1a;贪就完事了&#xff01;算法前提&#xff1a;不能有负权边&#xff01;需要哪些工具&#xff1f;(数据结构)算法具体步骤关键操作&#xff1a;松弛 (Relaxation)两种实现方式 (C 代码) 朴素版 Dijkstra (O(V^2))堆优化版 …...

脑影像分析软件推荐| GraphVar介绍

目录 1.软件界面 2.工具包功能简介 3.软件安装注意事项 1.软件界面 2.工具包功能简介 GraphVar是一个用户友好的 MATLAB 工具箱&#xff0c;用于对功能性大脑连接进行全面的图形分析。这里我们介绍了该工具箱的全面扩展&#xff0c;使用户能够无缝探索跨功能连接测量的可轻…...

如何优雅地实现全局唯一?深入理解单例模式

如何优雅地实现全局唯一&#xff1f;深入理解单例模式 一、什么是单例模式&#xff1f; 单例模式是一种创建型设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并为该实例提供全局访问点&#xff0c;从而避免全局变量的命名污染&#xff0c;并支持延迟初始化Wiki…...

【Flutter】使用LiveKit和Flutter构建实时视频聊天应用

引言 在当今快速发展的数字世界中&#xff0c;实时视频通信已成为许多应用程序的核心功能。无论是远程工作、在线教育还是社交网络&#xff0c;高质量的实时视频功能都至关重要。LiveKit作为一个开源的WebRTC解决方案&#xff0c;提供了构建可扩展实时音视频应用所需的一切工具…...

Android Jetpack Compose 状态管理解析:remember vs mutableStateOf,有啥不一样?为啥要一起用?

&#x1f331;《Jetpack Compose 状态管理解析&#xff1a;remember vs mutableStateOf&#xff0c;有啥不一样&#xff1f;为啥要一起用&#xff1f;》 在 Jetpack Compose 的世界里&#xff0c;UI 是响应式的。这意味着当状态发生变化时&#xff0c;UI 会自动重组&#xff0…...

QT6 源(37):界面组件的总基类 QWidget 的源码阅读(下,c++ 代码部分)

&#xff08;1&#xff09; QT 在 c 的基础上增加了自己的编译器&#xff0c;以支持元对象系统和 UI 界面设计&#xff0c;有 MOC 、 UIC 等 QT 自己的编译器。本节的源代码里&#xff0c;为了减少篇幅&#xff0c;易于阅读&#xff0c;去除了上篇中的属性部分&#xff0c; 上篇…...

进程与线程:01 CPU管理的直观想法

多进程图像与操作系统核心 好从今天开始&#xff0c;我们就要开始学习操作系统&#xff0c;最核心的图像是多进程图像。前面我们讲过&#xff0c;多进程图像对操作系统来说非常重要&#xff0c;它是操作系统的核心图像。明白了它以后&#xff0c;对于理解操作系统的一大部分内…...

19. git reflog

基本概述 git reflog 的作用是&#xff1a;查看本地仓库的引用日志&#xff08;reference log&#xff09;&#xff0c;例如分支、HEAD等。它可以帮助你找回误删的提交、恢复被覆盖的分支&#xff0c;或回溯操作历史。 基本用法 1.查看完整的reflog git reflog这会显示所有…...

C语言 —— 铭纹织构未诞之镜 - 预处理详解

目录 1. 什么是预处理&#xff08;预编译&#xff09; ​编辑 2. 预定义符号 3. #define 定义常量 4. #define定义宏 5. 带副作用的宏参数 6. 宏替换的规则 7. 宏和函数的对比 8. #和## 8.1 #运算符 8.2 ## 运算符 9. #undef 10. 条件编译 1. 什么是预处理&#xf…...

Linux 文件系统目录结构详解

Linux 文件系统目录结构详解 Linux 文件系统遵循 Filesystem Hierarchy Standard (FHS) 标准&#xff0c;定义了各个目录的用途和文件存放规则。无论是开发者、运维工程师还是普通用户&#xff0c;理解这些目录的作用都至关重要。本文将全面解析 Linux 的目录结构&#xff0c;…...

2025-4-19 情绪周期视角复盘(mini)

我本以为市场进化规律下产生龙头战法的末法时代导致情绪周期逐步混乱或者说混沌期漫长。所谓的市场进化无非也是量化的发展和各类资金逐步量化化的充分博弈下的结果。通过逐步向上思考发现&#xff0c;不仅仅我们的市场是处于一个存量的时代背景&#xff0c;重要的是我们的思维…...

-实用类-

1. API是什么 2.什么是枚举 &#xff01;有点类似封装&#xff01; 2.包装类 注意&#xff1a; 1.Boolean类构造方法参数为String类型时&#xff0c;若该字符串内容为true(不考虑大小写)&#xff0c;则该Boolean对象表示true&#xff0c;否则表示false 2.当包装类构造方法参…...

Unity3D仿星露谷物语开发36之锄地动画2

1、目标 当角色锄地之后&#xff0c;地面会显示开垦后的样貌。 2、思路 上一篇中&#xff0c;虽然角色dig了hoe&#xff0c;同时grid属性也改变了&#xff0c;但是没有任何可视化的反馈。我们现在将添加新的功能&#xff0c;动态地将"dug ground"瓷砖添加到"…...

【备考高项】模拟预测题(一)案例分析及答案详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题 1】(10分)【问题 2】(5分)【问题 3】(4分)【问题 4】(6分)试题二【问题 1】(12分)【问题 2】(3分)【问题 3】(6分)【问题 4】(4分)试题三【问题 1】(4分)【问题 2】(10分)【问题 3】…...

7、sentinel

控制台访问地址&#xff1a;http://localhost:8080/ 依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>配置文件 spring:cloud:sentinel:transpo…...

状态管理最佳实践:Provider使用技巧与源码分析

状态管理最佳实践&#xff1a;Provider使用技巧与源码分析 前言 Provider是Flutter官方推荐的状态管理解决方案&#xff0c;它简单易用且功能强大。本文将从实战角度深入讲解Provider的使用技巧和源码实现原理&#xff0c;帮助你更好地在项目中应用Provider进行状态管理。 基…...

INFINI Console 系统集群状态异常修复方案

背景介绍 运行 INFINI Console 1.29.0 和 1.29.1 版本 的用户在 新初始化 平台后可能会遇到一个特定问题。如果后台的系统 Easysearch/Elasticsearch 集群&#xff08;存储 Console 元数据的集群&#xff0c;通常名为 .infini_cluster 或类似名称&#xff09;包含超过一个节点…...

Spring Boot自动装配原理(源码详细剖析!)

什么是Spring Boot的自动装配&#xff1f; 自动装配是Spring Boot的核心功能&#xff0c;它能够根据应用程序的依赖和配置自动配置Spring。这意味着我们只需要添加大量的依赖&#xff0c;Spring Boot就能自动完成配置&#xff0c;减少了人工配置的工作量。 自动装配的核心注…...

大数据驱动的高效能量管理:智能优化与实践探索

大数据驱动的高效能量管理:智能优化与实践探索 在全球能源需求不断增长的背景下,如何提高能源利用效率成为各行业关注的焦点。传统的能源管理方式往往依赖固定规则和人工监测,难以适应复杂多变的应用场景。而大数据技术的兴起,为能量管理提供了新的解决方案——通过数据驱…...

《银行数字化风控-业务于实战》读后知识总结

引言 在金融科技高速发展的今天&#xff0c;银行的风控体系正经历从“人工经验驱动”向“数据智能驱动”的深刻变革。《银行数字化风控-业务于实战》一书以实战为导向&#xff0c;系统性地剖析了数字化风控的核心逻辑、技术实现路径及业务落地方法论。作为深耕风控领域多年的从…...

初级达梦dba的技能水准

在x86环境&#xff08;windows、linux&#xff09;安装单机软件&#xff0c;安装客户端创建过至少20套数据库&#xff0c;优化参数并更新过正式许可会用逻辑导出导入以及dmrman备份了解manager工具的使用配置sqllog日志&#xff0c;并能解释输出内容能够分析因磁盘空间不足、内…...

C++初阶-类和对象(中)

目录 1.类的默认成员函数 2.构造函数&#xff08;难度较高&#xff09; ​编辑 ​编辑 ​编辑 3.析构函数 4.拷贝构造函数 5.赋值运算符重载 5.1运算符重载 5.2赋值运算符重载 6.取地址运算符重载 6.1const成员函数 6.2取地址运算符重载 7.总结 1.类的默认成员函数…...

Linux网络UDP与TCP

基础知识 传输层 负责数据能够从发送端传输接收端。 端口号(Port)标识了一个主机上进行通信的不同的应用程序; 在 TCP/IP 协议中, 用 “源 IP”, “源端口号”, “目的 IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过 netstat -n 查看); 端口号范…...

23、.NET和C#有什么区别?

1、定义与范畴 .NET 定义 .NET 是一个由微软开发的开发平台&#xff08;Platform&#xff09;&#xff0c;它提供了一套完整的工具、库和运行时环境&#xff0c;用于构建各种类型的应用程序。 范畴 包括 .NET Framework、.NET Core&#xff08;现称为 .NET 5 及以上版本&a…...

Qt6离线安装过程

Qt6离线安装过程 说明解决方案联网笔记本安装qt6拷贝到离线电脑修改qtenv2.bat文件 说明 现在qt6已经不能通过离线的方式下载安装包安装了&#xff0c;只能通过登陆的方式在线安装&#xff0c;但是&#xff0c;又有离线安装运行的需求&#xff0c;那么怎么办呢&#xff1f;请跟…...

如何在 Go 中创建和部署 AWS Lambda 函数

AWS Lambda 是一个无服务器计算平台&#xff0c;您可以使用自己喜欢的编程语言编写代码&#xff0c;无需担心设置虚拟机。 您只需为 Lambda 函数的调用次数和运行时间&#xff08;毫秒&#xff09;付费。 我们大多数人都了解 JavaScript 和 Python&#xff0c;但它们的内存效率…...

【后端】【Django】Django 模型中的 `clean()` 方法详解:数据校验的最后防线

Django 模型中的 clean() 方法详解&#xff1a;数据校验的最后防线 在 Django 的模型系统中&#xff0c;我们经常使用字段级别的校验器&#xff08;validators&#xff09;来约束某个字段的取值范围。但当校验逻辑涉及多个字段之间的关系时&#xff0c;字段级别校验就无能为力…...

内存管理详解(曼波脑图超详细版!)

(✪ω✪)曼波来解答三连问啦&#xff01;准备好内存知识大礼包了吗&#xff1f;(≧∇≦)&#xff89; ━━━━━━━━━━━━━ ฅ^•ω•^ฅ ━━━━━━━━━━━ 一、内存分配详解 (๑>ᴗ<๑) (1) 栈内存 → 像便签纸&#x1f4dd; void calculate() {int a …...

【2025最新redis数据结构之Hypeloglog介绍】关于Hypeloglog

HyperLogLog (HLL) 算法深度解析 一、HLL 基本概念 HyperLogLog 是一种用于基数统计&#xff08;distinct counting&#xff09;的概率算法&#xff0c;能够在极小内存占用下&#xff08;通常只需几KB&#xff09;估算巨大数据集的基数&#xff08;不重复元素数量&#xff09…...

软考复习——知识点软件开发

开发模型 瀑布模型 各个活动规定为线性顺序连接的若干阶段的模型。是一种理想的现象开发模型&#xff0c;缺乏灵活性&#xff0c;无法理解软件需求不明确或不准确的问题。适用于需求明确的项目。 演化模型 从初始的原型逐步演化成最终软件产品&#xff0c;特别适用于对软件…...