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

文本三剑客之sed编辑器

文本三剑客:都是按行读取后处理。

  • grep 过滤行内容。
  • awk 过滤字段。
  • sed 过滤行内容;修改行内容。

 sed编辑器

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。

sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。

sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

sed的工作流程

sed的工作流程主要包括读取、执行和显示三个过程:

  • 读取: sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space )。
  • 执行: 默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
  • 显示: 发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行, 直至所有内容被处理完。

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非使用"sed -i"修改源文件、或使用重定向输出到新的文件中。

sed命令格式

 sed -e '操作' 文件1 文件2sed -n -e '操作' 文件1 文件2sed -f  脚本文件  文件1 文件2sed -i -e '操作' 文件1 文件2

执行多条命令的三种方法

 sed -n -e '操作1' -e '操作2' 文件​sed -n -e '操作1;操作2' 文件​sed -e 'n{操作1操作2......}' 文件1

常用选项:

选项作用
-e 或--expression=表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file=表示用指定的脚本文件来处理输入的文本文件
-h 或--help显示帮助
-n、--quiet或--silent禁止sed编辑器输出,但可以与p命令一起使用完成输出
-i直接修改目标文本文件

常用操作:

操作作用
s替换,替换指定字符
d删除,删除选定的行
a增加,在当前行下方增加一行指定内容
i插入,在选定行上方插入一行指定内容
c替换,将选定行替换为指定内容
y字符转换,转换前后的字符长度必须相同
p打印行内容。如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用
=打印行号
l (小写L)打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)

sed的核心功能:增删改查(可配合正则表达式)

 查: p​删: d​改: s(字符串替换)、c(整行替换)、y(对应字符进行替换,效果类似tr命令)​增: i(在行前插入内容)、a(在行后添加内容)、r(在行后读入文件的内容)​复制粘贴:H(复制)、d(删除)、G(粘贴到指定行下方)

 sed 查找打印p

4.1 不指定行(顺序处理每一行)

1、sed编辑器默认输出行内容,-n选项可以禁止输出。如果不加-n,却使用p操作,那么每行内容会打印两次。

sed -e "p" :每行内容打印两次。

sed -n "p" :每行内容只打印一次。

 [root@yuji ~]# cat ff.txt    //查看文件内容,共10行onetwothreefourfivesixseveneightnineten[root@yuji ~]# sed -e 'p' ff.txt     //每行内容会打印两次oneonetwotwothreethreefourfourfivefivesixsixsevenseveneighteightnineninetenten[root@yuji ~]# sed -n -e 'p' ff.txt    //每行内容只打印一次onetwothreefourfivesixseveneightnineten

2、'n' 打印行号。

sed -n '=' :只打印行号。

sed -e 'n' : 打印行号和行内容。

sed -n '=;p' :打印行号和行内容。

[root@yuji ~]# sed -e '=' ff.txt     //打印行号和行内容1one2two3three4four5five6six7seven8eight9nine10ten

sed 执行多条命令的三种方法。

以打印行号和行内容为例:

#方法一sed -n -e '=' -e 'p'  file.txt​#方法二sed -n -e '=;p'  file.txt​#方法三:换行操作sed -n '=p' file.txt

'l' 打印文本即隐藏字符(结束符$,制表符\t)。

 [root@yuji ~]# sed -n 'l' ff.txtone$two$three$four$five$six$seven$eight$nine$ten$

sed 对指定行进行操作

两种方法:

  1. 以数字形式表示行区间;
  2. 用文本模式(字符串)来过滤出行(一般结合正则表达式)。

以数字形式表示行区间:

操作含义
'1p'打印第一行
'$p'打印最后一行
'1,3p'打印连续行,打印第一行到第三行
'6,$p'打印第六行到最后一行
'1,+3p'打印第一行加后面三行(即打印第一到第四行)
'5q'打印前五行后退出
'p;n'打印奇数行
'n;p'打印偶数行

使用字符串匹配出行:

操作含义
'/root/p'打印包含root的行
'/root/!p'打印不包含root的行。! 表示取反
'/^root/p'打印以root开头的行
'/bash$/'打印以bash结尾的行
'/root l bash/p'打印包含root或bash的行。"l"是扩展正则表达式的元字符,要使用sed -r
'6,/root/p'打印第6行到第一个包含root的行

使用正则表达式,匹配行内容

先将/etc/passwd 文件复制到家目录下并改名为pass.txt,方便演示

[root@yuji ~]# cp /etc/passwd pass.txt        //复制文件并改名
[root@yuji ~]# sed -n '/root/p' pass.txt      //打印包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@yuji ~]# sed -n '/^root/p' pass.txt      //打印以root开头的行
root:x:0:0:root:/root:/bin/bash
[root@yuji ~]# sed -n '/bash$/p' pass.txt      //打印以bash结尾的行
root:x:0:0:root:/root:/bin/bash
yuji2:x:1000:1000:yuji2:/home/yuji2:/bin/bash
nancy:x:1021:1021::/home/nancy:/bin/bash
helen:x:1022:1022::/home/helen:/bin/bash
[root@yuji ~]# sed -n '6,/root/p' pass.txt    //从第6行开始打印,一直到第一个包含root的行sync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologin[root@yuji ~]# sed -n '6,/root/=' pass.txt    //从从第6行开始打印行号,一直到第一个包含root的行678910

sed -r 支持扩展正则表达式。同时在 使用{n}、{n,}、{n,m}时,括号{}前不需要加反斜杠\ 。

 [root@yuji ~]# sed -n '/ro{2,}t/p' pass.txtroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@yuji ~]# sed -n -r '/ro{2,}t/p' pass.txtroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin​#打印包含root或bash的行[root@yuji ~]# sed -n  '/root|bash/p' pass.txt     //如果不加-r,则"|"前要加转义符\root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/bin/bashnancy:x:1021:1021::/home/nancy:/bin/bashhelen:x:1022:1022::/home/helen:/bin/bash[root@yuji ~]# sed -n -r '/root|bash/p' pass.txt   //"sed -r"支持扩展正则表达式root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/bin/bashnancy:x:1021:1021::/home/nancy:/bin/bashhelen:x:1022:1022::/home/helen:/bin/bash

通过字符串匹配出想要的行

[root@yuji ~]# sed '/e$/d' ff.txt    //删除以e结尾的行twofoursixseveneightten[root@yuji ~]# sed '/e$/!d' ff.txt   //除了以e结尾的行,其他行都删除onethreefive

'/字符串1/,/字符串2/d' :从第一个匹配的位置打开删除功能,到第二个匹配的位置删完后关闭删除功能。之后继续按这个规则向下查找删除。

[root@yuji ~]# cat 2.txt111222333444555111222333444555[root@yuji ~]# sed '/2/,/4/d' 2.txt  111555111555[root@yuji ~]# sed '/1/,/3/d' 2.txt444555444555

删除空行并保存:sed -i '/^$/d' file.txt (使用-i前先备份目标文件)

 [root@yuji ~]# cat file.txt11​22​33[root@yuji ~]# sed -i '/^$/d' file.txt[root@yuji ~]# cat file.txt112233

删除空行的三种方法:

  1. grep -v "^$" file.txt //过滤出非空行
  2. cat file.txt |tr -s "\n" //压缩换行符
  3. sed '/^$/d' file.txt //删除空行

sed 修改替换s c y

s:替换字符串

c:整行替换

y:字符替换,替换前后的字符串长度必须相同

 行范围 s/旧字符串/新字符串/替换标记​#4种替换标记:数字:表明新字符串将替换第几处匹配的地方g:表面新字符串将会替换所有匹配的地方p:打印与替换命令匹配的行,与-n一起使用w 文件:将替换的结果写入文件中
[root@yuji ~]# sed -n '/root/p' pass.txt        //打印所有包含root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@yuji ~]# sed -n 's/root/aaa/p' pass.txt       //将匹配行的第1个root替换成aaa
aaa:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/aaa:/sbin/nologin
[root@yuji ~]# sed -n 's/root/aaa/2p' pass.txt      //将匹配行的第2个root替换成aaa
root:x:0:0:aaa:/root:/bin/bash
[root@yuji ~]# sed -n 's/root/aaa/3p' pass.txt      //将匹配行的第3个root替换成aaa
root:x:0:0:root:/aaa:/bin/bash
[root@yuji ~]# sed -n 's/root/aaa/gp' pass.txt      //将匹配行的所有root替换成aaa
aaa:x:0:0:aaa:/aaa:/bin/bash
operator:x:11:0:operator:/aaa:/sbin/nologin
 [root@yuji ~]# sed -n 's/root//gp' pass.txt      //删除匹配行当所有root:x:0:0::/:/bin/bashoperator:x:11:0:operator:/:/sbin/nologin[root@yuji ~]# echo 000010101 | sed 's/^0*//'    //删除开头所有的010101

 [root@yuji ~]# sed -n 's/root//gp' pass.txt //删除匹配行当所有root  :x:0:0::/:/bin/bash  operator:x:11:0:operator:/:/sbin/nologin  [root@yuji ~]# echo 000010101 | sed 's/^0*//'

//删除开头所有的0  10101

[root@yuji ~]# sed -n '/^root/p' pass.txt     //打印所有以root开头的行root:x:0:0:root:/root:/bin/bash[root@yuji ~]# sed -n '/^root/ s/^/#/p' pass.txt     //过滤出以root开头的行,在行首加上##root:x:0:0:root:/root:/bin/bash​[root@yuji ~]# sed -n '/root/p' pass.txt            //打印包含root的行root:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@yuji ~]# sed -n '/root/ s/$/#/p' pass.txt     //在包含root的行的行尾加上#root:x:0:0:root:/root:/bin/bash#operator:x:11:0:operator:/root:/sbin/nologin#

另一种替换方式

将包含root内容的行进行注释:

用正则表达式匹配包含root的整行内容,之后在整行内容前加#。&代表前面使用正则表达式匹配到的整行内容。

[root@yuji ~]# sed -n '/root/ s/^/#/p' pass.txt     //过滤出包含root的行,在行首加上##root:x:0:0:root:/root:/bin/bash#operator:x:11:0:operator:/root:/sbin/nologin[root@yuji ~]# sed -n 's/.*root.*/#&/p' pass.txt#root:x:0:0:root:/root:/bin/bash#operator:x:11:0:operator:/root:/sbin/nologin
 [root@yuji ~]# vim 1.sh[root@yuji ~]# cat 1.sh/root/ s/^/#/p3,5 s/$/#/p​[root@yuji ~]# sed -n -f 1.sh pass.txt       //指定1.sh文件来执行#root:x:0:0:root:/root:/bin/bashdaemon:x:2:2:daemon:/sbin:/sbin/nologin#adm:x:3:4:adm:/var/adm:/sbin/nologin#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin##operator:x:11:0:operator:/root:/sbin/nologin

:指定分隔符

当字符串中包含"/"时,需要在前面加上转义符\,避免和分隔符"/"混淆。这样操作非常麻烦,且容易眼花看错,此时可以自己指定分隔符。

s后面的第一个字符就是分隔符,3个分隔符要保持一致,如果遇到跟分隔符相同的字符需要使用 \ 转义成普通字符。

#默认分隔符为"/"[root@yuji ~]# sed -n 's//bin/bash//sbin/nologin/p' pass.txtroot:x:0:0:root:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/sbin/nologinnancy:x:1021:1021::/home/nancy:/sbin/nologinhelen:x:1022:1022::/home/helen:/sbin/nologin​#指定#作为分割符[root@yuji ~]# sed -n 's#/bin/bash#/sbin/nologin#p' pass.txtroot:x:0:0:root:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/sbin/nologinnancy:x:1021:1021::/home/nancy:/sbin/nologinhelen:x:1022:1022::/home/helen:/sbin/nologin​#指定!作为分隔符[root@yuji ~]# sed -n 's!/bin/bash!/sbin/nologin!p' pass.txtroot:x:0:0:root:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/sbin/nologinnancy:x:1021:1021::/home/nancy:/sbin/nologinhelen:x:1022:1022::/home/helen:/sbin/nologin​#指定8作为分隔符[root@yuji ~]# sed -n 's8/bin/bash8/sbin/nologin8p' pass.txtroot:x:0:0:root:/root:/sbin/nologinyuji2:x:1000:1000:yuji2:/home/yuji2:/sbin/nologinnancy:x:1021:1021::/home/nancy:/sbin/nologinhelen:x:1022:1022::/home/helen:/sbin/nologin

[root@yuji ~]# cat ff.txtonetwothreefourfivesixseveneightnineten[root@yuji ~]# sed '/fo/c 22' ff.txt    //将包含fo的行,整体替换成22onetwothree22fivesixseveneightnine

单字符替换 y

使用y,是对单个字符进行替换,每个字符需要一一对应,不是整体替换。前后字符串长度需要一致,不然会报错。

示例:

遇到n替换成2,遇到o替换成5。

[root@yuji ~]# sed 'y/no/25/' ff.txt //遇到n替换成2,遇到o替换成5  52e  tw5  three  f5ur  five  six  seve2  eight  2i2e  te2  [root@yuji ~]# sed 'y/no/255/' ff.txt  sed:-e 表达式 #1,字符 9:“y”命令的字符串长度不同

sed 增加a i r

a:在行后添加内容

i:在行前插入内容

r:在行后读入文件内容

 [root@yuji ~]# sed '1,3a 22' ff.txt     //在第1~3行,每行下方添加一行内容one22two22three22fourfivesixseveneightnineten

 [root@yuji ~]# cat hh.txthello world[root@yuji ~]# sed '6r hh.txt' ff.txt    //在第6行下方读入hh.txt文件内容onetwothreefourfivesixhello worldseveneightnineten

复制粘贴

比较vi/vim编辑器和 sed编辑器

 #vi//vim编辑器:命令模式dd p  剪切 粘贴yy p  复制 粘贴末行模式:1,3 co 10  复制 粘贴(将第1~3行复制粘贴到第10行下方):1,3 m 10   剪切 粘贴(将第1~3行剪切到第10行下方)​#sed命令:H复制、d删除、G粘贴到指定行下方
[root@yuji ~]# sed '1,3 {H;d};$G' ff.txt     //将第1~3行剪切粘贴到最后一行下方fourfivesixseveneightnineten​onetwothree[root@yuji ~]# sed '1,3 {H;d};5G' ff.txt     //将第1~3行剪切粘贴到第5行后面fourfive​onetwothreesixseveneightnineten

文件内容中的字符串进行互换

 #将2个字符串交换位置[root@yuji ~]# echo 111222333111222333[root@yuji ~]# echo 111222333|sed -r 's/(111)(222)/\2\1/'222111333​#将3个字符串交换位置[root@yuji ~]# echo 111222333|sed -r 's/(111)(222)(333)/\3\2\1/'333222111​#将第一个字符和最后一个字符进行互换[root@yuji ~]# echo 111222333|sed -r 's/^(.)(.*)(.)$/\3\2\1/'311222331

相关文章:

文本三剑客之sed编辑器

文本三剑客:都是按行读取后处理。 grep 过滤行内容。awk 过滤字段。sed 过滤行内容;修改行内容。sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中…...

深度学习:GPT1、GPT2、GPT-3

深度学习:GPT1、GPT2、GPT3的原理与模型代码解读GPT-1IntroductionFramework自监督学习微调ExperimentGPT-2IntroductionApproachConclusionGPT-3GPT-1 Introduction GPT-1(Generative Pre-training Transformer-1)是由OpenAI于2018年发布的…...

使用Docker 一键部署SpringBoot和SpringCloud项目

使用Docker 一键部署SpringBoot和SpringCloud项目 1. 准备工作2. 创建Dockerfile3. 创建Docker Compose文件4. 构建和运行Docker镜像5. 验证部署6. 总结Docker是一个非常流行的容器化技术,可以方便地将应用程序和服务打包成容器并运行在不同的环境中。在本篇博客中,我将向您展…...

【数据结构】用栈实现队列

💯💯💯 本篇总结利用栈如何实现队列的相关操作,不难观察,栈和队列是可以相互转化的,需要好好总结它们的特性,构造出一个恰当的结构来实现即可,所以本篇难点不在代码思维,…...

[Netty源码] 服务端启动过程 (二)

文章目录1.ServerBootstrap2.服务端启动过程3.具体步骤分析3.1 创建服务端Channel3.2 初始化服务端Channel3.3 注册selector3.4 端口绑定1.ServerBootstrap ServerBootstrap引导服务端启动流程: //主EventLoopGroup NioEventLoopGroup master new NioEventLoopGroup(); //从E…...

Week 14

代码源每日一题Div2 106. 订单编号 原题链接:订单编号 思路:这题本来没啥思路,直到获得了某位佬的提示才会做( 我们可以用set来维护一些区间,这些区间为 pair 类型,表示没有使用过的编号,每次…...

【微信小程序】-- 使用 Git 管理项目(五十)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

leetcode每日一题:134. 加油站

系列:贪心算法 语言:java 题目来源:Leetcode134. 加油站 题目 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[…...

开放式基金实时排行 API 数据接口

开放式基金实时排行 API 数据接口 多维度参数返回,实时数据,类型参数筛选。 1. 产品功能 返回实时开放式基金排行数据可定义查询基金类型参数;多个基金属性值返回多维指标,一次查询毫秒级返回;数据持续更新与维护&am…...

Android开发中synchronized的实现原理

synchronized的三种使用方式 **1.修饰实例方法,**作用于当前实例加锁,进入同步代码前要获得当前实例的锁。 没有问题的写法: public class AccountingSync implements Runnable{//共享资源(临界资源)static int i0;/*** synchronized 修饰实例方法*/p…...

【华为OD机试 2023最新 】 统一限载货物数最小值(C++)

题目描述 火车站附近的货物中转站负责将到站货物运往仓库,小明在中转站负责调度2K辆中转车(K辆干货中转车,K辆湿货中转车)。 货物由不同供货商从各地发来,各地的货物是依次进站,然后小明按照卸货顺序依次装货到中转车,一个供货商的货只能装到一辆车上,不能拆装,但是…...

【生活工作经验 十】ChatGPT模型对话初探

最近探索了下全球大火的ChatGPT,想对此做个初步了解 一篇博客 当今社会,自然语言处理技术得到了迅速的发展,人工智能技术也越来越受到关注。其中,基于深度学习的大型语言模型,如GPT(Generative Pre-train…...

基于Spring Boot房产销售平台的设计与实现【源码+论文】分享

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 摘要 信息技术的发展…...

不同类型的电机的工作原理和控制方法汇总

电机控制是指对电机的启动、调速(加速、减速)、运转方向和停止进行的控制,不同类型的电机有着不同的工作原理和控制方法。 一、无刷电机 无刷电机是由电机主体和电机驱动板组成的一种没有电刷和换向器的机电一体化产品。在无刷电机中&#xf…...

计算机网络管理 TCP三次握手的建立过程,Wireshark抓包分析并验证TCP三次握手建立连接的报文

⬜⬜⬜ ---🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪---⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→…...

HTTP/2.x:最新的网页加载技术,快速提高您的SEO排名

2.1 http2概念HTTP/2.0(又称HTTP2)是HTTP协议的第二个版本。它是对HTTP/1.x的更新,旨在提高网络性能和安全性。HTTP/2.0是由互联网工程任务组(IETF)标准化的,并于2015年发布。2.2 http2.x与http1.x区别HTTP…...

机器学习----线性回归

第一关:简单线性回归与多元线性回归 1、下面属于多元线性回归的是? A、 求得正方形面积与对角线之间的关系。 B、 建立股票价格与成交量、换手率等因素之间的线性关系。 C、 建立西瓜价格与西瓜大小、西瓜产地、甜度等因素之间的线性关系。 D、 建立西瓜…...

MS2131 USB 3.0 高清音视频采集+HDMI 环出+混音处理芯片 应用网络直播一体机

MS2131 是一款 USB 3.0 高清视频和音频采集处理芯片,内部集成 USB 3.0 Device 控制器、 数据收发模块、音视频处理模块。MS2131 可以通过 USB 3.0 接口将 HDMI 输入的音视频信号传 送到 PC、智能手机、平板电脑上预览或采集。MS2131 支持 HDMI 环出功能,…...

基于堆与AdjustDown的TOP-K问题

TIPSTOP-K问题TOP-K问题:就是说现在比如说有n个数据,然后需要从这n个数据里面找到最大的或最小的前k个。一般来讲思路的话就是:先把这n个数据给他建一个堆,建堆完成之后,然后就去调堆,然后大概只需要调k次&…...

在CentOS上安装Docker引擎

1,先决条件#### 1-1操作系统要求1-2 卸载旧版本 2,安装方法2-1使用存储库安装设置存储库安装 Docker 引擎 本文永久更新地址: 官方地址:https://docs.docker.com/engine/install/centos/ 1,先决条件 #### 1-1操作系统要求 要安装 Docker Engine,您需要…...

【10】核心易中期刊推荐——模式识别与机器学习

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...

【数据结构】并查集

目录 一:用途 二:实现 O(1) 三:例题 例题1:集合 例题2:连通图无向 例题3:acwing 240 食物链 一:用途 将两个集合合并询问两个元素是否在一个集合当中 二:实现 O(1) 每…...

软考--网络攻击分类

网络攻击的主要手段包括口令入侵、放置特洛伊木马程序、拒绝服务(DoS)攻击、端口扫描、网络监听、欺骗攻击和电子邮件攻击等。口令入侵是指使用某些合法用户的账号和口令登录到目的主机,然后再实施攻击活动。特洛伊木马(Trojans)程序常被伪装…...

蓝桥杯刷题冲刺 | 倒计时17天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.长草2.分考场1.长草 题目 链接: 长草 - 蓝桥云课 (lanqiao.cn) 题目描述 小明有一…...

冲击蓝桥杯-并查集,前缀和,字符串

目录 前言 一、并查集 1、并查集的合并(带路径压缩) 2、询问是否为同一个集合 3、例题 二、前缀和 1 、前缀和是什么 2、经典题目 三- 字符串处理 1、字符串的插入 2、字符串转化为int类型 3、字符反转 前言 并查集合前缀,字符串…...

【matlab学习笔记】线性方程组求解方法

线性方程组求解方法2.1 求逆法实现方式例子2.2 分解法LU分解(Doolittle分解)实现方法例子QR分解法实现方法例子Cholesky 分解法实现方法例子奇异值分解法实现方法例子Hessenberg 分解实现方法例子Schur 分解实现方法例子2.3 迭代法逐次迭代法里查森迭代法…...

Python带你一键下载到最新章节,不付费也能看

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 完整源码、素材皆可点击文章下方名片获取此处跳转 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests 发送请求/第三方模块 模块安装:win R 输入cmd 输入安装命令 pip install 模块名 如果…...

【sentinel】熔断降级规则详解及源码分析

概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方API等。例如,支付的时候,可能需要远程调用银联…...

ffplay源码分析-main函数入口分析

ffplay源码分析-main函数入口分析 基于ffmpeg6.0源码分析。 流程 使用ffplay播放视频文件,会触发main函数的调用。main函数中会进行以下操作: 从命令行中解析日志级别、日志是否需要落文件、是否要输出banner信息。banner信息包含版权、库的版本。注…...

C++三种继承方式

C继承的一般语法为:class 派生类名:[继承方式] 基类名{派生类新增加的成员};继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected&#…...

音频文件放到网站空间里生成链接怎么做/打开全网搜索

如上图所示, A与B、A与C、B与D、C与E组件之间是父子关系; B与C之间是兄弟关系;A与D、A与E之间是隔代关系; D与E是堂兄关系(非直系亲属) 针对以上关系我们归类为: 父子组件之间通信 非父子组件之间通信(兄…...

网站建设公司发展/最近一两天的新闻有哪些

至少,您需要三个类:一个用于表示数据,一个用于UI,另一个用于管理数据库连接.当然,在真正的应用程序中,您需要的不仅仅是这个.此示例遵循与TableView tutorial相同的基本示例假设您的数据库有一个包含三列的person表,first_name,last_name,email_address.然后你会写一…...

青州网站制作哪家好/高端网站建设公司排名

通常,你主要使用下列2种方法之一来创建企业库对象实例。 1.使用Unity服务器定位器(Using the Unity Service Locator):这是最简单的方法,如果你的应用只 有少量依赖,并且你不想使用现在的架构模式例如依赖注…...

网站建设的软件有哪些/免费刷粉网站推广免费

伯克利人工智能实验室博客:http://bair.berkeley.edu/blog/ 下雨天: 有些人能听见下雨的声音,有些事只是在奔跑中淋湿! We are all in the gutter, but some of us are looking at the stars.Oscar Wilde我们都生活在阴沟里&#…...

做化工的外贸网站都有什么意思/太原网站制作优化seo

前言:这次的比赛一共有六道web题,接下我会详细介绍解题的步骤以及思路,以便让小白和没有接触过这类题型的小伙伴们能读懂。第一题,nani1、打开网页啥都没有,内容一片空白啥。这时候我们应该按F12去查看网页源码。往往很…...

网站开发与维护专业前景/西安网站关键词优化费用

Java 7的主要变化Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:1.对collections的支持Java代码List list new ArrayList();list.add("item");String item list.get(0);S…...