嵌入式 Linux Shell编程
目录
1、shell脚本
2、执行shell脚本
3、shell脚本编写
3.1 shell变量
3.2 标准变量或环境变量
3.4 变量赋值有五种格式
3.5 运算符和表达式
关系运算符
布尔运算符
3.6 Test命令用法
1、判断表达式
2、判断字符串
3.判断整数
4、判断文件
3.7 数组
1、数组定义
2、引用 ¥ {a[1]}
3.8 if语句
3.9 case语句
3.10 for循环
3.11 while语句
3.12 until 语句
3.13 shell 函数
4、综合实例
1、shell脚本
什么是 Shell,就是命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。
Shell 脚本是一个包含一系列命令序列的文本文件。当运行这个脚本文本时,文件中包含的命
令序列将得到执行。
如果我们有一系列经常使用的 Linux 命令,我们可以把它们存储在一个文件中。Shell 可以读
取这个文件并执行其中的命令。这样的文件被称为脚本文件。
2、执行shell脚本
要创建一个shell脚本,我们可以使用任何编译器,比如vim在文本文件中编写它,习惯保存的文件后缀为.sh(仅为了识别是shell脚本文件)
vi aa.sh -->创建并进入 vi 编辑器编写 shell 脚本
chmod +x aa.sh -->给 shell 脚本加上可执行权限
bash aa.sh -->linux 命令行下执行 shell 脚本,此方法可以不设置执行权限
或./aa.sh -->此方法需要设置执行权限
或 sh aa.sh -->此方法可以不设置执行权限
3、shell脚本编写
shell 脚本的编写语法如下:
1)程序往往以#!/bin/bash 的行开始,这一行不是注释而是 shell 脚本的标识。
2)以#作为语句的注释
3)shell 变量,命令,关键字语法等
3.1 shell变量
shell 变量没有数据类型,都是字符串,即使数值也是字符串。
创建(定义)变量:变量名称=值。 #等号两边不能有空格
注意:如果值有空格则必须用""或者’’引用起来
示例: test.sh
shell 变量没有数据类型,都是字符串,即使数值也是字符串。
创建(定义)变量:变量名称=值。 #等号两边不能有空格
注意:如果值有空格则必须用""或者’’引用起来
注意:''和" "的区别:
单引号:消除所有字符的特殊意义。
双引号:消除除了$、" "、' '三种以外其它字符的特殊意义。
1>: #echo $a
等同于#echo ${a}
或#echo "${a}"2>: #echo "hello b$aa" 输出 hello b;
3>: #echo "hello b${a}a" 输出:hello bhelloa
4>: #echo "${a}a" 输出:helloa
5>: #echo '${a}a' 输出:${a}a,因为' '会消除特殊字符的意义
6>: #echo '\${a}a' 输出:\${a}a
删除变量:unset 变量名
变量的其他常用方法:
比如:要2.sh要求输入2个数计算2个数的和
#!/bin/bash
#this is my second shell project
echo "please input the first number:"
read a
echo "please input the second number:"
read b
c=$(($a + $b))
echo "The result of $a + $b is $c"
重定向符号:
[root@localhost second]# echo hello > 1 将内容 hello 输入到 1 文件里
[root@localhost second]# cat < 1 > 2 cat 从 1 文件里获取内容,输出到 2 文件里
[root@localhost second]# cat 2 查看 2 文件里的内容
hello
[root@localhost second]#
管道:
管道操作符 |
“|”符用于连接左右两个命令,将“|”左边的命令执行结果(输出)作为“|”右边命令的
输入
cmd1 | cmd2
在同一条命令中可以使用多个“|”符连接多条命令
cmd1 | cmd2 | ... | cmdn
[root@localhost shell]# ps -ef
[root@localhost shell]# ps -ef |grep bash
例子;写 1.sh 要求读入 1 个目录名,在当前目录下创建该目录,并复制 etc 下的 conf 文件到该目录,统计 etc 下所有目录的数目到 etcdir.txt 中
#!/bin/bash
#this is my first shell project
read dir #从命令行读入一个字符串
mkdir ${dir} #在当前目录下创建目录
cp -rf /etc/*conf ${dir} #复制 etc 下的 conf 文件到该目录
ls -l /etc/* | grep ^d > etcdir.txt
[root@localhost shell]# vim 1.sh
[root@localhost shell]# chmod +x 1.sh
[root@localhost shell]# ./1.sh
12
[root@localhost shell]# cd 12/
[root@localhost 12]# ls -l
总用量 292
-rw-r--r--. 1 root root 391 8 月 7 15:36 ant.conf
-rw-r--r--. 1 root root 245 8 月 7 15:36 anthy-conf
......
[root@localhost 12]# cd ..
[root@localhost shell]# cat etcdir.txt
drwxr-xr-x. 2 root root 4096 8 月 1 06:42 plugins
drwxr-xr-x. 2 root root 4096 8 月 1 07:00 actions
......
[root@localhost shell]#
3.2 标准变量或环境变量
系统预定义的变量,一般在/etc/profile 中进行定义。
HOME :用户主目录 PATH 文件搜索路径。
PWD :用户当前工作目录。
PS1、PS2 :提示符。
LOGNAME:指登录主机的用户名称;
HOSTNAME :主机名字,也就是这个系统的名字。
USER:指目前环境使用者的名称。
还有其他的系统变量
例如:
定义本地变量:name="Red Hat Linux"
export name:把 name 变为全局变量。
或直接输出 export name="Red Hat Linux"
由父 shell 进入子 shell 后,可以使用父 shell 的全局变量,而本地变量不可以。
示例:
[root@localhost shell]# ./2.sh
[root@localhost shell]# vim 1.sh
[root@localhost shell]# chmod +x 1.sh
[root@localhost shell]# ./1.sh
12
[root@localhost shell]# cd 12/
[root@localhost 12]# ls -l
总用量 292
-rw-r--r--. 1 root root 391 8 月 7 15:36 ant.conf
-rw-r--r--. 1 root root 245 8 月 7 15:36 anthy-conf
......
[root@localhost 12]# cd ..
[root@localhost shell]# cat etcdir.txt
drwxr-xr-x. 2 root root 4096 8 月 1 06:42 plugins
drwxr-xr-x. 2 root root 4096 8 月 1 07:00 actions
......
[root@localhost shell]#
3.4 变量赋值有五种格式
例子:
a=1
echo ${a} #1
echo ${a:+2} #2
echo ${a:-2} #1
echo ${a:?2} #1
echo ${a:=2} #1
echo ${b} #显示空
echo ${b:+2} #显示空
echo ${b:-2} #2
echo ${b:?2} #./4.sh: line 11: b: 2 显示错误信息
echo ${b:=2} #显示空
3.5 运算符和表达式
关系运算符
布尔运算符
3.6 Test命令用法
VAR=2
test $VAR -gt 1
echo $?
也可以写为
VAR=2
[ $VAR -gt 3 ] #中括号两边必须要有空格
echo $?
1、判断表达式
2、判断字符串
注意:在 = 前后各有一个空格。如果忘记加空格,那就不是比较关系了,而变成了赋值语句。
比较字符序列大小时候,需要在 > 或 < 前面加转义字符 \
a="abc"
test $a == "abc"
echo $?
test $a != "afd"
echo $?
#字符串拼接
str1="abcd"
str2="fgjgh$str1"
echo $str2
3.判断整数
test 整数 1 –eq 整数 2 -->整数相等为真
-ge 大于等于
–gt 大于
–le 小于等于
–lt 小于
–ne 不等于
4、判断文件
test File1 –ef File2 两个文件具有同样的设备号和 i 结点号
test File1 –nt File2 文件 1 比文件 2 新
test File1 –ot File2 文件 1 比文件 2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是普通文件
test –g File 文件存在并且是设置了组 ID
test –G File 文件存在并且属于有效组 ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了 sticky 位
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户 ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t File 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的 set-user-id 位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行
3.7 数组
1、数组定义
定义 1: a=(1 2 3 4 5) #下标从 0 开始 各个数据之间用空格隔开
定义 2: a[0]=1;a[1]=2;a[2]=3
定义 3: a=([1]=1 [2]=2)
2、引用 ¥ {a[1]}
3.8 if语句
形式 1:
if[condition]
then
action
fi
只有当 condition 为真时,该语句才执行操作,否则不执行操作,并继续执行“fi”之后的任
何行。
形式 2:
if [ condition ]
then
action
elif [ condition2 ];then
action2
. . .
elif [ condition3 ];then
else
actionx
fi
在使用时,将“if”和“then”放在不同行,如同行放置,则 if 语句必须要“;”结束。
举例:
#!/bin/bash
file="./a.c"
if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi
用参数传 1 个文件名,该文件如果是文件并且可读可写就显示该文件,如果是目录就进入该目
录,并判断 ls.sh 存在否,如果不存在就建立 1 个 ls.sh 的文件并运行该文件。
该文件的内容是 ls -li /etc > etc.list
#!/bin/bash
if [ -f $1 -a -r $1 -a -w $1 ] #判断是普通文件并可读可写
then
cat $1 #显示文件内容
elif [ -d $1 ] #否则如果是目录
then
cd $1 #进入目录
fi
if [ -e ls.sh ] #如果 ls.sh 该文件存在
then
chmod +x ls.sh #赋予可执行的权限
./ls.sh #执行
else
touch ls.sh #如果不存在则创建 ls.sh
echo "#!/bin/bash" >> ls.sh #将程序写入 ls.sh 中保存
echo "ls -li /etc > etc.list" >> ls.sh #将要执行的命令写入 ls.sh 中保存
chmod +x ls.sh #赋予可执行的权限
./ls.sh
fi
shell 编程中使用到得 if 语句内文件判断参数:
–b 当 file 存在并且是块文件时返回真
-c 当 file 存在并且是字符文件时返回真
-d 当 pathname 存在并且是一个目录时返回真
-e 当 pathname 指定的文件或目录存在时返回真
-f 当 file 存在并且是正规文件时返回真
-g 当由 pathname 指定的文件或目录存在并且设置了 SGID 位时返回为真
-h 当 file 存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由 pathname 指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当 file 存在并且是命令管道时返回为真
-r 当由 pathname 指定的文件或目录存在并且可读时返回为真
-s 当 file 存在文件大小大于 0 时返回真
-u 当由 pathname 指定的文件或目录存在并且设置了 SUID 位时返回真
-w 当由 pathname 指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然
是可执行的。
-o 当由 pathname 指定的文件或目录存在并且被子当前进程的有效用户 ID 所指定的用户拥有时返
3.9 case语句
case常用的语法形式如下:
case $1 in
"1")
echo you inputed "1"
;;
"2")
echo you inputed "2"
;;
*)
echo you inputed other number
;;
esac
例子:智能解压文件
说明,创建一个压缩包,压缩包的后缀为.zip或者.gzip或者.bzip2格式,并且传递参数的时候也需要把这个后缀名写上
#!/bin/sh
ftype=`file "$1"` #file 用于判断$1 的文件类型,并保存到 ftype 中
case "$ftype" in
"$1: Zip archive"*)
unzip "$1"
;;
"$1: gzip compressed"*)
gunzip "$1"
;;
"$1: bzip2 compressed"*)
bunzip2 "$1"
;;
*)
echo "File $1 can not be uncompressed with smartzip"
;;
esac
#终端输入格式
#[root@localhost auto]# ./aa.sh cc.txt.zip
3.10 for循环
格式:
for 变量名 in 列表
do
命令
done
例子:
i=0
for i in 1 2 3 4 5
do
echo $i
done
或者:
i=0
for ((i=0;i<5;i++))
do
echo $i
done
例子:冒泡排序
#!/bin/bash
a=(3 10 6 5 9 2 8 1 4 7)
for(( i=1; i<10; i++ ))
do
for(( j=0; j<10-i; j++ ))
do
if [ ${a[j]} -gt ${a[j+1]} ]
then
temp=${a[j]}
a[j]=${a[j+1]} #或者 a[j]=${a[$(($j+1))]}
a[j+1]=$temp
fi
done
done
for(( i=0; i<10; i++ ))
do
echo ${a[i]}
done
3.11 while语句
#!/bin/bash
#this is my first shell project
loopcount=0
result=0
while [ $loopcount -lt 100 ]
do
loopcount=$(($loopcount + 1))
result=$(($loopcount + $result))
done
echo "The result of \'1+2+3+...+100\' is $result"
#!/bin/bash
a=(3 10 6 5 9 2 8 1 4 7)
x=0
while [ $x -lt ${#a[*]} ]
do
echo ${a[$x]}
x=$(($x + 1))
done
#!/bin/bash
a=(3 10 6 5 9 2 8 1 4 7)
i=0
while (( i<10 )) #类似 C 语言的写法
do
echo ${a[i]}
i=$(($i+1))
done
3.12 until 语句
myvar=0
until [ $myvar -eq 10 ]
do
echo $myvar
myvar=$(($myvar+1))
done
3.13 shell 函数
函数名() {命令1.... ...}
function 函数名() {.... ...}
关键字 function 表示定义一个函数,可以省略,其后是函数名,有时函数名后可以跟一个括
号,符号“{”表示函数执行命令的入口,该符号也可以在函数名那一行,“}”表示函数体的结束,
两个大括号之间是函数体。
语句部分可以是任意的 Shell 命令,也可以调用其他的函数。
如果在函数中使用 exit 命令,可以退出整个脚本,通常情况,函数结束之后会返回调用函数的部分继续执行。可以使用 break 语句来中断函数的执行
函数参数的传递
函数可以通过位置变量传递参数。例如
函数名 参数 1 参数 2 参数 3 参数 4
当函数执行时,$1 对应参数 1,其他依次类推
函数的返回值
函数中的关键字“return”可以放到函数体的任意位置,通常用于返回某些值,Shell 在执行
到 return 之后,就停止往下执行,返回到主程序的调用行,return 的返回值只能是 0~256 之间的
一个整数,返回值将保存到变量“$?”中
#!/bin/bash
#declare a function named hello
function hello()
{
echo "Hello,$1 today is `date`"
return 11
}
echo "now going to the function hello"
hello "I love china" #hello 函数的参数为 I love china,即$1 为 I love china
echo $? #输出 hello 这个函数的返回值
echo "back from the function"
4、综合实例
#!/bin/bash
while true #表示死循环
do
echo "============================"
echo "*******student system*******"
echo " 1.create operator "
echo " 2.insert operator "
echo " 3.delete operator "
echo " 4.append operator "
echo " 5.update operator "
echo " 6.find operator "
echo " 7.print operator "
echo " 0.exit operator "
echo "****************************"
echo "============================"
echo "please input your operator:"
read op
clear #清屏
case $op in
"1")
echo "create student succeed!"
#clear
;;
"2")
echo "insert student succeed!"
#clear
;;
"3")
echo "delete student succeed!"
#clear
;;
"4")
echo "append student succeed!"
#clear
;;
"5")
echo "update student succeed!"
#clear
;;
"6")
echo "find student succeed!"
esac
done
相关文章:

嵌入式 Linux Shell编程
目录 1、shell脚本 2、执行shell脚本 3、shell脚本编写 3.1 shell变量 3.2 标准变量或环境变量 3.4 变量赋值有五种格式 3.5 运算符和表达式 关系运算符 布尔运算符 3.6 Test命令用法 1、判断表达式 2、判断字符串 3.判断整数 4、判断文件 3.7 数组 1、数组定义…...

Web前端学习:一
编辑器的基础使用 编辑器推荐使用: HBuilderx(免费中文)(建议使用) Sublime(免费英文) Sublime中文设置方法,下载语言插件: 1、进入Sublime后,ShiftCtrlP…...

SpringBoot集成Redis实现分布式会话
在单体应用的时代,Session 会话直接保存在服务器中,实现非常简单,但是随着微服务的流行,现代应用架构基本都是分布式架构,请求随机的分配到后端的多个应用中,此时session就需要共享,而存储在red…...

2023年关于身份安全的4 个预测
如果您身处技术领域,就会知道现在是时候盘点过去的一年,展望未来 365 天将影响业务、创新以及我们工作方式的因素的季节。这不是一门精确的科学,我们也不总是对的。但是推测很有趣,当我们看到其中一些趋势成为现实时会更有趣。本文…...

Linux期末考试应急
Linux期末考试应急 虚拟机添加硬盘、分区、格式化、挂载、卸载 fdisk -l#查看系统现有分区fdisk <指定磁盘>#指定磁盘分区sudo mkfs.ext3 <指定分区>#格式化磁盘###挂载磁盘1.新建一个目录sudo mkdir /mnt/test2.将指定分区挂载到对应目录sudo mount /dev/sdb10 /…...

mars3d对geojson图层分属性设置样式
开发中可能会遇到如下需求,在全省的数据中按某个属性⾼亮展示某市区。此时就需要使⽤分属性样式的api了。⽂档如下。GeoJsonLayer - Mars3D API文档属性是根据⽮量数据的属性进⾏匹配。可以通过 layer.graphics[0]?.attr ⽅式获取。 指导有哪些属性之后先设置…...

三、锁相关知识
文章目录锁的分类可重入锁、不可重入锁乐观锁、悲观锁公平锁、非公平锁互斥锁、共享锁深入synchronized类锁、对象锁synchronized的优化synchronized实现原理synchronized的锁升级重量锁底层ObjectMonitor深入ReentrantLockReentrantLock和synchronized的区别AQS概述加锁流程源…...

C语言数据类型
C 数据类型 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 C 中的类型可分为以下几种: 1 基本类型: 它们是算术类型,…...

华为OD机试真题Python实现【水仙花数】真题+解题思路+代码(20222023)
水仙花数 题目 所谓的水仙花数是指一个n位的正整数其各位数字的n次方的和等于该数本身, 例如153 = 1^3 + 5^3 + 3^3,153是一个三位数 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 输入 第一行输入一个整数N, 表示 N 位的正整数 N 在3…...

【华为OD机试模拟题】用 C++ 实现 - 非严格递增连续数字序列(2023.Q1)
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

RN面试题
RN面试题1.React Native相对于原生的ios和Android有哪些优势?1.性能媲美原生APP 2.使用JavaScript编码,只要学习这一种语言 3.绝大部分代码安卓和IOS都能共用 4.组件式开发,代码重用性很高 5.跟编写网页一般,修改代码后即可自动刷…...

【数据存储】浮点型在内存中的存储
目录 一、存储现象 二、IEEE标准规范 1.存储 2.读取 三、举例验证 1.存储 2.读取 浮点型存储的标准是IEEE(电气电子工程师学会)754制定的。 一、存储现象 浮点数由于其有小数点的特殊性,有很多浮点数是不能精确存储的,如&#…...

Servlet笔记(8):异常处理
1、错误页面配置 web.xml <!-- servlet 定义 --> <servlet><servlet-name>ErrorHandler</servlet-name><servlet-class>ErrorHandler</servlet-class> </servlet> <!-- servlet 映射 --> <servlet-mapping><servle…...

stm32f407探索者开发板(二十一)——窗口看门狗
文章目录一、窗口看门狗概述1.1 看门狗框图1.2 窗口看门狗工作过程总结1.3 超时时间1.4 为什么需要窗口看门狗1.5 其他注意事项二、常用寄存器和库函数2.1 控制寄存器WWDG_ CR2.2 配置寄存器WWDG_ CFR2.3 状态寄存器WWDG_SR三、手写窗口看门狗3.1 配置过程3.2 初始化窗口看门狗…...

C++ 模板
1. 泛型编程实现一个通用的交换函数,使用函数重载虽然可以实现,但是有以 下几个不好的地方:1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数2. 代码的可维…...

C++中的友元及运算符重载
友元 意义 程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就要用到友元技术 关键字 friend 友元的三种实现 全局函数做友元 class Room{friend void test(Person &p);//friend class test;public:string phone_number;private:string…...

五、运行时数据区内部结构、JVM中的线程
内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程种内存申请、分配‘、管理的策略,保证了JVM的高效稳定运行,不同的JVM对于内存的划分方式和管理机制…...
Codeforces Round #848 (Div. 2)A-C
传送门 目录 A. Flip Flop Sum 代码: B. The Forbidden Permutation 代码: C. Flexible String 代码: A. Flip Flop Sum 题意:给你一个长度为n的数组(数组元素只为1或者-1),你要且只能进行…...

机器学习笔记之近似推断(一)从深度学习角度认识推断
机器学习笔记之近似推断——从深度学习角度认识推断引言推断——基本介绍精确推断难的原因虽然能够表示,但计算代价太大无法直接表示引言 本节是一篇关于推断总结的博客,侧重点在于深度学习模型中的推断任务。 推断——基本介绍 推断(Inference\text{…...

指针的进阶
一、字符指针 int main() {char ch w;char* pc &ch;//pc就是字符指针//const char *p "abcdef";//这里其实是把字符串"abcdef"的首地址放入了指针p中//*p w;//这是错误的无法修改值(可以看到这里绿色波浪线警告)char arr[] …...

一元二次方程方程的类
1 问题设计一个一元二次方程的类,其中包括能够反映一元二次方程的属性与操作行为,然后再设计一个测试类,检测类的使用情况。2 方法使用package语句将方程的属性即计算跟的方法封装在一个有包名的类中,包名为tom.jiafei,…...

Ask林曦|来回答,30个你关心的日常问题(二)
在林曦老师的线上书法直播课上,上课前后的聊天时间里,时常有同学向林曦老师提问,这些问题涵盖了日常生活的诸多方面,从身体的保养,到快乐的法门,皆是大家感兴趣的,也都共同关切的。 暄桐教室…...

哪款电容笔适合开学季?电容笔和Apple Pencil的区别
其实,市场上一般的电容笔和Apple Pencil的最大差别,就在于Apple Pencil与普通电容笔两者的重量和压感。然而,由于苹果电容笔价格过高,目前电容笔的市场份额逐渐转向平替电容笔,平替电容笔其性能也逐渐得到改善。下面&a…...

Qt之Qprocess
QProcess 可用于完成启动外部程序,并与之交互通信。 一、启动外部程序的两种方式 1)一体式:void QProcess::start(const QString & program,const QStringList &arguments,OpenMode mode ReadWrite) 外部程序启动后&…...

为什么不愿意专升本 学历有什么用
专升本包括两种形式普通专升本和成人专升本。普通专升本毕业是全日制学历,考试仅有一次,错过不能补考所以考生不愿意选择,成人专升本毕业是非全日制学历,学历被国家承认,和普通高校毕业证有相同的使用效力。为何考生不…...

构造函数的使用大全
概述 在C中创建一个对象时,通常需要做一些数据初始化的工作,因此便提供了一个特殊的成员函数 —— 构造函数。一般情况下,并不需要程序员主动调用构造函数,而是在创建对象时,由系统自动调用。构造函数可以由程序员定义…...

ASP.NET Core MVC 项目 IOC容器
目录 一:什么是IOC容器 二:简单理解内置Ioc容器 三:依赖注入内置Ioc容器 四:生命周期 五:多种注册方式 一:什么是IOC容器 IOC容器是Inversion Of Control的缩写,翻译的意思就是控制反转。 …...

ARM工控机/网关- 钡铼技术
一、NXP处理器ARM控制器的介绍 NXP半导体是汽车、穿戴、消费电子等领域中智能机器解决方案的领先供应商。其产品线庞大,包括处理器、微控制器、快速设计平台、ARM控制器等。在物联网控制、汽车电子、安全应用等领域,NXP处理器ARM控制器已成为半导体行业的…...

为什么都在喊数据可视化?它究竟怎么做?
在数字化转型的浪潮中,不论是传统行业,还是新兴行业总会提到“数据可视化”这个词。那数据可视化到底是什么?为什么会受到那么多人追捧?又该怎么才能做到数据可视化呢? 一、数据可视化是什么? 首先“可视…...

nodejs+vue停车场停车位短租系统vscode
目 录前端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 1、 node_modules文件夹(有npn install产生) 这文件夹就是在创建完项目后,cd到项目目录执行npm install后生成的文件夹,下载了项目需要的依赖项。 2、…...