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

linux awk命令和awk语言

linux awk和awk语言

通常大家说的awk几乎都是在linux/unix中使用的awk命令,见下,
https://www.geeksforgeeks.org/awk-command-unixlinux-examples/

作为命令使用的话,存在下内容

Awk 是一个工具,使程序员能够编写小巧但有效的程序,这些程序以定义要在文档的每一行中搜索的文本模式的形式出现,并定义当在某一行中找到匹配项时应采取的操作。Awk 主要用于模式扫描和处理。它会搜索一个或多个文件,查看它们是否包含与指定模式匹配的行,然后执行相关操作。

Awk 是从开发人员的名字缩写而来的——Aho、Weinberger 和 Kernighan

AWK 可以用来做什么?

  1. AWK 操作:
    (a) 逐行扫描文件
    (b) 将每行输入拆分为字段
    © 将输入行/字段与模式进行比较
    (d) 对匹配的行执行操作

  2. 适用范围:
    (a) 转换数据文件
    (b) 生成格式化的报告

  3. 编程结构:
    (a) 格式化输出行
    (b) 算术和字符串操作
    © 条件语句和循环

语法:

awk options ‘selection _criteria {action }’ input-file > output-file
选项:

-f program-file : Reads the AWK program source from the file
program-file, instead of from the
first command line argument.
-F fs : Use fs for the input field separator

示例:

考虑以下文本文件作为以下所有情况的输入文件:

$cat > employee.txt
ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
deepak clerk sales 23000
sunil peon sales 13000
satvik director purchase 80000

  1. Awk 的默认行为:默认情况下,Awk 会打印指定文件中的每一行数据。

$ awk ‘{print}’ employee.txt

ajay manager account 45000
sunil clerk account 25000
varun manager sales 50000
amit manager account 47000
tarun peon sales 15000
deepak clerk sales 23000
sunil peon sales 13000
satvik director purchase 80000

在上述示例中,没有给出模式。因此,操作适用于所有行。print 动作没有参数,默认会打印整行,所以会成功打印文件中的所有行。

  1. 打印匹配给定模式的行。

$ awk ‘/manager/ {print}’ employee.txt
AWK 命令在 Unix/Linux 中的例子 - GeeksforGeeks

ajay manager account 45000
varun manager sales 50000
amit manager account 47000
在上面的例子中,awk 命令打印出所有匹配 ‘manager’ 的行。

  1. 将一行分为字段:对于每条记录即每一行,awk 命令默认使用空白字符分隔记录,并将其存储在 $n 变量中。如果一行有 4 个单词,它将分别存储在 $1、$2、$3 和 $4 中。此外,$0 代表整个行

$ awk ‘{print $1,$4}’ employee.txt

$ awk ‘{print $1,$4}’ employee.txt
AWK 命令在 Unix/Linux 中的例子 - GeeksforGeeks

ajay 45000
sunil 25000
varun 50000
amit 47000
tarun 15000
deepak 23000
sunil 13000
satvik 80000
在上面的例子中,$1 和 $4 分别代表 Name 和 Salary 字段。

Awk 中的内置变量

Awk 的内置变量包括字段变量—$1、$2、$3 等($0 是整个行)—这些变量将一行文本分解为单独的单词或称为字段的片段。

NR: NR 命令会保持当前输入记录的计数。请注意,记录通常是一行。Awk 命令会对文件中的每一记录执行一次模式/动作语句。
NF: NF 命令会统计当前输入记录中的字段数量。
FS: FS 命令包含字段分隔字符,用于划分输入行上的字段。默认值是“空白字符”,即空格和制表符。FS 可以在 BEGIN 中重新分配为另一个字符以更改字段分隔符。
RS: RS 命令存储当前的记录分隔符字符。由于默认情况下,输入行是输入记录,因此默认的记录分隔符字符是换行符。
OFS: OFS 命令存储输出字段分隔符,当 Awk 打印字段时,它会用 OFS 分隔字段。默认情况下,OFS 是一个空格。每当 print 有多个用逗号分隔的参数时,它会在每个参数之间打印 OFS 的值。
ORS: ORS 命令存储输出记录分隔符,当 Awk 打印时,该分隔符会将输出行分隔开。默认情况下,它是换行符。print 会自动在要打印的内容末尾输出 ORS 的内容。
示例:

使用 NR 内置变量(显示行号)

$ awk ‘{print NR,$0}’ employee.txt

1 ajay manager account 45000
2 sunil clerk account 25000
3 varun manager sales 50000
4 amit manager account 47000
5 tarun peon sales 15000
6 deepak clerk sales 23000
7 sunil peon sales 13000
8 satvik director purchase 80000
在上述示例中,使用 NR 的 awk 命令打印了所有行以及行号。

使用内置变量 NF(显示最后一个字段)

$ awk ‘{print $1,$NF}’ employee.txt

ajay 45000
sunil 25000
varun 50000
amit 47000
tarun 15000
deepak 23000
sunil 13000
satvik 80000
在上面的例子中,$1 表示 Name,$NF 表示 Salary。我们可以使用 $NF 获取 Salary,其中 $NF 表示最后一个字段。

另一个内置变量 NR 的用法(显示第 3 到第 6 行)

$ awk ‘NR==3, NR==6 {print NR,$0}’ employee.txt

3 varun manager sales 50000
4 amit manager account 47000
5 tarun peon sales 15000
6 deepak clerk sales 23000

更多的案例

  1. 要打印每行的第一个项以及该行号(NR),两者之间用 “ – “ 分隔,在 geeksforgeeks.txt 中执行以下命令:

$ awk ‘{print NR "- " $1 }’ geeksforgeeks.txt

  1. 要从 geeksforgeeks.txt 中返回第二列/项:

$ awk ‘{print $2}’ geeksforgeeks.txt

  1. 如果存在非空行则打印该行

awk ‘NF == 0 {print NR}’ geeksforgeeks.txt

OR

awk ‘NF <= 0 {print NR}’ geeksforgeeks.txt

  1. 查找文件中最长行的长度:

$ awk ‘{ if (length($0) > max) max = length($0) } END { print max }’ geeksforgeeks.txt

  1. 计算文件中的行数:

$ awk ‘END { print NR }’ geeksforgeeks.txt

  1. 打印包含超过 10 个字符的行:

$ awk ‘length($0) > 10’ geeksforgeeks.txt

  1. 在任何特定列中查找/检查任何字符串:

$ awk ‘{ if($3 == “B6”) print $0;}’ geeksforgeeks.txt

  1. 要打印从 1 到 n(例如 6)的数的平方:

$ awk ‘BEGIN { for(i=1;i<=6;i++) print “square of”, i, “is”,i*i; }’


awk语言
官方材料:
https://www.gnu.org/software/gawk/manual/gawk.html#Qualified-Names

第一部分:
awk 语言
1 awk 入门
1.1 如何运行 awk 程序
1.1.1 一次性一次性 awk 程序
1.1.2 在没有输入文件的情况下运行 awk
1.1.3 运行长程序
1.1.4 可执行的 awk 程序
1.1.5 awk 程序中的注释
1.1.6 Shell 引用问题
1.1.6.1 在 MS-Windows 批处理文件中引用
1.2 示例的数据文件
1.3 一些简单的例子
1.4 具有两条规则的示例
1.5 更复杂的例子
1.6 awk 语句 vs Lines
1.7 awk 的其他特点
1.8 何时使用 awk
1.9 总结
2 喋喋不休
2.1 调用 awk
2.2 命令行选项
2.3 其他命令行参数
2.4 命名标准输入
2.5 gawk 使用的环境变量
2.5.1 AWKPATH 环境变量
2.5.2 AWKLIBPATH 环境变量
2.5.3 其他环境变量
2.6 gawk 的退出状态
2.7 将其他文件包含在程序中
2.8 将 Dynamic Extensions 加载到程序中
2.9 过时的选项和/或功能
2.10 未记录的选项和功能
2.11 总结
3 正则表达式
3.1 如何使用正则表达式
3.2 转义序列
3.3 正则表达式运算符
3.3.1 awk 中的 Regexp 运算符
3.3.2 关于区间表达式的一些说明
3.4 使用 Bracket 表达式
3.5 有多少文本匹配?
3.6 使用动态正则表达式
3.7 特定于 gawk 的正则表达式运算符
3.8 匹配时区分大小写
3.9 总结
4 读取输入文件
4.1 如何将 Input 拆分为 Records
4.1.1 使用标准 awk 进行记录分割
4.1.2 使用 gawk 进行记录分割
4.2 检查字段
4.3 非常量字段编号
4.4 更改字段的内容
4.5 指定字段的分隔方式
4.5.1 空格通常分隔字段
4.5.2 使用正则表达式分隔字段
4.5.3 将每个角色设为单独的字段
4.5.4 使用逗号分隔值文件
4.5.5 从命令行设置 FS
4.5.6 将整行设置为单个字段
4.5.7 字段拆分摘要
4.6 读取固定宽度数据
4.6.1 处理固定宽度数据
4.6.2 跳过中间字段
4.6.3 捕获可选的尾随数据
4.6.4 具有固定宽度数据的字段值
4.7 按内容定义字段
4.7.1 有关 CSV 文件的更多信息
4.7.2 FS 与 FPAT:细微差别
4.8 检查 gawk 如何拆分记录
4.9 多行记录
4.10 使用 getline 进行显式输入
4.10.1 使用不带参数的 getline
4.10.2 在变量中使用 getline
4.10.3 从文件中使用 getline
4.10.4 在文件中的 Variable 中使用 getline
4.10.5 使用 Pipe 中的 getline
4.10.6 从 Pipe 将 getline 用于变量
4.10.7 从 Coprocess 使用 getline
4.10.8 在 Coprocess 的 Variable 中使用 getline
4.10.9 关于 getline 需要记住的要点
4.10.10 getline 变体总结
4.11 读取带有超时的输入
4.12 在某些 Importing 错误后重试读取
4.13 命令行上的目录
4.14 总结
4.15 练习
5 打印输出
5.1 print 语句
5.2 print 语句示例
5.3 输出分隔符
5.4 使用 print 控制数字输出
5.5 使用 printf 语句进行更高级的打印
5.5.1 printf 语句简介
5.5.2 格式控制字母
5.5.3 printf 格式的修饰符
5.5.4 使用 printf 的示例
5.6 重定向 print 和 printf 的输出
5.7 标准预打开数据流的特殊文件
5.8 gawk 中的特殊文件名
5.8.1 使用 gawk 访问其他打开的文件
5.8.2 用于网络通信的特殊文件
5.8.3 特殊文件名注意事项
5.9 关闭输入和输出重定向
5.9.1 使用 close() 的返回值
5.10 加快管道输出
5.11 启用 Nonfatal 输出
5.12 总结
5.13 练习
6 表达式
6.1 常量、变量和转换
6.1.1 常量表达式
6.1.1.1 数值和字符串常量
6.1.1.2 八进制数和十六进制数
6.1.1.3 正则表达式常量
6.1.2 使用正则表达式常量
6.1.2.1 标准正则表达式常量
6.1.2.2 强类型 Regexp 常量
6.1.3 变量
6.1.3.1 在程序中使用变量
6.1.3.2 在命令行中指定变量
6.1.4 字符串和数字的转换
6.1.4.1 awk 如何在字符串和数字之间进行转换
6.1.4.2 区域设置可以影响转换
6.2 运算符:对值执行某些作
6.2.1 算术运算符
6.2.2 字符串拼接
6.2.3 赋值表达式
6.2.4 递增和递减运算符
6.3 真值和条件
6.3.1 awk 中的 True 和 False
6.3.2 变量类型和比较表达式
6.3.2.1 字符串类型与数字类型
6.3.2.2 比较运算符
6.3.2.3 基于语言环境整理顺序的字符串比较
6.3.3 布尔表达式
6.3.4 条件表达式
6.4 函数调用
6.5 运算符优先级(运算符如何嵌套)
6.6 您所在的位置会有所不同
6.7 总结
7 模式、作和变量
7.1 Pattern 元素
7.1.1 作为模式的正则表达式
7.1.2 表达式作为模式
7.1.3 使用模式指定记录范围
7.1.4 BEGIN 和 END 特殊模式
7.1.4.1 启动和清理作
7.1.4.2 BEGIN 和 END 规则的输入/输出
7.1.5 BEGINFILE 和 ENDFILE 特殊模式
7.1.6 空模式
7.2 在程序中使用 Shell 变量
7.3作
7.4 Actions 中的控制语句
7.4.1 if-else 语句
7.4.2 while 语句
7.4.3 do-while 语句
7.4.4 for 语句
7.4.5 switch 语句
7.4.6 break 语句
7.4.7 continue 语句
7.4.8 next 语句
7.4.9 nextfile 语句
7.4.10 exit 语句
7.5 预定义变量
7.5.1 控制 awk 的内置变量
7.5.2 传达信息的内置变量
7.5.3 使用 ARGC 和 ARGV
7.6 总结
awk 中的 8 个数组
8.1 数组的基础
8.1.1 数组简介
8.1.2 引用数组元素
8.1.3 分配数组元素
8.1.4 基本数组示例
8.1.5 扫描数组的所有元素
8.1.6 将预定义的数组扫描顺序与 gawk 结合使用
8.2 使用数字为数组下标
8.3 将未初始化的变量用作下标
8.4 delete 语句
8.5 多维数组
8.5.1 扫描多维数组
8.6 数组中的数组
8.7 总结
9 主要工作内容
9.1 内置函数
9.1.1 调用内置函数
9.1.2 生成布尔值
9.1.3 数值函数
9.1.4 字符串作函数
9.1.4.1 有关 sub()、gsub() 和 gensub() 的 ’ \ ’ 和 ’ & ’ 的更多信息
9.1.5 输入/输出功能
9.1.6 时间函数
9.1.7 位作函数
9.1.8 获取类型信息
9.1.9 字符串翻译函数
9.2 用户定义的函数
9.2.1 函数定义语法
9.2.2 函数定义示例
9.2.3 调用用户定义的函数
9.2.3.1 编写函数调用
9.2.3.2 控制变量范围
9.2.3.3 按值或按引用传递函数参数
9.2.3.4 有关调用函数的其他要点
9.2.4 return 语句
9.3 变量类型是动态的
9.3.1 标准 awk 中的动态键入
9.3.2 在 gawk 中动态输入
9.4 间接函数调用
9.5 总结
第二部分:
用 awk 解决问题
10 awk 函数库
10.1 命名库函数全局变量
10.2 常规编程
10.2.1 将字符串转换为数字
10.2.2 断言
10.2.3 舍入数字
10.2.4 悬崖随机数生成器
10.2.5 在字符和数字之间进行翻译
10.2.6 将数组合并为字符串
10.2.7 管理一天中的时间
10.2.8 一次读取整个文件
10.2.9 引用要传递给 Shell 的字符串
10.2.10 检查值是否为数字
10.2.11 生成 CSV 数据
10.3 数据文件管理
10.3.1 记录数据文件边界
10.3.2 重新读取当前文件
10.3.3 检查可读数据文件
10.3.4 检查零长度文件
10.3.5 将工作分配视为文件名
10.4 处理命令行选项
10.5 读取用户数据库
10.6 读取 Group 数据库
10.7 遍历数组中的数组
10.8 总结
10.9 练习
11 实用的 awk 程序
11.1 运行示例程序
11.2 为了乐趣和利润而重新发明轮子
11.2.1 剪切字段和列
11.2.2 在文件中搜索正则表达式
11.2.3 打印出用户信息
11.2.4 将大文件分割成多个部分
11.2.5 将输出复制到多个文件中
11.2.6 打印非重复的文本行
11.2.7 计数
11.2.7.1 现代字符集
11.2.7.2 扩展简介
11.2.7.3 的代码 wc.awk
11.3 awk 程序的抓包
11.3.1 在文档中查找重复的单词
11.3.2 闹钟程序
11.3.3 音译字符
11.3.4 打印邮寄标签
11.3.5 生成单词使用计数
11.3.6 从未排序的文本中删除重复项
11.3.7 从 Texinfo 源文件中提取程序
11.3.8 简单的流编辑器
11.3.9 使用库函数的简单方法
11.3.10 从字典中查找 Anagram
11.3.11 现在 For Something Completely Different
11.4 总结
11.5 练习
第三部分:
超越标准,傻瓜
12 gawk 的高级功能
12.1 允许非十进制 Importing 数据
12.2 布尔类型化值
12.3 控制数组遍历和数组排序
12.3.1 控制数组遍历
12.3.2 使用 gawk 对数组值和索引进行排序
12.4 与其他进程的双向通信
12.5 使用 gawk 进行网络编程
12.6 对 awk 程序进行性能分析
12.7 在运行之间保留数据
12.8 内置功能与扩展
12.9 总结
13 使用 gawk 进行国际化
13.1 国际化和本地化
13.2 GNU gettext
13.3 国际化 awk 程序
13.4 翻译 awk 程序
13.4.1 提取标记的字符串
13.4.2 重新排列 printf 参数
13.4.3 awk 可移植性问题
13.5 一个简单的国际化示例
13.6 Gawk 会说你的语言
13.7 总结
14 调试 awk 程序
14.1 gawk 调试器简介
14.1.1 常规调试
14.1.2 调试概念
14.1.3 awk 调试
14.2 gawk 调试会话示例
14.2.1 如何启动 Debugger
14.2.2 查找 Bug
14.3 主要 Debugger 命令
14.3.1 断点控制
14.3.2 执行控制
14.3.3 查看和更改数据
14.3.4 使用堆栈
14.3.5 获取有关程序和调试器状态的信息
14.3.6 其他命令
14.4 Readline 支持
14.5 限制
14.6 总结
15 gawk 中的命名空间
15.1 标准 awk 的单个命名空间
15.2 限定名称
15.3 默认命名空间
15.4 更改名称空间
15.5 名称空间和组件命名规则
15.6 内部名称管理
15.7 命名空间示例
15.8 命名空间和其他 gawk 功能
15.9 总结
16 用 gawk 的算术和任意精度算术
16.1 计算机算术的一般描述
16.2 其他须知
16.3 gawk 中的任意精度算术特征
16.3.1 任意精度算术要假释了!
16.3.2 任意精度简介
16.4 浮点运算:Caveat Emptor!
16.4.1 浮点运算不精确
16.4.1.1 许多数字无法精确表示
16.4.1.2 小心比较值
16.4.1.3 错误累积
16.4.1.4 他们在学校里没有讨论的浮点值
16.4.2 获得所需的精度
16.4.3 尝试一些额外的精度和舍入
16.4.4 设置精度
16.4.5 设置舍入模式
16.5 使用 gawk 的任意精度整数算术
16.6 如何检查 MPFR 是否可用
16.7 标准与现有实践
16.8 总结
17 为 gawk 编写扩展
17.1 介绍
17.2 扩展许可
17.3 它在高级别上的工作原理
17.4 接口说明
17.4.1 简介
17.4.2 通用数据类型
17.4.3 内存分配函数和便捷宏
17.4.4 构造函数
17.4.5 管理 MPFR 和 GMP 值
17.4.6 注册函数
17.4.6.1 注册扩展函数
17.4.6.2 注册退出回调函数
17.4.6.3 注册扩展版本字符串
17.4.6.4 自定义输入解析器
17.4.6.5 自定义输出包装器
17.4.6.6 自定义双向处理器
17.4.7 打印消息
17.4.8 更新 ERRNO
17.4.9 请求值
17.4.10 访问和更新参数
17.4.11 符号表访问
17.4.11.1 按名称访问和更新变量
17.4.11.2 Cookie 的变量访问和更新
17.4.11.3 创建和使用缓存的值
17.4.12 数组作
17.4.12.1 数组数据类型
17.4.12.2 数组函数
17.4.12.3 使用数组的所有元素
17.4.12.4 如何创建和填充数组
17.4.13 访问和处理重定向
17.4.14 API 变量
17.4.14.1. API 版本常量和变量
17.4.14.2 GMP 和 MPFR 版本信息
17.4.14.3 信息变量
17.4.15 样板代码
17.4.16 API 版本 1 中的更改
17.5 gawk 如何查找扩展
17.6 示例:某些文件函数
17.6.1 使用 chdir() 和 stat()
17.6.2 chdir() 和 stat() 的 C 代码
17.6.3 集成扩展
17.7 gawk 分发中的示例扩展
17.7.1 与文件相关的函数
17.7.2 fnmatch() 接口
17.7.3 fork()、wait() 和 waitpid() 的接口
17.7.4 启用就地文件编辑
17.7.5 字符和数值:ord() 和 chr()
17.7.6 读取目录
17.7.7 倒车输出
17.7.8 双向 I/O 示例
17.7.9 转储和恢复阵列
17.7.10 读取整个文件
17.7.11 扩展时间函数
17.7.12 API 测试
17.8 gawkextlib 项目
17.9 总结
17.10 练习

这也行,从linux命令立马变得高大上了。后续会总结awk语言的常用案例。

—END—

相关文章:

linux awk命令和awk语言

linux awk和awk语言 通常大家说的awk几乎都是在linux/unix中使用的awk命令&#xff0c;见下&#xff0c; https://www.geeksforgeeks.org/awk-command-unixlinux-examples/ 作为命令使用的话&#xff0c;存在下内容 Awk 是一个工具&#xff0c;使程序员能够编写小巧但有效的…...

基于字符的卷积网络在文本分类中的应用与探索

该论文探讨了使用基于字符的卷积网络(ConvNets)进行文本分类的方法,并通过构建大规模数据集展示了其在文本分类任务中的优越性能。与传统的词袋模型、N-gram模型及其TF-IDF变体,以及基于词的卷积网络和循环神经网络等深度学习模型进行了对比。研究发现,基于字符的卷积网络…...

uniapp使用蓝牙,usb,局域网,打印机打印

使用流程&#xff08;支持安卓和iOS&#xff09; 引入SDK 引入原生插件包地址如下 https://github.com/oldfive20250214/UniPrinterDemo 连接设备 安卓支持经典蓝牙、ble蓝牙、usb、局域网&#xff08;参考API&#xff09; iOS支持ble蓝牙、局域网&#xff08;参考API&…...

MyBatis 与 JDBC 的关系?

MyBatis 与 JDBC 存在密切的关系&#xff0c;可以理解为&#xff1a;MyBatis 是对 JDBC 的封装和增强&#xff0c;但并没有完全取代 JDBC。 1. JDBC (Java Database Connectivity): 底层 API: JDBC 是 Java 访问数据库的底层 API&#xff0c;它提供了一套标准的接口和类&…...

QILSTE灯珠:尺寸光电全解析

QILSTE灯珠&#xff1a;尺寸光电全解析 &#x1f31f; 型号H4-115BGRYA/5M&#xff0c;由QILSTE&#xff08;HongKong&#xff09;Technology Co., Ltd精心打造&#xff0c;以其1.6x1.5x0.4mm的紧凑外观尺寸&#xff0c;展现高亮红光、翠绿、蓝的缤纷色彩。 &#x1f4cf; 尺寸…...

golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介

还记得2018年的夏天,刚毕业的我不知道该做些什么,于是自学了一周的go语言,想要找一份go语言工作的代码,当时的go还没有go mod来管理依赖包,在北京找了一个月的工作,找到了一个小公司做了后端开发,当然使用go语言开发,带着兴奋劲,年轻身体也好,边努力学习,边工作。 时…...

用IdleHandler来性能优化及原理源码分析

背景&#xff1a; 经常在做一些app冷启动速度优化等性能优化工作时候&#xff0c;经常可能会发现有时候需要引入一些第三方sdk&#xff0c;或者库&#xff0c;这些库一般会要求我们在onCreate中进行初始化等&#xff0c;但是onCreate属于生命周期的回调方法&#xff0c;如果on…...

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …...

长短期记忆网络(LSTM)学习指南

长短期记忆网络&#xff08;LSTM&#xff09;学习指南 1. 定义和背景 长短期记忆网络&#xff08;Long Short-Term Memory, LSTM&#xff09;是一种递归神经网络&#xff08;RNN&#xff09;的变体&#xff0c;旨在解决传统RNN在处理长期依赖关系时遇到的梯度消失或爆炸问题。…...

Swagger-01.介绍和使用方式

一.Swagger介绍 有了接口文档&#xff0c;我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能&#xff0c;后端如何验证我们开发的是否正确呢&#xff1f;我们就需要测试&#xff0c;使用Swagger就可以帮助后端生成接口文档&#xff0c;并且可以进行后端的接…...

Unity 使用NGUI制作无限滑动列表

原理&#xff1a; 复用几个子物体&#xff0c;通过子物体的循环移动实现&#xff0c;如下图 在第一个子物体滑动到超出一定数值时&#xff0c;使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复&#xff0c;向下滑动也是这…...

【并发编程】聊聊定时任务ScheduledThreadPool的实现原理和源码解析

ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池&#xff0c;主要有四种方式&#xff0c;具体可以看代码&#xff0c; 这里主要描述下 scheduleAtFixedRate &#xff1a; 除了第一次执行的时间&#xff0c;后面任务执行的时间 为 time MAX(任务执行时…...

HarmonyOS Next元服务网络请求封装实践

【HarmonyOS Next实战】元服务网络通信涅槃&#xff1a;深度封装如何实现80%性能跃升与零异常突破 ————从架构设计到工程落地的全链路优化指南 一、架构设计全景 1.1 分层架构模型 #mermaid-svg-VOia4RMx7iqmLnu7 {font-family:"trebuchet ms",verdana,arial,…...

如何在语言模型的参数中封装知识?——以T5模型为例

【摘要】 这篇论文探讨了大型语言模型在无需外部知识的情况下&#xff0c;能否通过预训练来存储和检索知识以回答开放领域的问题。作者通过微调预训练模型来回答问题&#xff0c;而这些模型在训练时并未提供任何额外的知识或上下文。这种方法随着模型规模的增加而表现出良好的…...

微服务的认识与拆分

微服务架构通过将应用分解为一组小的、独立的服务来实现&#xff0c;每个服务围绕特定业务功能构建&#xff0c;并能独立部署与扩展。这种架构增强了开发灵活性、提高了系统的可维护性和扩展性&#xff0c;使得团队可以更快地响应变化和市场需求。 目录 认识微服务 单体架构 …...

Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

Java-servlet&#xff08;三&#xff09;Java-servlet-Web环境搭建&#xff08;下&#xff09;利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…...

Spring 构造器注入和setter注入的比较

一、比较说明 在 Spring 框架中&#xff0c;构造器注入&#xff08;Constructor Injection&#xff09;和 Setter 注入&#xff08;Setter Injection&#xff09;是实现依赖注入&#xff08;DI&#xff09;的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及…...

如何选择DevOps平台?GitHub、GitLab、BitBucket、Jenkins对比与常见问题解答

本文内容来源github.com&#xff0c;由GitHub中国授权合作伙伴-创实信息进行翻译整理。 欢迎通过021-61210910、customershcsinfo.com联系我们&#xff0c;免费试用GitHub企业版。 软件是当今领先企业的核心&#xff0c;而开发者则是软件的核心。GitHub作为一个完整的开发者平台…...

react中的fiber和初次渲染

源码中定义了不同类型节点的枚举值 组件类型 文本节点HTML标签节点函数组件类组件等等 src/react/packages/react-reconciler/src/ReactWorkTags.js export const FunctionComponent 0; export const ClassComponent 1; export const IndeterminateComponent 2; // Befo…...

闭包+求解候选码+最小函数依赖集

一、闭包 直接上例题 简单明了 A的闭包ABC ABC的闭包ABCD ABCD的闭包ABCDE ABCDE的闭包ABCDEG 等于集合R的全集 所以A的闭包为ABCDEG AB的闭包为ABC 二、候选码 答案&#xff1a; 三、最小函数依赖集 求F的最小函数依赖集 去掉多余的 然后&#xff01; 化为最简...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示,带插图的空状态,Table7空状态2

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的&#xff1a; 通过一个俯视整个场地的正交摄像机&#xff0c;根据绑定在移动物体身上的粒子系统&#xff0c;来获取物体移动过的位置&#xff0c;记录到一张RenderTexture上作为轨迹图&#xff0c;再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…...

工具介绍《netcat》

nc&#xff08;netcat&#xff09;是一款功能强大的网络工具&#xff0c;被称为“网络瑞士军刀”&#xff0c;支持TCP/UDP协议&#xff0c;广泛用于调试、数据传输、端口扫描、网络连接测试等场景。以下是其详细介绍&#xff1a; 一、核心功能 端口扫描 检测目标主机的端口开放…...

嵌入式开发之串行数据处理

前题 前面几篇文章写了关于嵌入式软件开发时&#xff0c;关于串行数据处理的一些相关内容&#xff0c;有兴趣的可以看看《嵌入式开发&#xff1a;软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…...

Centos的ElasticSearch安装教程

由于我们是用于校园学习&#xff0c;所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录&#xff0c;大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...

SyntaxError: Unexpected token ‘xxx‘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...

Unity自定义区域UI滑动事件

自定义区域UI滑动事件 介绍制作1.创建一个Image2.创建脚本 总结 介绍 一提到滑动事件联想到有太多的插件了比如EastTouchBundle&#xff0c;今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。 制作 1.创建一个Image 2.创建脚本 using UnityEngine; us…...

单链表封装 - 使用JavaScript封装

痛苦就是在蜕变吗 目录 链表&#xff1a;链表的特点&#xff1a;单链表&#xff1a;单链表的封装- JS封装&#xff1a; 单链表的应用&#xff1a;解决回文&#xff1a;解决击鼓传花&#xff1a;十进制进制转换其他进制&#xff1a; 链表&#xff1a; 链表就是一种物理存储单元…...

GET3D:从图像中学习的高质量3D纹理形状的生成模型

【摘要】 本文提出了GET3D,这是一种新的生成模型,能够生成具有任意拓扑结构的高质量3D纹理网格,可以直接被3D渲染引擎使用并在下游应用中立即使用。现有的3D生成模型要么缺乏几何细节,要么生成的网格拓扑受限,通常不支持纹理,或者在生成过程中使用神经渲染器,使得它们在…...

TypeError: Cannot convert object to primitive value

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…...