Shell-基本命令与运算符
1.为什么要进行shell编程?
在Linux系统中,虽然有各种各样的图形化接口工具,但是shell仍然是一个非常灵活的
工具。
Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。
您可以通过使用shell使大量的任务自动化,
因此,之所以要使用Shell 脚本是基于:
#简单性
Shell 是一个高级语言,通过它,你可以简洁地表达复杂的操作。
#可移植性
使用POSIX 所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
#开发容易
可以在短时间内完成一个功能强大又好用的脚本。
//参考:《Shell 脚本学习指南》
#shell特别擅长:
系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。
2.谁需要学习 Shell 编程?
Linux运维工程师:
编写Shell程序进行服务集群管理。
Python和JavaEE程序员:
编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
大数据程序员:
编写Shell程序来管理集群。Shell 是什么?
//我们怎么用:
//做简单配置
//能看懂别人的脚本
//eg:
// 后面双网卡的配置
3.shell编程 (之前学习过C语言)
3.1 shell编程 对比 C编程
shell编程: (1.执行过程,2.开发效率,3.执行效率,4.移植性)
解释型语言
边翻译边执行 (ls cp(程序))
擅长文件处理,操作系统管理
开发效率高 // cp 1 2
执行效率低
移植性好
.c
编译型语言
先编译再执行 //gcc 编译 (.c ---> 机器代码)
擅长数据计算和数据处理
开发效率低
执行效率高
移植性差
3.2 shell脚本编程
3.2.1 shell发展简介
sh
bash shell gnu unix
c shell csh
k shell ksh ash
...
我们用的是:
bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。
同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,
所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
[注]:
Bash (the Bourne-Agian shell)由 Brian Fox 为GNU项目编写,目的是代替sh。
首次发布于1989年,作为GNU项目的一个程序广泛分布在Linux、Mac OS X、Cygwin上。
Brain Fox作为FSF的员工,首次开始工作是在1988年的1月10号,一年之后,
发布了.99的测试版本。
#!/bin/bash --- 表示指定当前shell脚本的解释器为 /bin/bash 这个解释器
【总结】
shell脚本的本质就是一系列shell命令的集合。
3.2.2 shell脚本编写
1.shell脚本编写流程:
1.vim XX.sh #!/bin/bash //编辑文件 shebang
2.编写脚本 //#!/bin/bash
3.chmod +x XX.sh //给执行权限
4. ./XX.sh //执行文件
注意:
# --- 第一行 不要写注释 这些
#!/bin/bash --- 表示当前这个shell脚本用哪个shell来解释执行
所有者 所属组 其它人
r w x - r w x - r w x
1 1 1 1 1 1 1 1 1
----- ----- -----
7 7 7 //0777
r w x - r w x - r w x
1 0 1 1 1 1 1 1 1
----- ----- -----
5 7 7 //0577
4.环境变量: env
PATH:系统中可执行文件的路径
PWD :当前所在的工作路径
HOME:当前登录用户的家目录
...
USERNAME=linux
USER=linux
PWD=/home/linux/shell
HOME=/home/linux
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/linux/tools/opt/FriendlyARM/toolschain/4.4.3/bin
HOME=/home/linux
PWD=/home/linux/2021code/shell/test_code
USER=linux
SHELL=/bin/bash
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/linux/tool/opt/FriendlyARM/toolschain/4.5.1/bin:/home/linux/Qt5.5.1/Tools/QtCreator/binenv
//引用环境变量:
$PATH
echo --- printf
键(key)值(value)对
KEY=value
键(key) 相当于 C语言中的 变量名
值(value) 相当于 C语言中的 赋的值
5.位置变量: ./3.sh /etc/passwd 123 内置变量
main(int argc,char* argv[]) // a.out 1 2
@argc --- 命令行参数的个数
@argv --- 命令行参数对应的数组的首地址
$0: 脚本文件名
$1: 传入脚本的第一个参数
$2: 传入脚本的第二个参数
...
$9:
ls /etcpass
cp /etc/passwd 123 ;
$#:传入参数的个数 //argc
$?:上一句shell命令执行的结果
0 表示成功
$$:当前shell的PID --- $$ 21694 //进程的概念提示
//[说明]:
表 1 位置参数变量
位置参数变量 作 用
$n n 为数字,$0 代表命令本身,$1~$9 代表第 1~9 个参数,10 以上的参数需要用大括号包含, 如${10}
$* 这个变量代表命令行中所有的参数,把所有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区别对待
$# 这个变量代表命令行中所有参数的个数
//[说明]:
6.自定义的变量:
(1) 注意:
【1】.shell中数据是弱类型,默认识别为字符串类型
【2】不需要,先定义
【3】名字规则 ,遵循C的命名规则。 //(不要带空格)
不能带 $符号
[注]
给值的时候 等号两边不能有空格
var=123 (√)
var = 123 (x)
(2)shell脚本输入输出
read name
echo '$name'
a+b;
(3)shell中的引号
"":打印字符串,遇到$变量($name)则打印变量中的值(name变量的值)
'':打印字符串,遇到$变量依然打印 $变量 (原样输出)
``:将中间的字符串按照命令打印 (命令置换) //用命令结果 置换这条命令
练习1:
从终端输入两个数,并打印出这两个数
read
echo
7.read
read从标准输入读入一行, 并赋值给后面的变量,其语法为:
. read var
把读入的数据全部赋给var
. read var1 var2 var3
把读入行中的第一个单词(word)赋给var1,
第二个单词赋给var2,
……把其余所有的词赋给最后一个变量.
如果执行read语句时标准输入无数据,
则程序在此停留等侯,
直到数据的到来或被终止运行。
read var1 var2 var3
//此时,从键盘输入的数据,可以在一行,数据与数据间用空格隔开
read var1
read var2
//此时多个数据用回车 区分
8.expr
//字符串不能进行运算,需要专门命令 expr expression
运算:
expr
算术运算命令expr主要用于进行简单的整数运算,
#注意:
(1).运算符号两边要有空格
(2).注意对应的运算符是否需要转义
包括:
加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。
9.分支语句:
1.if语句
if (表达式)
{
语句1;
}
else
{
语句2;
}
//双分支
if 条件
then
语句1
else
语句2
fi //fi
((c语言风格的表达式))
//双分支
if ((c语言风格的表达式))
then
语句1
else
语句2
fi //fi
条件的生成:
逻辑运算 关系运算 //C中
if 条件
then
语句1
else
语句2
fi //fi
//多分支
if 条件表达式
then
语句
elif [条件表达式] #else if (表达式)
then
语句
elif [条件表达式]
then
语句
else
语句
fi
//单分支
if [ $i -eq 10 -a $j -le 10 ]
then
fi
10.//条件的生成 --test的命令 //注意: test 执行结果为真 0
// 执行结果为假 1
man test
-a and &&
-o or ||
test -eq 相等
test 10 -eq $i
[ $i -eq 10 ]
man test
if( a == 10)
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
[ $i -ge 0 -a $i -lt 59 ]
0<= a <59
条件的写法:
//命令的写法
test 10 -eq $i
//中括号
[ $i -eq 10 ] //注意: 中括号里面,前后都要有空格。
//C风格
(( c语言风格的表达式 ))
练习 4:
if 实现 成绩的打印
从终端接收一个成绩
0 - 59 打印不及格
60 - 69 及格
70 - 79 良好
80 - 89 中等
90 - 100 优秀
11.
test
-b 块设备文件 block test -b /dev/sda --- 硬盘
eg:
ls -l /dev/sda
-c 字符设备文件 char --- 鼠标,键盘
eg:
ls -l /dev/input/mouse0
-d 目录文件 directory
-f 普通文件 regular
-L 链接文件 link 类似 windows下的快捷方式
eg:
ln -s 源文件 链接文件名
-S 套接字文件 socket (本地socket/网络socket )
-p 管道文件 pipe (管道) //进程的通信
eg:
mkfifo fifo //创建管道文件fifo
练习 5:
从终端输入一个文件名,判断该文件的类型
12.case
switch(n)
{
case 1:
...
break;
default:
...
break;
}
//shell
case $num in
9)
语句
;; //C中的 --- break
8|6|5|4)
语句
;; //C中的 break
7)语句
;;
*)语句 //default
;;
esac //esac --->case 反着写
练习 7: 80
从终端接收一个成绩,
0 - 59 不及格
60 - 69 及格
70 - 79 中等
80 - 89 良好
90 - 100 优秀
13.循环语句://while //do-while //for
//c语言
while (表达式)
{
语句
}
//shell - test [ ] (())
while [ 条件 ]
do
语句
...
done
for
until
练习:
while实现1到100求和
for 循环:
for循环一般格式为:
//c
for (表达式1;表达式2;表达式3)
{
语句;
}
//shell
for var in item1 item2 ... itemN //for循环的条件
do //for循环的执行体
command1
command2
...
commandN
done
seq命令 表示打印一系列值:
seq LAST
seq FIRST LAST
seq FIRST INCREMENT LAST
练习:
for 试下 1~100 累加求和
//C语言风格的:
格式
for((exp1; exp2; exp3))
do
statements
done
语法:((表达式1,表达式2…))
特点:
1、在双括号结构中,
所有表达式可以像c语言一样可以进行计算,
如:a++,b--等。
2、在双括号结构中,
所有变量可以不加入:“$”符号前缀。
until
语法格式:
until condition
do
command
done
condition 一般为条件表达式,
如果返回值为 false,
则继续执行循环体内的语句,否则跳出循环。
以下实例我们使用 until 命令来输出 0 ~ 9 的数字:
实例
#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
练习 6:
从终端输入一个文件名,如果该文件存在,
则修改其权限为777,如果该文件不存在,
则在当前目录创建tmp文件夹,并在文件夹下
创建该文件并修改权限为777
相关文章:
Shell-基本命令与运算符
1.为什么要进行shell编程? 在Linux系统中,虽然有各种各样的图形化接口工具,但是shell仍然是一个非常灵活的 工具。 Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。 您可以通过使用shell使大量的任务自动化, 因此&#…...
JUnit 5 自定义注解:方法级 JSON 参数注入
JUnit 5 自定义注解:方法级 JSON 参数注入 为了实现 在测试方法上使用注解,并通过注解属性指定参数名称和 JSON 字符串(转换为 Java 对象),以下是基于 JUnit 5 正确扩展接口的解决方案: 一、实现步骤 1. …...
anolis os 8.9安装jenkins
一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…...
【CXX】0 Rust与C 互操作利器:CXX库介绍与示例
CXX库是一个非常强大的工具,它使得Rust和C之间的互操作性变得既安全又高效。本专栏将展示如何使用CXX库来桥接Rust和C代码,同时保持两者语言的特性和惯用法。 一、关键概念回顾 类型安全:CXX库通过静态分析类型和函数签名来保护Rust和C的不…...
tensorflow环境中已安装库
1. 深度学习课前准备工作 Anaconda3、TensorFlow和keras安装方法 1 下载Anaconda: Anaconda3-5.2.0-Windows-x86_64.exe 双击安装,选定环境变量 2 开始菜单打开Anaconda Prompt:(2、3、4有链接科学上网) 创建环境&am…...
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践 本文将基于提供的代码示例,详细介绍如何在一个Java微服务项目中使用Spring Security、JWT和Spring Cloud Gateway来构建一个高效且安全的微服务体系,并整合性能优…...
蓝桥杯(B组)-每日一题(求最大公约数最小公倍数)
题目: 代码展现: #include<iostream> using namespace std; int main() {int m,n,x,y;cin>>m>>n;//输入两个整数int b;bm%n;//取余数xm;//赋值yn;while(b)//当余数不为0的时候{xy;//辗转相除求最小公约数yb;bx%y;}cout<<y<&…...
RocketMQ、RabbitMQ、Kafka 的底层实现、功能异同、应用场景及技术选型分析
1️⃣ 引言 在现代分布式系统架构中,📩消息队列(MQ)是不可或缺的组件。它在系统🔗解耦、📉流量削峰、⏳异步处理等方面发挥着重要作用。目前,主流的消息队列系统包括 🚀RocketMQ、&…...
CEF132编译指南 MacOS 篇 - 构建 CEF (六)
1. 引言 经过前面一系列的精心准备,我们已经完成了所有必要的环境配置和源码获取工作。本篇作为 CEF132 编译指南系列的第六篇,将详细介绍如何在 macOS 系统上构建 CEF132。通过配置正确的编译命令和参数,我们将完成 CEF 的构建工作…...
使用stm32控制esp01s
title: 使用stm32控制esp01s date: 2025年2月9日 18:41:20 tags: 单片机模块使用 categories: stm32 description: 使用stm32控制esp01s连接WiFi查看内容等操作 前言 使用stm32f103控制esp01s是步入物联网的第一步,接下来的文章会详细讲解如何使用stm32控制esp01s…...
返回倒数第N个链表节点
力扣题目:LCR 140. 训练计划 II - 力扣(LeetCode) 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 示例 1: 输入:head [2,4,7,8], cnt 1 输…...
一、计算机等级考试——标准评分
(1)选择题 未做选择题 (2)基本造作 (3)上网题 (4)文字题 (5)表格题 (6)演示文稿 二、计算机等级考试——题库 (1&#x…...
tweenjs动画
目录 编辑 安装 HTML中应用 Threejs中应用 安装 npm install tweenjs/tween.js HTML中应用 <script src"https://cdnjs.cloudflare.com/ajax/libs/tween.js/23.1.3/tween.umd.js"></script><div id"box"></div><style…...
IGBT工作原理
IGBT其实可以看成是BJT和MOS管的融合体,IGBT具有BJT的输入特性和mos管的输出特性。与 BJT 或 MOS管相比,绝缘栅双极型晶体管 IGBT 的优势在于它提供了比标准双极型晶体管更大的功率增益,以及更高的工作电压和更低的 MOS 管输入损耗。 IGBT是绝…...
FlashDecoding
Flash Attention是将Q划分到所有SM block上。每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。期间,SM block彼此之间,不需要通信。 在prefill阶段,seqLength*batchSize*Heads足够多,所以每…...
03:Spring之Web
一:Spring整合web环境 1:web的三大组件 Servlet:核心组件,负责处理请求和生成响应。 Filter:用于请求和响应的预处理和后处理,增强功能。 Listener:用于监听 Web 应用中的事件,实…...
OpenWebUI使用DeepSeek R1满血版,DeepSeek R1 API调用
https://www.dong-blog.fun/post/1935 API调用 登录这里: https://console.volcengine.com/ark/region:arkcn-beijing/endpoint?config%7B%7D 注册后,创建DeepSeek R1 API接入点: 接着Python就可以直接调用了: import os fro…...
DeepSeek模型场景应用:基于腾讯云HAI搭建IDEA开发助手
前言 这段时间国产大模型DeepSeek十分火爆,DeepSeek模型凭借其强大的语言理解和生成能力,为开发场景带来了全新的可能性,DeepSeek模型场景应用也是十分广泛,而基于腾讯云HAI搭建IDEA开发助手,更是将这种潜力发挥到了极…...
HttpServletRequest 作用
HttpServletRequest 接口在 Java Servlet API 中扮演着至关重要的角色,它是 Servlet 处理客户端 HTTP 请求的核心对象。 每次客户端(例如浏览器)向服务器发送一个 HTTP 请求时,Servlet 容器(例如 Tomcat)都…...
Python----PyQt开发(PyQt高级:手搓一个简单的记事本)
一、效果展示 二、设计PyQt界面 2.1、设置图标 self.setWindowIcon(QIcon(./images/icon/1.png)) # 窗口图标 2.2、设置标题 self.file_name 无标题-新建文本文档 # 默认文件名 self.setWindowTitle(self.file_name) # 窗口标题 2.3、添加菜单栏、工具栏、状态栏 # 创…...
MySQL 索引失效案例:字符集不匹配的隐蔽影响
引言 在 MySQL 数据库世界里,索引失效往往是性能问题的罪魁祸首。你是否曾遇到过这样的情况:明明加了索引,查询却慢如蜗牛?你是否曾以为小表查询就一定高效?本文将揭示一个真实的案例,一个容易被忽视的“隐…...
MySQL中类似PostgreSQL中的string_agg函数--GROUP_CONCAT函数的使用
文章目录 结论:MySQL没有string_agg,但有GROUP_CONCATGROUP_CONCAT函数的基本用法示例注意事项 系统变量 group_concat_max_len 如何查看和设置查看当前的group_concat_max_len值设置group_concat_max_len值 相关源码相关链接 结论:MySQL没有…...
科普:数据血缘理论中:任务血缘、表血缘、字段血缘
在讨论数据血缘时通常我们提到的是数据库血缘、数据表血缘和数据字段血缘,而“任务血缘”这一术语更多是在特定技术场景(如实时任务运维)中使用。 数据血缘分类 表血缘 表血缘(或数据表血缘)是指数据在不同数据表之…...
凸性相关问题
内容大致上包括: 四边形不等式,决策单调性闵可夫斯基和优化 d p dp dpslope trick 优化 d p dp dp其他凸性相关问题 决策单调性 1.1 一些约定 对于 n m n\times m nm 的矩阵 A A A,定义: 子矩阵 A [ i 1 , . . . , i p …...
WPS计算机二级•文档的文本样式与编号
听说这是目录哦 标题级别❤️新建文本样式 快速套用格式🩷设置标题样式 自定义设置多级编号🧡使用自动编号💛取消自动编号💚设置 页面边框💙添加水印🩵排版技巧怎么分栏💜添加空白下划线&#x…...
开源堡垒机 JumpServer 社区版实战教程:一步步构建企业安全运维环境
文章目录 开源堡垒机 JumpServer 社区版实战教程:一步步构建企业安全运维环境一、访问JumpServer1.1 登录1.2 功能模块1.3 系统设置1.3.1 基本设置1.3.2 邮件设置 二、用户管理2.1 场景2.2 创建用户2.3 用户登录密码重置 三、资产管理3.1 准备工作3.2 登录控制台3.3…...
二、数据类型、运算符
1. 数据的表示详解 1.1 算术运算符 整数在计算机中的存储原理先从最基本的算术运算符开始学习,算术运算符有 - * / % ,其中*表示乘法,/表示除法,%表示取余数 需要我们注意以下几点 /: 两个整数相除,结果也是一个…...
结构形模式---桥接模式
概念 桥接模式是一种结构化模式,是将一个大类或者一系列的紧密相关的类拆分为抽象和现实两个独立部分的层次结构,通过引用独立层次对象的组合实现类。 桥接模式可以将庞杂类拆分为几个类层次结构。 此后, 你可以修改任意一个类层次结构而不…...
计算机网络知识速记:HTTP1.0和HTTP1.1
计算机网络知识速记:HTTP1.0和HTTP1.1 1. 基本概念 1.1 HTTP1.0 HTTP1.0是1996年发布的第一个正式版本,主要用于客户端与服务器之间的简单请求和响应交互。它的设计理念相对简单,适合处理一些基本的网页服务。 1.2 HTTP1.1 HTTP1.1是HTT…...
Windows下查看WIFI密码
目录 命令行查看历史WIFI netsh wlan show profiles 命令行查看某一特定WIFI密码 netsh wlan show profile name “WIFI名” keyclear 打开命令行https://blog.csdn.net/weixin_70822378/article/details/145598560?spm1001.2014.3001.5502 命令行查看历史WIFI nets…...
Android车机DIY开发之软件篇(十二) AOSP12下载编译
Android车机DIY开发之软件篇(十二) AOSP12下载编译 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib gmultilib libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev ccache libgl1-mesa-…...
Datawhale Ollama教程笔记2
本期学习易错点: 改文件后缀 改了models的存储地址后,把下载和新建的文件存储在什么地方 注册hugging face,找到token. 学习手册:https://datawhalechina.github.io/handy-ollama/#/ 第 3 章 自定义导入模型https://datawhalechina.gith…...
ClickHouse的前世今生
ClickHouse是一款由Yandex开发的高性能列式存储数据库管理系统,专为在线分析处理(OLAP)设计,适用于实时数据分析、大规模数据处理和复杂查询场景。以下是关于ClickHouse的安装、使用及应用场景的详细介绍: 一、ClickHouse的安装 ClickHouse支持多种操作系统,包括Linux、…...
SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)
SSH隧道Nginx:内网资源访问的绿色通道 问题背景 模拟生产环境,使用两层Nginx做反向代理,请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现,重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…...
html文件怎么转换成pdf文件,2025最新教程
将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…...
大促备战中稳定性建设策略与总结
文章目录 接口流量评估、上下游依赖梳理降级能力建设应急响应预案建设压力测试监控报警建设容灾演练 之前也专门写过日常稳定性建设的一些策略,传送门 -> 日常稳定性建设策略与总结,本文想专门聊聊大促期间做的一些稳定性保障,顺便记录自己…...
vscode/cursor+godot C#中使用socketIO
在 Visual Studio Code(VS Code)中安装 NuGet 包(例如SocketIOClient),你可以通过以下几种方法: 方法 1:使用dotnet cli 打开终端:在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…...
Uniapp 原生组件层级过高问题及解决方案
文章目录 一、引言🏅二、问题描述📌三、问题原因❓四、解决方案💯4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结Ἰ…...
jQuery介绍(快速、简洁JavaScript库,诞生于2006年,主要目标是简化HTML文档操作、事件处理、动画和Ajax交互)
文章目录 **核心功能 & 亮点**1. **简化 DOM 操作**2. **链式调用**3. **跨浏览器兼容**4. **便捷的事件绑定**5. **Ajax 封装**6. **动画效果** **现状与适用场景**- **传统项目维护**:许多旧系统(如 WordPress 插件、老企业网站)仍依赖…...
第三节 docker基础之---Commit+Dockerfile制作
docker目前镜像的制作两种方法: 1,基于docker Commit制作镜像 2,基于dockerfile制作镜像,Dockerfile 为主流的制作方式 如果不制作镜像删除容器之后则里面配置的文件也随之删除: [rootdocker ~]# docker images 查看…...
通过openresty和lua实现随机壁纸
效果: 图片存放路径: /home/jobs/webs/imgs/ ├── default/ │ ├── image1.jpg │ ├── image2.png ├── cats/ │ ├── cat1.jpg │ ├── cat2.gif ├── dogs/ │ ├── dog1.jpg访问http://demo.com/imgs/default 随机返回…...
企业网站如何快速实现全站HTTPS安全访问?
当用户访问您的网站时,若您的企业网站仍以HTTP协议运行,浏览器“不安全”警告不仅会吓退潜在客户,还会拖累搜索引擎排名,直接影响业务转化和品牌声誉。实现全站HTTPS安全访问,已成为企业网站运营的必选项。 本文为您详…...
《花未眠》夜间四时醒来,海棠花未眠
《花未眠》夜间四时醒来,海棠花未眠 川端康成(1899-1972)日本作家。新感觉派。1968年以“敏锐的感受,高超的叙事技巧,表现日本人的精神实质”获诺贝尔文学奖。诺贝尔文学奖提名作有《雪国》《千羽鹤》《古都》。 陈德文…...
在nodejs中使用RabbitMQ(三)Routing、Topics、Headers
示例一、Routing exchange类型direct,根据消息的routekey将消息直接转发到指定队列。producer.ts 生产者主要发送消息,consumer.ts负责接收消息,同时也都可以创建exchange交换机,创建队列,为队列绑定exchangeÿ…...
kubeconfig存放内容有哪些
kubeconfig 文件是 Kubernetes 用于配置和认证的核心文件。它包含了关于如何访问 Kubernetes 集群的信息。以下是 kubeconfig 文件中常见的一些内容结构: apiVersion: 指定 kubeconfig 的版本,通常是 v1。clusters: 定义了集群的信息,包括集…...
图神经网络是什么,有什么实际应用
图神经网络是什么 图神经网络(Graph Neural Network,GNN)是一种专门用于处理图结构数据的神经网络,它能对图中的节点、边和整个图进行学习和推理,在社交网络分析、生物信息学、推荐系统等领域应用广泛。以下是其原理及示例说明: 图神经网络原理 节点表示学习:为图中每…...
如何将DeepSeek配置到离线电脑(内网)中?— 附Ollama夸克下载链接
1、在外网和内网电脑中分别安装Ollama 如下载速度较慢,安装包附在本文最后。 下载完成后傻瓜一键安装即可。 2、下载deepseek 在外网电脑中启动命令行输入下载命令。以下载8B为例,其他版本同。 ollama run deepseek-r1:8b 3、资源转移 在外网电脑…...
拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动
拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情: 1TB的硬盘,分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程:对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...
vue项目 Axios创建拦截器
Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax(Asynchronous JavaScript and XML) 不是一种技术,而是一个编程技术概念,核心是通过 XMLHttpReques…...
web前端第三次作业
题目 本期作业 WEB第三次作业 请使用JS实一个网页中登录窗口的显示/隐藏,页面中拖动移动,并且添加了边界判断的网页效 代码图片 效果展示 代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8&qu…...