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

学会用bash在linux写脚本 (二)

接着上一章继续

  • 数值的对比
  • 判断语句
  • 循环语句
22.5 比较、对比、判断
在写脚本时,有时需要做一些比较,例如,两个数字谁大谁小,两个字符串是否相同等。
做对比的表达式有[]、[[]]、test,其中[]和 test这两种表达式的作用是相同的。[[]]和[]的不同
在于,[[]]能识别通配符和正则表达式中的元字符,[]却不能。
需要注意的是,在比较时,中括号和后续提及的比较符两边都要留有空格。
22.5.1数字的比较
数字的比较,主要是比较两个数字谁大谁小,或者是否相同。能用到的比较符有以下几
种。
(1)-eq:相等。
(2)-ne:不相等。
(3)-gt:大于。
(4)-ge:大于等于。
(5)-lt:小于。
(6)-le:小于等于。
做完比较之后,通过返回值来判断比较是否成立。
练习1:判断1等于2,命令如下。
[root@pp yy]# [ 1 -eq 2 ]
[root@pp yy]# echo $?
1
[root@pp yy]# 
1是不能等于2的,所以判断不成立,返回值为非零。注意中括号和比较符两边的空格。
练习2:判断1不等于2,命令如下。
[root@pp yy]# [ 1 -ne 2 ]
[root@pp yy]# echo $?
0
[root@pp yy]# 
1不等于2,所以判断成立,返回值为0
22.5.2 字待串的比较
字符串的比较,一般是比较两个字符串是否相同,用得较多的比较符有以下两种。
(1)==:相同。
(2)!=:不相同。
做完比较之后,通过返回值来判断比较是否成立。
练习1:定义一个变量aa=tom,然后做判断,命令如下。
[root@pp yy]# aa=tom
[root@pp yy]# [ $aa == tom ]
[root@pp yy]# echo $?
0
[root@pp yy]# 
变量aa的值和 tom完全相同,所以判断成立,返回值为0。
练习2:在判断中匹配通配符,命令如下。
[root@pp yy]# aa=tom
[root@pp yy]# [ $aa == to? ]
[root@pp yy]# echo $?
1
[root@pp yy]# 
这里定义aa=tom,按照前面讲过的通配符,to?匹配的应该是前两个字符为to,第三个
可以是任意字符,所以 tom应该会被to?匹配到,为什么返回值为非零呢?
原因在于在这一对中括号[]中是不能识别通配符的,aa的值是t、o、m三个字符,而等号
后面是t、o、?这三个字符,并没有把问号当成通配符,所以判断不成立。
如果想识别通配符,那么就要用双中括号[[]],看下面的判断。
[root@pp yy]# aa=tom
[root@pp yy]# [[[ $aa == to? ]]
[root@pp yy]# echo $?
0
[root@pp yy]# 
在[[]]中能识别通配符“?”,所以这里判断成立,返回值为0。
注意
(1)==后面跟的是通配符,如果想跟正则表达式,比较符就不能使用==了,要换成=~。
(2)一定要注意中括号和比较符两边的空格。
22.5.3 属性的判断
属性的判断,用于判断一个文件是否具备某个属性,常见的属性包括以下7种。
(1)-r:具备读权限。
(2)-w:具备写权限。
(3)-x:具备可执行权限。
注意
以上三个属性,不管是出现在u、g还是o上,只要有就算判断成立。
()-d:一个目录。
()-l:一个软链接。
()-f:一个普通文件,且要存在。
()-e:不管什么类型的文件,只要存在就算判断成立。
练习1:判断/etc/hosts具备r权限,命令如下。
[root@pp yy]# ls -l /etc/hosts 
-rw-r--r--. 1 root root 158 9月  10 2018 /etc/hosts
[root@pp yy]# [ -r /etc/hosts ]
[root@pp yy]# echo $?
0
[root@pp yy]# 
通过第一条命令可以看到/etc/hosts是具备r权限的,判断/etc/hosts具备r权限,自然成
立,所以返回值为0。
练习2:判断/etc/hosts具备x权限,命令如下。
[root@pp yy]# [ -x /etc/hosts ]
[root@pp yy]# echo $?
1
[root@pp yy]# 
22.5.4 使用连接符
前面讲的判断只是单个判断,如果要同时做多个判断,那么就需要使用连接符了。能用的
连接符包括“&&”和“||”。
先看一下使用&&作为连接符,用法如下。
1 判断1 && 判断2
只有两个判断都为真(返回值为0),整体才为真,只要有一个为假,整体就为假。判断1
如果为假,判断2还有必要执行吗?没有,因为整体已经确定为假了。判断1为真,整体是真
是假在于判断2,所以判断2肯定是要执行的。
[root@pp yy]# [ 1 -le 2 ] && [ 2 -ge 3 ]
[root@pp yy]# echo $?
1
[root@pp yy]# 
下面看使用||作为连接符,用法如下。
两个判断只要有一个为真(返回值为0),整体就为真,只有全都为假,整体才为假。
判断1为真,整体已经确定为真,所以判断2没有必要执行。
判断1为假,整体是真是假在于判断2,所以判断2肯定是要执行的。
[root@pp yy]# [ 1 -le 2 ] || [ 2 -ge 3 ]
[root@pp yy]# echo $?
0
[root@pp yy]# 
这里有两个判断,第一个判断是1小于等于2,这个判断成立,整体已经确定为真,所以
整个判断为真,返回值为0。
22.6 if判断语句
在脚本中执行某条命令需要满足一定的条件,如果不满足就不能执行。此时我们就要用到
判断语句了。
先看if判断,if判断的语法如下。
1 if 条件1 ; then
2 命令1
3 elif 条件2 ; then
4 命令2
5 else 命令3
6 fi
先判断if后面的判断是不是成立。
如果成立,则执行命令1,然后跳到f后面,执行6后面的命令。
如果不成立,则不执行命令1,然后判断elif后面的条件2是不是成立。
如果成立,则执行命令2,然后跳到f后面,执行f后面的命令。
如果不成立,则不执行命令2,进行下一轮的elif 判断,以此类推。
如果所有if和elif都不成立,则执行clse中的命令3。
练习1:写一个脚本/opt/sc1.sh,要求只有root用户才能执行此脚本,其他用户不能执
行,命令如下。
[root@pp opt]# cat sc1.sh 
#/bin/bash
if [ $UID ‐ne 0 ]; then
echo "只有root才能执行此脚本"
exit 1
fi
echo "hello root"
[root@pp opt]# 
[root@pp opt]# chmod +x /opt/sc1.sh 
脚本分析如下。
root的uid是0,其他用户的uid不为0。第一个判断,如果uid不等于0,则打印警告信
息“只有root才能执行此脚本”,然后exit退出脚本。
如果这里不加 exit,判断之后仍然会继续执行echo "hello root"命令,这样判断就失去
了意义。只有加了exit之后,如果不是root,则到此结束,不要继续往下执行了。
如果是blab 执行此脚本,则判断成立,打印完警告信息之后,通过exit退出脚本。
如果是 root执行此脚本,则判断不成立,直接执行f后面的命令。
使用root用户执行此脚本的结果如下。
[root@pp opt]# ./sc1.sh 
hello root
[root@pp opt]# 
使用iu用户执行此脚本的结果如下。
[iu@pp opt]$ ./sc1.sh 
只有root才能执行此脚本
[iu@pp opt]$ 
22.7 for循环语句
      有时我们需要做多次重复的操作,例如,创建100个用户,创建一个用户需要两条命
令:useradd和 passwd。那么,创建100个用户就要重复执行100次,总共执行200条命令,
此时我们就可以利用for循环简化操作,让系统自动帮我们重复运行即可。
        for循环的语法如下。
1 for 变量 in 值‐1 值‐2 值‐3 值‐4 ; do
2 命令 $变量
3 done
这里首先把值-1赋值给变量,执行do和done之间的命令,所有命令执行完成之后,再把
值-2赋值给变量,执行do和done之间的命令,执行完所有命令之后,再把值-3赋值给变
量,以此类推,直到把所有的值都赋值给变量。
看一个简单的例子,如下所示。
[iu@pp opt]$ for i in 1 2 3 4 ; do
> let i=$i+10
> echo $i
> done
11
12
13
14
[iu@pp opt]$ 
这里for后面定义了一个变量i,在in后面指定了4个值,分别是1、2、3、4。在do和done
之间定义了两个命令,第一个是在变量i的原有值的基础上加上10,然后打印i的值。
先把1赋值给i,此时i的值为1,执行do和 done之间的命令。i加上10之后,i的值变为了
11,然后打印i,得到11,第一次循环结束。
然后把2赋值给i,此时i的值为2,执行do和done之间的命令。i加上10之后,i的值变为了
12,然后打印i,得到12,第二次循环结束。
22.8 while 循环语句
while也可以循环,while循环的语法如下。
1 while 判断 ; do
2 命令1
3 命令2
4 done
如果while后面的判断成立,则执行do和 done之间的命令,在最后一个命令执行完成之
后,会回头再次判断一下while后面的判断是不是成立。如果不成立,则跳出循环执行done后
面的命令;如果成立,则继续执行do和 done之间的命令,就这样循环下去。
先看一个简单的例子,写一个脚本/opt/sc3.sh,命令如下。
[root@pp opt]# cat sc3.sh 
#!/bin/bash
declare ‐i n=1
while [ $n -le 4 ] ; do
echo $n
let n=$n+1
done
[root@pp opt]# 
[root@pp opt]# chmod +x /opt/sc3.sh 
脚本分析如下。
这里先通过declare -i n=1定义了一个整数类型的变量n,初始值为1。然后进入 while进
行循环,先判断$n的值是不是小于等于4,如果成立,则执行do和 done之间的命令。
一开始$n的值为1,[ $n -le 4 ]这个判断成立,则进人 do和done之间执行命令。首先打
印Sn的值,然后在此基础上给n 加上1,所以n的值变为了2,这样do和done之间的命令就 执行完成了。然后再次到while后面进行判断,此时$n的值为2,依然满足小于等于4,再次
执行do 和 done之间的命令。
如此反复,当$n的值最终能增加到4时打印,然后加1,此时n的值变为了5。当Sn的值变
为5之后,while后面的判断就不再成立了,此时会跳出 while循环。
用while也可以用于循环一个文件的内容,用法如下。
1 while read aa ; do
2 命令
3 done < file
这里read后面的变量aa是可以随意指定的,整体的意思是首先读取file的第一行内容赋值
给aa,执行do和 done之间的命令。然后读取file的第二行内容赋值给aa,执行do和done
之间的命令,直到读取到file的最后一行。
有时while需要一直循环下去(死循环),语法如下。
1 while true ; do
2 命令
3 done

1 while ((1)) ; do
2 命令
3 done

1 while : ; do
2 命令
3 done
下面写一个脚本,来实时判断vsftpd是否启动,如果没有启动,则将vsftpd启动,命令如
下。
[root@pp opt]# cat sc4.sh 
#!/bin/bash
while : ; do
systemctl is‐active vsftpd &> /dev/null
if [ $? -ne 0 ]; then
systemctl start vsftpd
fi
sleep 1
done
[root@pp opt]# 
[root@pp opt]# chmod +x sc4.sh 
这里写了一个 while循环,可以一直循环下去,循环中先判断vsftpd是否启动,如果启动
了则返回值为0,如果没有启动则返回值为非零。
下面开始根据返回值来进行判断,如果$?不等于0,说明vsftpd没有启动,则启动vsftpd
服务。sleep 1的意思是暂停1秒,这样就实现了每隔1秒来判断一次vsfilpd是否启动。
下面开始测试这个脚本,先把脚本放在后台运行,命令如下。
[root@pp opt]# ./sc4.sh &
[1] 3788
测试当前vsftpd 的状态,命令如下。
[root@pp opt]# systemctl is‐active vsftpd
active
[root@pp opt]#
关闭vsftpd服务之后,再次检测vsftpd 的状态,命令如下。
[root@pp opt]# systemctl stop vsftpd
[root@pp opt]# systemctl is‐active vsftpd
active
[root@pp opt]#
可以看到,vsftpd 仍然是启动的,说明我们的脚本生效了。  

相关文章:

学会用bash在linux写脚本 (二)

接着上一章继续 数值的对比 判断语句 循环语句 22.5 比较、对比、判断 在写脚本时&#xff0c;有时需要做一些比较&#xff0c;例如&#xff0c;两个数字谁大谁小&#xff0c;两个字符串是否相同等。 做对比的表达式有[]、[[]]、test&#xff0c;其中[]和 test这两种表达式的…...

QML中Dialog获取close与open状态

1.新建MyDialog.qml import QtQuick 2.15import QtQuick.Dialogs 1.2Dialog {id: rootvisible: falsetitle: qsTr("弹出对话框")width: 250height: 200} 2.main.qml中调用MyDialog import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15…...

用C语言实现队列的顺序结构

用C语言实现队列的初始化、队列的判空操作、入队操作、出队运算、取队头元素运算、顺序打印队列。 #include<stdio.h> #define QueueSize 100 typedef char ElemType; typedef struct//队列结构体 {ElemType data[QueueSize];//保存队中元素int front, rear;//队头和队尾…...

Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息

需求 子页面进入后&#xff0c;能在主页面显示子页的相关信息&#xff0c;比如说主页面的菜单激活的是哪个子页面的菜单项 如上图&#xff0c;当刷新浏览器页面时&#xff0c;让菜单的激活项仍保持在【最近浏览】。 实现方式&#xff1a; 在子页面的create事件中增加&#xff…...

AR技术详解

1.AR技术平台 1.手机端 2.AR眼镜端 3.WebAR。 2.AR基础技术应用 1.平面检测技术 2.模型识别技术 3.图片识别技术 4.AR云&#xff08;云锚点&#xff09;技术 5.人脸检测技术 3.主要AR技术SDK 1.苹果ARKit&#xff0c;谷歌ARCore。 优点&#xff1a;推荐使用Unity开发&#xf…...

h5或uniapp或微信小程序,实现左上角返回到指定页面,侧滑左滑返回指定页面,安卓物理返回键返沪指定页面解决思路的思考

h5或uniapp或微信小程序&#xff0c;实现左上角返回到指定页面&#xff0c;侧滑左滑返回指定页面&#xff0c;安卓物理返回键返沪指定页面 uniapp开发app,(非微信小程序)uniapp写的微信小程序 uniapp开发app,(非微信小程序) 自定义的左上角返回按钮 <i class"iconfon…...

轻量封装WebGPU渲染系统示例<43>- PBR材质与阴影实(源码)

原理简介: 1. 基于rendering pass graph实现。 2. WGSL Shader 基于文件系统和宏机制动态组装。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/PBRShadowTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&a…...

macOS Big Sur/Mac电脑安装vscode显示您没有权限来打开应用程序‘Visual Studio Code‘ 请联系您的电脑或网络管理员问题修复

错误方法 首先我以为我的权限不足。&#xff0c;需要去用户群组里设置。结果根本不是这个的问题。 1.在系统偏好设置->用户与群组检查了一下我的用户是不是管理员 结果发现是管理员 2.根据苹果提示&#xff0c;右键我的文件夹->显示简介->最下面的共享与权限 解锁&…...

jsp 如何批量改随机人名

对比图 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <%page import"java.sql.ResultSet"%> <%page import"java.sql.PreparedStatement"%> <%page import&qu…...

android项目实战之编辑器集成

引言 项目需要用到编辑器&#xff0c;采用RichEditor&#xff0c;如下效果 实现 1. 引入库2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…...

JAVA程序如何打jar和war问题解决

背景: 近期研究一个代码审计工具 需要jar包 jar太多了 可以将jar 打成war包 首先看下程序目录结构 pom.xml文件内容 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"ht…...

Microsoft 365 Copilot正式上线,如何稳定访问体验?

如果将微软对人工智能的投资看成一场豪赌&#xff0c;Microsoft Copilot无疑是现阶段最受瞩目的赌注。2023年9月正式发布的Microsoft Copilot是一种基于大型语言模型&#xff08;LLM&#xff09;和微软图形&#xff08;Microsoft Graph&#xff09;的数据和人工智能&#xff08…...

【安卓】安卓xTS之Media模块 学习笔记(3) VTS测试

1. 背景 接下来进行正式的VTS测试。本章节还是以Media模块相关进行介绍。 VTS主要测的是内核和HAL层&#xff0c;media的hal层是以openMax&#xff08;即将废弃&#xff0c;今日2023.12&#xff09; 和 Codec2 (后续主流) 接口为主。 这里我们只看Codec2的要求&#xff0c;CDD…...

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…...

Spring Boot整合 Spring Security

Spring Boot整合 1、RBAC 权限模型 RBAC模型&#xff08;Role-Based Access Control&#xff1a;基于角色的访问控制&#xff09; 在RBAC模型里面&#xff0c;有3个基础组成部分&#xff0c;分别是&#xff1a;用户、角色和权限&#xff0c;它们之间的关系如下图所示 SELECT…...

浅谈低代码

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美以下方向仅供参考。味的膳食还是垃圾…...

Innodb-ruby深入探索Innodb存储结构

达在之前已经分享过Innodb数据存储结构知识&#xff0c;但是都是基于理论原理知识理解&#xff0c;今天利用Innodb文件解析工具ruby进行探索Innodb真实的存储结构。 索引原理过程&#xff1a;【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引_innodb的聚集索引的数据插入_Surviv…...

Echarts的使用 笔记

1.数据可视化前言 1.1.什么是数据可视化 数据可视化&#xff1a; 就是把数据以更加直观的方式进行呈现. 1.2.数据可视化的好处 清晰有效地传达与沟通信息更容易洞察隐藏在数据中的信息 2.ECharts的基本使用 2.1.ECharts官网 ECharts是百度公司开源的一个使用 JavaScript 实…...

信息系统工程的基本概念

系统是由相互作用和相互依赖的若干部分&#xff0c;按一定规律结合成的、具有特定功能的有机整体。系统有下述特性&#xff1a; &#xff08;1&#xff09;集合性。系统是由许多元素有机地组成的整体。每个元素服从整体&#xff0c;追求全局最优。 &#xff08;2&#xff09;相…...

SAP UI5 walkthrough step10 Descriptor for Applications

在这一步&#xff0c;我们将会把所有的应用相关的描述性的文件独立放到manifest.json 新建一个manifest.json文件 webapp/manifest.json (New) {"_version": "1.58.0","sap.app": {"id": "ui5.walkthrough","i18n&q…...

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序&#xff0c;乔拓云模板平台助力商家抢占先机&#xff01;该平台涵盖全行业小程序模板&#xff0c;一键复制即可上线。 想要快速创建高效实用的小程序&#xff0c;乔拓云小程序模板开发平台为您提供了解决方案&#xff01;我们为您提供一系列精心设计的小程序模板…...

Vue2学习(组件的使用)

Vue中使用组件的三个步骤&#xff1a; 一、定义组件(或者叫创建组件) 使用Vue.extend(options)创建&#xff0c;其中options和new Vue(options)时传入的那个options几乎一样&#xff0c;但也有点区别&#xff1b; 区别如下&#xff1a; 1.el不要写&#xff0c;为什么&#x…...

基于Spring、SpringMVC、MyBatis开发的游乐场管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis开发的游…...

数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景

1.5 数据清洗、特征工程和数据可视化、挖掘建模的应用场景 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.5节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应…...

Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介 core&#xff1a;核心模块&#xff0c;非图形的接口类&#xff0c;为其它模块提供支持 gui&#xff1a;图形用户接口&#xff0c;qt5之前 widgets&#xff1a;图形界面相关的类模块 qt5之后的 database&#xff1a;数据库模块 network&#xff1a;网络模块 QT 特性 开…...

机器学习与低代码开发:创新驱动的双剑合璧

引言 随着科技的日新月异&#xff0c;机器学习和低代码开发已经成为引领技术行业变革的两大重要趋势。机器学习通过模拟人类的学习方式&#xff0c;让计算机具备了自我学习和预测的能力&#xff0c;打破了传统计算机程序的局限性。而低代码开发则以简化软件开发过程为目标&…...

企业博客SEO:优化SOP,助您提升搜索引擎可见性

企业博客是互联网时代企业与用户沟通的重要渠道之一&#xff0c;引流成本也比较低。然而&#xff0c;依然有企业会处在3种状态&#xff1a; 1. 有博客&#xff0c;但内容更新不积极或搁置 2. 有博客&#xff0c;但内容散乱 3. 根本就没有博客 如果是这几种状态&#xff0c;…...

[HITCON 2017]SSRFme perl语言的 GET open file 造成rce

这里记录学习一下 perl的open缺陷 这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行 然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行 然后这里如果file可控那么就继续可以实现命令执行 这里就…...

华为配置Smart Link主备备份示例

定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#xff0c;它通过监控设备的上行接口…...

harmonyOS开发技巧(一)——封装hilog日志

1. 创建sharedLibrary共享hsp包commonLib&#xff1a;功能工具类。 import hilog from ohos.hilog;class Logger {private DOMAIN: number 0x0000;private APP_NAME: string Myapplication;public info(tag: string, ...args: string[]) {hilog.info(this.DOMAIN, [${this.A…...

npm、yarn常用命令

1、设置npm路径 #全局安装路径 npm config set prefix "D:\Program Files\nodejs\node_global" #缓存路径 npm config set cache "D:\Program Files\nodejs\node_cache"2、设置镜像 #1,淘宝镜像源 npm config set registry https://registry.npmmirror.…...

编译和使用WPS-ghrsst-to-intermediate生成SST

一、下载 V1.0 https://github.com/bbrashers/WPS-ghrsst-to-intermediate/tree/masterV1.5&#xff08;使用过程报错&#xff0c;原因不详&#xff0c;能正常使用的麻烦告知一下方法&#xff09; https://github.com/dmitryale/WPS-ghrsst-to-intermediate二、修改makefile…...

通过静态HTTP实现负载均衡

在当今的互联网环境中&#xff0c;随着用户数量的不断增加和业务需求的不断扩大&#xff0c;单台服务器往往无法承受所有的访问压力。为了确保网站的可用性和性能&#xff0c;负载均衡成为了一种常见的解决方案。本文将探讨如何通过静态HTTP实现负载均衡&#xff0c;以提升网站…...

Python开发运维:Python常见异常类型

目录 一、理论 1.异常 一、理论 1.异常 &#xff08;1&#xff09;概念 异常是程序因为某种原因无法正常工作了&#xff0c;比如缩进错误、缺少软件包、环境 错误、连接超时等都会引发异常。 一个健壮的程序应该把所能预知的异常都应做相应的处理&#xff0c;保障程序长期运…...

HarmonyOS学习 第1节 DevEco Studio配置

俗话说的好&#xff0c;工欲善其事,必先利其器。我们先下载官方的开发工具DevEco Studio. 下载完成后&#xff0c;进行安装。 双击DevEco Studio&#xff0c;点击Next按照指引完成安装 重新启动DevEco&#xff0c;点击 Agree 进入环境配置&#xff0c;安装Node.js和ohpm 点击Ne…...

WordPress 注册/重置密码/更改密码钩子

wordpress在提供邮件提醒的地方都留了hook&#xff0c;方便让开发者自定义。最新在添加第三方登录时遇到虚拟邮箱发信问题&#xff0c;为了防止给指定邮件地址后缀发信&#xff0c;可以利用如下wordpress提供的钩子来实现。 //https://www.wwttl.com/101.html //禁止用户注册时…...

LabVIEW开发远程结构健康监测系统

LabVIEW开发远程结构健康监测系统 工程师依赖于振动监测来评估建筑物、桥梁和其他大型结构的完整性。传统的振动监测工具在数据收集上存在限制&#xff0c;无法长时间收集高保真波形。随着内存存储、处理器速度和宽带无线通信技术的进步&#xff0c;出现了对能够长时间收集并实…...

多段图问题-动态规划解法

一、多段图问题 问题描述&#xff1a;设图G(V, E)是一个带权有向图&#xff0c;如果把顶点集合V划分成k个互不相交的子集Vi (2≤k≤n, 1≤i≤k)&#xff0c;使得对于E中的任何一条边(u, v)&#xff0c;必有u∈Vi&#xff0c;v∈Vim (1≤i≤k, 1&#xff1c;im≤k)&#xff0c;…...

Android实验:绑定service实验

目录 实验目的实验内容实验要求项目结构代码实现代码解释结果展示 实验目的 充分理解Service的作用&#xff0c;与Activity之间的区别&#xff0c;掌握Service的生命周期以及对应函数&#xff0c;了解Service的主线程性质&#xff1b;掌握主线程的界面刷新的设计原则&#xff…...

K8S集群优化的可执行优化

目录 前期环境优化 1.永久关闭交换分区 2.#加载 ip_vs 模块 3.调整内核参数 4.#使用Systemd管理的Cgroup来进行资源控制与管理 5.开机自启kubelet 6.内核参数优化方案 7.etcd优化 默认etcd空间配额大小为 2G&#xff0c;超过 2G 将不再写入数据。通过给etcd配置 --quo…...

Remix IDE 快速开始Starknet

文章目录 一、Remix 项目二、基于Web的开发环境Remix 在线 IDE三、Starknet Remix 插件如何使用使用 Remix【重要】通过 Starknet by Example 学习一、Remix 项目 Remix 项目网站 在以太坊合约开发领域,Remix 项目享有很高的声誉,为各个级别的开发人员提供功能丰富的工具集…...

SQL中limit与分页的结合

select * from test limit 2,10; 这条语句的含义&#xff1a;从第3条语句开始查询&#xff0c;共显示10条语句。 select * from test limit a,b; a0,第一条记录。 a1,第二条记录。 a2,第三条记录。 这条语句的含义&#xff1a;从第a1条语句开始查询&#xff0c;共显示b条…...

KALI LINUX信息收集

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

联想电脑重装系统Win10步骤和详细教程

联想电脑拥有强大的性能&#xff0c;很多用户办公都喜欢用联想电脑。有使用联想电脑的用户反映系统出现问题了&#xff0c;想重新安装一个正常的系统&#xff0c;但是不知道重新系统的具体步骤。接下来小编详细介绍给联想电脑重新安装Win10系统系统的方法步骤。 推荐下载 系统之…...

PET(Point-Query Quadtree for Crowd Counting, Localization, and More)

PET&#xff08;Point-Query Quadtree for Crowd Counting, Localization, and More&#xff09; 介绍实验记录训练阶段推断阶段 介绍 论文&#xff1a;Point-Query Quadtree for Crowd Counting, Localization, and More 实验记录 训练阶段 TODO 推断阶段 下面是以一张输…...

NgRx中dynamic reducer的原理和用法?

在 Angular 应用中&#xff0c;使用 NgRx 状态管理库时&#xff0c;动态 reducer 的概念通常是指在运行时动态添加或移除 reducer。这样的需求可能源于一些特殊的场景&#xff0c;比如按需加载模块时&#xff0c;你可能需要添加相应的 reducer。 以下是动态 reducer 的一般原理…...

麒麟V10服务器安装Apache+PHP

安装PHP yum install php yum install php-curl php-gd php-json php-mbstring php-exif php-mysqlnd php-pgsql php-pdo php-xml 配置文件 /etc/php.ini 修改参数 date.timezone Asia/Shanghai max_execution_time 60 memory_limit 1280M post_max_size 200M file_upload…...

DOS 批处理 (一)

DOS 批处理 1. 批处理是什么&#xff1f;2. DOS和MS-DOS3. 各种操作系统shell的区别Shell 介绍图形用户界面&#xff08;GUI&#xff09;shell命令行界面&#xff08;CLI&#xff09;的 shell命令区别 1. 批处理是什么&#xff1f; 批处理(Batch)&#xff0c;也称为批处理脚本…...

P1047 [NOIP2005 普及组] 校门外的树题解

题目 某校大门外长度为 l 的马路上有一排树&#xff0c;每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴&#xff0c;马路的一端在数轴 00 的位置&#xff0c;另一端在l 的位置&#xff1b;数轴上的每个整数点&#xff0c;即0,1,2,…,l&#xff0c;都种有一棵树…...

pip的常用命令

安装、卸载、更新包&#xff1a;pip install [package-name]&#xff0c;pip uninstall [package-name]&#xff0c;pip install --upgrade [package-name]。升级pip&#xff1a;pip install --upgrade pip。查看已安装的包&#xff1a;pip list&#xff0c;pip list --outdate…...