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

Shell脚本编程之正则表达式

一、概念

        在 Shell 脚本中,正则表达式是一种强大且常用的文本处理工具,它可以用来匹配、搜索、替换和截取字符串。

        正则表达式是由一些字符去描述规则,在正则表达式中有两类字符

        (1)元字符(Meta Character):Shell 环境中具有特殊含义的字符,在命令行解释、文件名扩展、变量替换等方面起着关键作用。

        (2)普通字符:仅代表自身的字符。\元字符 ==> 普通字符

正则表达式也有不同的流派(如Egrep,java,C#)很多语言都用到了正则表达式,但是这些语言中用来描述字符串规则的"元字符"不是都一样的,因此称正则表达式有不同的流派。

正则表达式中匹配的三种量词:贪婪(Greedy)、勉强(Reluctant)、独占(Possessive)

二、元字符

元字符

含义

示例

说明

.

匹配一个除换行符以外的任意字符

a.b

匹配以a开头b结尾,中间有一个任意字符的单词

^

匹配行首

^ab

匹配以ab为行首的单词

$

匹配行尾

ab$

匹配以ab为行尾的单词

\

转义符

\

转换 < 原本的含义

< >

匹配一个指定的单词

\

精准匹配ab这个单词

\|

逻辑或

ab\|AB

匹配ab或者AB

\d

匹配任何数字,等同于[0-9]

grep -P '\d'

需要和grep等工具一起使用

\D

匹配一个非数字字符,等价于

grep -P '\D'

需要和grep等工具一起使用

\w

匹配任何字母,等同于[a-zA-Z0-9]

grep -P '\w'

需要和grep等工具一起使用

\W

匹配任何非单词字符,等同于[^a-zA-Z0-9]

grep -P '\W'

需要和grep等工具一起使用

\s

匹配任何空白字符(空格、制表符、换行符等)

grep -P '\s'

需要和grep等工具一起使用

\S

匹配任何非空白字符

grep -P '\S'

需要和grep等工具一起使用

\b

匹配单词边界

grep -P '\bhello\b'

单词的开头边界:\bword 匹配 "word"

单词的结尾边界:word\b 匹配 "word"

\B

匹配非单词边界

grep -P 'hello\B'

匹配单词内部的连接点:\Bcat\B 会匹配 "category" 中的 "cat"

确保匹配不发生在单词边界:\B-\B 会匹配 "a-b" 中的 -

        Shell程序实例

#/bin/bash#使用 . 匹配任意字符
echo "small middle big ..." | grep "b.g"#使用 ^ 匹配行首
echo -e "hello world\nByebye tony\nOK" | grep "^By"#使用 $ 匹配行尾
echo -e "Today is a good day\nJust so so\n" | grep "so$"#使用 <> 匹配一个指定单词
echo -e "Pass CET6 and CET4" | grep "\<CET6\>"#使用 \d 匹配任何数字
echo "abc 123 def" | grep -P "\d"

        Shell程序效果截图

三、字符范围匹配

字符

含义

示例

说明

[ ]

匹配一个指定范围的字符

a[xyz]b

匹配以a开头b结尾,中间有一个x或y或z的单词

[^ ]

匹配一个不在指定范围的字符

a[^xyz]b

匹配以a开头b结尾,中间有一个不是x或y或z的单词

Shell程序实例 (国内手机号码匹配)

        phone.txt

111102198910084421
13611112222
13133334444
15855556666
13177778888
13199990000
+8618611112222
990785199507319527
66666666666

        phone.sh

#!/bin/bash#Shell程序实例    (国内手机号码匹配)
#基本正则表达式
grep -E '1[3-9][0-9]{9}' phone.txt
#严格匹配(推荐)
grep -P '\b1[3-9]\d{9}\b' phone.txt
#带区号匹配
grep -P '(^|\s)(\+86)?1[3-9]\d{9}(\s|$)' phone.txt

        Shell程序效果截图

四、字符重复匹配

1、贪婪匹配

非贪婪量词

含义(尽量重复的多)

示例

说明

使前面的字符重复0次或1次

a?

匹配a重复了0次或1次的单词

*

使前面的字符重复0次或多次

a*

匹配a重复了0次或多次的单词

+

使前面的字符重复1次或多次

a+

匹配a重复了1次或多次的单词

{n}

使前面的字符重复n次

a{6}

匹配a重复了6次的单词

{n,}

使前面的字符n次或以上

a{6,}

匹配a重复了6次或以上的单词

{n,m}

使前面的字符重复n次到m次

a{6,9}

匹配a重复了6次到9次的单词

        Shell程序实例(IPv4地址匹配)

#/bin/bashipstr="asdsdss192.a.65.4ddgdg192.168.258.990sgsfdg 123adsad 123  sa 676761234safd192.168.63.100fed"#匹配 IPv4地址
#非严格匹配:快速提取 X.X.X.X 格式的字符串,可能数字超IPV4的范围
echo $ipstr | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'
#严格匹配:不仅匹配X.X.X.X 格式的字符串,还限制数字的范围
echo "$ipstr" | grep -oE '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'

        Shell程序效果截图

2、非贪婪匹配

        非贪婪匹配就是在贪婪量词后面加个问号?

非贪婪量词

含义(尽量重复的少)

示例

说明

??

匹配 0 次或 1 次,但尽可能少

a??

尽量少地匹配a重复了0次或1次的单词

*?

匹配 0 次或多次,但尽可能少

a*?

尽量少地匹配a重复0次或多次的单词

+?

匹配 1 次或多次,但尽可能少

a+?

尽量少地匹配a重复了1次或多次的单词

{n}?

使前面的字符重复n次

a{6}?

尽量少地匹配a重复了6次的单词

{n,}?

使前面的字符n次或以上,但尽可能少

a{6,}?

尽量少地匹配a重复了6次或以上的单词

{n,m}?

使前面的字符重复n次到m次,但尽可能少

a{6,9}?

尽量少地匹配a重复6次到9次的单词

        Shell程序实例 (匹配 HTML 标签内容)

        Web 服务器日志 (access.log)

[2023-05-01 10:00:00] "GET /home HTTP/1.1" 200 "Mozilla/5.0"
[2023-05-01 10:00:01] "POST /login HTTP/1.1" 302 "Chrome/114.0"
[2023-05-01 10:00:02] "GET /profile?id=123&name=Alice HTTP/1.1" 200 "Safari/16.0"

        parse_log.sh

#!/bin/bashecho "===== 日志分析结果 ====="
echo "1. 时间戳:"
grep -Po '\[\K.*?(?=\])' access.logecho -e "\n2. HTTP 方法和路径:"
grep -Po '"\K[A-Z]+ .*?(?= HTTP)' access.logecho -e "\n3. 查询参数:"
grep -Po 'GET /.*?\K\?.*?(?= HTTP)' access.logecho -e "\n4. User-Agent:"
grep -Po '"\K[^"]*?(?="$)' access.log | tail -n +2 | sed -n 'p;n'

        Shell程序效果截图

五、常用文本处理命令

1、grep

        grep是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来

        grep(egrep):用来在文本文件里查一个特定的字符串。

        egrep用的是扩展的正则表达式。

grep [选项]        [模式]        [文件…]    
grep options  "正则表达式" filenames
options:-n  显示行号-E  egrep用的是扩展的正则表达式-i  ignore 在字符串比较时忽略大小写-c count 打印每个文件里匹配行的个数--color=always  高亮显示  --color=never   不高亮显示--color=auto    自动-H  显示文件名-h  不显示文件名

        注意:默认情况下,grep命令打印出包含模式的所有行,一旦加上-c选项,就只显示包含模式行的数量

grep -n -E  --color=always -H  "([0-9]{1,3}.){3}[0-9]{1,3}"  1.txt

2、awk

        AWK 是一种强大的文本处理语言,特别适合处理结构化文本数据(如日志文件、CSV 文件等)。它以行为单位处理文本,并支持字段分割、模式匹配、计算和格式化输出等功能。

        awk:逐行读取文件,默认以 连续的空白字符(空格/制表符) 为分隔符将每行数据拆分为多个字段($1, $2...),然后可以对字段、整行($0)行号(NR)等数据进行处理,支持计算、匹配、统计等操作。

awk options 'pattern {action}' filepattern:正则表达式或条件,用于匹配行
action:匹配后执行的操作(如 print、计算等)
file:输入文件(可省略,默认从 stdin 读取)
options:-F    指定分隔符-v    定义变量-f    从脚本读取命令-E    启用扩展正则--posix    启用 POSIX 正则

        基本匹配

awk '/正则表达式/' file
#示例
awk '/error/' log.txt      # 打印包含 "error" 的行

        匹配特定字段

awk '$2 ~ /正则表达式/' file
#示例
awk '$3 ~ /^[0-9]+$/' data.txt  # 第 3 列是数字的行

        反向匹配(不匹配)

awk '!/正则表达式/' file
#示例
awk '!/warning/' log.txt  # 打印不包含 "warning" 的行

3、sed

        sed全称为Stream Editor,是一个强大的流式文本编辑器,用于对文本进行过滤和转换。它特别适合用于批量编辑文件或处理文本流。

sed [选项] '命令' 文件选项:控制 sed 的行为(如 -i 直接修改文件)
命令:指定对文本的操作(如替换 s/old/new/)
文件:输入文件(可省略,默认从 stdin 读取)选项:-n       静默模式(仅打印处理的行)-i       直接修改文件(慎用!)-E/-r    启用扩展正则-e       执行多条命令--debug  调试模式(GNU sed 支持)

        基本匹配

sed -n '/正则表达式/p' file
#示例
sed -n '/error/p' log.txt      # 打印包含 "error" 的行

        替换(s///)

sed 's/正则表达式/替换内容/修饰符' file
#示例
sed 's/foo/bar/g' file        # 全局替换 "foo" 为 "bar"
sed 's/[0-9]\+/NUM/g' file    # 替换所有数字为 "NUM"(\+ 需转义)
sed -E 's/[0-9]+/NUM/g' file  # 同上,但用扩展正则(\+ 无需转义)

         删除(d)

sed '/正则表达式/d' file
#示例
sed '/^#/d' file      # 删除所有注释行(以 `#` 开头)
sed '/^$/d' file      # 删除所有空行

        反向引用(\1, \2…)

sed 's/\(正则表达式\)/替换\1/' file
#示例
sed 's/\(foo\) bar/\1 baz/' file  # "foo bar" → "foo baz"
sed -E 's/(foo) bar/\1 baz/' file  # 扩展正则写法(括号无需转义)

4、cut

        cut 是一个简单但实用的文本处理工具,用于从文件或标准输入中提取文本的特定部分(如列或字符位置)。它特别适合处理结构化数据(如 CSV、TSV 或固定宽度的文本)。它 不支持正则表达式但可以快速截取固定格式的字段

        把cut放进到本文中一起讲解,主要是给使用shell编程设计的大伙们,提供一个参考比对借鉴的工具。

cut [选项] [文件]选项 :指定如何截取文本(如按字符、字段等)。
文件 :输入文件(可省略,默认从 stdin 读取)选项 :-d    指定 分隔符(默认 TAB)-f    选择 字段(列)-c    选择字符位置-s    仅显示包含分隔符的行--complement    反选(排除指定列)

        按字段(列)提取

cut -d':' -f1,3 /etc/passwd
#示例输出
root:0
daemon:1
bin:2
...

        按字符位置提取

echo "abcdefgh" | cut -c2-5
#示例输出    (提取第 2~5 个字符)
bcde

        排除某些列

#(提取 data.csv 中 除了第 2 列 的所有列)
cut -d',' -f2 --complement data.csv

        处理 CSV 文件

#(先过滤含 "ERROR" 的行,再提取第 3 列)
cut -d',' -f1,3 employees.csv

        提取固定宽度的数据

#(提取第 1~10 和第 20~30 个字符)
cut -c1-10,20-30 data.txt

        结合 grep 过滤后提取

#(先过滤含 "ERROR" 的行,再提取第 3 列)
grep "ERROR" log.txt | cut -d' ' -f3

5、wc

        wc(Word Count)是一个用于 统计文件或文本的行数、单词数、字符数 的简单工具,常用于日志分析、代码统计等场景。

wc [选项] [文件...]选项:控制统计的内容(如仅显示行数)。
文件:输入文件(可省略,默认从 stdin 读取)。
选项:-l        仅统计 行数(Line)-w        仅统计 单词数(Word)-c        仅统计 字节数(Byte)-m        仅统计 字符数(适用于 Unicode)-L        显示 最长行的长度无选项    显示 行数、单词数、字节数

        基础使用案例

#基本统计
wc file.txt
#输出结果
12  45 230 file.txt    #12:行数;45:单词数(以空格分隔);230:字节数#仅统计行数
wc -l file.txt
#输出结果
12 file.txt#统计多个文件
wc *.txt
#输出结果
12  45 230 file1.txt
20  80 400 file2.txt
32 125 630 total#结合 grep 统计匹配行数
grep "ERROR" log.txt | wc -l    #(统计 log.txt 中包含 "ERROR" 的行数)#统计代码行数
find . -name "*.py" -exec wc -l {} \;    #(统计当前目录下所有 .py 文件的行数)

6、sort

        sort 是 Linux 中用于 对文本行进行排序 的强大工具,支持按字母、数字、月份等多种规则排序,并能去重、合并文件等。

sort [选项] [文件]选项:控制排序规则(如降序、按数字排序等)
文件:输入文件(可省略,默认从 stdin 读取)选项:-r    降序排序(默认升序)-n    按数字排序(默认按字符串)-k    指定排序的列-u    去重(仅保留唯一行)-f    忽略大小写-t    指定列分隔符-o    结果输出到文件-m    合并已排序的文件-c    检查文件是否已排序...

        基础使用案例

#1、基本排序(按字母升序)
sort fruit.txt
#输出结果
banana
apple
orange#2、按数字排序
sort -n numbers.txt
#numbers.txt文件输入:
10
2
45
#输出
2
10
45#3、按指定列排序
sort -t',' -k2 data.csv
#输入(data.csv):
Alice,25
Bob,30
Eve,20
#输出:
Eve,20
Alice,25
Bob,30#4、降序排序 + 去重
sort -r -u names.txt
#输入:
Alice
Bob
Alice
#输出:
Bob
Alice#5、检查文件是否已排序
#若已排序,无输出;未排序则报错。
sort -c file.txt#6、合并多个已排序文件
sort -m sorted1.txt sorted2.txt

相关文章:

Shell脚本编程之正则表达式

一、概念 在 Shell 脚本中&#xff0c;正则表达式是一种强大且常用的文本处理工具&#xff0c;它可以用来匹配、搜索、替换和截取字符串。 正则表达式是由一些字符去描述规则&#xff0c;在正则表达式中有两类字符 (1)元字符(Meta Character)&#xff1a;Shell 环境中具有特殊含…...

spring-ai-openai调用Xinference1.4.1报错

1、Xinference 报错logs 此处是调用 /v1/chat/completions 接口 2025-04-06 15:48:51 xinference | return await dependant.call(**values) 2025-04-06 15:48:51 xinference | File "/usr/local/lib/python3.10/dist-packages/xinference/api/restful_api.py", …...

XC7K160T-2FFG676I Kintex‑7系列 Xilinx 赛灵思 FPGA 详细技术规格

XC7K160T-1FFG676I XC7K160T-1FFG676C XC7K160T-2FFG676C 1. 基本概述 XC7K160T-2FFG676I 属于 Xilinx Kintex‑7 系列 FPGA&#xff0c;该系列芯片采用 28nm &#xff08;HKMG&#xff09;工艺制造&#xff0c;旨在提供高性能与低功耗的平衡。该芯片主要面向对高速数据处理、…...

C++学习之udp通信

1.UDP特点 c /* udp 传输层协议, 和tcp是一样的 特点: 面向无连接的, 不安全的, 报式传输协议 1. 无连接: udp通信的时候不需要connect 1). 通信不需要建立连接 2). 如果想给对方发送数据, 只需要指定对方的IP和端口 2. udp会丢包 1). 数…...

2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析

2020年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...

【数据标准】数据标准化实施流程与方法-保障机制篇

导读&#xff1a;1、数据标准化保障机制&#xff08;组织架构、协作流程&#xff09;是​​战略落地的基石​​&#xff0c;确保责权分明与资源协同&#xff1b;2、数据标准化制度建设&#xff08;政策、标准、工具&#xff09;构建了​​统一治理框架​​&#xff0c;规范数据…...

ZLMediaKit部署与配置

ZLMediaKit编译 # 安装编译器 sudo apt install build-essential cmake# 其它依赖库 sudo apt-get install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git cd /usr/local/srcgit clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit# …...

38、web前端开发之Vue3保姆教程(二)

三、Vue3语法详解 1、组件 1 什么是组件? 组件是 Vue.js 中最重要的概念之一。它是一种可复用的 Vue 实例,允许我们将 UI 拆分为独立的、可复用的部分。组件可以提高代码的组织性和可维护性。 2 创建组件 在 Vue 3 中,组件通常使用单文件组件(SFC)编写,其包含三个主…...

知识中台如何重构企业信息生态?关键要素解析

在信息化快速发展的时代&#xff0c;企业面临着如何高效整合和管理知识资源的挑战。知识中台作为企业信息管理的核心工具&#xff0c;正在帮助企业提升运营效率和创新力。本文将探讨知识中台如何重构企业信息生态&#xff0c;并解析其关键要素。 一、什么是知识中台&#xff1f…...

蓝桥杯python组备赛(记录个人模板)

文章目录 栈队列堆递归装饰器并查集树状数组线段树最近公共祖先LCAST表字典树KMPmanacher跳表(代替C STL的set)dijkstra总结 栈 用list代替 队列 用deque双端队列替代 堆 用heapq 递归装饰器 众所周知&#xff0c;python的递归深度只有1000&#xff0c;根本满足不了大部…...

C++的多态 - 下

目录 多态的原理 虚函数表 1.计算包含虚函数类的大小 2.虚函数表介绍 多态底层原理 1.父类引用调用 2.父类指针调用 3.动态绑定与静态绑定 单继承和多继承关系的虚函数表 函数指针 1.函数指针变量 (1)函数指针变量创建 (2)函数指针变量的使用 (3)两段有趣的代码 …...

XSS(跨站脚本攻击)

什么是 XSS 攻击&#xff1f; XSS 攻击&#xff08;Cross-Site Scripting&#xff09;是一种常见的网络攻击手段&#xff0c;攻击者通过在网站上注入恶意的 JavaScript 代码&#xff0c;让网站在用户的浏览器中执行这些恶意代码&#xff0c;进而达到 窃取信息、篡改网页内容 或…...

LLM Agents的历史、现状与未来趋势

引言 大型语言模型&#xff08;Large Language Model, LLM&#xff09;近年在人工智能领域掀起革命&#xff0c;它们具备了出色的语言理解与生成能力。然而&#xff0c;单纯的LLM更像是被动的“回答者”&#xff0c;只能根据输入给出回复。为了让LLM真正“行动”起来&#xff…...

最简rnn_lstm模型python源码

1.源码 GitCode - 全球开发者的开源社区,开源代码托管平台 不到120行代码&#xff0c;参考了《深度学习与交通大数据实战》3.2节。注意这本书只能在京东等在线商城网购&#xff0c;才能拿到相应的数据集和源码。我的是在当地新华书店买的——买清华出版社&#xff0c;记得这个…...

基于Android的图书借阅和占座系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 基于Android的图书借阅和占座系统设计的目的是为用户提供图书信息、图书馆、图书资讯等内容&#xff0c;用户可以进行图书借阅、预约选座等操作。 与PC端应用程序相比&#xff0c;图书借阅和占座系统的设计主要面向于广大用户&#xff0c;旨在为用户提供一个图书借阅及占…...

vue3+element-plus动态与静态表格数据渲染

一、表格组件&#xff1a; <template> <el-table ref"myTable" :data"tableData" :header-cell-style"headerCellStyle" header-row-class-name"my-table-header" cell-class-name"my-td-cell" :row-style"r…...

数据库50个练习

数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…...

Open CASCADE学习|读取点集拟合样条曲线(续)

问题 上一篇文章已经实现了样条曲线拟合&#xff0c;但是仍存在问题&#xff0c;Tolerance过大拟合成直线了&#xff0c;Tolerance过大头尾波浪形。 正确改进方案 1️⃣ 核心参数优化 通过调整以下参数控制曲线平滑度&#xff1a; Standard_Integer DegMin 3; // 最低阶…...

HTML基础教程:创建双十一购物狂欢节网页

页面概况&#xff1a; 在这篇技术博客中&#xff0c;我将详细讲解如何使用HTML基础标签创建一个简单而美观的双十一购物狂欢节主题网页。我们将逐步分析代码结构&#xff0c;了解每个HTML元素的作用&#xff0c;以及如何通过HTML属性控制页面布局和样式。 页面整体结构 首先&…...

ES6 新增特性 箭头函数

简述&#xff1a; ECMAScript 6&#xff08;简称ES6&#xff09;是于2015年6月正式发布的JavaScript语言的标准&#xff0c;正式名为ECMAScript 2015&#xff08;ES2015&#xff09;。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语…...

【C++算法】49.分治_归并_计算右侧小于当前元素的个数

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 315. 计算右侧小于当前元素的个数 题目描述&#xff1a; 解法 归并排序&#xff08;分治&#xff09; 当前元素的后面&#xff0c;有多少个比我小。&#xff08;降序&…...

Multi-class N-pair Loss论文理解

一、N-pair loss 对比 Triplet loss 对于N-pair loss来说&#xff0c;当N2时&#xff0c;与triplet loss是很相似的。对anchor-positive pair&#xff0c;都只有一个negative sample。而且&#xff0c;N-pair loss&#xff08;N2时&#xff09;为triplet loss的平滑近似Softpl…...

uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法

这个天坑问题&#xff0c;在微信开发工具上是不会显示出来的,只有在真机上才会偶尔出现随机样式偏移/裁剪/宽长偏移&#xff0c;询问社区也只是让你提交代码片段&#xff0c;并无解决办法。 一开始我怀疑是地图组件加载出现了问题&#xff0c;于是给地图加了一个v-if"reL…...

蓝桥杯嵌入式总结

1.lcd显示和led引脚冲突 在lcd使用到的函数中加入两行代码 uint16_t temp GPIOC->ODR; GPIOC->ODR temp; 2.关于PA15,PB4pwm波输入捕获 首先pwm输入捕获中断 使用 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); 再在输入捕获中断回调函数中使用 void HAL…...

C#的反射机制

C#反射机制详解 什么是反射&#xff1f; 反射(Reflection)是C#中的一项强大功能&#xff0c;它允许程序在运行时动态获取类型信息、访问和操作对象成员。简单来说&#xff0c;反射使程序可以在不预先知道类型的情况下&#xff0c;查看、使用和修改程序集中的代码。 常见反射…...

Java并发编程高频面试题

一、基础概念 1. 并行与并发的区别&#xff1f; 并行&#xff1a;多个任务在多个CPU核心上同时执行&#xff08;物理上同时&#xff09;。并发&#xff1a;多个任务在单CPU核心上交替执行&#xff08;逻辑上同时&#xff09;。类比&#xff1a;并行是多个窗口同时服务&#x…...

Invalid bound statement (not found)

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…...

【Vue-路由】学习笔记

目录 <<回到导览路由1.单页应用和多页面2.路由基本使用2.1.路由的含义2.2.VueRouter插件2.3.配置路由规则和导航2.4.组件目录存放2.5.路由模块封装 3.rounter3.1.router-link实现高亮3.2.自定义匹配类名3.3.声明式导航3.3.1.查询参数传参3.3.2.动态路由传参3.3.3.总结 3.…...

前端服务配置详解:从入门到实战

前端服务配置详解&#xff1a;从入门到实战 一、环境配置文件&#xff08;.env&#xff09; 1.1 基础结构 在项目根目录创建 .env 文件&#xff1a; # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境&#xff08;.env.produc…...

Java安全管理器 - SecurityManager

什么是Java安全管理器&#xff1f; Java安全管理器是Java提供的保护JVM和程序安全的机制&#xff0c;它能限制用户的代码对文件、内存、资源、网络的操作和访问&#xff0c;防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限&#xff0c;防止用户恶意提交代…...

Arrays操作工具 Lambda表达式 集合 迭代器 数据结构 泛型 set集合 list集合

Arrays操作工具 自己定义的排序规则 简单理解如果是&#xff1a;o1 - o2 升序排列 o2 - o1 降序排列 Lambda表达式 函数式编程 函数式编程&#xff08;Functional programming&#xff09;是一种思想特点。 面向对象&#xff1a;先去找对象&#xff0c;让对象做事情。。函数式…...

ORM、Mybatis和Hibernate、Mybatis使用教程、parameterType、resultType、级联查询案例、resultMap映射

DAY21.1 Java核心基础 ORM Object Relationship Mapping 对象关系映射 面向对象的程序到—关系型数据库的映射 比如java – MySQL的映射 ORM框架就是实现这个映射的框架 Hibernate、Mybatis、MybatisPlus、Spring Data JPA、Spring JDBC Spring Data JPA的底层就是Hiber…...

《Java八股文の文艺复兴》第十一篇:量子永生架构——对象池的混沌边缘(终极试炼·完全体)

Tags: - Java高并发 - 量子架构 - 混沌工程 - 赛博修真 - 三体防御 目录&#xff1a; 卷首语&#xff1a;蝴蝶振翅引发的量子海啸 第一章&#xff1a;混沌初开——对象池的量子涅槃&#xff08;深度扩展&#xff09; 第二章&#xff1a;混沌计算——对象复活的降维打击&…...

蓝桥杯备赛---真题训练之15届蓝桥杯找回连接之旅

题目 介绍 在网络世界中&#xff0c;突然间失去了所有的连接。作为勇敢的冒险者&#xff0c;你将踏上一段惊险刺激的旅程&#xff0c;穿越充满谜题和挑战的网络景观&#xff0c;与神秘的网络幽灵对抗&#xff0c;解开断网之谜&#xff0c;找回失去的连接&#xff0c;带领人们重…...

PowerApps MDA-模版-文档模版无法下载和上传Word模版

Power Apps的高级设置-模版中&#xff0c;文档模版目前只能看到新建和上传Excel模版&#xff0c;看不到Word模版 这是一个已知bug, 什么时候能修复不好说&#xff0c;解决办法也很简单&#xff0c;先上传一个Excel模版&#xff0c;随便任何一个实体就行&#xff0c;为的是视图列…...

全国大学生数学建模竞赛赛题深度分析报告(2010-2024)

全国大学生数学建模竞赛赛题深度分析报告&#xff08;2010-2024&#xff09; 全国大学生数学建模竞赛(CUMCM)是中国最具影响力的大学生科技竞赛之一&#xff0c;本报告将对2010-2024年间的赛题进行全面统计分析&#xff0c;包括题目类型、领域分布、模型方法等多个维度&#x…...

职坐标解析自动驾驶技术发展新趋势

内容概要 作为智能交通革命的核心驱动力&#xff0c;自动驾驶技术正以惊人的速度重塑出行生态。2023年&#xff0c;行业在多传感器融合与AI算法优化两大领域实现突破性进展&#xff1a;激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级&#xff0c;而深度学习模型的实时决…...

快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt

引用&#xff1a;打造前后端分离Python权限系统 基于Django5DRFVue3.2Element PlusJwt 视频教程 &#xff08;火爆连载更新中..&#xff09;_哔哩哔哩_bibili 说明&#xff1a;1、结合个人DRF基础和该视频去根据自己的项目进行开发。 2、引用该视频中作者的思路去升华自身的项…...

HTTP 协议详解

HTTP 协议 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最广泛的协议之一&#xff0c;用于在客户端&#xff08;如浏览器&#xff09;和服务器之间传输超文本&#xff08;如网页&#xff09;。 HTTP 是万维网&#xff…...

巧记英语四级单词 Unit1-4【晓艳老师版】

tain—take拿着、sus 下面&#xff0c;只有sur表示上面、ob表示方向、de往下&#xff0c;分开 retain v.保持 re-重复&#xff0c;tain—take拿着&#xff0c;重复的拿着maintain v. 维持&#xff0c;维修&#xff0c;保养 main主要的&#xff0c;主要的东西都拿着的那个人维…...

Transformers without Normalization论文翻译

论文信息&#xff1a; 作者&#xff1a;Jiachen Zhu, Xinlei Chen, Kaiming He, Yann LeCun, Zhuang Liu 论文地址&#xff1a;arxiv.org/pdf/2503.10622 代码仓库&#xff1a;jiachenzhu/DyT: Code release for DynamicTanh (DyT) 摘要 归一化层在现代神经网络中无处不在…...

Ollama

目录 定义与核心功能应用场景Ollama与Llama的关系安装与使用 Ollama是一个开源的本地大语言模型&#xff08;LLM&#xff09;运行框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型而设计。以下是关于Ollama的全面介绍&#xff1a; 定义与核心功能 多种预训练语言模…...

社交app圈子模块0到1实现

一、逻辑分析 用户相关 用户需要能够创建圈子&#xff0c;这涉及到用户身份验证&#xff0c;确保只有注册用户可以进行创建操作。每个圈子有创建者&#xff0c;创建者对圈子有一定的管理权限&#xff0c;如设置圈子规则、邀请成员等。 圈子信息 圈子需要有名称、简介、头像等基…...

OpenCV--图像边缘检测

在计算机视觉和图像处理领域&#xff0c;边缘检测是极为关键的技术。边缘作为图像中像素值发生急剧变化的区域&#xff0c;承载了图像的重要结构信息&#xff0c;在物体识别、图像分割、目标跟踪等众多应用场景中发挥着核心作用。OpenCV 作为强大的计算机视觉库&#xff0c;提供…...

批量压缩 jpg/png 等格式照片|批量调整图片的宽高尺寸

图片格式种类非常的多&#xff0c;并且不同的图片由于像素、尺寸不一样&#xff0c;可能占用的空间也会不一样。文件太大会占用较多的磁盘空间&#xff0c;传输及上传系统都非常不方便&#xff0c;可能会收到限制&#xff0c;因此我们经常会碰到需要对图片进行压缩的需求。如何…...

[Linux系统编程]多线程

多线程 1. 线程1.1 线程的概念1.2 进程与线程对比1.3 轻量级进程 2. Linux线程控制2.1 POSIX 线程&#xff08;pthread&#xff09;2.2 线程ID、pthread_t、和进程地址空间的关系2.2.1 pthread_self2.2.2 pthread_create2.2.3 pthread_join2.2.4 线程终止的三种方式2.2.5 pthre…...

进程状态(运行 阻塞 僵尸)及其场景分析

【Linux学习笔记】Linux基本指令及其分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 前言 哈喽&#xff0c;各位小伙伴大家好!上期我们讲了进程PCB 今天我们讲的是进程状态(运行 阻塞 僵尸)及其场景分析。话不多说&#…...

程序化广告行业(67/89):DMP系统标签制作与人群拓展深度解析

程序化广告行业&#xff08;67/89&#xff09;&#xff1a;DMP系统标签制作与人群拓展深度解析 大家好&#xff01;在之前的分享中&#xff0c;我们对程序化广告的多个关键环节进行了探讨。今天&#xff0c;咱们继续深入了解程序化广告中的DMP系统&#xff0c;聚焦于标签制作和…...

【QT】QPixmap QImage QBitmap QPicture

文章目录 **1. QPixmap****特点****典型应用场景****示例** **2. QImage****特点****典型应用场景****示例** **3. QBitmap****特点****示例** **4. 三者的主要区别****5. 如何选择&#xff1f;****使用 QPixmap 的情况****使用 QImage 的情况****使用 QBitmap 的情况** **6. 相…...

如何开通google Free Tier长期免费云服务器(1C/1G)

Google宣布的一项政策&#xff0c;为标准层级的网络提供每地域200G的免费流量。两项政策结合&#xff0c;于是便可以得到一台1核心、1G内存、30G磁盘、200G流量的小云服务器&#xff0c;可玩性大大提高。这篇文章就分享一下如何正确开机&#xff0c;避免产生额外的费用。 免费…...