【Shell】环境变量 自定义变量 特殊变量

news2024/11/19 5:39:28

Shell变量:环境变量

目标

1、理解什么是系统环境变量?

2、掌握常用的系统环境变量都有哪些?

Shell变量的介绍

变量用于存储管理临时的数据, 这些数据都是在运行内存中的.

变量类型

  1. 系统环境变量

  2. 自定义变量

  3. 特殊符号变量

系统环境变量

介绍

是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用

Shell的配置文件分类

1.全局配置文件 /etc/profile /etc/profile.d/*.sh /etc/bashrc

2.个人配置文件 当前用户/.bash_profile 当前用户/.bashrc

一般情况下,我们都是直接针对全局配置进行操作。

环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

系统级环境变量:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用, 全局共享 用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用, 登录用户使用

查看当前Shell系统环境变量

查看命令

env

效果

查看Shell变量(系统环境变量+自定义变量+函数)

命令

set

效果

常用系统环境变量

变量名称含义
==PATH==与windows环境变量PATH功能一样,设置命令的搜索路径,以冒号为分割
HOME当前用户主目录:/root
SHELL当前shell解析器类型:/bin/bash
==HISTFILE==显示当前用户执行命令的历史列表文件:/root/.bash_history
PWD显示当前所在路径:/root
OLDPWD显示之前的路径
HOSTNAME显示当前主机名:itheima
HOSTTYPE显示主机的架构,是i386、i686、还是x86、x64等:x86_64
==LANG==设置当前系统语言环境:zh_CN.UTF-8

环境变量输出演示

 

小结

1.系统环境变量是什么?

是系统提供的环境变量, 通过加载Shell配置文件中变量数据共享给Shell程序使用

2.环境变量的分类?

系统级环境变量, Shell环境加载全局配置文件中定义的变量

用户级环境变量, Shell环境加载个人配置文件中定义的变量

3.env与set区别

env用于查看系统环境变量

set用于查看系统环境变量+自定义变量+函数

4.常用环境变量

变量名称含义
PATH命令搜索的目录路径, 与windows的环境变量PATH功能一样
LANG查询系统的字符集
HISTFILE查询当前用户执行命令的历史列表

Shell变量:自定义变量

目标

理解自定义变量的分类

能够自定义变量进行增\删\改\查

自定义变量介绍

就是自己定义的变量

分类

  1. 自定义局部变量

  2. 自定义常量

  3. 自定义全局变量

自定义局部变量

介绍

就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量

定义与使用

定义语法

var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头

  2. 等号两侧不能有空格

  3. 在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算

  4. 变量的值如果有空格, 必须使用双引号括起来

  5. 不能使用Shell的关键字作为变量名称

演示

查询变量值语法

# 语法1: 直接使用变量名查询
$var_name
# 语法2: 使用花括号
${var_name}
# 区别: 花括号方式适合拼接字符串

演示

注意: 如果"My name is ${var2}Style"$var2 不带花括号, 系统会认为获取$var2Style 变量数据, 这个变量不存在就获取不到数据,执行效果如下

结论: 推荐大家使用花括号才是编程好习惯

变量删除

语法

unset var_name

演示

自定义常量

介绍

就是变量设置值以后不可以修改的变量叫常量, 也叫只读变量

语法

readonly var_name

演示

自定义全局变量

父子Shell环境介绍

例如: 有2个Shell脚本文件 A.sh 和 B.sh

如果 在A.sh脚本文件中执行了B.sh脚本文件, 那么A.sh就是父Shell环境, B.sh就是子Shell环境

自定义全局变量介绍

就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用

自定义全局变量语法

export var_name1 var_name2

案例需求

测试全局变量在子Shell中是否可用, 在父Shell中是否可用

案例实现步骤

  1. 创建2个脚本文件 demo2.sh 和 demo3.sh

  2. 编辑demo2.sh

    命令1:定义全局变量VAR4

    命令2: 执行demo3.sh脚本文件

  3. 编辑demo3.sh

    输出全局变量VAR4

  4. 执行demo2.sh脚本文件

案例演示

  1. 创建demo2.sh和demo3.sh文件

  1. 编辑demo2.sh, 里面定义变量VAR4并设置为全局, 并里面执行demo3.sh脚本文件

    vim demo2.sh

  1. 编辑demo3.sh, 里面打印VAR4

    vim demo3.sh

  1. 执行脚本文件demo2.sh, 观察打印VAR4效果

  1. 执行脚本文件后, 在交互式Shell环境打印VAR4, 观察打印VAR4效果

结论

全局变量在当前Shell环境与子Shell环境中可用, 父Shell环境中不可用

小结

自定义变量的分类

自定义局部变量: 就是在一个脚本文件内部使用 var_name=value

自定义常量: 不可以修改值的变量, readonly var_name

自定义全局变量: 设置变量在当前脚本文件中与子Shell环境可以使用的变量, export var_name

自定义变量进行增\删\改\查

定义和修改: var_name=value

查询:${var_name} 或 $var_name

删除: unset var_name

Shell变量:特殊变量

目标

能够说出常用的特殊变量有哪些

特殊变量:$n

语法

$n

含义

用于接收脚本文件执行时传入的参数
$0 用于获取当前脚本文件名称的
$1~$9, 代表获取第一输入参数到第9个输入参数
第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取

执行脚本文件传入参数语法

sh 脚本文件 输入参数1 输入参数2 ...

案例需求

创建脚本文件demo4.sh文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数

实现步骤

  1. 创建脚本文件demo4.sh

  2. 编辑demo4.sh的文件内容

    # 命令1: 打印当前脚本文件名字
    # 命令2: 打印第1个输入参数
    # 命令3: 打印第2个输入参数
    # 命令4: 打印第10个输入参数
  3. 执行脚本文件demo4.sh

演示

  1. 创建demo4.sh文件

  1. 编辑demo4.sh文件, 输出脚本文件名称\第一个输入参数\第二个输入参数

  1. 执行demo4.sh文件,输入输出参数itcast itheima的2个输入参数, 观察效果

特殊变量:$#

语法

$#

含义

获取所有输入参数的个数

案例需求

在demo4.sh中输出输入参数个数

演示

编辑demo4.sh, 输出输入参数个数

执行demo4.sh传入参数itcast, itheima, 播仔 看效果

特殊变量:$*$@

语法

$*
$@
# 含义都是获取所有输入参数, 用于以后输出所有参数

$*$@区别

1.不使用双引号括起来, 功能一样
  $*和$@获取所有输入参数,格式为: $1 $2 ... $n
2.使用双引号括起来
  "$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
  "$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
  使用循环打印所有输入参数可以看出区别

循环语法

for var in 列表变量
do      # 循环开始
   命令  # 循环体
done    # 循环结束

案例需求

在demo4.sh中循环打印输出所有输入参数, 体验$*$@的区别

实现步骤

编辑demo4.sh脚本文件

# 增加命令: 实现直接输出所有输入后参数
# 增加命令: 使用循环打印输出所有输入参数

演示

  1. 编辑demo4.sh文件

  1. 直接输出所有输入参数, 与循环方式输出所有输入参数(使用双引号包含 $*$@ )

    #!/bin/bash
    # 命令1: 打印当前脚本文件名字
    echo "当前脚本文件名称:$0"
    ​
    # 命令2: 打印第1个输入参数
    echo "第一个输入参数:$1"
    ​
    # 命令3: 打印第2个输入参数
    echo "第二个输入参数:$2"
    ​
    # 命令4: 打印第10个输入参数
    echo "第十个输入参数不带花括号获取:$10"
    echo "第十个输入参数带花括号获取:${10}"
    ​
    # 命令5 打印所有输入参数的个数
    echo "所有输入参数个数:${#}"
    ​
    ​
    # 增加命令: 实现直接输出所有输入后参数
    echo '使用$*直接输出:'$*
    echo '使用$@直接输出:'$@
    ​
    # 增加命令: 使用循环打印输出所有输入参数
    echo '循环遍历输出$*所有参数'
    for item in "$*"
    do
       echo $item
    done
    echo '循环遍历输出$@所有参数'
    for item in "$@"
    do
       echo $item
    done
  2. 运行观察区别

特殊变量:$?

语法

$?

含义

用于获取上一个Shell命令的退出状态码, 或者是函数的返回值

每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功

一般来说, 返回0代表命令执行成功, 非0代表执行失败

演示

输入一个正确命令, 再输出$?

输入一个错误命令, 在输出$?

特殊变量:$$

语法

$$

含义

用于获取当前Shell环境的进程ID号

演示

查看当前Shell环境进程编号

ps -aux|grep bash

输出 $$ 显示当前shell环境进程编号

小结

常用的特殊符号变量如下

特殊变量含义
$n获取输入参数的 $0, 获取当前Shell脚本文件名字 $1~$9, 获取第一个输入参数到第九个输入参数 ${10} 获取10和10以上的参数需要使用花括号
$#获取所有输入参数的个数
$*$@获取所有输入参数数据 区别: 如果不使用双引号, 功能一样, 获取所有参数数据为一个字符串, 如果使用了双引号, $@获取的就是参数列表对象, 每个参数都是一个独立字符串,
$?获取上一个命令的退出状态码, 一般;来说0代表命令成功, 非0代表执行失败
$$获取当前shell环境进程的ID号

Shell环境变量深入:自定义系统环境变量

目标

能够自定义系统级环境变量

全局配置文件/etc/profile应用场景

当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量, 供给所有Shell程序使用

以后只要是所有Shell程序或命令使用的变量, 就可以定义在这个文件中

案例演示

需求

/etc/profile定义存储自定义系统级环境变量数据

创建环境变量步骤

  1. 编辑/etc/profile全局配置文件

    # 增加命令: 定义变量VAR1=VAR1 并导出为环境变量
    # 扩展: vim里面的命令模式使用G快速定位到文件末尾位置, 使用gg定位到文件首行位置
  2. 重载配置文件/etc/profile, 因为配置文件修改后要立刻加载里面的数据就需要重载, 语法

    source /etc/profile
  3. 在Shell环境中读取系统级环境变量VAR1

创建环境变量演示

编辑/etc/profile文件

vim /etc/profile

添加设置变量VAR1=VAR1并导出成为环境变量, 在/etc/profile文件末尾添加如下命令

# 创建环境变量
VAR1=VAR1
export VAR1

3、保存/etc/profile退出

4、重新加载/etc/profile文件数据更新系统环境变量

source /etc/profile

注意:如果这一步不执行,无法读取更新的环境变量

3、输出环境变量VAR1

echo $VAR1

小结

如何自定义系统级环境变量

  1. 系统级全局配置文件: /etc/profile

  2. 设置环境变量: export var_name=value, 注意环境变量建议变量名全部大写

  3. 修改了/etc/profile文件后, 要立刻加载修改的数据需要重载配置文件: source /etc/profile

Shell环境变量深入:加载流程原理介绍

目标

  1. 能够说出交互式Shell与非交互式Shell

  2. 能够说出登录Shell与非登录Shell环境

Shell工作环境介绍

用户进入linux系统就会初始化Shell环境, 这个环境会加载全局配置文件和用户个人配置文件中环境变量.每个脚本文件都有自己的Shell环境

shell工作环境分类

交互式与非交互式shell

交互式Shell

与用户进行交互, 互动. 效果就是用户输入一个命令, Shell环境立刻反馈响应.

非交互式Shell

不需要用户参与就可以执行多个命令. 比如一个脚本文件含有多个命令,直接执行并给出结果

登录Shell与非登录Shell环境

类型名称含义
shell登录环境需要用户名\密码登录的Shell环境
shell非登录环境不需要用户名,密码进入的Shell环境 或 执行脚本文件

注意:不同的工作环境加载环境变量流程不一样

环境变量初始化流程

1.全局配置文件 /etc/profile /etc/profile.d/*.sh /etc/bashrc

2.个人配置文件 当前用户/.bash_profile 当前用户/.bashrc

环境变量加载初始化过程

小结

  1. 能够说出交互式Shell与非交互式Shell

    交互式Shell: 就是需要用户参与互动的Shell环境, 效果用户输入一个命令, 环境就立刻响应结果

    非交互式Shell: 只执行命令, 不需要用户的参与

  2. 能够说出登录Shell与非登录Shell环境

    登录Shell环境: 要以用户名与密码登录到系统默认采用登录Shell环境

    非登录Shell环境: 不实用用户名与密码进入linux系统的Shell环境

Shell环境变量深入:加载流程测试

目标

理解Shell环境变量的加载流程测试

能够知道环境变量应该配置在哪里

切换Shell环境执行脚本文件介绍

在执行一个脚本文件时可以指定具体Shell环境进行执行脚本文件, 这个就是切换Shell环境执行脚本

Shell登录环境执行脚本文件语法

sh/bash -l/--login 脚本文件

含义: 先加载Shell登录环境流程初始化环境变量, 再执行脚本文件

Shell非登录环境变量执行脚本文件语法

bash # 加载Shell非登录环境
sh/bash 脚本文件 # 直接执行脚本文件

含义: 先执行加载Shell非登录环境流程初始化环境变量, 再执行脚本文件

测试案例

需求

Shell登录环境会运行/etc/profile

Shell非登录环境会运行/.bashrc

在/etc/profile与/当前用户/.bashrc文件分别设置环境变量数据,然后在shell脚本文件中输出环境变量数据,最后切换不同环境执行shell脚本文件观察验证上面的流程运行

分析

  1. 清理工作, 清理/etc/profile文件中VAR1环境变量进行删除, 并且重载这个配置文件

  2. 编辑/etc/profile, 增加环境变量VAR1=VAR1

  3. 编辑/root/.bashrc, 增加环境变量VAR2=VAR2

  4. 创建demo1.sh文件, 读取环境变量数据进行打印

    # 输出环境变量VAR1
    # 输出环境变量VAR2
  5. 以Shell非登录环境执行demo1.sh脚本文件, 观察只会输出VAR2, 不会输出VAR1

  6. 以Shell登录环境执行demo1.sh脚本文件, 观察会输出VAR2和VAR1

演示

编辑/etc/profile文件

vim /etc/profile

编辑添加如下内容,保存退出

在root目录下,编辑.bashrc文件

vim .bashrc

编辑添加如下最后2行内容,保存退出

创建文件demo1.sh

touch demo1.sh

编辑文件demo1.sh,添加如下内容

直接执行脚本文件

bash demo1.sh

直接执行脚本文件, 即没有加载登录Shell环境变量, 也没有加载非登录Shell环境变量

先加载非登录Shell环境变量, 然后执行脚本文件

bash
bash demo1.sh

Shell非登录环境会加载文件 当前用户/.bashrc 的环境变量数据

所以这里会输出VAR2的环境变量数据

先加载登录Shell环境变量, 然后执行脚本文件

bash -l demo1.sh

Shell登录环境会加载文件 etc/profile当前用户/.bashrc 的环境变量数据

所以这里会输出VAR1和VAR2的环境变量数据

小结

1、Shell环境变量初始化加载原理过程

分类初始化环境变量过程执行文件顺序
shell登录环境初始化过程/etc/profile--》/etc/profile.d/*.sh--》~/.bash_profile--》~/.bashrc--》/etc/bashrc
shell非登录环境初始化过程~/.bashrc--》/etc/bashrc--》/etc/profile.d/*.sh

2、那么以到底将环境变量定义到哪里呢?/etc/profile与/etc/bashrc的区别?

需要登录的执行的shell脚本读取的环境变量配置在:/etc/profile、/当前用户/.bash_profile

不需要登录的用户执行的shell脚本读取的环境变量配置在:/当前用户/.bashrc、/etc/bashrc

Shell环境变量深入:识别Shell环境类型

目标

理解如何识别shell登录环境与非登录环境

语法

使用$0识别环境语法

echo $0

输出 -bash 代表:shell登录环境

输出 bash 代表: shell非登录环境

注意:这个 $0 环境变量如果用在子shell中(shell脚本文件)输出Shell脚本本身的文件名

bash命令语法

bash

bash命令:用于切换为Shell非登录环境

分析

1、直接登录系统为shell登录环境输出 $0 观察输出信息效果

2、使用 bash 命令切换为shell非登录环境输出 $0 观察输出信息效果

3、创建test.sh脚本文件,编辑添加输出 $0 ,编程保存完成后执行test.sh脚本文件观察输出信息效果

演示

直接登录linux系统使用如下命令效果

bash命令将当前环境转换为Shell非登录环境

小结

1、如何识别shell登录环境与非登录环境?

$0 用于获取当前Shell环境的类型,  bash代表Shell非登录环境, -bash 代表Shell登录环境
# $0不可以在脚本文件中使用, 因为代表获取脚本文件名字

Shell环境变量深入:详细切换Shell环境

目标

理解切换shell环境的命令

切换shell环境命令介绍

  1. 直接登录加载shell登录环境

  2. su切换用户加载Shell登录与Shell非登录环境

  3. bash加载Shell登录与Shell非登录环境

切换Shell环境命令演示

切换环境方式1:直接登录系统

介绍

直接在虚拟机上使用用户名与密码登录linux系统或使用客户端直接连接远程linux系统

演示

虚拟机本地直接登录演示

客户端远程采用SSH登录演示

切换环境方式2:su切换用户登录

命令

语法1

su 用户名 --login 
或
su 用户名 -l
 # 切换到指定用户, 加载Shell登录环境变量

语法2

su 用户名  
# 切换到指定用户,  加Shell非登录环境变量
分析步骤

1、创建普通用户userA

2、切换到用户userA,使用-l加载Shell登录环境变量 , 输出环境变量$0,观察输出-bash

4、使用exit退出userA

5、切换到用户userA,加载Shell非登录环境变量,输出环境变量$0,观察输出bash

演示

创建普通用户userA

useradd -m userA

以Shell登录环境执行切换到用户userA,输出环境变量$0,输出 -bash 说明当前为Shell登录环境

使用exit退出userA

以Shell非登录环境执行切换到用户userA,输出环境变量$0,输出 bash 说明当前为Shell非登录环境

切换环境方式3:bash切换

命令

语法1:

bash  # 加载【Shell非登录环境】

语法2:

bash -l  Shell脚本文件 /  bash --login shell脚本文件
sh -l shell脚本文件 / sh --login shell脚本文件
# 先加载【Shell登录环境】然后运行指定Shell脚本文件
分析

使用bash执行test.sh脚本文件,发生错误说明当前环境为Shell非登录环境

演示

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

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

相关文章

golang查看CPU使用率与内存及源码中的//go:指令

golang查看CPU使用率与内存 1 psutil 1.1 概念与应用场景 psutil是业内一个用于监控OS资源的软件包,目前已经多种语言,包括但不限于Python、Go。 gopsutil是 Python 工具库psutil 的 Golang 移植版,可以帮助我们方便地获取各种系统和硬件信…

基于Java的实验室设备管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

如何在电脑上设置新的蓝牙耳机

本文介绍如何将蓝牙耳机连接到Windows或Mac电脑。 如何在Windows上设置新的蓝牙耳机 蓝牙耳机的设置过程因平台而异,但以下是Windows 11的步骤: 1、选择“开始”,然后在搜索框中输入蓝牙,以显示蓝牙和其他设备。 2、选择添加设…

【LeetCode:2316. 统计无向图中无法互相到达点对数 | BFS + 乘法原理】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

施密特正交化

相信大家在平时的期末考试中一定少不了对某某向量组执行标准正交化类型的题目。今天我们从这个题目入手,说明这个如何执行施密特正交化,以及为什么要进行正交化。 一、例子 例子:设 a 1 [ 1 2 − 1 ] a_1\begin{bmatrix}1\\2\\-1\end{bmat…

阿里妈妈Union Lab全量公测,你会用吗?

Union Lab是一种智能化的选品推荐、推广内容创作工具,它内置了大语言模型(LLMs),使得选品、推广更加智能和简单。通过联盟底层货品服务,Union Lab可以实现智能化货品发现、分析、选品、投放、创意生产,基于…

嵌入式mqtt总线架构方案mosquitto+paho

一 mqtt通信模型 MQTT 协议提供一对多的消息发布&#xff0c;可以降低应用程序的耦合性&#xff0c;用户只需要编写极少量的应用代码就能完成一对多的消息发布与订阅&#xff0c;该协议是基于<客户端-服务器>模型&#xff0c;在协议中主要有三种身份&#xff1a;发布者&…

力扣第37题 解数独 c++ 难~ 回溯

题目 37. 解数独 困难 相关标签 数组 哈希表 回溯 矩阵 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫…

基于Java的文物管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

GRASP 、SOLID 与 GoF 设计模式

一、GRASP GRASP&#xff1a;通用职责分配软件设计模式(General Responsibility Assignment Software Patterns)&#xff0c;其主要思想是基于单一职责设计软件对象。 思考软件对象设计以及大型构件的流行方式是&#xff0c;考虑其职责、角色和协作。这是被称为职责驱动设计&a…

C++:无法查找或打开 PDB 文件?? 如何解决呢?以及产生原因是什么?

C:无法查找或打开 PDB 文件?? 如何解决呢&#xff1f;以及产生原因是什么&#xff1f; 前言解决办法原因 前言 最近博主在写C时&#xff0c;明明代码都正确&#xff0c;但编译失败。查看原因后发现显示&#xff1a;无法查找或打开 PDB 文件。&#xff08;先介绍解决办法&…

【高等数学】微分中值定理

文章目录 1、极值2、费马引理3、罗尔定理4、拉格朗日中值定理4.1用拉格朗日定理证明基本结论 5、柯西中值定理6、微分中值定理的意义7、三大中值定理的意义 1、极值 若 ∃ δ > 0 ∃δ>0 ∃δ>0&#xff0c;使得 ∀ x ∈ U ( x 0 , δ ) ∀x\in U(x_0,δ) ∀x∈U(x0…

DDD与微服务的千丝万缕

一、软件设计发展过程二、什么是DDD&#xff1f;2.1 战略设计2.2 战术设计2.3 名词扫盲1. 领域和子域2. 核心域、通用域和支撑域3. 通用语言4. 限界上下文5. 实体和值对象6. 聚合和聚合根 2.4 事件风暴2.5 领域事件 三、DDD与微服务3.1 DDD与微服务的关系3.2 基于DDD进行微服务…

2023年中国煤气节能器产量及市场规模分析[图]

煤气节能器行业是指生产和销售用于煤气燃烧系统中的节能器的行业。煤气节能器是一种能够有效提高煤气燃烧效率、降低燃烧过程中的热损失的装置&#xff0c;广泛应用于工业生产、民用燃烧等领域。煤气节能器行业的发展与煤气燃烧技术的发展密切相关&#xff0c;随着煤气燃烧技术…

操作系统期末复习题版详解(含解析)

操作系统期末复习 第一章 操作系统引论 一、Os具有哪几大特征?它们之间有何关系? 【参考答案】OS具有并发、共享、虚拟和异步这4个基本特征。它们之间的关系包含以下几个方面。 并发和共享是OS最基本的特征。为了提高计算机资源的利用率&#xff0c;OS必然要采用多道程序设…

Excel 5s内导入20w条简单数据(ExecutorType.BATCH)Mybatis批处理的应用

文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType&#xff1a;批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…

成功解决ModuleNotFoundError: No module named ‘docx.text.hyperlink‘

成功解决ModuleNotFoundError: No module named docx.text.hyperlink 目录 解决问题 解决思路 解决方法 解决问题 ModuleNotFoundError: No module named ‘docx.text.hyperlink‘ 解决思路 No module named docx.text.hyperlink"。这个错误通常表示你的代码中缺少了…

react 中ref 属性的三种写法

目录 1. 字符串 ref 2.dom节点上使用回调函数ref 3.React.createRef() 1. 字符串 ref 最早的ref用法。&#xff08;由于效率问题&#xff0c;现在官方不推荐使用这种写法。&#xff09; 1.dom节点上使用&#xff0c;通过this.refs.xxxx来引用真实的dom节点 <input ref&q…

云上智能驾驶三维重建最佳实践

智能驾驶技术的不断发展&#xff0c;正在改变着我们的出行方式和交通系统。作为其中的一个关键技术&#xff0c;三维重建在智能驾驶系统中起着重要的作用。除去车端本身的感知、重建算法&#xff0c;自动驾驶技术的落地与发展需要庞大的云端重建能力支撑&#xff0c;火山引擎多…

魔术《4 Kings 折纸》的三重境界(二)——集合语言和数理逻辑

早点关注我&#xff0c;精彩不错过&#xff01; 上回我们回顾了《4 Kings 折纸》这个魔术的内容和用小学的奇偶性原理解析了操作的过程&#xff0c;详情请戳&#xff1a; 魔术《4 Kings 折纸》的三重境界&#xff08;一&#xff09;——奇偶性原理 今天我们进入后第二境界&…