13、Shell自动化运维编程基础

弋.目录

  • RHCE板块
  • 一、为什么学习和使用Shell编程
  • 二、Shell是什么
    • 1、shell起源
    • 2、查看当前系统支持的shell
    • 3、查看当前系统默认shell
    • 4、Shell 概念
  • 三、Shell 程序设计语言
    • 1、Shell 也是一种脚本语言
    • 2、用途
  • 四、如何学好shell
    • 1、熟练掌握shell编程基础知识
    • 2、建议
  • 五、Shell脚本的基本元素
    • 1、基本元素构成:
    • 2、Shell脚本中的注释和风格
  • 六、Shell脚本编写规范
    • 1、脚本开头
    • 2、脚本中尽量不用中文注释
    • 3、多使用内部命令
    • 4、没有必要使用cat命令
    • 5、仔细阅读出错信息
    • 6、文件名以sh结尾
    • 7、代码缩进
  • 七、shell脚本执行
    • 1、方法1
    • 2、方法2
    • 3、方法3
    • 4、方法4
    • **注意:**
  • 八、bash shell基本功能
    • 1、echo打印命令
    • 2、printf 命令
    • 3、history历史命令
    • 4、命令与文件名补全:tab
    • 5、命令别名
    • 6、命令执行顺序
    • 7、管道符
    • 8、exit退出程序

RHCE板块

欢迎来到我的博客,这里是Linux板块,配合之前RHCSA进阶,希望我的博客可以帮助到您,感谢您的阅读,有什么问题还希望一起探讨交流,感谢各位的支持,感谢!

0、RHCSA——使用Linux搭建一个简单的论坛(这里即可跳转Linux基础内容)
https://blog.csdn.net/weixin_63172698/article/details/130977137?spm=1001.2014.3001.5501
1、RHCE——一、安装部署及例行性工作
https://blog.csdn.net/weixin_63172698/article/details/132378717?spm=1001.2014.3001.5501
2、RHCE——二、时间服务器
https://blog.csdn.net/weixin_63172698/article/details/132388581?spm=1001.2014.3001.5501
3、RHCE——三、远程连接服务器
https://blog.csdn.net/weixin_63172698/article/details/132391288?spm=1001.2014.3001.5501
4、RHCE——四、Web服务器(理论篇)
https://blog.csdn.net/weixin_63172698/article/details/132426298?spm=1001.2014.3001.5501
5、RHCE——五、Web服务器及内网穿透(实验篇)
https://blog.csdn.net/weixin_63172698/article/details/132425515?spm=1001.2014.3001.5501
6、RHCE——六、基于https协议的静态网站
https://blog.csdn.net/weixin_63172698/article/details/132445286?spm=1001.2014.3001.5501
7、RHCE——七、搭建云存储器
https://blog.csdn.net/weixin_63172698/article/details/132453897?spm=1001.2014.3001.5501
8、RHCE——八、DNS域名解析服务器
https://blog.csdn.net/weixin_63172698/article/details/132522246?spm=1001.2014.3001.5501
9、RHCE——九、SELinux
https://blog.csdn.net/weixin_63172698/article/details/132526882?spm=1001.2014.3001.5501
10、RHCE——十、防火墙、iptables、firewalld
https://blog.csdn.net/weixin_63172698/article/details/132527048?spm=1001.2014.3001.5501
11、RHCE——十一、NFS服务器
https://blog.csdn.net/weixin_63172698/article/details/132545080?spm=1001.2014.3001.5501
12、RHCE——十二、Mysql服务
https://blog.csdn.net/weixin_63172698/article/details/132559298?spm=1001.2014.3001.5501
13、RHCE——十三、Shell自动化运维编程基础
https://blog.csdn.net/weixin_63172698/article/details/132609269?spm=1001.2014.3001.5501
14、RHCE——十四、变量和引用
https://blog.csdn.net/weixin_63172698/article/details/132625329?spm=1001.2014.3001.5501
15、RHCE——十五、shell条件测试
https://blog.csdn.net/weixin_63172698/article/details/132625540?spm=1001.2014.3001.5501
16、RHCE——十六、流程控制之条件判断、循环
https://blog.csdn.net/weixin_63172698/article/details/132626491?spm=1001.2014.3001.5501
17、RHCE——十七、文本搜索工具-grep、正则表达式
https://blog.csdn.net/weixin_63172698/article/details/132636679?spm=1001.2014.3001.5501
18、RHCE——十八、shell编程之sed
https://blog.csdn.net/weixin_63172698/article/details/132675880?spm=1001.2014.3001.5501
19、RHCE——十九、shell编程之awk
https://blog.csdn.net/weixin_63172698/article/details/132712522?spm=1001.2014.3001.5501
20、RHCE——二十、Ansible及安装与配置
https://blog.csdn.net/weixin_63172698/article/details/132743283?spm=1001.2014.3001.5501
21、RHCE——二十一、Ansible模块
https://blog.csdn.net/weixin_63172698/article/details/132743390?spm=1001.2014.3001.5501

一、为什么学习和使用Shell编程

  • 简单易学
  • 解释性语言,不需要编译即可执行
  • 对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的,通过shell程序,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来

二、Shell是什么

1、shell起源

  • 1964年,美国AT&T公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与开始研发一套可以安装在大型主机上的多用户、多任务的操作系统,该操作系统的名称为Multics。

  • 1970年,丹尼斯•里奇和汤普逊启动了另外一个新的多用户、多任务的操作系统的项目,他们把这个项目称之为UNICS。

  • 1973年,使用C语言重写编写了Unix。通过这次编写,使得Unix得以移植到其他的小型机上面。

  • 1979年,第一个重要的标准UNIX Shell在Unix的第7版中推出,并以作者史蒂夫•伯恩(StephenBourne)的名字命名,叫做Bourne Shell,简称为sh。

  • 20世纪70年代末,C Shell作为2BSD UNIX的一部分发布,简称csh。之后又出现了许多其他的Shell程序,主要包括Tenex C Shell(tcsh)、Korn Shell(ksh)以及GNU Bourne-Again shell(bash)。

img

2、查看当前系统支持的shell

[root@server ~]# cat  /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

3、查看当前系统默认shell

[root@server ~]# echo  $SHELL
/bin/bash

4、Shell 概念

  • Shell(外壳):是一种命令解释器程序,它能识别用户输入的各种命令,并传递给操作系统
  • 结构图:

image-20230129100929087

  • 真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁,由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核

  • 用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell,Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

  • Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。

三、Shell 程序设计语言

1、Shell 也是一种脚本语言

  • 任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。
  • 有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。
  • 有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。
  • 编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。
  • 脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。
  • Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

2、用途

  • shell脚本的优势在于处理操作系统底层的业务 (linux系统内部的应用都是shell脚本完成)因为有大量的linux系统命令为它做支撑。2000多个命令都是shell脚本编程的有力支撑,特别是grep、awk、sed等。例如:一键软件安装、优化、监控报警脚本,常规的业务应用,shell开发更简单快速,符合运维的简单、易用、高效原则。

  • PHP、Python优势在于开发运维工具以及web界面的管理工具,web业务的开发等。处理一键软件安装、优化,报警脚本。常规业务的应用等php/python也是能够做到的。但是开发效率和复杂比用shell就差很多了。

四、如何学好shell

1、熟练掌握shell编程基础知识

  • 熟练使用vi(vim)编辑器
  • 熟练掌握Linux基本命令
  • 熟练掌握文本三剑客工具(grep、sed、awk)
  • 熟悉常用服务器部署、优化、日志及排错

2、建议

  • 掌握Shell脚本基本语法

  • 形成自己的脚本开发风格

  • 从简单做起,简单判断,简单循环

  • 多模仿,多参考资料练习,多思考

  • 学会分析问题,逐渐形成编程思维

  • 编程变量名字要规范,采用驼峰语法表示

  • 不要拿来主义,特别是新手

五、Shell脚本的基本元素

1、基本元素构成:

  • 第1行的“#!/bin/bash”
  • 注释:说明某些代码的功能
  • 可执行语句:实现程序的功能

2、Shell脚本中的注释和风格

  • 作用:通过在代码中增加注释可以提高程序的可读性
  • 传统的Shell只支持单行注释,其表示方法是一个井号“#”,从该符号开始一直到行尾都属于注释的内容,如:
#comment1
#comment2
#comment3
...
  • 多行注释:使用冒号“:”配合here document,语法如下:
:<<'xxxx'
comment1
comment2
comment3
……
xxxx

xxxx 可以是字符或数字,单引号可以不加,但以防出现莫名其妙的意外发生,比如发生字符扩展,命令替换

六、Shell脚本编写规范

1、脚本开头

  • 开头指定脚本解释器:#!/bin/sh 或 #!/bin/bash

  • 其他行#表示注释

  • 程序段开头需要加版本版权等信息,如:

# Date:创建日期
# Author:作者
# Mail:联系方式
# Function:功能
# Version:版本
  • 脚本自动增加注释版权信息
[root@server ~]# vim  ~/.vimrc  # 新建配置文件
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"func SetTitle()if expand("%:e") == 'sh'call setline(1,"#!/bin/bash")call setline(2,"##############################################################")call setline(3, "# File Name: ".expand("%"))call setline(4, "# Version: V1.0")call setline(5, "# Author: Andy_Sun")call setline(6, "# Email: Andy_Sun@163.com")call setline(7, "# Organization: http://www.cnblogs.com/Andy_Sun/")call setline(8, "# Created Time : ".strftime("%F %T"))call setline(9, "# Description:")call setline(10,"##############################################################")call setline(11, "")endif
endfunc

在这里插入图片描述

  • 例:创建一个标准的脚本,实现有注释信息,版权信息,内容任意,并执行
[root@server ~]# vim  cmatrix.sh
wget http://archive.ubuntu.com/ubuntu/pool/universe/c/cmatrix/cmatrix_1.2a.orig.tar.gz
tar xvf cmatrix_1.2a.orig.tar.gz
cd cmatrix-1.2a
yum install -y  ncurses-devel
yum install -y  gcc
./configure && make && make install
echo "Program installation complete !"
echo "Program installation complete !"
echo "Program installation complete !"
[root@server ~]# bash  cmatrix.sh 
[root@server ~]# cmatrix

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、脚本中尽量不用中文注释

  • 别吝啬添加注释,必要的注释方便自己别人理解脚本逻辑和功能
  • 尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰
  • 单行注释,可以放在代码行的尾部或代码行的上部
  • 多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分 代码修改时,对修改的内容

3、多使用内部命令

  • 无论碰到哪种情况,请尽量考虑使用内部命令而不是外部命令
  • 内部命令执行的效率高,性能好

4、没有必要使用cat命令

  • 这是我们经常在论坛里讨论的话题之一。没有必要使用cat命令指的是在有些时候,我们会发现根本没有必要使用cat命令。使用了多余的cat命令会让你的代码看起来很丑陋,而且还会带来性能上的问题
  • 例如:以下两条命令的结果一样
[root@server ~]# cat /etc/passwd | grep root
[root@server ~]# grep root /etc/passwd  

5、仔细阅读出错信息

  • 程序员常犯的一个错误是:当我们敲入的命令报错后,我们中的大多数人只是对错误信息一瞥而过,而不会去认真的读一读,很多时候,错误信息里就包含了解决办法
  • 有时候我们修改了某个错误并再次运行后,系统依旧会报错。然后我们再次修改,但系统再次报错。这可能会持续很长时间。但实际上,旧的错误可能已经被纠正,只是由于出现了其它一些新错误才导致系统再次报错。而我们依旧在怀疑为什么修改好的代码依然不能正常运行。
  • 因此,请你养成仔细阅读错误信息的习惯。

6、文件名以sh结尾

  • shell脚本文件名应见名知义 ,扩展名位sh,如:backup_mysql.sh

7、代码缩进

  • shell没有强制要求,但建议缩进,这样可以提高阅读性,程序更有层次感,

  • 例:编写九九乘法表

[root@server ~]# vim  99.sh#!/bin/bashfor((i=1;i<10;i++))
doecho  -ne  "$i\t"
done
echo
for((i=1;i<70;i++))
doecho  -n  "="
done
echo
for((i=1;i<10;i++))
dofor((j=1;j<=i;j++))doecho  -en  "$i*$j=$[i*j]\t"doneecho
done
[root@server ~]# bash  99.sh 
1	2	3	4	5	6	7	8	9	
=====================================================================
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

在这里插入图片描述
在这里插入图片描述

七、shell脚本执行

1、方法1

  • 使用sh或bash命令执行脚本,不需要执行权限(建议使用),脚本中可以不指定解释器(为什么不需要权限,因为:脚本文件名会作为参数,传递给脚本解释器去执行,只要解释器本省有权限就可以了)
[root@server ~]# vim  test.sh
#!/bin/bash
echo  "china"[root@server ~]# bash  test.sh
china
[root@server ~]# sh  test.sh
china
  • 可以使用bash -n 脚本名 ,进行语法检测,且不执行脚本
  • 可以使用bash -x 脚本名 ,进行脚本执行跟踪,逐条语句的跟踪执行

2、方法2

  • 切换到脚本所在目录使用./执行脚本,需要执行权限(需要配合cd进行目录切换 ,因为是在当前目录下)
[root@server ~]# ./test.sh
-bash: ./test.sh: 权限不够
[root@server ~]# chmod  +x test.sh
[root@server ~]# ./test.sh

3、方法3

  • 绝对路径执行脚本,需要执行权限
[root@server ~]# vim  /t1.sh
#!/bin/bash
echo  "china"[root@server ~]# /t1.sh
-bash: /t1.sh: 权限不够[root@server ~]# chmod  +x  /t1.sh
[root@server ~]# /t1.sh
china

4、方法4

  • 使用点(.)或者source 执行脚本,不需要执行权限
[root@server ~]# source    /t1.sh
china
[root@server ~]# .      test.sh
china

注意:

  • 法1、2、3都是启动一个子shell,在子shell中执行此脚本,脚本中设置的变量在脚本执行完毕后不会保存
  • 法4 都是在当前shell进程中执行此脚本,而不是重新启动一个shell 在子shell进程中执行此脚本,并且脚本中设置的变量在脚本执行完毕后会保存下来。

八、bash shell基本功能

1、echo打印命令

  • 格式:echo -参数 内容
  • 参数
    • -n :取消输出后行末的换行符号
    • -e :启用转义字符
  • 可以输出带颜色的字体:
    • 格式:echo -e “\e[字体控制;字体颜色或背景色 字符串内容 \e[0m”
    • \e[表示控制开始,\e[0m表示控制结束
    • 字体控制选项:1表示高亮,4表示下划线,5颜色闪烁
    • 颜色如下:字颜色:30-37 , 背景色:40-47
[root@server ~]# vim color.sh
echo -e "\e[30m 黑色字\e[0m"
echo -e "\e[1;31m 紅色字\e[0m"
echo -e "\e[32m 綠色字\e[0m"
echo -e "\e[33m 黃色字\e[0m"
echo -e "\e[34m 藍色字\e[0m"
echo -e "\e[35m 紫色字\e[0m"
echo -e "\e[36m 天藍字\e[0m"
echo -e "\e[37m 白色字\e[0m"
echo -e "\e[40;37m 黑底白字\e[0m"
echo -e "\e[41;37m 紅底白字\e[0m"
echo -e "\e[42;37m 綠底白字\e[0m"
echo -e "\e[43;37m 黃底白字\e[0m"
echo -e "\e[44;37m 藍底白字\e[0m"
echo -e "\e[45;37m 紫底白字\e[0m"
echo -e "\e[46;37m 天藍底白字\e[0m"
echo -e "\e[47;30m 白底黑字\e[0m"[root@server ~]# bash color.sh 

在这里插入图片描述

2、printf 命令

  • printf 命令模仿 C 程序库(library)里的 printf() 程序, 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好,printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n
  • 格式:
printf   格式控制字符串   参数列表
  • 例:
[root@server ~]# echo "Hello, Shell"
[root@server ~]# printf  "Hello, Shell\n"
[root@server ~]# printf "%d %s\n" 1 "abc"
[root@server ~]# printf '%d %s\n' 1 "abc" # 单引号双引号效果一样
[root@server ~]# printf %s abcdef  # 没有双引号也可输出,没有\n会续连下一个提示符
[root@server ~]# printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg# %s %c %d %f 都是格式替代符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。
# %-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。[root@server ~]# printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
# %-4.2f 指格式化为小数,其中 .2 指保留2位小数

3、history历史命令

  • 格式:
history [参数] [历史命令保存文件]
  • 参数

    • -c :清空历史命令记录
    • -w:把缓存中的历史命令写入历史命令保存文件。如果不手工指定历史命令保存文件,则放入默认历史命令保存文件~/.bash_history 中
  • 修改默认记录历史命令条数:

[root@server ~]# vim  /etc/profile   (重启生效)
HISTSIZE=1000     储存历史命令记录条数
  • 面试题:显示history历史命令出现次数最高的top10
[root@server /]# history  |  tr  -s  " " | cut -d " "  -f3  | sort |  uniq -c | sort -nr  |  head -10# 浏览历史命令 | 压缩为1个空格 | 截取以空格为间隔的第3列 | 排序 | 统计并去重 | 以次数为依据进行降序排序 | 取前10个
  • 面试题:增加history显示的信息,如:历史命令的执行时间
[root@server /]# vim   ~/.bashrc  # 编辑bash的配置文件,最后一行后添加:
export  HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S: "[root@server /]# source  ~/.bashrc  # 刷新配置
[root@server /]# history            # 查看结果

修改之后文件:
在这里插入图片描述

4、命令与文件名补全:tab

5、命令别名

  • 格式:alias 别名=原命令

  • 例:

[root@server ~]# alias  hi=history
[root@server ~]# hi
  • 注意:别名的优先级比命令高,命令执行时的顺序如下:
第一顺位:执行用绝对路径或相对路径执行的命令。
第二顺位:执行别名。
第三顺位:执行 Bash 的内部命令。
第四顺位:执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令。
  • 为了让这个别名永久生效,可以把别名写入环境变量配置文件“~/.bashrc”。
[root@server ~]# vim   ~/.bashrc  # 在最下面增加
alias  hi=history

6、命令执行顺序

  • 顺序执行: ;
[root@server ~]# date ; ls -l /etc/passwd
  • 前面命令执行不成功,后面的命令不执行: &&
[root@server ~]# mkdir /mnt/iso && mount /dev/sr0 /mnt/iso
  • 前面命令成功,后面就不执行,如果前面不成功后面就执行: ||
[root@server ~]# mkdir  tt  ||  ls  /
[root@server ~]# mkdir  tt  ||  ls  /  # 可以再次执行

7、管道符

  • 符号:| ,当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道

  • 面试题:获取服务器的IP地址

[root@server ~]# ip  a  |  grep  ens160 | grep  inet | tr  -s " " | cut -d " " -f3
192.168.48.130/24
# 查看IP信息 | 过滤包含esn160行 | 过滤包含inet行 | 压缩空格为1个 | 列向截取列
[root@server ~]# ip  a  |  grep  ens160 | grep  inet | cut -d  "/"  -f1 | cut -d " " -f6
192.168.48.130
  • 面试题:显示内存的剩余容量
[root@server ~]# free -h | grep  Mem | tr  -s  " " | cut -d " " -f4

在这里插入图片描述

8、exit退出程序

  • 作用:终止Shell程序的执行

  • 格式:exit 状态码

  • 状态码:该参数是一个整数值,其取值范围为0~255

  • 注意:Shell程序的退出状态码储存在系统变量$?中,因此,用户可以通过该变量取得Shell程序返回给父进程的退出状态码

  • 常见状态码:

	0----------------命令运行成功1----------------通知未知错误2----------------误用shell命令126-------------命令不可执行127-------------没有找到命令128-------------无效退出参数128+x-----------linux信号x的严重错误130--------------命令通过Ctrl+C终止255--------------退出状态码越界
  • 演示在不同的情况下,程序返回不同的状态码
[root@server ~]# echo  "china"
china
[root@server ~]# echo  $?
0
[root@server ~]# ehco  "china"
bash: ehco: command not found...
Similar command is: 'echo'
[root@server ~]# echo  $?
127

在这里插入图片描述

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

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

相关文章

英伟达股票1拆10后,现在再买入是否为时已晚?

英伟达股票1拆10后&#xff0c;现在再买入是否为时已晚&#xff1f; 英伟达的股价在过去18个月里已经上涨了近800% 人工智能领域无疑是当下最受投资者关注的焦点之一&#xff0c;而这一领域的佼佼者--英伟达&#xff0c;也被一些华尔街投资机构和看好半导体、数据中心行业的专业…

SoulApp创始人张璐团队以AI驱动社交进化,平台社交玩法大变革

在科技飞速发展的今天,人工智能正逐步渗透到社交媒体的各个环节,赋能全链路社交体验。AI的引入不仅提升了内容推荐的精准度,使用户能够更快速地发现感兴趣的内容,还能通过用户行为预测,帮助平台更好地理解和满足用户需求。此外,AI驱动的虚拟助手和聊天机器人也正在改变用户互动…

NVIDIA RTX 50系显卡接口全变,功耗爆炸超500W

七月伊始&#xff0c;手机圈就开始打的不可开交了。 例如真我 GT6、IQOO Neo 9S、以及蓄势待发的红米 K70 Ultra&#xff0c;都想在这个暑假向莘莘学子发出最诚挚的「邀请函」。 反观电脑圈这边&#xff0c;不能说一潭死水&#xff0c;只能说毫无波澜。 不过该来的还是要来的&…

Redis的使用(四)常见使用场景-缓存使用技巧

1.绪论 redis本质上就是一个缓存框架&#xff0c;所以我们需要研究如何使用redis来缓存数据&#xff0c;并且如何解决缓存中的常见问题&#xff0c;缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩&#xff0c;以及如何来解决缓存一致性问题。 2.缓存的优缺点 2.1 缓存的…

睿考网:造价员和造价工程师是一个意思吗?

在工程建设领域中&#xff0c;经常会有人问&#xff1a;“造价员和造价工程师是一样的吗?”这两者代表的是两种独立的职业身份&#xff0c;职责和资格要求有明显的差异&#xff0c;是两种完全不同的考试。 造价工程师是一种具有专业资质的人员&#xff0c;通过国家统一的执业…

『 Linux 』命名管道

文章目录 命名管道与匿名管道命名管道特点命名管道的理解命名管道实现两个毫无关联的进程间通信 命名管道与匿名管道 命名管道是管道的一种,数据流向为单向故被称为管道; 与匿名管道相同属于一种内存级文件; 区别如下: 名字 匿名管道 没有名字,只存在于内存当中(类似内核缓冲…

【软件测试】编写测试用例篇

前面部分主要是编写测试用例的方法和方向&#xff0c;后面一部分是编写出具体的测试用例 目录 什么是测试用例 1.设计测试用例的万能公式 1.1.从思维出发 1.2.万能公式 1.3.弱网测试 1.4.安装与卸载测试 2.设计测试用例的方法 2.1.基于需求的设计方法 2.2.等价类 2.3…

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议&#xff0c;所以使用 TCP 前必须先建立连接&#xff0c;而建立连接是通过三次握手来进行的。 一开始&#xff0c;客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 客户端会随机初始化序号&…

原来,BI数据分析也是有模板的

在当今数据驱动的时代&#xff0c;商业智能&#xff08;BI&#xff09;数据分析已经成为企业决策的重要工具。然而&#xff0c;很多人可能并不了解&#xff0c;BI数据分析并非从零开始&#xff0c;而是可以依托现成的模板和解决方案来快速搭建和实施的。以奥威BI方案为例&#…

React+TS前台项目实战(二十九)-- 首页构建之性能优化实现首页Echarts模块数据渲染

文章目录 前言Echart模块源码功能分析数据渲染一、HashRateEchart统计图1. 功能分析2. 代码详细注释 二、BlockTimeChart统计图1. 功能分析2. 代码详细注释 三、使用方式四. 数据渲染后效果如下 总结 前言 还记得之前我们创建的 高性能可配置Echarts组件 吗&#xff1f;今天我…

redis 配置文件参数详解

1、redis.conf 通用类 Redis的配置文件是一个文本文件&#xff0c;通常名为redis.conf。以下是一些常见配置项的解释和示例&#xff1a; 1、bind 127.0.0.1&#xff1a;绑定的主机地址 2、 protected-mode ,默认是开启状态&#xff0c;一般不需要修改&#xff0c;可以保证服务…

唯众物联网综合实训台 物联网实验室建设方案

物联网综合实训装置 物联网工程应用综合实训台是我公司针对职业院校物联网行业综合技能型人才培养&#xff0c;综合运用传感器技术、RFID技术、接口控制技术、无线传感网技术、Android应用开发等&#xff0c;配合实训台上的433M无线通信设备、ZigBee节点、射频设备、控制设备、…

智能家居产品公司网站源码,自适应布局设计,带完整演示数据

适合各类智能家居电子产品使用的网站源码&#xff0c;深色大气设计&#xff0c;自适应布局设计&#xff0c;pc手机均可完美适配&#xff0c;带完整演示数据。 独家原创资源。源码是asp开发的&#xff0c;数据库是access&#xff0c;主流的虚拟主机空间都支持asp&#xff0c;直…

第三届经济、智慧金融与当代贸易国际学术会议(ESFCT2024)

【五大高校联合支持】第三届经济、智慧金融与当代贸易国际学术会议(ESFCT 2024) 2024 3rd International Conference on Economics, Smart Finance and Contemporary Trade 文章投稿均可免费参会 高录用快见刊【最快会后1-2个月左右见刊】【最快刊后1个月内上知网&谷歌学…

【人工智能】高级搜索技术(模拟退火搜索算法和遗传算法解决旅行商问题)

目录 一、旅行商问题 1. 需求分析 2. 数据结构、功能模块设计与说明 2.1 数据结构 &#xff08;1&#xff09;模拟退火搜索算法 &#xff08;2&#xff09;遗传算法 2.2 功能模块设计 &#xff08;1&#xff09;模拟退火搜索算法 &#xff08;2&#xff09;遗传算法 …

在 PostgreSQL 里如何处理数据的存储优化和查询复杂度的平衡?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的存储优化和查询复杂度的平衡&#xff1f;一、理解数据存储优化和查询复…

亚马逊、ebay、沃尔玛卖家打造爆款如何利用测评提高转化率?

做亚马逊、速卖通、ebay只有打造爆款&#xff0c;才能够挣到钱&#xff0c;如果一年到头&#xff0c;不断测款&#xff0c;不断测试不同的广告打法&#xff0c;那么代表了什么&#xff1f;代表了你的试错成本相当高&#xff0c;一不小心&#xff0c;分分钟就能够把手头上仅有的…

工业智能网关的边缘计算能力赋能工业4.0

边缘计算是将数据处理和分析能力推向网络边缘的技术&#xff0c;使得终端设备能够实时、快速地响应环境变化&#xff0c;并做出相应决策。在智能制造中&#xff0c;通过5G工业网关的边缘计算能力&#xff0c;企业可以实现对生产线上大量传感器数据的实时采集、处理和分析&#…

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

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

用chatgpt写了个二级导航,我全程一个代码没写,都是复制粘贴

今天心血来潮&#xff0c;让chatgpt给我写个移动端的二级导航菜单&#xff0c;效果如下&#xff1a; 1、两级导航&#xff0c;竖向排列&#xff0c;一级导航默认显示&#xff0c;二级隐藏 2、抽屉伸缩效果&#xff0c;点击一级导航&#xff0c;展开二级导航&#xff0c;再次点…