【Linux】sed编辑器二
一、处理多行命令
sed编辑器有3种可用于处理多行文本的特殊命令。
- N:加入数据流中的下一行,创建一个多行组进行处理;
- D:删除多行组中的一行;
- P:打印多行组中的一行。
1、next命令:N
单行next命令
单行next(n)命令会告诉sed编辑器移动到数据流中的下一行,不用再返回到命令列表的最开始位置。通常sed编辑器在移动到数据流中的下一行之前,会在当前行中执行完所有定义好的命令,而单行next命令却不一样。
如下所示,文本test.txt中有两行空行。
我们想只删除第一行空行,执行下面的命令却无法做到,它会将两行空行都删除掉。
sed '/^$/d' test.txt
可以用单行next命令解决此问题:
sed '/成都/{n ; d}' test.txt # d表示删除
先用脚本查找到含有“成都”的那一行,然后,单行next命令(n)会让sed编辑器移动到文本的下一行,也就是我们想要删除的空行,接着,sed编辑器继续执行命令列表中的命令,即使用删除命令(d) 删除空行。sed编辑器在执行完命令脚本后会读取数据流中的下一行文本,并从头开始执行脚本,但它却找不到包含“成都”的行了,所以就不会再删除其它行。
合并文本行
单行next(n)命令会将数据流中的下一行移入sed编辑器的工作空间(模式空间)。多行版本的next(N)命令则是将下一行添加到模式空间中已有文本之后。这样就会将数据流中的两行文本合并到同一个模式空间中,文本行之间仍然用换行符分隔,但sed编辑器会将两行文本当成一行来处理。
模式空间(pattern space)是一块活跃的缓冲区,在sed编辑器执行命令时保存着检查的文本。
sed '/重庆/{N ; s/\n/ / }' test.txt
sed编辑器首先找到含有“重庆”的行,找到后,使用N命令将下一行与该行合并,接着使用替换命令s将换行符(\n)替换成空格。如此一来,两行文本就会成为一行后输出。
在数据文件中找到一个可能会分散在两行中的文本短语。
如下所示,电信和诈骗园区之间的 . 是用来匹配空格和换行符的,但如果它匹配到了换行符,就会删掉换行符,从而导致两行合并成一行。
可以使用两个替换命令解决上面两行合并成一行的问题。
第一个替换命令用来处理短语出现在单行中的情况,第二个替换命令用来处理短语出现在多行中的情况。
2、多行删除命令:D
sed编辑器中的多行删除命令(D)只会删除模式空间中的第一行,即删除该行中的换行符及其之间的所有字符。
删除目标数据字符串所在行的前一行。
sed '/^$/{N ; /缅北/D}' test.txt
sed编辑器首先会查找空行,然后用N命令将下一行加入模式空间,如果模式空间中有含有“缅北”的词语,那么D命令就会删除模式空间中的第一行。
3、多行打印命令:P
多行打印命令(P)只打印模式空间中的第一行,即打印模式空间中的换行符及其之前所有字符。当用-n选项来抑制脚本输出时,它就和显示文本的单行p命令的用法差不多。
如下所示,当出现多行匹配时,P命令只会打印模式空间中的第一行。此命令的强大之处在于其和N命令及D命令配合使用之时。
D命令的独特之处在于其删除模式空间中的第一行之后,会强制sed编辑器返回到脚本的起始处,对当前模式空间中的内容重新执行此命令(D命令不会从数据流中读取新行)。在脚本中加入N命令,就能单步扫过整个模式空间,对多行进行匹配。
sed -n '
N
s/#\n@//
P
D
' test.txt
整个过程是:先用sed将第一行载入模式空间,然后用N命令载入第二行(@),并将其附加到模式空间内的第一行之后。替换命令用空值替换来删除违规的数据(#\n@),然后P命令只打印模式空间中已经清理过的第一行。D命令将第一行从模式空间中删除,并返回到脚本的开头,下一个命令就将第三行文本读入模式空间,继续编辑循环。
二、保留空间
sed编辑器有另一块称作为保留空间(hold space)的缓冲区。当用户在处理模式空间中的某些行时,可以用保留空间临时保存部分行。
h | 将模式空间复制到保留空间 |
H | 将模式空间附加到保留空间 |
g | 将保留空间复制到模式空间 |
G | 将保留空间附加到模式空间 |
x | 交换模式空间和保留空间的内容 |
通常,在使用h命令或H命令将数据移入保留空间后,最终还是要用g命令、G命令或x命令将保存的数据重新移回模式空间,否则,一开始就不用考虑保存的问题。
sed -n '/缅北/{
> h ; p ;
> n ; p ;
> g ; p }
> ' test.txt
整个过程如下:
- sed使用正则表达式过滤出含有“缅北”的行;
- 当出现“缅北”的行时,{ }中的第一个命令 h 会将该行复制进保留空间。这是,模式空间和保留空间中的内容是一样的。
- p 命令会打印出模式空间的内容(缅北有电信 #1),也就是被复制进保留空间中的那一行。
- n 命令会提取数据流中的下一行(诈骗园区……),将其放入模式空间。现在,模式空间和保留空间的内容就不一样了。
- p 命令会打印出模式空间的内容(诈骗园区……)
- g 命令会将保留空间的内容(缅北有电信 #1)返回模式空间,替换模式空间中的当前文本。模式空间和保留空间的内容又相同了。
- p 命令会打印出模式空间的当前内容(诈骗园区……)
以相反的顺序输出:
sed -n '/缅北/{
> h ;
> n ; p ;
> g ; p }
> ' test.txt
三、排除命令
感叹号(!)命令用于排除(negate)命令,让原本会起作用的命令失效。
可以结合保留空间实现反转数据流中文本行的先后顺序。太复杂不过多展示。
bash shell中有 tac 命令,可以以倒序显示文本文件。
四、改变执行流程
通常来说,sed编辑器会从脚本的顶部开始,一直执行到脚本的结尾(D命令例外,它会强制sed编辑器在不读取新行的情况下返回到脚本的顶部)
1、分支命令:b
格式:[address]b [label]
- address:决定哪些行会触发分支命令
- label:定义要跳转的位置。如果没有label参数,则跳过触发分支命令的行,继续处理余下的文本行。
sed '{2,3b;
> s/line/replacement/}
> ' test.txt
分支命令跳过了第二行和第三行的替换命令,只替换了第一行和第四行。
如果不想跳到脚本末尾,可以定义label参数,指定分支命令要跳转到的位置。标签以冒号开始,最多可以有7个字符,将其放在分支命令之后。
sed '{/first/b jump1;
> s/line/replacement/
> :jump1
> s/line/Jump replacement/}
> ' test.txt
如下,分支命令指定,如果文本行中出现了first,则程序就应该跳到标签为jump1的脚本行,如果文本行不匹配分支address,则sed编辑器就会继续执行脚本中的命令,包括分支标签jump1之后的命令。因此,两个替换命令s都会被应用于不匹配分支address的行。
如果某行匹配分支address,那么sed编辑器就会跳转到带有分支标签jump1的那一行,因此只有最后一个替换命令会被执行。
如下例子演示了跳转到sed脚本下方的标签:
2、测试命令:t
测试命令也可以改变sed编辑器脚本的执行流程。它会根据先前替换命令的结果跳转到某个label处,而不是根据address进行跳转。
如果替换命令成功匹配并完成了替换,测试命令就会跳转到指定的标签。如果替换命令未能匹配指定的模式,测试命令就不会跳转。
格式:[address]t [labe1]
在没有指定label的情况下,如果测试成功,sed就会跳转到脚本结尾。
sed '{s/first/matched/ ; t
> s/line/replacement/}
> ' test.txt
第一个替换命令会先查找first,如果匹配了行中的模式,就替换文本,而且测试命令会跳过后面的替换命令。如果第一个替换未能匹配,则执行第二个替换命令。 (注意,这里说的是第二行的first替换成matched后,就不会再执行替换第二行的line了,而不是指不执行后面文本行的替换)
五、模式替换
1、&符号
&符号可以代表替换命令中的匹配模式,不管匹配到什么样的文本,都可以使用此符号代表这部分内容。
使用点号匹配at前面的那个字符,然而,用于替换的字符串“.at”无法指定点号已匹配到的字符cat和hat。
使用&符号可以解决该问题:当匹配到单词cat,“cat”就会成为替换后的单词;当匹配到单词hat,“hat”就会成为替换后的单词。
2、替换部分
&符号虽然能代表替换命令中指定模式所匹配的字符串。但有时候,用户只想获取该字符的部分。
sed编辑器使用圆括号来定义替换模式中的子模式,随后使用特殊的字符组合来引用每个子模式匹配到的文本。反向引用由反斜线和数字组成,数字表明子模式的序号,第一个子模式为\1,第二个子模式为\2,以此类推。
在替换命令中使用圆括号时,必须使用转义字符\,用此表明这不是普通的圆括号,而是用于划分子模式的。这跟转义其他特殊字符正好相反。
echo "The Guide to Programming" | sed 's/\(Guide to\) Programming/\1 DevOps/'
此命令将Guide to放入圆括号,将其标示为一个子模式,然后使用\1来提取该子模式匹配到的文本。
如果需要用一个单词替换一个短语,而此单词正好又是该短语的子串:
ehco "That furry cat is pretty." | sed 's/furry \(.at\)/\1/'
六、在脚本中使用sed
1、包装器
可以将sed编辑器命令放入shell脚本包装器,这样就不用每次使用时都重新输入整个脚本。包装器充当的是sed编辑器脚本和命令行之间的中间人角色。
#!/bin/bash
#将sed编辑器放入shell脚本包装器
#反转文件中的内容sed -n '{1!G; h; $p}' $1
exit
2、重定向sed的输出
默认情况下,sed编辑器会将shell脚本的结果输出到STDOUT。可以使用 $() 将sed编辑器命令的输出重定向到一个变量中。
#!/bin/bash
# 对sed编辑器使用shell包装器
# 计算阶乘并用逗号格式化结果factorial=1
counter=1
number=20while [ $counter -le $number ]
dofactorial=$[ $factorial * $counter ]counter=$[ $counter + 1 ]
doneresult=$(echo $factorial |
sed '{
:start
s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/
t start
}')echo "阶乘的结果是 $result"exit
七、sed实用工具
1、加倍行间距
sed 'G' test.txt
G命令只是将保留空间内容附加到模式空间内容之后,当启动sed编辑器时,保留空间只有一个空行。将它附加到已有行之后,就创建出了空行。
但是最后一行也有空行。
使用排除符号(!)和行尾符号($)确保脚本不会将空行附加到数据流的最后一行之后。
sed '$!G' test.txt
2、对可能已含有空行的文件加倍行间距
对于文本中可能已经含有空行的数据,先要将已有的空行删除,删除空行需要使用 d 命令和一个匹配空行的模式:/^$/d;然后用 G 命令在每行之后插入新的空行。
sed '/^$/d ; $!G' test.txt
3、给文件中的行编号
可以使用等号 = 显示文本中的行号
sed "=" test.txt
在获得 等号命令 的输出之后,可以通过管道符将输出传给另一个sed编辑器,由后者使用 N命令合并行号和数据行,急着使用 替换命令s 将换行符更换成空格或制表符。
sed "=" test.txt | sed 'N; s/\n/ /'
有些bash shell命令也可以查看行号
cat -n test.txtnl test.txt
4、打印末尾行
……
打印末尾的10行数据
sed '{
:start
$q ; N ; 11,$D
b start
}' test.txt
5、删除空行
删除连续的空行
删除连续空行的关键在于创建包含一个非空行和一个空行的地址区间。如果sed编辑器遇到了这个区间,它不会删除行。但对于不属于该区间的行(两个或更多的空行),则执行删除操作。
如下所示,脚本中指定的区间是/./到/^$/。区间的开始地址会匹配任何至少含有一个字符的行,区间的结束地址会匹配一个空行,在这个区间的行不会被删除。
sed '/./,/^$/!d' test.txt
删除开头的空行
如下所示,脚本用地址区间来决定要删除哪些行。这个区间从含有字符的行开始,一直到数据流结束,在这个区间内的任何行都不会从输出中删除,即含有字符的第一行之前的任何行都会被删除。
sed '/./,$!d' test.txt
删除结尾的空行
sed '{
:start
/^\n*$/{$d; N; b start }
}' test.txt
删除HTML标签
sed 's/<[^>]*>//g' test1.txt
删除多余的空行,增加 D命令:
sed 's/<[^>]*>//g ; /^$/d' test1.txt
相关文章:
【Linux】sed编辑器二
一、处理多行命令 sed编辑器有3种可用于处理多行文本的特殊命令。 N:加入数据流中的下一行,创建一个多行组进行处理;D:删除多行组中的一行;P:打印多行组中的一行。 1、next命令:N 单行next命…...
STM32 FreeRTOS移植
目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …...
python 寻找数据拐点
import numpy as np import cv2 from scipy.signal import find_peaks# 示例数据 y_data [365.63258786, 318.34824281, 258.28434505, 228.8913738, 190.87220447, 158.28434505, 129.53035144, 111.95846645, 111.95846645, 120.26517572, 140.71246006, 161.79872204, 180.…...
Windows 蓝牙驱动开发-蓝牙设备栈
蓝牙设备栈 蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 有了这个堆栈,已启用蓝牙的设备可以彼此定位并建立连接。 在此类连接中,设备可以通过各种应用程序交换数据并彼此交互。 下图显示了蓝牙驱动程序堆栈中的模块,以…...
css hover样式调试
调试 hover后才出现的元素如何调试 打开开发者工具,鼠标放在hover时才出现的元素上,然后点击右键不要选中任何选项,将鼠标移动到开发者工具的调试面板中按下N键,此时悬浮的元素不会消失,定位成功 调试元素悬浮样式 …...
【Unity】unity3D 调用LoadSceneAsync 场景切换后比较暗 部门材质丢失
解决方法:两个场景使用同样灯光 现象 直接进入第二个场景是可以正常显示 调用LoadSceneAsync来切换后,第二个场景出现比较暗的情况 解决方法:两个场景使用同样灯光,在loading 的场景中加入灯光。 Light—Directional Light 如果…...
代码随想录二刷|字符串总结
代码随想录二刷|字符串 反转数字 题干 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 思路 class Soluti…...
Linux浅谈——管道、网络配置和客户端软件的使用
目录 一、管道 1、管道符 2、过滤功能 3、特殊功能 4、扩展处理 5、xargs命令扩展 二、网络配置 1、ifconfig查看网络信息 2、配置文件详解 网卡配置文件位置 3、systemctl查看网卡状态 4、systemctl启动/重启/停止网卡 三、客户端软件 1、什么是SSH 2、常用SSH终…...
HBASE学习(一)
1.HBASE基础架构, 1.1 参考: HBase集群架构与读写优化:理解核心机制与性能提升-CSDN博客 1.2问题: 1.FLUSH对hbase的影响 2. HLog和memstore的区别 hlog中存储的是操作记录,比如写、删除。而memstor中存储的是写入…...
深入解析 Linux 内核中的 IPoIB 驱动:ipoib.h 文件分析
引言 InfiniBand 是一种高性能、低延迟的网络互联技术,广泛应用于高性能计算(HPC)和数据中心。为了在 InfiniBand 网络上运行传统的 IP 协议栈,Linux 内核提供了 IP over InfiniBand (IPoIB) 驱动。ipoib.h 是 IPoIB 驱动的核心头文件,定义了驱动所需的数据结构、常量、宏…...
2025-01-16 思考-人生下半场的归途-那温和的良夜
摘要: 转眼已经不再年轻,生命赠与的礼物,也可以说开始陷入归途。不再被外界推着走之后,发现可以有更多的精力和时间可以用来内视,不被外界种种束缚。 在人生的下半场,其实更多的是接受失去,正如人生上半场…...
【C++篇】红黑树的实现
目录 前言: 一,红黑树的概念 1.1,红黑树的规则 1.2,红黑树的最长路径 1.3,红黑树的效率分析 二,红黑树的实现 2.1,红黑树的结构 2.2,红黑树的插入 2.2.1,大致过程…...
Linux的常用命令(一)
目录 一、文件处理命令 1.文件处理命令ls 2.文件处理命令cd 3.文件处理命令pwd 4.文件处理命令touch 5.文件处理命令mkdir 6.文件处理命令cp 7.文件处理命令mv 8.文件处理命令rm 9.文件处理命令cat 10.文件处理命令more 11.文件处理命令head 12.文件处理命令tail …...
小米vela系统(基于开源nuttx内核)——如何使用信号量进行PV操作
如何使用信号量进行PV操作 前言信号量1. 信号量简介2. NuttX中信号量的创建与使用2.1 Nuttx信号量的初始化和销毁2.2 信号量的等待和发布 3. 信号量的实际应用:下载任务示例3.1 实际代码3.2 代码说明3.3 执行说明 4. 信号量的优势与应用场景5. 常见应用场景…...
(01)STM32—GPIO
1. GPIO简介 GPIO(General Purpose Input Output)通用输入输出端口。可配置为8种输入输出模式。引脚电平:0V~3.3V,部分引脚可容忍5V。输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时…...
浏览器输入http形式网址后自动跳转https解决方法
一、问题描述 使用浏览器 网上冲浪 时会遇到一个情况: 在浏览器中输入“http域名”后会自动变成“https 域名”的形式,此时“https 域名”的网站可能已停止对外提供服务了,这时会出现如下不友好的网页提示: 二、处理方法&#x…...
mybatis的多对一、一对多的用法
目录 1、使用VO聚合对象(可以解决这两种情况) 多对一: 一对多: 2、非聚合的多对一做法: 3、非聚合的一对多做法: 1、使用VO聚合对象(可以解决这两种情况) 当我需要多对一、一对…...
生产管理看板助力节能科技公司实现数据自动化管理
在节能科技公司的生产过程中,数据管理的自动化是提高生产效率和产品质量的关键。然而,许多公司在数据记录、展示、对比和存档方面仍面临诸多痛点,如产品检测数据无法自动记录、缺乏直观的产线状态展示、检测数据对比繁琐耗时,以及…...
网络科技有限公司网络设计
网络科技有限公司网络设计 摘要:伴随着信息科技发展,上网变得一件必不可少的事情,当然网络安全对我们也是越来越重要。像我们的传统网结构是无法为我们的上网提供一个安全的网络环境。锐雯网络科技有限公司就是以网络安全为基本的对网络惊醒…...
C++没有Y Combinator?使用 C++ 实现 Y Combinator(中英双语)
C 中并没有直接内置的 Y Combinator,但通过现代 C 特性(如 lambda 表达式 和 std::function),我们可以实现一个类似 Y Combinator 的功能。 下面我们来详细讲解如何在 C 中实现 Y Combinator。 使用 C 实现 Y Combinator 目标 …...
YOLOv10-1.1部分代码阅读笔记-loaders.py
loaders.py ultralytics\data\loaders.py 目录 loaders.py 1.所需的库和模块 2.class SourceTypes: 3.class LoadStreams: 4.class LoadScreenshots: 5.class LoadImagesAndVideos: 6.class LoadPilAndNumpy: 7.class LoadTensor: 8.def autocast_list(source…...
《戴森球计划》异地远程联机攻略
文章目录 前言1. 下载MOD2.配置cpolar内网穿透3. 主机开启联机3.1 玩家加入游戏 4. 配置固定的TCP端口5. 游玩体验 前言 《戴森球计划》不仅是一款融合了科幻冒险与经营管理元素的游戏,更是一个让玩家在浩瀚宇宙中尽情探索和创造的平台。在这个游戏中,你…...
【Linux跬步积累】—— 线程
🌏博客主页:PH_modest的博客主页 🚩当前专栏:Linux跬步积累 💌其他专栏: 🔴 每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮࿰…...
计算机网络 (46)简单网络管理协议SNMP
前言 简单网络管理协议(SNMP,Simple Network Management Protocol)是一种用于在计算机网络中管理网络节点的标准协议。 一、概述 SNMP是基于TCP/IP五层协议中的应用层协议,它使网络管理员能够管理网络效能,发现并解决网…...
模型 前景理论
系列文章 分享模型,了解更多👉 模型_思维模型目录。面对得失,人们更怕失,参考点定输赢。 1 前景理论的应用 1.1 前景理论在投资决策中的应用案例 假设一位投资者面临两个投资方案的选择: 方案A:投资一只…...
Android ScrollView嵌套X5WebView大片空白问题
scrollview嵌套后webview的高度不可控。留有大片空白。 注:官方不建议scrollview嵌套webview 最好让webview自身滚动 解决方案: act_news_detail_wv.setWebViewClient(new WebViewClient() {Overridepublic void onPageFinished(WebView webView, Str…...
频域增强通道注意力机制EFCAM模型详解及代码复现
背景与动机 在深度学习领域,如何有效处理时间序列数据一直是一个重要的研究方向。近年来, 频域分析技术 在时间序列处理中展现出了巨大潜力,特别是离散余弦变换(DCT)因其能够高效捕捉低频信息并避免高频噪声干扰而受到广泛关注。 FECAM模型的开发正是基于这一背景,旨在…...
[计算机网络]一. 计算机网络概论第一部分
作者申明:作者所有文章借助了各个渠道的图片视频以及资料,在此致谢。作者所有文章不用于盈利,只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…...
第十三章:数据库技术
文章目录: 一:基础 1.概念 2.特点 3.常见数据库品牌 4.数据库应⽤系统 4.1 C/S 4.2 B/S 5.数据模型的分类 6.名词解析 7.关系运算 二:Access 1.基础 2.操作 2.1 建立表 2.2 维护表 2.3 创建查询 2.4 创建窗体 2.5 创建报表…...
中等难度——python实现电子宠物和截图工具
import io # 文件处理 import nt # windows nt 库直接获取对应的磁盘空间 import time # 时间 import zlib # 加解密 import ctypes # 调用 import struct # 处理字节二进制 import base64 # 编解码 import threading # 线程 import tkinter as tk # tk from datetime…...
构建优雅、高效的 Nodejs 命令行工具 - Archons
目录 项目简介安装基本用法样例创建一个简单的命令行工具使用archons上下文创建进度条 最后 项目地址: https://github.com/noctisynth/archons Bug反馈或功能请求:https://github.com/noctisynth/archons/issues 项目简介 Archons意思是“执政官”,我使…...
源码编译安装httpd 2.4,提供系统服务管理脚本并测试
1.安装httpd wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gzbmcv tar -zxvf httpd-2.4.62.tar.gz cd httpd-2.4.62 2.安装依赖包 sudo yum install -y gcc make apr-devel apr-util-devel pcre-devel sudo yum groupinstall "Development Tools"…...
【爬虫】某某查cookie逆向
代码仅供技术人员进行学习和研究使用,请勿将其用于非法用途或以任何方式窃取第三方数据。使用该代码产生的所有风险均由用户自行承担,作者不对用户因使用该代码而造成的任何损失或损害承担任何责任。 加密参数 加密参数主要是cookie,其中只有…...
【华为路由/交换机的ssh远程设置】
华为路由/交换机的ssh远程设置 R1(client):10.1.1.1 R2(server):10.1.1.2 R2服务端配置: 生成本机密钥 查看生成的密钥 设置AAA授权验证方式,并设置支持SSH协议 创建本地用户&…...
Linux:System V - 共享内存
1.System V共享内存的原理 通过为用户提供系统调用接口,让用户可以申请一块空间,进程A/B也可以通过系统调用接口将创建好的内存通过页表映射进进程的地址空间。完成让不同的两个进程看见同一份资源的目的。如果未来不想继续通信,取消进程和内…...
闪豆多平台视频批量下载器
1. 视频链接获取与解析 首先,在哔哩哔哩网页中随意点击一个视频,比如你最近迷上了一个UP主的美食制作视频,想要下载下来慢慢学。点击视频后,复制视频页面的链接。复制完成后,不要急着关闭浏览器,因为接下来…...
《鸿蒙Next微内核:解锁人工智能决策树并行计算的加速密码》
在当今人工智能飞速发展的时代,提升运算速度是推动其进步的关键。鸿蒙Next以其独特的微内核特性,为设计决策树的并行计算框架提供了新的思路和契机。 鸿蒙Next微内核特性概述 鸿蒙Next的微内核架构将核心功能模块化,仅保留进程管理、内存管…...
AWS Lambda
AWS Lambda 是 Amazon Web Services(AWS)提供的无服务器计算服务,它让开发者能够运行代码而不需要管理服务器或基础设施。AWS Lambda 会自动处理代码的执行、扩展和计费,开发者只需关注编写和部署代码,而无需担心底层硬…...
Python入门教程丨2.3 流程控制、算法效率分析及优化
流程控制是用于控制程序执行顺序的机制,它决定了程序中的语句按照何种顺序被执行。 本节课将详细讲解 Python 流程控制的三大核心结构:顺序、条件和循环,并配备一些小案例。 1. 顺序结构:从头到尾依次执行 顺序结构是程序中最基…...
NVIDIA发布个人超算利器project digital,标志着ai元年的开启
上图NVIDIA公司创始人兼首席执行官 黄仁勋(Jensen Huang) 这些年被大家熟知的赛博朋克风格一直都是未来的代言词,可以承载人类记忆的芯片,甚至能独立思考的仿生人,现在,随着NVIDIA的project digital发布之后…...
spring-mvc源码分析v3.3.0
分析下springboot内嵌tomcat启动流程,即springboot-mvc <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.0</version> </dependency>环境…...
反爬风控设计之请求头顺序检测
本次主要讲解请求头的顺序检测的反爬实现, 如下使用Django写的headers请求头顺序检验算法: def index(request):# 获取请求头的顺序request_order list(request.META.keys())print(request_order)# 定义标准请求头顺序standard_order ["HTTP_HO…...
力扣 查找元素的位置
二分查找经典例题。 题目 要是只是从数组中用二分查找对应的元素,套一下模板一下就可以得出了,然后这题就在于其中会有多个目标元素,要用不同的方式在找到第一个元素时再做偏移。 时间复杂度:O(log n),空间复杂度&am…...
Android-V lmkd 中的那些属性值
源码基于:Android V 相关博文: Android lmkd 机制详解(一) Android lmkd 机制详解(二) Android lmkd 机制从R到T 1. 汇总 属性名说明默认值 ro.lmk.debug 启动 lmkd 的debug 模式,会打印一…...
LabVIEW 程序中的 R6025 错误
R6025错误 通常是 运行时库 错误,特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现,尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 可能的原因: 内存访问冲突: R6025 错误通常是由于程序在运行时访问无效内…...
vmware虚拟机配置ubuntu 18.04(20.04)静态IP地址
VMware版本 :VMware Workstation 17 Pro ubuntu版本:ubuntu-18.04.4-desktop-amd64 主机环境 win11 1. 修改 VMware虚拟网络编辑器 打开vmware,点击顶部的“编辑"菜单,打开 ”虚拟化网络编辑器“ 。 选择更改设置&#…...
mybatis延迟加载、缓存
目录 一、所需表 二、延迟加载 1.延迟加载概念 2.立即加载和延迟加载的应用场景 3.多对一延迟加载查询演示 (1)实体类 User Account (2)AccountMapper接口 (3)AccountMapper.xml (4)UserMapper接口 (5)UserMapper.xml (6)在总配置文件(mybatis-config.xml)中开启延…...
云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破
在信息技术应用创新的浪潮中,仓颉社区吸引了众多企业和开发者的积极参与,已有多个应用成功落地,展现出蓬勃的创新活力。仓颉编程语言精心遴选了在社区建设、应用创新、开源共建、技术布道等方面做出突出贡献的优秀项目应用,并颁发…...
设计模式02:结构型设计模式之适配器模式使用情景及其基础Demo
1.适配器模式 用途:接口兼容评价:复杂、冗余、难以调试,个人认为直接在旧系统那里封装一个新实现调用旧实现就好了场景:系统A、B、C想调用同一个功能接口,但是实现细节存在差异时(其实就是入参和出参转化处…...
镭速大文件传输视频文件预览实现原理
镭速可以支持视频预览,在测试过程中需要大量不同格式的视频,如果直接去找各种格式的视频不太现实,所以就会用到一个视频格式转换的工具ffmpeg,本文将介绍ffmpeg的基本使用方法。FFmpeg 是一个免费开源的音视频处理工具,…...