【Shell】环境变量 自定义变量 特殊变量
Shell变量:环境变量
目标
1、理解什么是系统环境变量?
2、掌握常用的系统环境变量都有哪些?
Shell变量的介绍
变量用于存储管理临时的数据, 这些数据都是在运行内存中的.
变量类型
-
系统环境变量
-
自定义变量
-
特殊符号变量
系统环境变量
介绍
是系统提供的共享变量.是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变量:自定义变量
目标
理解自定义变量的分类
能够自定义变量进行增\删\改\查
自定义变量介绍
就是自己定义的变量
分类
-
自定义局部变量
-
自定义常量
-
自定义全局变量
自定义局部变量
介绍
就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量
定义与使用
定义语法
var_name=value
变量定义规则
-
变量名称可以有字母,数字和下划线组成, 但是不能以数字开头
-
等号两侧不能有空格
-
在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算
-
变量的值如果有空格, 必须使用双引号括起来
-
不能使用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中是否可用
案例实现步骤
-
创建2个脚本文件 demo2.sh 和 demo3.sh
-
编辑demo2.sh
命令1:定义全局变量VAR4
命令2: 执行demo3.sh脚本文件
-
编辑demo3.sh
输出全局变量VAR4
-
执行demo2.sh脚本文件
案例演示
-
创建demo2.sh和demo3.sh文件

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

-
编辑demo3.sh, 里面打印VAR4
vim demo3.sh

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

-
执行脚本文件后, 在交互式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文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数
实现步骤
-
创建脚本文件demo4.sh
-
编辑demo4.sh的文件内容
# 命令1: 打印当前脚本文件名字 # 命令2: 打印第1个输入参数 # 命令3: 打印第2个输入参数 # 命令4: 打印第10个输入参数
-
执行脚本文件demo4.sh
演示
-
创建demo4.sh文件

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

-
执行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脚本文件
# 增加命令: 实现直接输出所有输入后参数 # 增加命令: 使用循环打印输出所有输入参数
演示
-
编辑demo4.sh文件
![]()
-
直接输出所有输入参数, 与循环方式输出所有输入参数(使用双引号包含
$*与$@)#!/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 "$*" doecho $item done echo '循环遍历输出$@所有参数' for item in "$@" doecho $item done -
运行观察区别

特殊变量:$?
语法
$?
含义
用于获取上一个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定义存储自定义系统级环境变量数据
创建环境变量步骤
-
编辑/etc/profile全局配置文件
# 增加命令: 定义变量VAR1=VAR1 并导出为环境变量 # 扩展: vim里面的命令模式使用G快速定位到文件末尾位置, 使用gg定位到文件首行位置
-
重载配置文件/etc/profile, 因为配置文件修改后要立刻加载里面的数据就需要重载, 语法
source /etc/profile
-
在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
小结
如何自定义系统级环境变量
系统级全局配置文件: /etc/profile
设置环境变量:
export var_name=value, 注意环境变量建议变量名全部大写修改了/etc/profile文件后, 要立刻加载修改的数据需要重载配置文件:
source /etc/profile
Shell环境变量深入:加载流程原理介绍
目标
-
能够说出交互式Shell与非交互式Shell
-
能够说出登录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
环境变量加载初始化过程
小结
-
能够说出交互式Shell与非交互式Shell
交互式Shell: 就是需要用户参与互动的Shell环境, 效果用户输入一个命令, 环境就立刻响应结果
非交互式Shell: 只执行命令, 不需要用户的参与
-
能够说出登录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脚本文件观察验证上面的流程运行
分析
-
清理工作, 清理/etc/profile文件中VAR1环境变量进行删除, 并且重载这个配置文件
-
编辑/etc/profile, 增加环境变量VAR1=VAR1
-
编辑/root/.bashrc, 增加环境变量VAR2=VAR2
-
创建demo1.sh文件, 读取环境变量数据进行打印
# 输出环境变量VAR1 # 输出环境变量VAR2
-
以Shell非登录环境执行demo1.sh脚本文件, 观察只会输出VAR2, 不会输出VAR1
-
以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环境命令介绍
-
直接登录加载shell登录环境
-
su切换用户加载Shell登录与Shell非登录环境
-
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非登录环境
演示

相关文章:
【Shell】环境变量 自定义变量 特殊变量
Shell变量:环境变量 目标 1、理解什么是系统环境变量? 2、掌握常用的系统环境变量都有哪些? Shell变量的介绍 变量用于存储管理临时的数据, 这些数据都是在运行内存中的. 变量类型 系统环境变量 自定义变量 特殊符号变量 系统环境变…...
Maven 打包 jar、war 包配置
1、导出 jar 包配置 <build><finalName>weaver-customerservice-distribution-component</finalName><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></inc…...
感悟:一个小小的摄像头APP,也解决了很多BUG
本来以为,简单的测试一下就行了,应该没有几个BUG。应该是比较轻松的。 然而现实是每天干活时,都能发现几个BUG。这BUG不解决还不行。六石管理学告诉我们四大容易:说容易,看容易,看别人容易,会了…...
顺序表第三节(通讯录基础版)
目录 可以先看一遍第二节在看这个 顺序表(第二节)实现和解析-CSDN博客 1.顺序表的头文件 2.初始化通讯录 3.添加通讯录 特殊:查找对应姓名的通讯录的序号 4.删除通讯录 5.展示通讯录 6.查找通讯录 7.修改通讯录 8.销毁通讯…...
数字ID和字符串ID互相转化
对于想隐藏真实id的需求,比如想加密userId等 使用示例: * 不指定长度* AlphaIDCustom(12354); //会将数字转换为字母。* AlphaIDCustom(PpQXn7COf,true);//会将字母ID转换为对应的数字。* 指定长度* Alpha…...
「Qt中文教程指南」如何创建基于Qt Widget的应用程序(三)
Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文描述了如何使用…...
Django CSRF Bypass
自存用 Django CSRF Bypass (CVE-2016-7401) 漏洞分析...
微信小程序 —— 会议OA项目首页布局与Mock数据交互
14天阅读挑战赛如果世界上有奇迹,那一定是努力的另一个名字。 目录 一、小程序布局 1.1 Flex布局 1.2 Flex属性 二、OA会议首页搭建 2.1 首页底部菜单 2.2 创建后端结口 2.3 Mock模拟数据 2.4 首页轮播图搭建 2.5 首页内容搭建 一、小程序布局 1.1 Flex布…...
机器学习-K-近邻(KNN)算法
目录 一 . K-近邻算法(KNN)概述 二、KNN算法实现 三、 MATLAB实现 四、 实战 一 . K-近邻算法(KNN)概述 K-近邻算法(KNN)是一种基本的分类算法,它通过计算数据点之间的距离来进行分类。在…...
shell_38.Linux读取脚本名
读取脚本名 (1)示例 $ cat positional0.sh #!/bin/bash # Handling the $0 command-line parameter # echo This script name is $0. exit $ $ bash positional0.sh This script name is positional0.sh. $ (2)如果使用另一个命令来运行 shell 脚本,则命令…...
面试题-React(十七):如何使用RTK进行状态管理
Redux Toolkit(RTK) 是一个强大的工具集,旨在简化和改进Redux的使用。它提供了一组工具和约定,使Redux的配置和编写更加直观和高效。 一、Redux Toolkit简介 Redux Toolkit是一个由Redux官方团队开发和维护的库,旨在…...
网络安全—自学笔记
目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类…...
Java后端开发(五)-- 对象转换工具类
为避免返回给前端的字段信息太多,在缓解前、后端通信的带宽压力的前提下,对不必要的字段的信息进行不返回时,entity层对象需要向vo层对象进行转换,同事尽量减少geetter与setter方法的编码。 1. ConvertUtils工具类 import org.slf4j.Logger; import org.slf4j.LoggerFacto…...
pandas写入MySQL
安装好pandas、mysql pip install pandas pip install pymysql 导入pandas、mysql import pymysql as mysql import pandas as pd 建立连接 conmysql.connect(host10.10.0.221,userroot,passwordroot,databasepandas,port3306,charsetutf8) 创建游标 curcon.cursor() 读…...
TCP实战:即时通信-端口转发
1、即时通信是什么含义,要实现怎么样的设计? 即时通信,是指一个客户端的消息发出去,其他客户端可以接收到即时通信需要进行端口转发的设计思想服务端需要把在线的Socket管道存储起来一旦收到一个消息要推送给其他管道 服务端 pac…...
CMakeLists.txt详解
CMakeLists.txt详解 CMakeLists.txt是一个用于构建C/C项目的CMake配置文件。它定义了项目的编译选项,包括编译器类型、依赖库、预处理宏和子目录等。让我们逐步解析这个文件。 编译器检测 CMAKE_CXX_COMPILER_ID 变量用于检测编译器类型。在这个示例中࿰…...
记一个JSON返回数据的bug
记一个JSON返回数据的bug:‘Object of type int64 is not JSON serializable’ 我在打包数组进行json数据返回时,有一个参数是numpy数组里计算出来的,类型为int64,直接进行json打包会报错 提示(‘Object of type int64 is not JSON serializa…...
毫米波雷达模块技术革新:在自动驾驶汽车中的前沿应用
随着自动驾驶技术的快速发展,毫米波雷达模块的技术革新成为推动这一领域的关键因素之一。本文将深入研究毫米波雷达模块技术的最新进展,并探讨其在自动驾驶汽车中的前沿应用。 毫米波雷达模块的基本原理 解释毫米波雷达模块的基本工作原理,强…...
优秀数据库模式迁移工具的发展历程
数据库模式迁移可能是应用程序开发中风险最大的领域——因为这是一个困难的、有风险的和痛苦的过程。数据库模式迁移工具的存在是为了减轻这种痛苦,并且已经取得了长足的进步:从基本的CLI工具到GUI工具,从简单的SQL GUI客户端到一体化协作数据…...
【深度学习】数据集最常见的问题及其解决方案
简介 如果您还没有听过,请告诉您一个事实,作为一名数据科学家,您应该始终站在一个角落跟你说:“你的结果与你的数据一样好。” 尝试通过提高模型能力来弥补糟糕的数据是许多人会犯的错误。这相当于你因为原来的汽车使用了劣质汽…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

Shell非登录环境会加载文件
Shell登录环境会加载文件
bash命令将当前环境转换为Shell非登录环境