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

Shell脚本编程

Shell编程

视频地址https://www.bilibili.com/video/BV1hW41167NW/?p=1&vd_source=977d52a6b92ce8b6ae67c16fc61f0428

第一章 Shell概述

大数据程序员为什么要学习Shell呢?

  1. 需要看懂运维人员编写的Shell程序
  2. 偶尔会编写一些简单的Shell程序来管理集群,提高开发效率。

Shell概述

Shell是一个命令行解释器,它接收应用程序的/用户命令,然后调用操作系统内核。
Shell 还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
在这里插入图片描述

第二章 Shell解析器

  1. Linux提供的shell解析器有:6种 系统
    默认的是/bin/bash
    在这里插入图片描述

  2. bash和sh的关系,sh是bash的软连接
    在这里插入图片描述

  3. Contos默认的解析器是bash

第三章 Shell脚本入门

3.1 脚本格式

脚本以#!/bin/bash开头(指定解析器)

3.2 第一个Shell脚本:hello world

需求:创建一个Shell脚本,输出helloworld
创建一个文件夹,以后存放的shell脚本全放在这个文件夹下 mkdir shelldatas
在这里插入图片描述

进入shelldatas:cd shelldatas
在这里插入图片描述

在shelldatas下创建shell脚本:touch helloworld.sh
在这里插入图片描述

编辑sh脚本:vim helloworld.sh
在这里插入图片描述

i进行输入 输入完成后按ESC键,输入:wq退出
运行脚本 ,有以下方式
sh helloworld.sh
在这里插入图片描述

bash helloworld.sh
在这里插入图片描述

bash /shelldatas/helloworld.sh
在这里插入图片描述

sh /shelldatas/helloworld.sh
在这里插入图片描述

./helloworld.sh 这个会报权限不够;
在这里插入图片描述

输入ll 查看权限
给文件添加权限:chmod 777 helloworld.sh
在这里插入图片描述

输入ll查看权限
在这里插入图片描述

权限赋予之后使用./helloworld.sh或者/shelldatas/helloworld.sh
在这里插入图片描述在这里插入图片描述

注意:第一中执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限,第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3.3 第二个Shell脚本:多命令处理

需求
/shelldatas目录下创建一个banzhang.txt在banzhang.txt文件中增加”I love cls“
创建batch.sh脚本 touch batch.sh
在这里插入图片描述

编辑batch.sh vim batch.sh
在这里插入图片描述

i进行输入,完成后按ESC并输入:wq退出
在这里插入图片描述

执行batch.sh sh batch,sh
在这里插入图片描述

查看文件夹是否多了banzhang.txt文件。
在这里插入图片描述

打开banzhang.txt,内容显示在控制台上。cat banzhang.txt
在这里插入图片描述

第四章 Shell中的变量

4.1系统变量

4.1.1 常用系统变量

$HOME$PWD$SHELL$USER

4.1.2 案例实操

  1. 查看系统变量的值
    在这里插入图片描述

  2. 显示当前shell中的所有变量:set
    在这里插入图片描述

4.2 自定义变量

4.2.1 基本语法

定义变量:变量 = 值
在这里插入图片描述

撤销变量: unset 变量
在这里插入图片描述

声明静态变量: readonly 变量,注意不能unset
在这里插入图片描述

变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写

  2. 等号两侧不能有空格。

  3. 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
    在这里插入图片描述

  4. 变量的值如果有空格,需要使用双引号或单引号括起来。
    在这里插入图片描述

  5. 可把变量提升为全局环境变量,可供其他Shell程序使用

4.2.2 export 变量名

编辑helloworld.sh

在这里插入图片描述

输入指令echo $D,
在这里插入图片描述

保存后运行helloworld.sh,$D 并没有被输出
在这里插入图片描述

目前$D为局部变量,将它提升为全局变量,export D
在这里插入图片描述

运行helloworld.sh
在这里插入图片描述

注意:变量设置为全局变量后,可供所有的shell脚本内使用,常见的场景就是些javahome,dorkehome等

4.3 特殊变量: $n

4.3.1 基本语法

$n(功能描述:n为数字,$0代表该脚本名称,$1-9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含如${10})

4.3.2 案例实操

创建touch parameter.sh;编辑文件 vim parameter.sh
在这里插入图片描述

输入 echo ”$0 $1 $2 $3“
在这里插入图片描述

报存编辑 运行parameter.sh,sh parameter.sh
在这里插入图片描述

应用场景,判断你输入的参数,脚本内根据参数执行相应的内容,

4.4 特殊变量: $#

4.4.1 基本语法

$# (功能描述:获取所有输入参数个数,常用于循环)。
实操案例
继续编辑vim parameter.sh 输入echo ‘$#’
在这里插入图片描述

保存运行脚本
在这里插入图片描述

4.5 特殊变量: $*$@

4.5.1 基本语法

$*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中的所有的参数,不过$@把每个参数区分对待)

4.5.2 案例实操

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.6特殊变量: $?

4.6.1基本语法

$? (功能描述:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了 )

4.6.2 实操案例

在这里插入图片描述

第五章 运算符

5.1 基本语法

$((运算式))“或”$[运算式]
expr +,-,\*, / ,% 加,减,乘,除,取余
注意:expr 与运算符之间要有空格。

5.2实操案例

计算2+3,3-2
在这里插入图片描述

计算混合运行(2+3)*4
expr的形式,expr 2 + 3 用上顿号包起来表示让它先运行,后面在执行最外层的运算
在这里插入图片描述

通过[]中括号的形式,这个明显简单些,中括号内直接放运算式子
在这里插入图片描述

第六章 条件判断

6.1 基本语法

【 condition 】(注意condition前后要有空格)
注意:条件非空即为true,【 zhangsan 】返回true,[]返回false

6.2 常用判断条件

6.2.1 连个整数之间比较

= 字符串比较
-lt 小于 (less than) -le 小于等于(less equal)
-eq 等于 (equal) -gt 大于 (greater then)
-ge 大于等于(greater equal) -ne 不等于(Not equal)

6.2.2 按照文件权限进行判断

-r 有读的权限(read) -w 有写的权限(write)-x 有执行的权限(execute)

6.2.3 按照文件类型进行判断

-f 文件存在并且是一个常规的文件(file)
-e 文件存在 (existence)-d 文件存在并不是一个目录(directory)

6.2.4 例子:

判断23 大于等于 22,
在这里插入图片描述

判断helloworld.sh 是否具有写权限
在这里插入图片描述

/shelldatas/cls.txt 目录中的文件是否存在
在这里插入图片描述

多条件判断(&&表示前一条命令执行成功时,才执行后一条命令), || 表示上一条命令执行失败后,才执行下一条命令
在这里插入图片描述

第七章 流程控制(重点)

7.1 if判断

7.1.1 基本语法
if [ 条件判断式 ]:then程序
fi
或者
if 【 条件判断式 】then程序
fi
  1. 【 条件判断式 】,中括号和条件判断式之间必须有空格
  2. if 后要有空格
7.1.2 案例实操

输入一个数字,如果式1,则输出ni zhen shuai,如果输出2,则输出ni zhen chou,如果是其他,什么也不输出。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2 case 语句

7.1.1 基本语法
case $ 变量名 in
”值1“)
如果变量的值等于值1,则执行程序1
;;
”值2“)
如果变量的值等于值2,则执行程序2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

注意事项:

  1. case行尾必须为单词”in“,每一个模式匹配必须以右括号”)“结束
  2. 双分号”;;“表示命令序列结束,相当于Java中的break
  3. 最后的” *)“表示默认模式,相当于Java中的default
7.1.2 案例实操:

输入一个数字,如果是1,则输出beijing,如果是2,则输出nanjing,如果是其他,则输出shanghai
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.3 for循环

7.3.1 基本语法
for (( 初始值;循环控制条件;变量变化 ))do程序
done
7.3.2 案例实操

从1加到100
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.3.3基本语法2
for 变量 in 值1 值2 值3...do程序
done
7.3.4 实操案例:打印所有输入参数

在这里插入图片描述
在这里插入图片描述

$*的输出,一次输出一个参数

在这里插入图片描述
在这里插入图片描述

$@的输出,一次输出一个参数
在这里插入图片描述
在这里插入图片描述

“$*” 加引号的,一次输出所有,只循环一次

在这里插入图片描述

加”$@“ 一次输出一个

在这里插入图片描述

总结:$@$*"$@",参数有几个就循环几次,
"$*", 不管参数有多少个,它只循环一次,并且值就是所有的值

7.4 while循环

7.4.1 基本语法
while [ 条件表达式 ]do程序done
7.4.2 实例:从1加到100

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第八章 read读取控制台输入

8.1 基本语法

read(选项)(参数)

选项:
-p:指定读取值时的提示符;
-t: 指定读取值时等待的时间(秒); 参数: 变量:指定读取值的变量名

8.2案例实操

提示7秒内,读取控制台输入的名称
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第九章 函数

9.1 系统函数

9.1.1 basename 基本语法

basename [string/pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来)
选项:suffix为后缀,如果suffix被指定了,basename会将pathnamestring中的suffix去掉。

9.1.2 案例实操

截取该/shelldatas/helloword.sh路径的文件名称
在这里插入图片描述

9.1.3 dirname基本语法

dirname文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分)然后返回剩下的路径(目录的部分))

9.1.4 案例实操

在这里插入图片描述

9.2 自定义函数

9.2.1 基本语法
[ function ] funname[()]
{Action;[return int;]
}
funname

经验技巧

  1. 必须在调用函数地方之前,先声明函数,shell脚本是逐行运行,不像其他语言一样编译。
  2. 函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果作为返回值,return后跟数值n(0~255)
9.2.2 案例实操(计算两个输入参数的和)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第十章 Shell工具(重点)

10.1 cut

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的,cut命令从文件的每一行剪切字节、字符
和字段并将这些字节、字符和字段输出。

10.1.1 基本语法

cut[选项参数] filename
说明:默认分割符是治标符
选择参数说明

选项功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分隔
10.1.2 实操案例

准备数据

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

选取系统path变量值,第2个“:”开始后的所有路径
在这里插入图片描述

切割ifconfig后打印的ip地址

ifconfig eth0
ifconfig eth0 | grep "inet addr"
ifconfig eth0 | grep "inet addr" | cut -d : -f 2
ifconfig eth0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1

10.2 sed

sed是一种流编译器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

10.2.1 基本语法

sed[选项参数] ‘command’ filename

10.2.2 选项参数说明
选项参数功能
-e直接在指令列模式上进行sed动作编辑
10.2.3 命令功能描述
命令功能
a新增,a的后面可以接字串,在下一行出现
d删除
s查找并替换
10.2.4 实例实操

在这里插入图片描述
在这里插入图片描述
将meinv 这个单词插入到sed.txt第二行,打印
在这里插入图片描述

删除源文件中包含zou的行
在这里插入图片描述

将sed.txt文件中将zhangsan替换为lisi
在这里插入图片描述

将sed.txt文件中的第二行删除,并将zhangsan替换为lisi

在这里插入图片描述

10.3 awk

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分割符将每行切片,切开的部分在进行分析处理。

10.3.1 基本用法

awk[选项参数] ‘patternl {action1} pattern2 {action2}...’ filename
pattern": 表示awk在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令

10.3.2 选项参数说明
选项参数功能
-F指定输入文件拆分隔符
-V赋值一个用户定义变量
10.3.3 案例实操

数据准备

搜索passwd文件以root关键字开头的所有行,并输出改行的第7列
在这里插入图片描述

搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割
在这里插入图片描述

注意:只有匹配了pattern的行才会执行action
只显示/etc/passwd的第一列和第七列,以逗号分隔,且在所有行前面添加列名user,shell在最后一行添加“dage,/bin/zhishai”
在这里插入图片描述

注意:BEGIN在所有数据读取行之前执行,END在所有数据执行之后执行。
将passwd文件中的用户id增加数值1,并输出

在这里插入图片描述

10.3.4 awk的内置变量
变量说明
FILENAME文件名
NR已读的记录数
NF浏览纪律的域的个数(切割后,列的个数)
10.3.5 案例实操

统计passwd文件名,每行的行号,每列的列数
在这里插入图片描述

切割IP
在这里插入图片描述

查询sed.txt中空行所在的行号
在这里插入图片描述

10.4 sort

sort 命令式在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

10.4.1 基本语法

sort(选项)(参数)

选项说明
-n依照数值大小排序
-r以相反的顺序排序
-t设置排序时所用的分隔字符
-k指定需要排序的列
10.4.2 案例实操

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第11章: 企业真实面试题

11.1 京东

问题1:使用Linux命令查询filel中空行所在的行号
在这里插入图片描述

有文件chengji.txt内容如下

张三 40
李四 50
王五 60

使用Linux 命令计算第二列的和并输出:

cat chengji.txt | awk -F " " '{sum+=$2}  END{print sun}'

11.2搜狐&和讯网

Shell脚本里如何检查一个文件是否存在?如果不存在该如何处理?

#! /bin/bash
if [ -f file.txt ]; thenecho "文件存在"
elseecho "文件不存在"
fi

11.3 新浪

用shell写一个脚本,对文本中无序的一列数字排序
在这里插入图片描述

11.4金和网络

请用shell脚本写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符”shen“的文件名称

在这里插入图片描述

相关文章:

Shell脚本编程

Shell编程 视频地址https://www.bilibili.com/video/BV1hW41167NW/?p1&vd_source977d52a6b92ce8b6ae67c16fc61f0428 第一章 Shell概述 大数据程序员为什么要学习Shell呢? 需要看懂运维人员编写的Shell程序偶尔会编写一些简单的Shell程序来管理集群&#xf…...

ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码

ChatGPT解答:JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2,给出详细的方案和代码 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). JavaScript保存当前网页页面图片为pdf文件或者word文件,前端用vue2&am…...

Python基础学习11——文件

我们可以利用python对本电脑文件夹里的文件进行处理,python中提供了一系列相关的方法和函数供我们使用。 读取文件 我们现在在本python文件中有一个txt文件名为Lego,那么我们就可以利用python打开该文件 with open(Lego.txt) as file_text:contents …...

外网用户打不开公司的网站?web服务器端口映射到公网

我们经常会遇到这样的情景,在公司内部可以打开公司的网站,在家里或者外网却打不开,按照网上的做法,重新启动了服务器和iis,还是不行。许多用户设置了路由器端口映射功能,但是端口映射不成功怎么办&#xff…...

【CS224W】(task9)图神经网络的表示能力(更新中!!)

note 基于图同构网络(GIN)的图表征网络。为了得到图表征首先需要做节点表征,然后做图读出。GIN中节点表征的计算遵循WL Test算法中节点标签的更新方法,因此它的上界是WL Test算法。 在图读出中,我们对所有的节点表征&…...

binlog找回误删数据

1、检查当前是否开启binlog存储 输入命令show variables like %log_bin%;,结果如下 可以看到log_bin的值是ON,说明binlog开启了。 2、查找binlog的存储位置 这个去到数据库的my.cnf配置文件中寻找,有一个log_bin的配置 切换到log_bin的目…...

《程序员面试金典(第6版)》面试题 02.03. 删除中间节点

题目描述 若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如: 传入节点 c&#xff08…...

Spring Boot

目录 SpringBoot SpringBoot创建和使用 什么是Spring Boot Spring Boot优点 Spring Boot项目的创建 项目目录介绍和运行 目录介绍 项目运行 SpringBoot核心设计思想 SpringBoot的配置文件 配置文件的作用 配置文件的格式 注意事项 properties配置文件 propertie…...

图论初入门

目录 一、前言 二、图的概念 三、例题及相关概念 1、全球变暖(2018年省赛,lanqiao0J题号178) 2、欧拉路径 3、小例题 4、例题(洛谷P7771) 一、前言 本文主要讲了树与图的基本概念,图的存储、DFS遍历…...

02-Oracle数据库的启动与关闭

本文章主要讲解Oracle数据库的启动与关闭方法,详细讲解启动Oracle的命令,三种启动数据库的方法及区别;关闭数据库的4种方法及他们的区别。 启动和关闭数据库 •数据库没启动前,只有拥有DBA权限或者以sysoper或sysdba身份才能连接到…...

网络营销培训完能达到什么水平?学完能创业吗?

网络营销本身就是一门创业的技术,很多人学习网络营销,往往担心学完以后技术达不到,再工作几年才可以创业,实际这是错误的理解,那么,网络营销培训完能达到什么水平?新手学员参加网络营销培训&…...

大数据技术之——zeppelin数据清洗

一、zeppelin的安装zeppelin解压后进入到conf配置文件界面。修改zeppelin-site.xml[roothadoop02 conf]# cp zeppelin-site.xml.template zeppelin-site.xml[roothadoop02 conf]# vim zeppelin-site.xml将IP地址和端口号设置成自己的修改 zeppelin-env.shexport JAVA HOME/opt/…...

Barra模型因子的构建及应用系列五之NonLinear Size因子

一、摘要 在前期的Barra模型系列文章中,我们构建了Size因子、Beta因子、Momentum因子和Residual Volatility因子,并分别创建了对应的单因子策略,本节文章在该系列下进一步构建NonLinear Size因子。从回测结果看,自2022年以来&…...

C++ 常用命令行开发工具(Linux)

文章目录1、简介2、gcc / g2.1 system(执行shell 命令)2.2 popen(建立管道I/O)2.3 vforkexec(新建子进程)3、clang3.1 下载和安装clang3.2 clang和gcc比较3.2.1 gcc3.2.2 clang3.2.3 LLVM4、make4.1 例子14…...

java基础学习 day47(抽象类,抽象方法)

1. 抽象方法 将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体,该方法就可以定义为抽象方法。抽象方法定义格式: public abstract 返…...

Java代码弱点与修复之——Open redirect(开放重定向)

弱点描述 Open redirect , 开放重定向,是一种常见的安全漏洞,也被称为“重定向漏洞”。该漏洞通常出现在 Web 应用程序中,攻击者可以利用它将用户重定向到恶意站点,从而进行钓鱼攻击、恶意软件传播、诱骗等活动。 在 Java 中,通过重定向 HTTP 请求来实现应用程序中的跳转…...

Go 指针

指针在编程中,一个内存地址用来定位一段内存。通常地,一个内存地址用一个操作系统原生字(native word)来存储。 一个原生字在32位操作系统上占4个字节,在64位操作系统上占8个字节。 所以,32位操作系统上的理…...

shardingsphere5.1.1分表分库yaml配置 自定义策略

前言通过阅读官方稳定给出示例 https://shardingsphere.apache.org/document一、基本配置示例spring:sharding:datasource:names: ds0, ds1ds0:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/db0username: rootpassword: rootds1:driver-class-na…...

“探索未来:VR全景直播技术引领新媒体时代”

随着虚拟现实技术的不断发展,VR全景直播已经成为了越来越受欢迎的直播形式。VR全景直播可以让观众通过虚拟现实设备亲临直播现场,享受身临其境的观看体验。VR全景直播是什么? VR全景直播是虚拟现实技术和直播的结合。相对于传统直播&#xff…...

Spring Cloud(微服务)学习篇(六)

Spring Cloud(微服务)学习篇(六) 2 Sentinel实现流量规则(控制台版) 2.1 变更pom.xml(shop-user-server项目)代码 2.1.1 加入如下依赖 <!--熔断限流--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

vue3 手动封装城市三级联动

要做的功能 示意图是这样的&#xff0c;因为后端给的数据结构 不足以使用ant-design组件 的联动查询组件 所以只能自己分装 组件 当然 这个数据后端给的不一样的情况下 可能组件内对应的 逻辑方式就不一样 毕竟是 三个 数组 省份 城市 区域 我直接粘贴组件代码了 <temp…...

旋量理论:刚体运动的几何描述与机器人应用

旋量理论为描述刚体在三维空间中的运动提供了强大而优雅的数学框架。与传统的欧拉角或方向余弦矩阵相比&#xff0c;旋量理论通过螺旋运动的概念统一了旋转和平移&#xff0c;在机器人学、计算机图形学和多体动力学领域具有显著优势。这种描述不仅几何直观&#xff0c;而且计算…...

qt 双缓冲案例对比

双缓冲 1.双缓冲原理 单缓冲&#xff1a;在paintEvent中直接绘制到屏幕&#xff0c;绘制过程被用户看到 双缓冲&#xff1a;先在redrawBuffer绘制到缓冲区&#xff0c;然后一次性显示完整结果 代码结构 单缓冲&#xff1a;所有绘制逻辑在paintEvent中 双缓冲&#xff1a;绘制…...

EC2安装WebRTC sdk-c环境、构建、编译

1、登录新的ec2实例&#xff0c;证书可以跟之前的实例用一个&#xff1a; ssh -v -i ~/Documents/cert/qa.pem ec2-user70.xxx.165.xxx 2、按照sdk-c demo中readme的描述开始安装环境&#xff1a; https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c 2…...