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

shell的变量和引用

文章目录

    • 二、变量和引用
      • 2.1 什么是变量
      • 2.2变量的命名
      • 2.3 变量的类型
        • 2.3.1 根据数据类型分类
        • 2.3.2 根据作用域分类
      • 2.4 变量的定义
      • 2.5 shell中的引用
      • 2.6 变量的运算
    • 练习:

二、变量和引用

在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shell程序设计之前必须掌握的一个非常基础的概念。只有理解变量的使用方法,才能设计出良好的程序。本节将介绍Shell中变量的相关知识。

2.1 什么是变量

顾名思义,变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。几乎所有的程序设计语言中都有定义变量,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。

在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变。

2.2变量的命名

在Shell中,变量名可以由字母、数字或者下划线组成,并且只能以字母或者下划线开头。对于变量名的长度,Shell并没有做出明确的规定。因此,用户可以使用任意长度的字符串来作为变量名。但是,为了提高程序的可读性,建议用户使用相对较短的字符串作为变量名。

在一个设计良好的程序中,变量的命名有着非常大的学问。通常情况下,用户应该尽可能选择有明确意义的英文单词作为变量名,尽量避免使用拼音或者毫无意义的字符串作为变量名。这样的话,用户通过变量名就可以了解该变量的作用。

2.3 变量的类型

2.3.1 根据数据类型分类

Shell是一种动态类型语言和弱类型语言,即在Shell中,变量的数据类型毋需显示地声明,变量的数据类型会根据不同的操作有所变化。准确地讲,Shell中的变量是不分数据类型的,统一地按照字符串存储。但是根据变量的上下文环境,允许程序执行一些不同的操作,例如字符串的比较和整数的加减等等。

什么是弱类型语言、强类型语言?
强类型和弱类型主要是站在变量类型处理的角度进行分类的。强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。

  • 强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错

  • 弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。

比如:
C语言定义变量,int+变量名,实则前面的int就是给变量内存划分了等级,int定义整型所以空间里只能存放整型,这就是强类型。php、C#和Python等都是强类型语言。

可以使用declare定义变量的类型:declare attribute variable

:declare命令还可输出所有的变量、函数、整数和已经导出的变量

-p:显示所有变量的值-i:将变量定义为整数,在之后就可以直接对表达式求值,结果只能是整数。如果求值失败或者不是整数,就设置为0。-r:将变量声明为只读变量。只读变量不允许修改,也不允许删除。(也可使用readonly定义只读变量)-a:变量声明为数组变量。但这没有必要,所有变量都不必显示定义就可以用作数组。事实上,在某种意义上,似乎所有变量都是数组,而且赋值给没有下标的变量与赋值给下标为0的数组元素相同。-f:显示所有自定义函数,包括名称和函数体。-x:将变量设置成环境变量。可使用+x将变量变成非环境变量

2.3.2 根据作用域分类

根据作用域可将变量分为环境变量(全局变量)和普通变量(局部变量)

  1. 环境变量

    环境变量也可称为全局变量,可以在创建它们的shell及其派生出来的任意子进程shell中使用(su -切换用户会读取新的环境变量),环境变量又可分为自定义环境变量和bash内置的环境变量。

(1)自定义环境变量

一般是指用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行。环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,即该环境变量只在当前shell和子shell中有效。如果希望永久保存环境变量,可以在配置文件中设置。

①用户的环境变量配置(non-login shell)

~/.bash_profile或~/.bashrc

②全局环境变量的配置(login shell)

/etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义。

注意:按照系统规范,所有环境变量的名字均采用大写形式。在将环境变量应用于用户进程程序之前,都应该用命令export导出。

有一些环境变量,比如HOME,PATH,SHELL,UID,USER等,在用户登录前就已经被/bin/login程序设置好了,通常环境变量被定义并保存在用户家目录下的.bash_profile文件或全局的配置文件/etc/profile中。

(2)bash内置的环境变量

shell内置的环境变量是所有的shell程序都可以使用的变量。shell程序在运行时,都会接收一组变量来确定登录用户名、命令路径、终端类型、登录目录等,这组变量就是环境变量。环境变量会影响到所有的脚本的执行结果。
在这里插入图片描述
:可使用env查看环境变量

2、普通变量

普通变量也可称为局部变量,与全局变量相比,局部变量的使用范围较小,通常仅限于某个程序段访问,例如函数内部。在Shell语言中,可以在函数内部通过local关键字定义局部变量,另外,函数的参数也是局部变量。

示例:全局变量和局部变量的区别:

[root@localhost ~]# vim 6.sh
#!/bin/bash
#定义函数
func()
{
#输出全局变量v1的值
echo "global variable v1 is $v1"
#定义局部变量v1
local v1=2
#输出局部变量v1的值
echo "local variable v1 is $v1"
}
#定义全局变量v1
v1=1
#调用函数
func
#输出全局变量v1的值
echo "global variable v1 is $v1"
[root@localhost test]# chmod a+rx var.sh
[root@localhost test]# ./var.sh
global variable v1 is 1
local variable v1 is 2
global variable v1 is 1

2.4 变量的定义

在Shell中,通常情况下用户可以直接使用变量,而毋需先进行定义,当用户第一次使用某个变量名时,实际上就同时定义了这个变量,在变量的作用域内,用户都可以使用该变量。

1、变量定义示例:变量名=变量值

#!/bin/bash
#定义变量a
a=1
#定义变量b
b="hello"
#定义变量c
c="hello world"
#定义备份路径
bak_dir=/data/backup
#把一个命令的结果赋值变量
变量名=`ls`
变量名=$(ls)

注意
(1)“=”前后不能有空格

[root@localhost ~]# a= 3
-bash: 3: 未找到命令
[root@localhost ~]# b =4
-bash: b: 未找到命令

(2)字符串类型建议用引号括起来,尤其是特殊字符或有空格

stu_name="zhang san"	

引用变量:$变量名 或者 ${变量名}
查看变量:echo $变量名,set(可查看所有变量:包括自定义变量和环境变量),env显示全局变量,declare输出所有的变量、函数、整数和已经导出的变量。
取消变量:unset 变量名
作用范围:仅在当前shell中有效

:可使用export指令将变量转换成环境变量

2、位置参数和预定义变量
许多情况下,Shell脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。从命令行传递给Shell脚本的参数又称为位置参数,Shell脚本会根据参数的位置使用不同的位置参数变量读取它们的值。

在这里插入图片描述
示例:

[root@localhost test]# vim param.sh
echo "第1个位置参数是$1"
echo "第2个位置参数是$2"
echo "所有参数是: $*"
echo "所有参数是: $@"
echo "参数的个数是: $#"
echo "当前进程的PID是: $$"
[root@localhost test]# bash param.sh shuju1 shuju2
第1个位置参数是shuju1
第2个位置参数是shuju2
所有参数是: shuju1 shuju2
所有参数是: shuju1 shuju2
参数的个数是: 2
当前进程的PID是: 23278

$?的示例:

[root@localhost test]# vim ping.sh
#!/bin/bash
ping -c2 $1 &> /dev/null
if [ $? = 0 ];then
echo "host $1 is ok"
else
echo "host $1 is fail"
fi
[root@localhost test]# chmod a+rx ping.sh
[root@localhost test]# ./ping.sh 192.168.168.128
host 192.168.168.128 is ok

$*(//这个是类似于数组)和 $@(//类似于个体)的区别
示例:

[root@localhost test]# set -- "i have" a cat #利用set命令设置位置参数
[root@localhost test]# echo $#
3
[root@localhost test]# echo $*
i have a cat
[root@localhost test]# echo $@
i have a cat
[root@localhost test]# for i in $*;do echo $i;done
i
have
a
cat
[root@localhost test]# for i in $@;do echo $i; done
i
have
a
cat
[root@localhost test]# for i in "$*";do echo $i;done
i have a cat
[root@localhost test]# for i in "$@";do echo $i;done
i have
a
cat
[root@localhost test]# shift #使用该指令可将位置参数左移一位
[root@localhost test]# echo $1
a
[root@localhost test]# shift
[root@localhost test]# echo $1
cat

2.5 shell中的引用

在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通字符来处理。
在这里插入图片描述
说明反引号中的字符串将被解释为shell命令

[root@localhost ~]# echo "current_user is: $USER"
current_user is: root
[root@localhost ~]# echo 'current_user is: $USER'
current_user is: $USER
[root@localhost ~]# echo "current_user is: `whoami`"
current_user is: root
[root@localhost ~]# echo 'current_user is: `whoami`'
current_user is: `whoami`

2.6 变量的运算

与其他的程序设计语言一样,shell也有很多运算符。
在这里插入图片描述
在这里插入图片描述
示例:

[root@localhost ~]# r=$((2+5*8))
[root@localhost ~]# echo $r
42
[root@localhost ~]# let r=3+2
[root@localhost ~]# echo $r
5
[root@localhost ~]# r=`expr 4+2`
[root@localhost ~]# echo $r
4+2
[root@localhost ~]# r=`expr 4 + 2`
[root@localhost ~]# echo $r
6
#使用expr计算字符的长度
[root@localhost test4]# char="i have a"
[root@localhost test4]# expr length "$char"
8
[root@localhost ~]# r=$[3+2]
[root@localhost ~]# echo $r
5
[root@localhost ~]# awk 'BEGIN {print 2+3*2}'
8
[root@localhost test4]# echo "6.282 3.14" | awk '{print ($1-$2)}'
3.142
[root@localhost ~]# declare -i r=3+2
[root@localhost ~]# echo $r
5

实验:计算用户输入的任意两个整数的和、差、乘积、商、余数。
方法一:

[root@localhost test4]# cat 1.sh
#!/bin/bash
a=$1
b=$2
echo a+b=$(($a+$b))
echo a-b=$((a-b))
echo a*b=$((a*b))
echo a/b=$((a/b))
echo a%b=$((a%b))
[root@localhost test4]# ./1.sh 10 3
a+b=13
a-b=7
a*b=30
a/b=3
a%b=1

方法二:

[root@localhost test4]# cat 1.1.sh
#!/bin/bash
read -p "please input two number:" a b
echo $a+$b=$(($a+$b))
echo $a-$b=$((a-b))
echo $a*$b=$((a*b))
echo $a/$b=$((a/b))
echo $a%$b=$((a%b))
[root@localhost test4]# ./1.1.sh
please input two number:3 4
3+4=7
3-4=-1
3*4=12
3/4=0
3%4=3

在这里插入图片描述
示例:截取字符串

[root@localhost ~]# str1="hello world"
#返回变量长度
[root@localhost ~]# echo ${#str1}
11
#变量截取
#指定起始位置,一直到结束
[root@localhost ~]# echo ${str1:1}
ello world
#指定长度,不指定起始位置默认从开头开始
[root@localhost ~]# echo ${str1::3}
hel
#指定起始位置和长度
[root@localhost ~]# echo ${str1:1:3}
ell
#从右边第几个字符开始,及字符的个数
[root@localhost ~]# echo ${str1:0-1:1}
d
#输出右边的几个字符
[root@localhost ~]# echo ${str1:0-5}
world
[root@localhost ~]# echo ${str1: -5}
world
#提取完整字符串
[root@localhost ~]# echo ${str1:-5}
hello world

示例:删除字符串

#获取后缀名tar.gz
[root@localhost ~]# filename=testfile.tar.gz
[root@localhost ~]# file=${filename#*.}
[root@localhost ~]# echo $file
tar.gz
#获取后缀名.gz
[root@localhost ~]# filename=testfile.tar.gz
[root@localhost ~]# file=${filename##*.}
[root@localhost ~]# echo $file
gz
#截取testfile.tar
[root@localhost ~]# filename=testfile.tar.gz
[root@localhost ~]# file=${filename%.*}
[root@localhost ~]# echo $file
testfile.tar
#截取testfile
[root@localhost ~]# filename=testfile.tar.gz
[root@localhost ~]# file=${filename%%.*}
[root@localhost ~]# echo $file
testfile

练习:

1.定义两个变量:num1=10和num2=2

使用(()): 计算num1 + num2的值并输出

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# echo $((num1+num2))
12

使用let: 计算num1 * num2的值输出

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# let num=num1*num2
[root@shell 0130]# echo $num
20

使用expr: 计算num1 对 num2执行或的位运算

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# expr $num1 '|' $num2
100000 0010
|    0000 10100000 1010=10

使用$[]: 计算 num2的num1次方值

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# num3=num1+num2
[root@shell 0130]# echo $[num3]
12

使用declare: 计算 num1 除以 num2的值

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# declare -i num3=num1/num2
[root@shell 0130]# echo $num3
5

使用计算num2除num1的值
• 方法一:使用declare计算

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# declare -i num3=num2/num1
[root@shell 0130]# echo $num30

• 方法二:$[]

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# num3=num2/num1
[root@shell 0130]# echo $[num3]或者
[root@shell 0130]# echo $[num3=num2/num1]
0

• 方法三:expr

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# expr $num2 '/' $num10

• 方法四:let

[root@shell 0130]# num1=10
[root@shell 0130]# num2=2
[root@shell 0130]# let num=num2/num1
[root@shell 0130]# echo $num0
  1. path=/data/data1/data2.txt
    • 去获取它所在的目录
    ○ 方法一:使用偏移量提取长度为length的代码片

    [root@shell 0130]]# path=/data/data1/data2.txt
    [root@shell 0130]# echo ${path:0:11}
    /data/data1
    

○ 方法二:从$开头开始删除最长匹配Word子串(从右到左)

	[root@shell 0130]# path=/data/data1/data2.txt[root@shell 0130]# echo ${path%/data2.txt}/data/data1

○ 方法三:从$结尾开始删除最长匹配Word子串(从右到左)

[root@shell 0130]# path=/data/data1/data2.txt
[root@shell 0130]# echo ${path%%/data2.txt}/data/data1

• 去获取文件的名字
○ 方法一:偏移量

[root@shell 0130]# path=/data/data1/data2.txt
[root@shell 0130]# echo ${path:12}
data2.txt

○ 方法二:从$开头开始删除最短匹配Word子串(从左到右)

[root@shell 0130]# path=/data/data1/data2.txt
[root@shell 0130]# echo ${path#/data/data1/}
data2.txt

○ 方法三:从$结尾删除最短匹配Word子串(从左到右)

[root@shell 0130]# path=/data/data1/data2.txt
[root@shell 0130]# echo ${path##/data/data1/}
data2.txt
  1. 设置一个只针对root的环境变量:ENV_ROOT=ROOT
    • 因为是root用户环境变量配置,所以需要进入profile配置目录[root@shell 0130]# vim ~/.bash_profile
    在这里插入图片描述
[root@shell 0130]# vim ~/.bash_profile 
[root@shell 0130]# source ~/.bash_profile 
[root@shell 0130]# echo $ENV_ALL
ROOT

设置一个针对所有用户的环境变量: ENV_ALL=ALL
[root@shell 0130]# vim /etc/profile
在这里插入图片描述

[root@shell 0130]# echo $ENV_ALL
ALL

在root用户下访问:ENV_ROOT和ENV_ALL

[root@shell 0130]# echo $ENV_ROOT ROOT
[root@shell 0130]# echo $ENV_ALL ALL

在普通用户下访问:ENV_ROOT和ENV_ALL

[root@shell 0130]$ echo $ENV_ALL ALLROOT用户不能访问,输出结果为空白的行

相关文章:

shell的变量和引用

文章目录二、变量和引用2.1 什么是变量2.2变量的命名2.3 变量的类型2.3.1 根据数据类型分类2.3.2 根据作用域分类2.4 变量的定义2.5 shell中的引用2.6 变量的运算练习:二、变量和引用 在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shel…...

基于PHP的招聘网站

摘要在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括在线招聘的网络应用,在外国在线招聘已经是很普遍的方式,不过国内的在线招聘可能还处于起步阶段。招聘网站具有招聘信息功能的双向选择,…...

轻松使用 Python 检测和识别车牌(附代码)

车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为…...

DVWA—CSRF-Medium跨站请求伪造中级

注意: 1、这里对XSS(Stored)关卡不熟悉的可以从这里去看http://t.csdn.cn/ggQDK 2、把难度设置成 Medium 一、这一关同样我们需要埋下伏笔,诱使用户点击来提交,首先从XSS(Stored)入手。 注意:在前面介绍…...

【电商】后台订单生成

结合商品流转的电商系列介绍了一些了,商品已经采购入库、价格税率设置好了、活动及相关模板也已经准备完毕,下面就应该上架销售了,现在接着聊下订单的生成。 订单从产生到最终的关闭需要经历很多的环节,订单也是电商系统的核心数据…...

作为公司,这个5款在线软件工具赶紧安利起来!

2023年了 ,您的企业还没使用在线软件工具吗?自从用了在线工具之后,感觉打开了新办公世界的大门,效率蹭蹭蹭地往上涨啊。对于喜欢追求效率和便捷的我来说,在线实在是太棒了!今天安利几个非常不错的在线软件工…...

面试(七)为什么一般希望将析构函数定义为虚函数

class B { public:~B() // 基类析构函数不为虚函数{cout << "B::~B()" << endl;} };class D : public B { public:~D(){cout << "D::~D()" << endl;} };void Test(B* t) {delete t;t nullptr; }int main() {B *pb new B;Test…...

MySQL必会四大函数-时间函数

一、时间日期获取函数 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() mysql> select curdate(); 2023-02-09 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() select curtime(); 08:49:27 获取当前时间戳&#xff08;date &…...

震惊!邻桌的程序猿做可视化报告竟然比我还快,带着好奇心我打开了他的电脑,发现惊天秘密,原因竟是...

其实&#xff0c;本文就是想分享一个做可视化的捷径&#xff01; 制作可视化的方式有千千万。 Excel 控若能轻车熟路驾驭 VBA&#xff0c;能玩出各种花来&#xff0c;再不济借助图表插件外援也能秒杀一众小白选 手。 会编程的&#xff0c;Echarts 几十行代码&#xff0c;分分…...

mathtype7与word冲突,无法安装,不显示工具栏的问题解决

首先无法安装&#xff0c;或安装出错时&#xff0c;要清理注册表防止以后再次出现该问题&#xff0c;以此记录留作备份。打开注册表的方法是键盘winr键同时按&#xff08;win就是Alt旁边像窗户图标的键&#xff09;&#xff0c;正常的话会跳出一个叫“运行”的家伙&#xff0c;…...

IBM AIX 升级Openssh 实现篇(编译安装)

升级成功佐证 !!!本文所有内容仅作参考,请在测试环境中具体测试完毕后才能应用于生产环境!!! [1]备份和恢复方案 开启telnet 服务,防止ssh 掉线后无法重连维护。在修复漏洞后关闭telnet。 备份该服务相关的所有文件,以便恢复。 root@TEST:/etc# vi inetd.conf #ftp…...

linux的睡眠框架及实现

睡眠 4 种模式&#xff1a;S2I (Suspend-to-Idle)&#xff1a; 挂起系统&#xff0c;IO进入低功耗模式。需配置CONFIG_SUSPEND。Standby&#xff1a;执行S2I后&#xff0c;把AP (nonboot CPU) 离线。除了CONFIG_SUSPEND的支持外&#xff0c;还需要向suspend子系统注册&#xff…...

Java面试知识点

工作也有好些年了&#xff0c;从刚毕业到前几年看过无数的面试题&#xff0c;总想着自己写一个面试总结&#xff0c;随着自我认识的变化&#xff0c;一些知识点的理解也越来越不一样了。写下来温故而知新。很多问题可能别人也总结过&#xff0c;但是答案不尽相同&#xff0c;如…...

PTA Advanced 1159 Structure of a Binary Tree C++

目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 思路 代码 题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, a binary tree can be un…...

CDN绕过技术总汇

注 本文首发于合天网安实验室 首发链接&#xff1a;https://mp.weixin.qq.com/s/9oeUpFUZ_0FUu6YAhQGuAg 近日HVV培训以及面试&#xff0c;有人问了CDN该如何绕过找到目标真实IP&#xff0c;这向来是个老生常谈的问题&#xff0c;而且网上大多都有&#xff0c;但是有些不够全面…...

算法训练营DAY51|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

本期是求子序列的新的一期&#xff0c;题目前两道有一些相似之处&#xff0c;思路差不多&#xff0c;第三道有一点难度&#xff0c;但并不意味着第一道没有难度&#xff0c;没有做过该类型题的选手&#xff0c;并不容易解出题解。 300. 最长递增子序列 - 力扣&#xff08;Leet…...

mac:彻底解决-安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件

mac从浏览器或其他电脑接收了应用&#xff0c;但是打开报错 目录报错解决办法一次性方法永久解决方法验证恢复应用验证报错 截图如下&#xff1a; 错误信息 无法打开“XXX”&#xff0c;因为无法验证开发者的问题&#xff1b;无法验证此App不包含恶意软件 解决办法 一次性方…...

CPU 指标 user/idle/system 说明

从图中看出&#xff0c;一共有五个关于CPU的指标。分别如下&#xff1a; User User表示&#xff1a;CPU一共花了多少比例的时间运行在用户态空间或者说是用户进程(running user space processes)。典型的用户态空间程序有&#xff1a;Shells、数据库、web服务器…… Nice N…...

Thinkphp大型进销存ERP源码/ 进销存APP源码/小程序ERP系统/含VUE源码支持二次开发

框架&#xff1a;ThinkPHP5.0.24 uniapp 包含:服务端php全套开源源码&#xff0c;uniapp前端全套开源源码&#xff08;可发布H5/android/iod/微信小程序/抖音小程序/支付宝/百度小程序&#xff09; 注&#xff1a;这个是全开源&#xff0c;随便你怎么开&#xff0c;怎么来&a…...

hgame2023 WebMisc

文章目录Webweek1Classic Childhood GameBecome A MemberGuess Who I AmShow Me Your BeautyWeek2Git Leakagev2boardSearch CommodityDesignerweek3Login To Get My GiftPing To The HostGopher Shopweek4Shared DiaryTell MeMiscweek1Where am I神秘的海报week2Tetris Master…...

67. Python的绝对路径

67. Python的绝对路径 文章目录67. Python的绝对路径1. 准备工作2. 路径3. 绝对路径3.1 概念3.2 查看绝对路径的方法4. 课堂练习5. 用绝对路径读取txt文件6. 加\改写绝对路径6.1 转义字符知识回顾6.2 转义字符改写7. 总结1. 准备工作 对照下图&#xff0c;新建文件夹和txt文件…...

VHDL语言基础-组合逻辑电路-加法器

目录 加法器的设计&#xff1a; 半加器&#xff1a; 全加器&#xff1a; 加法器的模块化&#xff1a; 四位串行进位全加器的设计&#xff1a; 四位并行进位全加器&#xff1a; 串行进位与并行进位加法器性能比较&#xff1a; 8位加法器的实现&#xff1a; 加法器的设计&…...

内存检测工具Dr.Memory在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/51626705 中介绍过Dr.Memory&#xff0c;那时在Windows上还不支持x64&#xff0c;最新的版本对x64已有了支持&#xff0c;这里再总结下。 Dr.Memory源码地址https://github.com/DynamoRIO/drmemory&#xff0c;最新发…...

J6412四网口迷你主机折腾虚拟机教程

今天给大家做一个四网口迷你主机折腾虚拟机的安装教程&#xff0c;主机采用的是maxtang大唐NUC J6412 intel i226V四网口的迷你主机&#xff0c;这款主机它是不能直接装上NAS的&#xff0c;必须使用虚拟机系统&#xff0c;近期研究了下然后做了一个教程分享给大家。 首先需要做…...

电子招标采购系统—企业战略布局下的采购寻源

​ 智慧寻源 多策略、多场景寻源&#xff0c;多种看板让寻源过程全程可监控&#xff0c;根据不同采购场景&#xff0c;采取不同寻源策略&#xff0c; 实现采购寻源线上化管控&#xff1b;同时支持公域和私域寻源。 询价比价 全程线上询比价&#xff0c;信息公开透明&#xff…...

elasticsearch 之 mapping 映射

当我们往 es 中插入数据时&#xff0c;若索引不存在则会自动创建&#xff0c;mapping 使用默认的&#xff1b;但是有时默认的映射关系不能满足我们的要求&#xff0c;我们可以自定义 mapping 映射关系。 mapping 即索引结构&#xff0c;可以看做是数据库中的表结构&#xff0c…...

2023年rabbitMq面试题汇总2(5道)

一、如何确保消息接收⽅消费了消息&#xff1f;接收⽅消息确认机制&#xff1a;消费者接收每⼀条消息后都必须进⾏确认&#xff08;消息接收和消息确认是两个不同操作&#xff09;。只有消费者确认了消息&#xff0c;RabbitMQ才能安全地把消息从队列中删除。这⾥并没有⽤到超时…...

电视剧《狂飙》数据分析,正片有效播放市场占有率达65.7%

哈喽大家好&#xff0c;春节已经过去了&#xff0c;朋友们也都陆陆续续开工了&#xff0c;小编在这里祝大家开工大吉&#xff01;春节期间&#xff0c;一大批电视剧和网剧上映播出&#xff0c;其中电视剧《狂飙》以不可阻挡之势成功成为“开年剧王”。这里小编整理了一些《狂飙…...

cas单点登录后重定向次数过多问题以及调试cas-dot-net-client

问题描述&#xff1a; web项目应用cas作为单点登录站点&#xff0c;登录后无法打开WEB项目的页面&#xff0c;报错&#xff0c;说重定向次数过多。 老实说&#xff0c;这种问题&#xff0c;以前遇到过不少&#xff0c;是我这种半桶水程序员的噩梦。解决这种问题&#xff0c;不…...

【监控】Prometheus(普罗米修斯)监控概述

文章目录一、监控系统概论二、基础资源监控2.1、网络监控2.2、存储监控2.3、服务器监控2.4、中间件监控2.5、应用程序监控&#xff08;APM&#xff09;三、Prometheus 简介3.1、什么是 Prometheus3.2、优点3.3、组件3.4、架构3.5、适用于什么场景3.6、不适合什么场景四、数据模…...

2345网址导航高级版/长沙网站seo分析

设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错…...

网站建设 力洋网络/广州百度关键词推广

场景 使用docker进行前端项目构建时报错&#xff0c;但是本地构建正常。 完整报错信息The build failed because the process exited too early. This probably means the system ran out of memory or someone called kill -9 on the process. 参考过程 从 create-react-ap…...

旅游网站系统建设方案/线上营销课程

其实很早就知道 Request.QueryString["参数"]来得到URL中传递的参数&#xff0c;或者说是得到Get请求方式得到的数据&#xff1b;而Request.Form得到Form表单的提交的数据(这种理解是错误的)&#xff0c;今天在使用Jquery的Ajax&#xff0c;当使用Post方式时候&#…...

广州建设工程网站/东莞关键词优化软件

神农氏  神农氏据说长得像牛魔王——“牛首人身”&#xff0c;不过他看上去并不像牛魔王那样粗暴。事实上他极具仁慈爱心。这位优秀青年&#xff0c;最大的爱好就是拎了一根棍子&#xff0c;在西部的黄土高坡上考察野生植物&#xff0c;是个十足内向的家伙。他到处收集植物样…...

做书的网站有哪些内容/seo整站优化方案案例

MVC模式下那些友好&#xff0c;屏蔽具体物理文件的URL让我眼馋&#xff0c;咱也想在WEB FORM项目用上一用。按照指引&#xff0c;添加global.asax&#xff0c;写上路由代码什么的&#xff1a;<% Application Language"C#" %> <% Import Namespace"Syst…...

用java做网站教程/烟台seo外包

Android:自定义View&#xff08;一&#xff09; 自定义View&#xff1a; 就是继承系统的View&#xff0c;通过添加绘制元素&#xff0c;逻辑以实现自己想要实习的效果的控件。在Android开发过程中&#xff0c;我们想要的效果大多数情况下可以直接使用系统提供的控件来实现&…...