day029-Shell自動化編程-計算與while循環

文章目錄

  • 1. read 交互式初始化變量
    • 1.1 案例-安裝不同的軟件
    • 1.2 案例-比較大小
  • 2. 計算
    • 2.1 bc
    • 2.2 awk
    • 2.3 expr
    • 2.4 let
    • 2.5 案例-計算內存的空閑率
    • 2.6 案例-檢查域名過期時間和https證書過期時間
  • 3. 循環
    • 3.1 循環控制語句
    • 3.2 for循環-c語言格式
    • 3.3 while循環
      • 3.3.1 案例-猜數字
      • 3.3.2 讀取文件
      • 3.3.3 案例-讀取文件,批量ping和wget
  • 4. 踩坑記錄
    • 1. -bash: 條件表達式中有語法錯誤
  • 5. 思維導圖

1. read 交互式初始化變量

  • read是從標準輸入獲取數據,一般用來在腳本中交互式為變量賦值
  • -p “信息”:打印提示信息
  • -t:設置輸入時間
  • -s:靜默模式,不顯示輸入的數據,類似于輸入密碼

1.1 案例-安裝不同的軟件

[root@oldboy99-Kylin /server/scripts]# cat read_install_pkg.sh
#!/bin/bash
##############################################################
# File Name: read_install_pkg.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:
##############################################################export LANG=en_US.UTF-8
cat <<EOF
請選擇:
1.安裝nginx
2.安裝php
3.安裝mysql
4.安裝DeepSeek
5.安裝tomcat
6.安裝所有
7.退出
EOF
# read
read -p "請輸入您的選擇:" choose# vars# command
case $choose in1)echo install nginx ;;2)echo install php ;;3)echo install mysql ;;4)echo install DeepSeek ;;5)echo install tomcat ;;6)echo install all ;;7) exit ;;*)echo "Usage:$0 數字"exit 1
esac[root@oldboy99-Kylin /server/scripts]# bash read_install_pkg.sh
請選擇:
1.安裝nginx
2.安裝php
3.安裝mysql
4.安裝DeepSeek
5.安裝tomcat
6.安裝所有
7.退出
請輸入您的選擇:100
Usage:read_install_pkg.sh 數字
[root@oldboy99-Kylin /server/scripts]# bash read_install_pkg.sh
請選擇:
1.安裝nginx
2.安裝php
3.安裝mysql
4.安裝DeepSeek
5.安裝tomcat
6.安裝所有
7.退出
請輸入您的選擇:1
install nginx
[root@oldboy99-Kylin /server/scripts]# bash read_install_pkg.sh
請選擇:
1.安裝nginx
2.安裝php
3.安裝mysql
4.安裝DeepSeek
5.安裝tomcat
6.安裝所有
7.退出
請輸入您的選擇:6
install all
[root@oldboy99-Kylin /server/scripts]# bash read_install_pkg.sh
請選擇:
1.安裝nginx
2.安裝php
3.安裝mysql
4.安裝DeepSeek
5.安裝tomcat
6.安裝所有
7.退出
請輸入您的選擇:7

1.2 案例-比較大小

[root@oldboy99-Kylin /server/scripts]# cat compare_2.sh
#!/bin/bash
##############################################################
# File Name: compare_2.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:比較大小,交互傳參
##############################################################
export LANG=en_US.UTF-8# vars
read -p "請輸入參數1、參數2:" num1 num2# command
# 判斷是否是數字
if [[ ! "$num1" =~ ^-?[0-9]+$ || ! "$num2" =~ ^-?[0-9]+$ ]];thenecho "$num1或者${num2}不是數字"exit 1
fi
#[[ "$num2" =~ ^-?[0-9]+$ ]] || {
#	echo "$num2 不是數字"
#	exit 1
#}
# 比較
if [ $num1 -gt $num2 ];thenecho "$num1 > $num2"
elif [ $num1 -eq $num2 ];thenecho "$num1 = $num2"
elseecho "$num2 > $num1"
fi[root@oldboy99-Kylin /server/scripts]# bash compare_2.sh 
請輸入參數1、參數2:-3 a         
-3或者a不是數字
[root@oldboy99-Kylin /server/scripts]# bash compare_2.sh 
請輸入參數1、參數2:-1 -3
-1 > -3
[root@oldboy99-Kylin /server/scripts]# bash compare_2.sh 
請輸入參數1、參數2:30 23
30 > 23
[root@oldboy99-Kylin /server/scripts]# bash compare_2.sh 
請輸入參數1、參數2:10 20  
20 > 10

2. 計算

計算方案說明應用場景
awk/bc整數、小數都可以計算計算小數、整數,或比較大小
expr計算整數檢查輸入的內容是否為數字(也可以用[[ =~ ]])
let/$(())/$[]計算整數配合循環使用

2.1 bc

bc:Basic calculation,基礎計算

  • -l(小寫的L):使用標準數學庫,顯示精準小數
  • 直接使用是交互式的計算器
  • 非交互式一般和echo配合使用
# 計算器
[root@oldboy99-Kylin /server/scripts]# bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
22-10
12
10^3
1000
……
[root@oldboy99-Kylin /server/scripts]# echo "10+20" |bc
30
[root@oldboy99-Kylin /server/scripts]# echo "10-20" |bc
-10
[root@oldboy99-Kylin /server/scripts]# echo "10*20" |bc
200
[root@oldboy99-Kylin /server/scripts]# echo "10/20" |bc
0
[root@oldboy99-Kylin /server/scripts]# echo "10/20" |bc -l
.50000000000000000000
[root@oldboy99-Kylin /server/scripts]# echo "10^2" |bc 
100
[root@oldboy99-Kylin /server/scripts]# echo "10%2" |bc 
0

2.2 awk

  • -v <變量名>=<值>: 設置 awk 內部的變量值。可以使用該選項將外部值傳遞給 awk 腳本中的變量。
  • BEGIN關鍵詞:BEGIN{},里面存放awk執行前的語句
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 'BEGIN{print n1}'
10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 'BEGIN{print n1}'
10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1+n2}'
30
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1-n2}'
-10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1*n2}'
200
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1/n2}'
0.5
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1^n2}'
100000000000000000000
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n1%n2}'
10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=10 -v n2=20 'BEGIN{print n2%n1}'
0
# 集合變量計算
[root@oldboy99-Kylin /server/scripts]# num1=10
[root@oldboy99-Kylin /server/scripts]# num2=20
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1}'
10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1+n2}'
30
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1-n2}'
-10
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1*n2}'
200
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1/n2}'
0.5
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n2^n1}'
10240000000000
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n2%n1}'
0
[root@oldboy99-Kylin /server/scripts]# awk -v n1=$num1 -v n2=$num2 'BEGIN{print n1%n2}'
10

2.3 expr

expr:evaluate expressions,計算表達式

  • 一般用來驗證變量是否是數字
  • 也能計算字符串長度
# 數字與算數字符之間要有空格
[root@oldboy99-Kylin /server/scripts]# expr 10 + 20
30
[root@oldboy99-Kylin /server/scripts]# expr 10 - 20
-10
[root@oldboy99-Kylin /server/scripts]# expr 10 * 20
expr: 語法錯誤:未預期的參數 “api.txt”
# 要用轉義字符
[root@oldboy99-Kylin /server/scripts]# expr 10 \* 20
200
# expr只能計算整數,結果也只能是整數
[root@oldboy99-Kylin /server/scripts]# expr 10 / 20
0
# 判斷變量是否是數字
[root@oldboy99-Kylin /server/scripts]# num=10
[root@oldboy99-Kylin /server/scripts]# expr $num + 1
11
[root@oldboy99-Kylin /server/scripts]# echo $?
0
[root@oldboy99-Kylin /server/scripts]# name=skx
[root@oldboy99-Kylin /server/scripts]# expr $name + 1
expr: 非整數參數
[root@oldboy99-Kylin /server/scripts]# echo $?
2
# 計算字符串長度
[root@oldboy99-Kylin /server/scripts]# expr length skx123oldboy
12
[root@oldboy99-Kylin /server/scripts]# expr length $name
3
# 變量擴展符也能顯示字符長度
[root@oldboy99-Kylin /server/scripts]# echo ${#name}
3

2.4 let

let 命令是 BASH 中用于計算的工具,用于執行一個或多個表達式,變量計算中不需要加上 $ 來表示變量。如果表達式中包含了空格或其他特殊字符,則必須引起來。

  • let的結果必須用變量來接收,并直接修改原變量內容
  • let的結果只能是整數
[root@oldboy99-Kylin /server/scripts]# echo $n
10
[root@oldboy99-Kylin /server/scripts]# let n=10+2
[root@oldboy99-Kylin /server/scripts]# echo $n
12
[root@oldboy99-Kylin /server/scripts]# let n=10-2
[root@oldboy99-Kylin /server/scripts]# echo $n
8
[root@oldboy99-Kylin /server/scripts]# let n=10*2
[root@oldboy99-Kylin /server/scripts]# echo $n
20
[root@oldboy99-Kylin /server/scripts]# let n=10/2
[root@oldboy99-Kylin /server/scripts]# echo $n
5
[root@oldboy99-Kylin /server/scripts]# let n=10^2
[root@oldboy99-Kylin /server/scripts]# echo $n
8
[root@oldboy99-Kylin /server/scripts]# let n=10%2
[root@oldboy99-Kylin /server/scripts]# echo $n
0
[root@oldboy99-Kylin /server/scripts]# let n=10/3
[root@oldboy99-Kylin /server/scripts]# echo $n
3
# 使用let自增或自減
[root@oldboy99-Kylin /server/scripts]# let n++
[root@oldboy99-Kylin /server/scripts]# echo $n
4
[root@oldboy99-Kylin /server/scripts]# let n--
[root@oldboy99-Kylin /server/scripts]# echo $n
3

2.5 案例-計算內存的空閑率

  • 注意單位
[root@oldboy99-Kylin /server/scripts]# free -k |awk 'NR==2{print $NF/$2*100"%"}'
55.9613%
[root@oldboy99-Kylin /server/scripts]# free -m |awk 'NR==2{print $NF/$2*100"%"}'
55.8017%

2.6 案例-檢查域名過期時間和https證書過期時間

  • 檢查域名過期時間:whois 二級域名,關鍵詞:Expiration Date
  • 檢查https證書過期時間:curl -v https://www.二級域名,關鍵詞:expire date
  • -v:顯示請求與響應的詳細信息
  • date
  • -d " ":讀取字符串時間
  • +%s:獲取時間戳
[root@oldboy99-Kylin /server/scripts]# cat check_domain_https_expire.sh
#!/bin/bash
##############################################################
# File Name: check_domain_https_expire.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:檢查域名和https證書過期時間
##############################################################
export LANG=en_US.UTF-8
# vars
time_stamp=`date +%s`# command
while true
do
# 用戶需要輸入一個二級域名read -p "請輸入一個二級域名:" domain
# 檢查用戶輸入的域名[[ $domain =~ ^[^\ ]+\.[a-z]+$ ]] || {echo "輸入的二級域名有誤,請重新輸入"continue}
# 檢查域名過期時間expire_domain=`date -d $(whois ${domain} |awk -F ': ' '/Expiration Date/{print $2}') +%s`
# 檢查https證書過期時間expire_https=`date -d "$(curl -v https://www.${domain} |& awk -F ': ' '/expire date/{print $2}')" +%s`
# 計算相差時間days_domain=`echo "(${expire_domain}-${time_stamp})/60/60/24" |bc`days_https=`echo "(${expire_https}-${time_stamp})/60/60/24" |bc`
cat <<EOF${domain}:域名還有${days_domain}天過期"https證書還有${days_https}天過期"
EOFexit 
done
[root@oldboy99-Kylin /server/scripts]# bash check_domain_https_expire.sh
請輸入一個二級域名:baidu 123.com  
輸入的二級域名有誤,請重新輸入
請輸入一個二級域名:baidu.combaidu.com:域名還有1222天過期"https證書還有62天過期"

3. 循環

3.1 循環控制語句

循環控制說明
exit退出腳本
continue跳過本次循環,進入下一次循環
break打斷,結束循環
return函數返回值

3.2 for循環-c語言格式

[root@oldboy99-Kylin /server/scripts]# cat test.sh
#!/bin/bash
##############################################################
# File Name: test.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:
##############################################################
for(( i=1;i<=10;i++))
doecho $i
done
[root@oldboy99-Kylin /server/scripts]# bash test.sh
1
2
3
4
5
6
7
8
9
10

3.3 while循環

3.3.1 案例-猜數字

  • 生成隨機數:$RANDOM,隨機數范圍:0-32767
  • 32767是16位二進制無符號整數,數值位全為1

在這里插入圖片描述

  • 生成1-100之間的隨機數:$RANDOM%100+1
[root@aliyun-ubuntu /server/scripts]# cat GuessNumber.sh
#!/bin/bash
##############################################################
# File Name: GuessNumber.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:Guess the numbers
##############################################################
export LANG=en_US.UTF-8# vars
# random num
num=$(($RANDOM%100+1))# command
while true
doread -p "Please enter the number you guessed (1-100):" user# check user para[[ $user =~ ^[0-9]+$ ]] || {echo "Please enter a number (1-100):"continue}if [ $user -eq $num ];thenecho "Congratulations, you guessed right"exitelif [ $user -gt $num ];thenecho "Guess too big"elseecho "Guess too small"fi
done[root@aliyun-ubuntu /server/scripts]# bash GuessNumber.sh
Please enter the number you guessed (1-100):50
Guess too small
Please enter the number you guessed (1-100):60
Guess too small
Please enter the number you guessed (1-100):70
Guess too small
Please enter the number you guessed (1-100):80
Guess too big
Please enter the number you guessed (1-100):75
Guess too big
Please enter the number you guessed (1-100):74
Guess too big
Please enter the number you guessed (1-100):73
Guess too big
Please enter the number you guessed (1-100):72
Congratulations, you guessed right

3.3.2 讀取文件

  • while讀取文件時是按行讀取的
[root@aliyun-ubuntu /server/scripts]# cat read_file.sh 
#!/bin/bash
##############################################################
# File Name: read_file.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:
##############################################################
export LANG=en_US.UTF-8# vars
file=$1
# check para
[ $# -eq 0 ] && {echo "Usage:$0 filename"exit 1
}
while read line
doecho $line
done < $file
[root@aliyun-ubuntu /server/scripts]# bash read_file.sh /etc/passwd |head
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

3.3.3 案例-讀取文件,批量ping和wget

  • ping -W 數字:每次請求的超時時間,單位秒
  • wget:
  • -S/–spider:不下載任何文件
  • -T 數字:設置連接請求的超時時間,單位秒
  • -t 數字:設置重試次數
[root@oldboy99-Kylin /server/scripts]# cat check_ping_wget.sh 
#!/bin/bash
##############################################################
# File Name: check_ping_wget.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:讀取文件,批量ping和wget
##############################################################
export LANG=en_US.UTF-8# vars
file=$1# command
[ $# -eq 0 ] && {echo "$0 filename(has ip/domain ……)"exit 1
}
while read line
doping -c 2 -W 1 $line >/dev/null 2>&1[ $? -eq 0 ] && echo "$line 可以ping通" || echo "$line 不能ping通"wget -S -T 1 -t 1 $line >/dev/null 2>&1[ $? -eq 0 ] && echo "$line 可以訪問" || echo "$line 不能訪問"echo "-----------------------"
done < $1
[root@oldboy99-Kylin /server/scripts]# bash check_ping_wget.sh ./log/ip.txt 
10.0.0.200 可以ping通
10.0.0.200 不能訪問
-----------------------
baidu.com 可以ping通
baidu.com 可以訪問
-----------------------
jd.com 可以ping通
jd.com 可以訪問
-----------------------
csdn.net 可以ping通
csdn.net 可以訪問
-----------------------

4. 踩坑記錄

1. -bash: 條件表達式中有語法錯誤

在這里插入圖片描述

修改:

  • 空格:[:space:]

在這里插入圖片描述

  • 或者將空格轉義

在這里插入圖片描述

5. 思維導圖

【金山文檔 | WPS云文檔】 思維導圖 https://kdocs.cn/l/co3I7PtpTYQX

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83506.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為云Flexus+DeepSeek征文 | 基于華為云ModelArts Studio打造AingDesk AI聊天助手

華為云FlexusDeepSeek征文 | 基于華為云ModelArts Studio打造AingDesk AI聊天助手 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、安裝AingDesk應用AingDesk應用介紹下載地址安裝AingDesk工具 三、開通DeepSeek-R1-0528商用服務訪問…

深度解析Git錯誤:`fatal: detected dubious ownership in repository` 的根源與解決方案

如果你是在使用自己的移動硬盤&#xff08;U盤&#xff09;操作項目時遇到的這個問題直接執行git config --global --add safe.directory X:/path即可&#xff0c;只要你的移動硬盤&#xff08;U盤&#xff09;沒有病毒就不會有安全問題。 深度解析Git錯誤&#xff1a;fatal: d…

基于Spring Boot的校園社區平臺設計與實現

目錄 一.&#x1f981;前言二.&#x1f981;開源代碼與組件使用情況說明三.&#x1f981;核心功能1. ?算法設計2. ?Thymeleaf模板引擎3. ?MyBatis Plus框架4. ?部署項目 四.&#x1f981;演示效果1. 管理員模塊1.1 用戶管理1.2 瀏覽管理員首頁1.3 論壇管理1.4 校園咨詢管理…

Java 8 Map 新增方法詳解

Java 8 Map 新增方法詳解 1. getOrDefault 源碼&#xff1a; default V getOrDefault(Object key, V defaultValue) {V v;return (((v get(key)) ! null) || containsKey(key))? v: defaultValue;}作用&#xff1a;安全獲取值&#xff0c;若key不存在則返回默認值 示例&…

山東大學 2025 web數據管理期末復習總結

SDU-2025年-Web數據管理期末總結 考試題型 填空 &#xff1a;都來自于PPT中名詞解釋簡答題&#xff1a;需要背一些公式。 根據L老師上課提及的重點一共總結了87問題。 文章目錄 SDU-2025年-Web數據管理期末總結考試題型第1講 緒論此章不考 第2講 網絡爬蟲技術2.1 爬蟲是什么…

Spring框架的設計模式

Spring 框架深度集成了多種經典設計模式&#xff0c;這些模式支撐了其核心功能&#xff08;如IoC、AOP&#xff09;的實現&#xff0c;以下是關鍵模式及其應用場景的梳理&#xff1a; 1、工廠模式 工廠模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的設計模式…

git報錯fatal: 遠端意外掛斷了

git報錯fatal: 遠端意外掛斷了 報錯詳細內容 mr.mbogon tinymce % git add . mr.mbogon tinymce % git commit -m init [master c6cfc2a] init1 file changed, 2 insertions(), 1 deletion(-) mr.mengbogon tinymce % git push 枚舉對象中: 241, 完成…

Windows 下安裝 NVM

NVM 下載 NVM 在工作中&#xff0c;你可能遇到過某個項目需要高版本的 node 才能運行&#xff0c;而有的項目可能只支持低版本的 node&#xff0c;此時就可以借助于一些 Node 版本管理工具&#xff0c;比如 nvm&#xff08;Node Version Manager&#xff09;&#xff0c;幫助…

AI知識補全(十七):通用人工智能AGI是什么?

名人說:博觀而約取,厚積而薄發。——蘇軾《稼說送張琥》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 上一篇:AI知識補全(十六):A2A - 谷歌開源的agent通信協議是什么? 目錄 一、什么是AGI?概念解析1. 什么是AGI2. AGI與現有AI的本質區別二 、AGI的核…

Spring Cloud Gateway 介紹

什么是Spring Cloud Gateway&#xff1f; Spring Cloud Gateway 是 Spring Cloud 社區官方推出的一個基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.x 的下一代 API 網關&#xff08;API Gateway&#xff09;解決方案。它旨在為微服務架構提供統一、簡潔、高效的…

slam--高斯分布

教程 博主解釋 高斯分布 高斯分布&#xff08;Gaussian Distribution&#xff09;&#xff0c;又稱正態分布&#xff08;Normal Distribution&#xff09;&#xff0c;是描述連續型隨機變量分布規律的一種概率分布。 (1) 一維高斯分布 μ&#xff1a;均值/數學期望&#xff0…

機器視覺標定講解

B站 &#xff1a;道傳科技上位機 觀看教程 一、什么是相機標定 相機標定&#xff08;Camera Calibration&#xff09;是指通過實驗或算法手段確定相機的內部參數&#xff08;如焦距、主點坐標、畸變系數&#xff09;和外部參數&#xff08;如旋轉矩陣、平移向量&#xff0…

文件的秒傳、分片上傳以及斷點續傳 || Redis緩存減輕數據庫讀寫壓力

實現文件的秒傳、分片上傳以及斷點續傳的功能。使用 Redis 緩存上傳的文件分片信息減輕數據庫讀寫壓力&#xff0c;同時防止有人惡意攻擊服務器導致服務器磁盤爆滿無法提供服務。 &#x1f50d; 詳解&#xff1a; 1. 實現文件的秒傳、分片上傳以及斷點續傳功能 秒傳&#xff0…

安全大模型智驅網絡和數據安全效能躍遷

從2023年ChatGPT開始&#xff0c;網絡安全行業就一直嘗試和AI大模型來結合&#xff0c;解決網絡安全的痛點&#xff0c;例如告警多&#xff0c;專家少&#xff0c;新的APT攻擊層出不窮&#xff0c;已有的基于規則的防護手段失靈&#xff0c;如何使用大模型的泛化能力來提升對未…

Android S - 恢復部分應用安裝

使用展銳提供的代碼編譯出來的固件&#xff0c;不包含DeskClock等應用。 之前也遇到過這個情況&#xff0c;只是時間太久忘記了&#xff0c;在這里再次記錄&#xff01; frameworks/native/data/etc/android.app.remove.xml<?xml version"1.0" encoding"ut…

android 之 CALL

一、組件職責與定位 組件所在進程核心職責關鍵特性CallsManagerTelecom系統進程通話狀態機核心&#xff1a;管理所有Call對象的生命周期&#xff08;創建、狀態更新、銷毀&#xff09;。監聽Call狀態變化并通知所有觀察者&#xff08;如InCallController&#xff09;。通過mLi…

Swift 6 學習筆記(二)The Basics

這篇筆記也是同步 Swift 6 官方教程中的第二篇 《The Basics》&#xff0c;這篇博客中的大部分內容在第一篇中已經涉及&#xff0c;這篇可以被認為是基礎類型的的補充篇&#xff0c;多了很多說明信息。 官方教學文檔 《The Basics》&#xff1a; Swift 提供了許多基本數據類型…

【PHP】BC Math 函數參考表

BC Math 函數參考表: 函數名描述語法bcadd兩個任意精度數字的加法bcadd($num1, $num2, [scale])bcsub兩個任意精度數字的減法bcsub($num1, $num2, [scale])bcmul兩個任意精度數字乘法bcmul($num1, $num2, [scale])bcdiv兩個任意精度數字除法bcdiv($num1, $num2, [scale])bcmod…

C# TAP異步編程(Task/async/await)總結

C#中有個很好用的東西&#xff0c;TAP異步編程&#xff08;Task-based Asynchronous Pattern&#xff09;&#xff0c;是目前C#推薦的異步編程模型。它基于 System.Threading.Tasks.Task 和 async/await 關鍵字&#xff0c;旨在簡化異步代碼的編寫、調試和維護。TAP 是現代 .NE…

達夢數據庫(DM)用戶名大小寫處理規則

達夢數據庫(DM)用戶名大小寫處理規則 達夢數據庫對用戶名的處理與PostgreSQL和Oracle有所不同&#xff0c;以下是相關說明&#xff1a; 一、基本規則 默認情況下&#xff1a;達夢數據庫區分用戶名大小寫 創建的用戶名會保留原始大小寫格式連接時必須使用相同的大小寫形式 …