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

Linux之Shell概述

目录

Linux之Shell概述

学习shell的原因

shell是什么

shell起源

查看当前系统支持的shell

查看当前系统默认shell

Shell 概念

Shell 程序设计语言

Shell 也是一种脚本语言

用途

Shell脚本的基本元素

基本元素构成:

Shell脚本中的注释和风格

Shell脚本编写规范

脚本开头

        脚本自动增加注释版权信息

        案例 --- 创建一个屏保脚本

脚本中尽量不用中文注释

多使用内部命令

没有必要使用cat命令

仔细阅读出错信息

文件名以sh结尾

代码缩进:

shell脚本执行

方法1

方法2 

方法3

方法4

bash shell基本功能

echo打印命令

格式

参数

可以输出带颜色的字体

printf命令

格式


Linux之Shell概述

学习shell的原因

        简单易学

        解释性语言,不需要编译即可执行

        对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的,通过shell程序,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来

shell是什么

shell起源

        1964年,美国AT&T公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与开始研发一套可以安装在大型主机上的多用户、多任务的操作系统,该操作系统的名称为Multics

        1970年,丹尼斯•里奇和汤普逊启动了另外一个新的多用户、多任务的操作系统的项目,他们把这个项目称之为UNICS

        1973年,使用C语言重写编写了Unix。通过这次编写,使得Unix得以移植到其他的小型机上面

        1979年,第一个重要的标准UNIX Shell在Unix的第7版中推出,并以作者史蒂夫•伯恩(StephenBourne)的名字命名,叫做Bourne Shell,简称为sh

        20世纪70年代末,C Shell作为2BSD UNIX的一部分发布,简称csh。之后又出现了许多其他的Shell程序,主要包括Tenex C Shell(tcsh)、Korn Shell(ksh)以及GNU Bourne-Again shell(bash)

查看当前系统支持的shell

[root@localhost ~]# cat /etc/shells 

查看当前系统默认shell

[root@localhost ~]# echo $SHELL

Shell 概念

        Shell(外壳)--- 是一种命令解释器程序,他能识别用户输入的各种命令,并传递给操作系统

结构图:

        真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁,由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核

        用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell,Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

        Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux

Shell 程序设计语言

Shell 也是一种脚本语言

        任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行

        有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)

        有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器

        编译型语言的优点 --- 执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等

        脚本语言的优点 --- 使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作

        Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可

用途

        shell脚本的优势在于处理操作系统底层的业务 (linux系统内部的应用都是shell脚本完成)因为有大量的linux系统命令为它做支撑。2000多个命令都是shell脚本编程的有力支撑,特别是grep、awk、sed等。例如:一键软件安装、优化、监控报警脚本,常规的业务应用,shell开发更简单快速,符合运维的简单、易用、高效原则

        PHP、Python优势在于开发运维工具以及web界面的管理工具,web业务的开发等。处理一键软件安装、优化,报警脚本。常规业务的应用等php/python也是能够做到的。但是开发效率和复杂比用shell就差很多了

熟练掌握shell编程基础知识

        熟练使用vi(vim)编辑器

        熟练掌握Linux基本命令

        熟练掌握文本三剑客工具(grep、sed、awk)

        熟悉常用服务器部署、优化、日志及排错

建议

        掌握Shell脚本基本语法

        形成自己的脚本开发风格

        从简单做起,简单判断,简单循环

        多模仿,多参考资料练习,多思考

        学会分析问题,逐渐形成编程思维

        编程变量名字要规范,采用驼峰语法表示

        不要拿来主义,特别是新手

Shell脚本的基本元素

基本元素构成:

        第1行的“#!/bin/bash”

        注释 --- 说明某些代码功能

        可执行语句 --- 实现程序的功能

Shell脚本中的注释和风格

        作用 --- 通过在代码中增加注释可以提高程序的可读性

        传统的Shell只支持单行注释,其表示方法是一个井号“#”,从该符号开始一直到行尾都属于注释的内容

#comment1
#comment2
#comment3
...

         多行注释 --- 使用冒号“:”配合here document, 语法如下:

:<<'xxxx'
comment1
comment2
comment3
……
xxxx

        xxxx 可以是字符或数字,单引号可以不加,但以防出现莫名其妙的意外发生,比如发生字符扩展,命令替换

Shell脚本编写规范

脚本开头

        开头制定脚本解释器 --- #!/bin/sh 或 #!/bin/bash

        其他行#表示注释

         程序开头需要加版本版权等信息,如:

# Date:创建日期
# Author:作者
# Mail:联系方式
# Function:功能
# Version:版本

        脚本自动增加注释版权信息

[root@localhost ~]# vim  ~/.vimrc
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"func SetTitle()if expand("%:e") == 'sh'call setline(1,"#!/bin/bash")call setline(2,"##############################################################")call setline(3, "# File Name: ".expand("%"))call setline(4, "# Version: V1.0")call setline(5, "# Author: Andy_Sun")call setline(6, "# Email: Andy_Sun@163.com")call setline(7, "# Organization: http://www.cnblogs.com/Andy_Sun/")call setline(8, "# Created Time : ".strftime("%F %T"))call setline(9, "# Description:")call setline(10,"##############################################################")call setline(11, "")endif
endfunc

 

        案例 --- 创建一个屏保脚本

[root@localhost ~]# vim cmatrix.sh
wget http://archive.ubuntu.com/ubuntu/pool/universe/c/cmatrix/cmatrix_1.2a.orig.tar.gztar xvf cmatrix_1.2a.orig.tar.gzcd cmatrix-1.2ayum install -y  ncurses-develyum install -y  gcc./configure && make && make installecho "Program installation complete !"
echo "Program installation complete !"
echo "Program installation complete !"

[root@localhost ~]# bash cmatrix.sh [root@localhost ~]# cmatrix 

脚本中尽量不用中文注释

        别吝啬添加注释,必要的注释方便自己别人理解脚本逻辑和功能

        尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰

        单行注释,可以放在代码行的尾部代码行的上部

        多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分代码修改时,对修改的内容

多使用内部命令

        无论碰到哪种情况,请尽量考虑使用内部命令而不是外部命令

        内部命令执行的效率高,性能好

没有必要使用cat命令

        这是我们经常在论坛里讨论的话题之一。没有必要使用cat命令指的是在有些时候,我们会发现根本没有必要使用cat命令。使用了多余的cat命令会让你的代码看起来很丑陋,而且还会带来性能上的问题

        例如 --- 以下两条命令的结果一样

[root@localhost ~]# cat /etc/passwd | grep root[root@localhost ~]# grep root /etc/passwd

仔细阅读出错信息

        程序员常犯的一个错误是 --- 当我们敲入的命令报错后,我们中的大多数人只是对错误信息一瞥而过,而不会去认真的读一读,很多时候,错误信息里就包含了解决办法

        有时候我们修改了某个错误并再次运行后,系统依旧会报错。然后我们再次修改,但系统再次报错。这可能会持续很长时间。但实际上,旧的错误可能已经被纠正,只是由于出现了其它一些新错误才导致系统再次报错。而我们依旧在怀疑为什么修改好的代码依然不能正常运行

文件名以sh结尾

        shell脚本文件名应见名知义 ,扩展名位sh,如:backup_mysql.sh

代码缩进:

        shell没有强制要求,但建议缩进,这样可以提高阅读性,程序更有层次感

[root@localhost ~]# vim 99.sh
#!/bin/bash
for((i=1;i<10;i++))
doecho  -ne  "$i\t"
doneechofor((i=1;i<70;i++))
doecho  -n  "="
doneechofor((i=1;i<10;i++))
dofor((j=1;j<=i;j++))doecho  -en  "$i*$j=$[i*j]\t"doneecho
done
[root@localhost ~]# bash 99.sh 

shell脚本执行

方法1

        使用sh或bash命令执行脚本,不需要执行权限(建议使用),脚本中可以不指定解释器

[root@localhost ~]# vim test.sh 
#!/bin/bash
echo  "china"
[root@localhost ~]# bash test.sh 
[root@localhost ~]# sh test.sh 

        可以使用bash -n 脚本名 ,进行语法检测,且不执行脚本

        可以使用bash -x 脚本名 ,进行脚本执行跟踪,逐条语句的跟踪执行

方法2 

        切换到脚本所在目录使用./执行脚本,需要执行权限

[root@localhost ~]# ./test.sh
-bash: ./test.sh: Permission denied #权限不够[root@localhost ~]# chmod +x test.sh 
[root@localhost ~]# ./test.sh 

方法3

        绝对路径执行脚本,需要执行权限

[root@localhost ~]# vim /t1.sh
#!/bin/bash
echo  "china"[root@localhost ~]# /t1.sh
-bash: /t1.sh: Permission denied    #权限不够[root@localhost ~]# chmod +x /t1.sh
[root@localhost ~]# /t1.sh 

方法4

         使用(.)或者source 执行脚本,不需要执行权限

[root@localhost ~]# source /t1.sh [root@localhost ~]# . test.sh 

注意:

        方法1、2、3都是启动一个子shell,在子shell中执行此脚本,脚本中设置的变量在脚本执行完毕后不会保存

        法4 则都是在当前shell进程中执行此脚本,而不是重新启动一个shell 在子shell进程中执行此脚本,并且脚本中设置的变量在脚本执行完毕后会保存下来

bash shell基本功能

echo打印命令

格式

        echo -参数 内容

参数

        

参数作用
-n

取消输出后行末的换行符

-e启用转义字符

可以输出带颜色的字体

        格式 --- echo -e "\e[字体控制;字体颜色或背景色 字符串内容\e[0m"

\e[表示控制开始\e[0m表示控制结束

字体控制选项 --- 1表示高亮4表示下划线5颜色闪烁

颜色如下:字颜色30-37背景色40-47

[root@localhost ~]# vim color.sh
#!/bin/bash
echo -e "\e[30m 黑色字 \e[0m]"
echo -e "\e[1;31m 红色字 \e[0m"
echo -e "\e[32m 綠色字\e[0m"
echo -e "\e[33m 黃色字\e[0m"
echo -e "\e[34m 藍色字\e[0m"
echo -e "\e[35m 紫色字\e[0m"
echo -e "\e[36m 天藍字\e[0m"
echo -e "\e[37m 白色字\e[0m"
echo -e "\e[40;37m 黑底白字\e[0m"
echo -e "\e[41;37m 紅底白字\e[0m"
echo -e "\e[42;37m 綠底白字\e[0m"
echo -e "\e[43;37m 黃底白字\e[0m"
echo -e "\e[44;37m 藍底白字\e[0m"
echo -e "\e[45;37m 紫底白字\e[0m"
echo -e "\e[46;37m 天藍底白字\e[0m"
echo -e "\e[47;30m 白底黑字\e[0m"[root@localhost ~]# bash color.sh 

printf命令

        printf 命令模仿 C 程序库(library)里的 printf() 程序, 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好,printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n

格式

        printf   格式控制字符串   参数列表

[root@localhost ~]# echo "Hello, shell"
[root@localhost ~]# printf "Hello, shell\n"[root@localhost ~]# printf "Hello, shell"

[root@localhost ~]# printf "%d %s \n" 1 "abc"[root@localhost ~]# printf '%d %s \n' 1 "abc" # 单引号双引号效果一样

[root@localhost ~]# printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg

%s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
 %-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来

[root@localhost ~]# printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
[root@localhost ~]# printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234%-4.2f 指格式化为小数,其中 .2 指保留2位小数

相关文章:

Linux之Shell概述

目录 Linux之Shell概述 学习shell的原因 shell是什么 shell起源 查看当前系统支持的shell 查看当前系统默认shell Shell 概念 Shell 程序设计语言 Shell 也是一种脚本语言 用途 Shell脚本的基本元素 基本元素构成&#xff1a; Shell脚本中的注释和风格 Shell脚本编…...

手写Spring:第2章-创建简单的Bean容器

文章目录 一、目标&#xff1a;创建简单的Bean容器二、设计&#xff1a;创建简单的Bean容器三、实现&#xff1a;创建简单的Bean容器3.0 引入依赖3.1 工程结构3.2 创建简单Bean容器类图3.3 Bean定义3.4 Bean工厂 四、测试&#xff1a;创建简单的Bean容器4.1 用户Bean对象4.2 单…...

在Windows上通过SSH公私钥实现无密码登录Linux

在Windows上通过SSH公私钥实现无密码登录Linux 在Windows上生成SSH密钥对&#xff1a; 打开命令提示符或PowerShell窗口。 输入以下命令生成SSH密钥对&#xff1a; ssh-keygen -t rsa -b 4096按照提示输入密钥的保存路径和密码&#xff08;可选&#xff09;。 在指定的路径下…...

使用ppt和texlive生成eps图片(高清、可插入latex论文)

一、说明 写论文经常需要生成高清的图片插入到论文中&#xff0c;本文以ppt画图生成高质量的eps图片的实现来介绍具体操作方法。关于为什么要生成eps图片&#xff0c;一个是期刊要求&#xff08;也有不要求的&#xff09;&#xff0c;另一个是显示图像的质量高。 转化获得eps…...

html5学习笔记19-SSE服务器发送事件(Server-Sent Events)

https://www.runoob.com/html/html5-serversentevents.html 允许网页获得来自服务器的更新。类似设置回调函数。 if(typeof(EventSource)!"undefined"){var sourcenew EventSource("demo_sse.php");source.onmessagefunction(event){document.getElement…...

高效数据湖构建与数据仓库融合:大规模数据架构最佳实践

文章目录 数据湖和数据仓库&#xff1a;两大不同理念数据湖数据仓库 数据湖与数据仓库的融合统一数据目录数据清洗和转换数据安全和权限控制数据分析和可视化 数据湖与数据仓库融合的优势未来趋势云原生数据湖自动化数据处理边缘计算与数据湖融合 结论 &#x1f389;欢迎来到云…...

Java学习笔记——35多线程02

线程同步 线程同步卖票案例同步代码块同步方法块 线程安全的类StringBufferVectorHashtable Lock锁 线程同步 卖票案例 public class SellTicket implements Runnable{private int tickets10;Overridepublic void run(){while (true){if(tickets>0){System.out.println(Th…...

每日刷题-3

目录 一、选择题 二、编程题 1、计算糖果 2、进制转换 一、选择题 1、 解析&#xff1a;在C语言中&#xff0c;以0开头的整数常量是八进制的&#xff0c;而不是十进制的。所以&#xff0c;0123的八进制表示相当于83的十进制表示&#xff0c;而123的十进制表示不变。printf函数…...

储能直流侧计量表DJSF1352

安科瑞 华楠 具有CE/UL/CPA/TUV认证 DJSF1352-RN导轨式直流电能表带有双路直流输入&#xff0c;主要针对电信基站、直流充电桩、太阳能光伏等应用场合而设计&#xff0c;该系列仪表可测量直流系统中的电压、电流、功率以及正反向电能等。在实际使用现场&#xff0c;即可计量总…...

机器学习报错合集(持续更新)

文章目录 1 列表转numpy&#xff0c;尺寸不均匀问题 1 列表转numpy&#xff0c;尺寸不均匀问题 ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (4,) inhomogeneous pa…...

【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植

一、环境介绍 RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。 二、芯片介绍 LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很…...

day-41 代码随想录算法训练营(19)动态规划 part 03

343.整数拆分 思路&#xff1a; 1.dp存储的是第i个数&#xff0c;拆分之后最大乘积2.dp[i]max(dp[i],max(j*(i-j),j*dp[i-j]));3.初始化&#xff1a;dp[0]dp[1]0,dp[2]1;4.遍历顺序&#xff1a;外层循环 3-n&#xff0c;内层循环 1-i 2.涉及两次取max&#xff1a; dp[i] 表…...

K8S安装部署 初始化操作(一)

准备好服务器和服务器资源 ip hostnameip资源 &#xff08;2核2G也可以&#xff09;k8s-master 192.168.37.1184核 4G 40G硬盘k8s-node1192.168.37.1192核 2G 20G硬盘k8s-node2192.168.37.1202核 2G 20G硬盘 初始操作三台同时执行 1、关闭防火墙 [rootlocalhost ~]# s…...

【多线程案例】单例模式(懒汉模式和饿汉模式)

文章目录 1. 什么是单例模式&#xff1f;2. 立即加载/“饿汉模式”3. 延时加载/“懒汉模式”3.1 第一版3.2 第二版3.3 第三版3.4 第四版 1. 什么是单例模式&#xff1f; 提起单例模式&#xff0c;就必须介绍设计模式&#xff0c;而设计模式就是在软件设计中&#xff0c;针对特殊…...

Anaconda - 操作系统安装程序 简要介绍

Anaconda 简要介绍 1. Anaconda 简介2. Anaconda 体系结构3. Anaconda 开发模型4. Anaconda 启动概述5. Anaconda 源码1. 接口2. 自定义组件3. 硬盘分区&#xff1a;使用python-blivet包4. Bootloader5. 各个步骤的配置&#xff1a;6. 安装软件包&#xff1a;7. 安装控制&#…...

【数据库设计】向量搜索HNSW算法优化

做向量存储的过程中&#xff0c;遇到向量搜索的情况处理&#xff0c;HNSW算法是目前向量搜索的主要算法之一&#xff0c;采用的是图算法&#xff0c;主要的问题是使用内存大&#xff0c;训练时间长。做算法优化过程中获得部分技巧&#xff0c;分享出来。 一、算法本身的优化 对…...

多通道振弦数据记录仪应用桥梁安全监测的关键要点

多通道振弦数据记录仪应用桥梁安全监测的关键要点 随着近年来桥梁建设和维护的不断推进&#xff0c;桥梁安全监测越来越成为公共关注的焦点。多通道振弦数据记录仪因其高效、准确的数据采集和处理能力&#xff0c;已经成为桥梁安全监测中不可或缺的设备。本文将从以下几个方面…...

深入了解HTTP代理的工作原理

HTTP代理是一种常见的网络代理方式&#xff0c;它可以帮助用户隐藏自己的IP地址&#xff0c;保护个人隐私和安全。了解HTTP代理的工作原理对于使用HTTP代理的用户来说非常重要。本文将深入介绍HTTP代理的工作原理。 代理服务器的作用 HTTP代理的工作原理基于代理服务器的作用。…...

2023年高教社杯数学建模国赛选题人数+C题进阶版修改思路详解

C题思路 修改版 C题保奖 数据预处理 3σ原则 区间判断法、人为判定 问题 1 聚类分析进行简单的分类 相互关系 数据服从正态分布&#xff08;K-S检验等判定分布类型后&#xff09; 才能做person相关性 图表结合&#xff08;热力图、数据结果表&#xff09; 分布规律 宏…...

第三章微服务配置中心

文章目录 Nacos配置中心统一配置管理在nacos中添加配置文件从微服务拉取配置 配置热更新多环境共享配置 搭建Nacos集群搭建集群初始化数据库配置Nacos启动nginx反向代理 Nacos配置中心 Nacos配置管理 Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 统一配置…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

基于 HTTP 的单向流式通信协议SSE详解

SSE&#xff08;Server-Sent Events&#xff09;详解 &#x1f9e0; 什么是 SSE&#xff1f; SSE&#xff08;Server-Sent Events&#xff09; 是 HTML5 标准中定义的一种通信机制&#xff0c;它允许服务器主动将事件推送给客户端&#xff08;浏览器&#xff09;。与传统的 H…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...

【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20~21题】【第…...