shell脚本——编程规范与变量

news2024/9/20 20:44:05

目录

一、shell脚本

1、shell脚本概述

2、shell脚本的应用场景

3、shell脚本的作用——命令解释器

二、Shell 脚本编程规范

1、用户登录Shell

2、shell脚本的构成

3、执行shell脚本

三、重定向与管道操作

1、重定向

1.1、交互式硬件设备

1.2、重定向操作

 2、重定向输入

3、重定向输出

4、错误重定向

4.1、错误重定向作用

5、管道操作

四、Shell脚本变量及赋值

1、shell的变量

2、Shell变量的作用

3、自定义变量

3.1、定义一个新变量

3.2、echo——查看变量

4、变量特殊的赋值操作

4.1、单引号

4.2、双引号

4.3、反撇号

5、交互式定义变量

5.1、read命令

5.2、read——常用参数

6、变量的作用范围

6.1、export命令

五、数值变量的运算及特殊变量

1、expr命令

1.1、常量的运算

1.2、变量的运算

2、特殊的shell变量

2.1、环境变量

2.2、常见的环境变量

2.2.1、PATH 变量 

2.2.2、只读变量

2.2.3、位置变量

2.2.4、预定义变量


一、shell脚本

1、shell脚本概述

Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

2、shell脚本的应用场景

①、重复性操作

在处理需要重复执行的任务时,Shell脚本是非常有效的工具。通过编写脚本,可以将日常的重复性操作自动化,如文件备份、数据清洗、日志分析等,减少人为操作的错误,提高工作效率。这种自动化脚本不仅节省了时间,还保证了任务执行的一致性和可靠性。

②、交互性任务

Shell脚本可以用于处理需要用户交互的任务。例如,安装和配置软件时,脚本可以提示用户输入必要的信息,进行相应的设置操作。通过交互式脚本,用户可以方便地根据提示完成复杂的配置任务,避免手动输入命令的繁琐过程,提高操作的便捷性。

③、批量事务处理

在需要处理大量事务的情况下,Shell脚本可以批量执行任务,大大提高效率。例如,批量创建用户、批量处理文件、批量执行数据库操作等。通过脚本,可以一次性完成大量重复性工作,避免手工操作的繁琐和错误,提升工作效率和准确性。

④、服务运行状态监控

Shell脚本可以用于监控系统和服务的运行状态,及时发现并处理异常情况。例如,监控服务器的CPU、内存、磁盘使用情况,检查服务是否正常运行,并在异常时发送报警通知。通过脚本的自动化监控,可以及时发现问题,保证系统和服务的稳定运行。

⑤、定时任务执行

利用Shell脚本可以轻松实现定时任务的自动化执行。通过与cron等定时任务管理工具结合,脚本可以在指定的时间自动执行特定任务,如定时备份数据库、定期清理日志文件、定时更新系统等。这种自动化的定时任务执行方式,确保了任务的准时和一致性,减少了人工干预。

3、shell脚本的作用——命令解释器

Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 
 

二、Shell 脚本编程规范

1、用户登录Shell

通过/etc/shells 文件可以了解当前系统所支持的 Shell 脚本种类。

  • /bin/sh                             #是bash命令的软链接  (已经被/bin/bash所替换)
  • /bin/bash                         #基准于GNU的框架下发展出的Shell。
  • /usr/bin/sh                       #已经被bash所替换。
  • /usr/bin/bash                   #centos和redhat系统默认使用bash shell
  • /bin/tcsh                          #csh的增强版,与csh完全兼容 整合了csh,提供更多的功能。
  • /bin/csh                            #已经被/bin/bash 所替换  (整合C shell,提供更多的功能)
     

2、shell脚本的构成

  • shell脚本:若第一行为“#!/bin/bash”,脚本申明(默认解释器):表示此行以下的代码语句是通过/bin/bash程序来执行。还有其他类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect
  • 注释信息:以“#”开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行
  • 可执行语句:如echo命令,用于输出“ ”之间的字符串

3、执行shell脚本

  • 编写脚本
[root@localhost ~]# vim first.sh        //新建first.sh脚本文件

#!/bin/bash
cd /opt/
pwd
ls -lh c*
echo "hello world"

  • 添加执行权限
[root@localhost opt]# chmod +x first.sh     //添加权限
  • 执行脚本

[root@localhost opt]# sh first.sh 

[root@localhost opt]# source first.sh

[root@localhost opt]# bash first.sh

[root@localhost opt]# ./first.sh                     # ./first.sh 先添加权限,再执行脚本

[root@localhost opt]# cat first.sh |bash

[root@localhost opt]# cat first.sh |sh

[root@localhost opt]# sh < first.sh 

[root@localhost opt]# sh first.sh 
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# source first.sh 
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# bash first.sh 
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# ./first.sh
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# cat first.sh |bash
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# cat first.sh |sh
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
[root@localhost opt]# sh < first.sh 
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world
  • 完整过程
[root@localhost opt]# vim first.sh 

#!/bin/bash
cd /opt/
pwd
ls -lh c*
echo "hello world"

[root@localhost opt]# ./first.sh 
/opt
-rw-r--r--. 1 root root  6 7月  15 20:56 c.txt
-rw-r--r--. 1 root root 13 7月  15 20:55 cxc.txt
hello world

三、重定向与管道操作

1、重定向

1.1、交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型设备文件文件描述符编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

1.2、重定向操作

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>将错误信息追加到指定的文件中
混合输出&>将标准输出和标准错误的内容保存到同一个文件中

 2、重定向输入

  • 重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待 从键盘输入。
  • 重定向输入使用“<”操作符。
  • 通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。例如,使用 passwd 命令为用户设置密码时,每次都必须根据提示输入两次密码字串,非常烦琐,若改 用重定向输入将可以省略交互式的过程,而自动完成密码设置(结合 passwd 命令的“--stdin” 选项来识别标准输入)。
[root@localhost opt]# vim kfc.txt

111
222
333
444
555

wq保存并退出

[root@localhost opt]# passwd  --stdin cxc < kfc.txt 
更改用户 cxc 的密码 。
passwd:所有的身份验证令牌已经成功更新。
  • 示例2

3、重定向输出

  • 重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。
  • 重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件
  • 若重定向输出的目标文件不存在,则会新建该文件,然后将前面命令的输出结果保存到该文件中;若目标文件已经存在,则将输出结果覆盖或追加到文件中。

            将系统处理器类型的信息输出到文件 kernel.txt

[root@localhost opt]# uname -p > kernel.txt
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# cat kernel.txt 
x86_64

           将系统的内核版本号信息追加到 kernel.txt 文件的末尾。

[root@localhost opt]# uname -r >> kernel.txt 
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# cat kernel.txt 
x86_64
3.10.0-693.el7.x86_64

4、错误重定向

错误重定向指的是将执行命令过程中出现的错误信息(如选项或参数错误等)保存到指 定的文件,而不是直接显示在屏幕上。错误重定向使用“2>”操作符


4.1、错误重定向作用

  • 在实际应用中,错误重定向可用来收集程序执行的错误信息,为排错提供依据
  • 还可以将无关紧要的错误信息重定向到空文件/dev/null 中,以保持脚本输出的简洁
[root@localhost opt]# echo abc > /dev/null     //输入abc到null里面
[root@localhost opt]# 
[root@localhost opt]# cat /dev/null             //查看/dev/null
[root@localhost opt]#                           //没有内容
  • 使用“2>”操作符时,会像使用“>”操作符一样覆盖目标文件的内容,若要追加内容而不是覆盖文件,则应改用“2>>”操作符
     
  • 当命令输出的结果可能既包括标准输出(正常执行)信息,又包括错误输出信息时,可 以使用操作符“>”“2>”将两类输出信息分别保存到不同的文件,也可以使用“&>”操作符将两类 输出信息保存到同一个文件
[root@localhost opt]# ls /etc/passwd xxx &>> 1.txt
[root@localhost opt]# 
[root@localhost opt]# cat 1.txt 
ls: 无法访问xxx: 没有那个文件或目录
/etc/passwd

5、管道操作

管道操作符号 “|”

将左侧的命令输出结果,作为右侧命令的处理对象

  • 使用格式
cmd1 命令1 | cmd2 命令2 [... | cmdn 命令n]
  • 示例:

过滤出/opt/文件下的.txt文件

四、Shell脚本变量及赋值

1、shell的变量

变量是用来临时保存数据的,并且该数据时可以变化的,任何一个语言都离不开变量,如果某个内容需要多次使用并且会重复出现,这样就可以使用变量了,如果需要修改直接修改变量就可以了


常见 Shell 变量的类型

类型描述示例
自定义变量用户自行定义和使用的变量,可在脚本或程序中自由命名和赋值。user_name = Alice
环境变量在操作系统环境中定义的变量,用于传递配置信息和设置。PATH = /usr/bin
只读变量一旦赋值后不能更改的变量,通常用来保护关键数据的完整性。readonly PI = 3.14
位置变量在脚本中用来表示命令行参数的位置的变量,如 $1 表示第一个参数。$1, $2, etc.
预定义变量编程语言或环境中预先定义好的变量,用于提供系统信息或控制特定行为。FILE, LINE

2、Shell变量的作用

变量在编程中用于存储数据、传递信息、控制程序流程和简化代码。

  • 变量名:临时存放数据的地方
  • 变量值:临时的可变化的数据

3、自定义变量

3.1、定义一个新变量

变量名以字母或下划线开头,区分大小写,建议全大写

  • 使用格式
变量名=变量值

注意:

  • 等号两边没有空格
  • 变量名称需以字母或下划线开头。
  • 名称中不要包含特殊字符(如+、-、*、/、.、?、%、&、#等)

3.2、echo——查看变量

  • 使用格式
echo $变量名
[root@localhost ~]# product=python             //定义变量
[root@localhost ~]# version=2.3.12
[root@localhost ~]# 
[root@localhost ~]# echo $product              //查看一个变量
python
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo $product$version       //查看两个变量
python2.3.12
[root@localhost ~]# echo ${product}3.5          //查看变量
python3.5
[root@localhost ~]# echo ${product} 3.5
python 3.5
[root@localhost ~]# 
[root@localhost ~]#
[root@localhost ~]# test=666
[root@localhost ~]# 
[root@localhost ~]# echo ${test}RMB
666RMB
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# xxx=6
[root@localhost ~]# 
[root@localhost ~]# kfc="oppo $xxx"
[root@localhost ~]# 
[root@localhost ~]# echo $kfc
oppo 6
[root@localhost ~]# 

4、变量特殊的赋值操作

类型描述示例
单引号不识别变量,内容原样保存path='/usr/local/bin'
双引号识别变量,可以直接调用变量,内容中的变量和命令会被解析greeting="Hello, $name"
反撇号提取命令执行后的结果,和 $() 用法相同current_date=date

4.1、单引号

  • 不识别变量,内容原样保存

4.2、双引号

  • 识别变量,可以直接调用变量,内容中的变量和命令会被解析

4.3、反撇号

  • 提取命令执行后的结果,和 $() 用法相同

  • 使用反撇号难以在一行命令中实现嵌套命令替换操作,这时可以改用 “$()”来代替反撇号操作,以解决嵌套的问题

5、交互式定义变量

5.1、read命令

  • 除了上述赋值操作以外,还可以使用 Bash 的内置命令 read 来给变量赋值。 
  • 用来提示用户输入信息,从而实现简单的交互过程。
  • 执行时将从标准输入设备(键盘)读入 一行内容,并以空格为分隔符,将读入的各字段依次赋值给指定的变量(多余的内容赋值给 最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。
[root@localhost ~]# read test
wo xiang shangtian               //用户自己输入信息
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo $test   //查看变量
wo xiang shangtian
[root@localhost ~]# 

5.2、read——常用参数

参数描述示例
-p提示用户输入信息read -p 请输入用户名: username
-n定义输入的字符数限制read -n 6 password
-s输入内容不显示,常用于输入密码read -s -p 请输入密码: password
-t定义超时时间,超过指定时间没有输入则自动退出,单位为秒read -t 10 -p 请输入验证码: verification_code

一般来说为了使交互式操作的界面更加友好,提高易用性,read 命令可以结合“-p”选项来设置提示信息,以便告知用户应该输入什么内容等相关事项
 

  • 示例1:
[root@localhost ~]# read -p "请输入你的姓名:" name
请输入你的姓名:cxc       
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo $name
cxc
[root@localhost ~]# 
  • 示例2:
[root@localhost ~]# read -s -p "请输入你的密码:" passwd 
请输入你的密码:[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo $passwd
123456
[root@localhost ~]# 
  • 示例3:
[root@localhost ~]# echo "wo yao da shi ge " > you.txt
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# read -p "请输入我的实力:" strength < you.txt 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# echo $strength 
wo yao da shi ge
[root@localhost ~]# 

6、变量的作用范围

默认情况下,新定义的变量只在当前的 Shell 环境中有效,因此称为局部变量,当进入子程序或新的子 Shell 环境时,局部变量将无法再使用

6.1、export命令

为了使用户定义的变量在所有的子 Shell 环境中能够继续使用,减少重复设置工作,可以通过内部命令 export 将指定的变量导出为全局变量。用户可以同时指定多个变量名称作为参数(无须使用“$”符号),变量名之间以空格分隔

[root@localhost ~]# num=xc90         //设置变量
[root@localhost ~]# 
[root@localhost ~]# echo $num        //查看变量
xc90
[root@localhost ~]# 
[root@localhost ~]# bash             //进入子shell环境
[root@localhost ~]# 
[root@localhost ~]# echo $num        
                                     //无法显示变量
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# exit              //登出
exit
[root@localhost ~]# 
[root@localhost ~]# echo $num         //查看变量
xc90
[root@localhost ~]# 
[root@localhost ~]# export num         //设置全局变量
[root@localhost ~]# 
[root@localhost ~]# bash               //设置变量环境
[root@localhost ~]# 
[root@localhost ~]# echo $num          //查看变量
xc90                                   //查看变量成功,可以显示
[root@localhost ~]# 
  •  但重启就无法生效了,可以修改配置文件永久设置
[root@localhost ~]#vim /etc/profile

export name=xc90

五、数值变量的运算及特殊变量

  • 在 Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算
  • 整数值的运算主要通过内部命令 expr 进行
  • 运算符与变量之间必须有至少一个空格。

1、expr命令

expr命令不仅可以运算,还支持输出到屏幕

常用的运算:

  • 运算内容:加(+)、减(-)、乘(*)、除(/)、取余(%)
  • 运算符号:$(()) 和$[]
  • 运算命令:expr和let
  • 运算工具:bc(系统自带)
运算符描述
+加法运算
-减法运算
*乘法运算(需转义为 \*,避免与文件通配符冲突)
/除法运算
%求模运算(取余数运算)

1.1、常量的运算

[root@localhost ~]# expr 6+3         //错误格式,没有空格
6+3
[root@localhost ~]# 
[root@localhost ~]# expr 6 + 3       //加法运算
9
[root@localhost ~]# expr 6 - 3       //减法运算
3
[root@localhost ~]# expr 6 * 3       //错误格式,没有\
expr: 语法错误
[root@localhost ~]# expr 6 \* 3      //乘法运算
18  
[root@localhost ~]# expr 6 / 3       //除法运算
2  
[root@localhost ~]# expr 6 % 3       //取余运算
0   
[root@localhost ~]# 

1.2、变量的运算

  • 例一
[root@localhost ~]# x=35
[root@localhost ~]# y=5
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# expr $x + 5
40
[root@localhost ~]# expr $x + $y
40
[root@localhost ~]# expr $x - $y
30
[root@localhost ~]# expr $x \* $y
175
[root@localhost ~]# expr $x / $y
7
[root@localhost ~]# expr $x % $y
0
[root@localhost ~]# 
  • 例二
[root@localhost ~]# x=50
[root@localhost ~]# y=10
[root@localhost ~]# 
[root@localhost ~]# expr $x + $x + $x
150
[root@localhost ~]# expr $y + $y + $y
30
[root@localhost ~]# 
[root@localhost ~]# expr $x + $y + $y
70
[root@localhost ~]# expr $x + $y + $x
110
[root@localhost ~]# 
[root@localhost ~]# sum=`expr $x + $y + $x `
[root@localhost ~]# 
[root@localhost ~]# echo $sum
110
[root@localhost ~]# 
  • 例三
[root@localhost ~]# 
[root@localhost ~]# read -p "请输入第一个数字:" num1
请输入第一个数字:4
[root@localhost ~]# read -p "请输入第二个数字:" num2
请输入第二个数字:3
[root@localhost ~]# 
[root@localhost ~]# expr $num1 + $num2
7
[root@localhost ~]# 

2、特殊的shell变量

2.1、环境变量

  • 环境变量指的是出于运行需要而由 Linux 系统提前创建的一类变量
  • 用于设置用户的工作环境,包括用户宿主目录、命令查找路径、用户当前目录、登录终端等
  • 环境变量的值由 Linux 系统自动维护,会随着用户状态的改变而改变。

2.2、常见的环境变量

变量名描述
USER用户名称
HOME用户的宿主目录
LANG语言和字符集
PWD当前所在的工作目录
PATH命令搜索路径
RANDOM随机数,会返回0-32767的整数
USER当前账户的账户名称
  • 使用 env 命令可以查看到当前工作环境下的环境变量

2.2.1、PATH 变量 
  • 用于设置可执行程序的默认搜索路径,
  • 当仅指定文件名称来执行命令程序时,Linux 系统将在 PATH 变量指定的目录范围查找对应的可执行文件,
  • 如果找不到则会提示“command not found”。

  • 永久设置
[root@localhost ~]#vim /etc/profile

export  PATH = $PATH:/root	    #设置为全局变量

wq     //保存并退出

 

  • 配置完不会立刻生效,需要刷新配置文件
[root@localhost ~]# source /etc/profile      //刷新配置文件
2.2.2、只读变量

变量一经设定,其值是不可改变的!

2.2.3、位置变量
  • 当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。 
  • 位置变量也称为位置参数,使用$1、$2、$3、…、$9 表示
  • 命令或脚本本身的名称使用“$0”表示

  • vim编辑内容

2.2.4、预定义变量

预定义变量是由 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而 不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示

参数描述
$#位置参数的个数。
$*所有位置参数作为单个字符串。
$@所有位置参数作为独立的字符串。
$?上一个命令的退出状态(0表示成功,非零表示失败)。
$0当前脚本或程序的名称。
$$当前Shell进程的进程号。
$!最后一个后台进程的进程号

  • vim编辑内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php相关

php相关 ​ 借鉴了小迪安全以及各位大佬的博客&#xff0c;如果一切顺利&#xff0c;会不定期更新。 如果感觉不妥&#xff0c;可以私信删除。 默认有php基础。 文章目录 php相关1. php 缺陷函数1. 与2. MD53. intval()4. preg_match() 2. php特性1. php字符串解析特性2. 杂…

数据结构-C语言-排序(3)

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 1.1-排序定义&#xff1a; 排序就是将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。(注&#xff1a;我们这里的排序采用的都为升序) 1.2-排序分…

从汇编层看64位程序运行——栈保护

大纲 栈保护延伸阅读参考资料 在《从汇编层看64位程序运行——ROP攻击以控制程序执行流程》中&#xff0c;我们看到可以通过“微操”栈空间控制程序执行流程。现实中&#xff0c;黑客一般会利用栈溢出改写Next RIP地址&#xff0c;这就会修改连续的栈空间。而编译器针对这种场景…

集合媒体管理、分类、搜索于一体的开源利器:Stash

Stash&#xff1a;强大的媒体管理工具&#xff0c;让您的影音生活井井有条- 精选真开源&#xff0c;释放新价值。 概览 Stash是一个专为个人媒体管理而设计的开源工具&#xff0c;基于 Go 编写&#xff0c;支持自部署。它以用户友好的界面和强大的功能&#xff0c;满足了现代用…

16_网络IPC2-寻址

进程标识 字节序 采用大小模式对数据进行存放的主要区别在于在存放的字节顺序&#xff0c;大端方式将高位存放在低地址&#xff0c;小端方式将高位存放在高地址。 采用大端方式进行数据存放符合人类的正常思维&#xff0c;而采用小端方式进行数据存放利于计算机处理。到目前…

IDEA快速生成项目树形结构图

下图用的IDEA工具&#xff0c;但我觉得WebStorm 应该也可以 文章目录 进入项目根目录下&#xff0c;进入cmd输入如下指令&#xff1a; 只有文件夹 tree . > list.txt 包括文件夹和文件 tree /f . > list.txt 还可以为相关包路径加上注释

系统架构师考点--软件工程(下)

大家好。今天继续总结软件工程的知识点。 一、处理流程设计 业务流程重组BPR BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计&#xff0c;从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。BPR设计原则、系统规划和步骤如下图所示&am…

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起&#xff0c;这些库的受欢迎程度呈指数级增长。 在这篇文章中&#xff0c;我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…

日志的编写与线程池的结合

目录 一、认识日志 二、时间的等级划分 三、日志的输出端 3.1 保存至文件 四、日志的部分信息 4.1 日志等级 4.2 日志时间 五、加载日志 六、日志的宏编写 七、ThreadPool Log 一、认识日志 记录事件&#xff1a; 日志用于记录系统运行过程中发生的各种事件&…

word 设置多级混合标题自动更新

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 有没有体会过多级标题&#xff0c;怎么设置都不听使唤的情况&#xff1f; 我想要的格式是&#xff1a; 二、原因分析 多级标题中发现&#xff0c;输入编号格式这里有个数字没有底纹,是了&#xff0…

解析 Mira :基于 Web3,让先进的 AI 技术易于访问和使用

“Mira 平台正在以 Web3 的方式解决当前 AI 开发面临的复杂性问题&#xff0c;同时保护 AI 贡献者的权益&#xff0c;让他们可以自主拥有并货币化自己的模型、数据和应用&#xff0c;以使先进的 AI 技术更加易于访问和使用。” AI 代表着一种先进的生产力&#xff0c;它通过深…

nginx代理缓存

在服务器架构中&#xff0c;反向代理服务器除了能够起到反向代理的作用之外&#xff0c;还可以缓存一些资源&#xff0c;加速客户端访问&#xff0c;nginx的ngx_http_proxy_module模块不仅包含了反向代理的功能还包含了缓存功能。 1、定义代理缓存规则 参数详解&#xff1a; p…

万字长文之分库分表里如何优化分页查询?【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 分页查询】

分库分表的一般做法 一般会使用三种算法&#xff1a; 哈希分库分表&#xff1a;根据分库分表键算出一个哈希值&#xff0c;根据这个哈希值选择一个数据库。最常见的就是数字类型的字段作为分库分表键&#xff0c;然后取余。比如在订单表里&#xff0c;可以按照买家的ID除以8的…

开发实战经验分享:互联网医院系统源码与在线问诊APP搭建

作为一名软件开发者&#xff0c;笔者有幸参与了多个互联网医院系统的开发项目&#xff0c;并在此过程中积累了丰富的实战经验。本文将结合我的开发经验&#xff0c;分享互联网医院系统源码的设计与在线问诊APP的搭建过程。 一、需求分析 在开发任何系统之前&#xff0c;首先要…

UPFC统一潮流控制器的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 UPFC统一潮流控制器的simulink建模与仿真。能够在不增加输电线路物理容量的情况下&#xff0c;显著提高电力系统的传输能力和稳定性。UPFC能够同时控制输电线路的有功功率、无…

技术速递|Let’s Learn .NET Aspire – 开始您的云原生之旅!

作者&#xff1a;James Montemagno 排版&#xff1a;Alan Wang Let’s Learn .NET 是我们全球性的直播学习活动。在过去 3 年里&#xff0c;来自世界各地的开发人员与团队成员一起学习最新的 .NET 技术&#xff0c;并参加现场研讨会学习如何使用它&#xff01;最重要的是&#…

微软研究人员为电子表格应用开发了专用人工智能LLM

微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序&#xff0c;用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型&#xff0c;这种模型是专门为 Excel、Go…

在设计电气系统时,电气工程师需要考虑哪些关键因素?

在设计电气系统时&#xff0c;电气工程师需要考虑多个关键因素&#xff0c;以确保系统的安全性、可靠性、效率和经济性。我收集归类了一份plc学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言…

【Neural signal processing and analysis zero to hero】- 1

The basics of neural signal processing course from youtube: 传送地址 Possible preprocessing steps Signal artifacts (not) to worry about doing visual based artifact rejection so that means that before you start analyzing, you can identify those data epic…

《学会 SpringBoot · 定制 SpringMVC》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;如需交流&#xff…