网络安全-Linux基础(bash脚本)
文章目录
- bash脚本编写基础
- 使用的脚本解析器/bin/bash(声明)
- bash脚本需要拥有执行权限
- bash脚本语法
- 输入与输出
- 函数的封装
- 条件判断语句
- 条件符号
- 循环语句
- 模块化编程
- Linux进程操作
- 查看寻找进程
- 终止进程
- 暂停与恢复进程
- 后台运行
- bash脚本编写
- 系统内存资源占用
bash脚本编写基础
使用的脚本解析器/bin/bash(声明)
#!/bin/bash
#!
,由 “#” 和 “!” 两个字符组成的特殊标记。当一个可执行文件以这两个字符开头时,内核会将该行的其余部分作为解释器的路径来读取,并使用该解释器来执行这个文件的后续内容。/bin/bash
是指 bash解释器的路径。- 所以
#!/bin/bash
整体的意思就是指定这个脚本文件应该由 Bash 解释器来执行。
bash脚本需要拥有执行权限
是否拥有执行的权限,表示脚本是否可以进行执行
- 使用
ls -liah
进行详细目录查看 - 权限修改可以使用
chmod 777 www.sh
用户、用户组、其他用户都给最高权限(读、写、执行)
bash脚本语法
输入与输出
- 输入
read name
输入一个值,并赋值给name- 赋值给
name
后需要使用$
进行解析如$name
- 输出
echo
对于字符进行整行输出printf
类似与C语言
printf "My name is %s and I am %d years old.\n" $name $age
前面""中需要有格式化符号,后面才是变量.
函数的封装
- 不含参数函数定义调用
greet () {echo "Hello, World!"
}
函数调用
#!/bin/bash
greet
- 含参函数定义调用
add_numbers () {sum=$(($1 + $2))echo "The sum of $1 and $2 is $sum"
}
函数调用
#!/bin/bash
add_numbers 3 5
-
当然也可以存在
rutern
返回值 -
$() 与 反引号``的异同
都可以用于获取指令结果,但建议使用$(),因为它可以嵌套,而反引号不支持。
条件判断语句
- if 语句基本结构
- 在 Bash 编程中,
if
语句用于条件判断。基本结构如下:
- 在 Bash 编程中,
if [ condition ]; then# 条件为真时执行的命令commands
fi
- 其中,
[ condition ]
是条件表达式部分,;
用于分隔条件表达式和then
关键字(也可以将;
换成换行)。then
后面的commands
是当条件为真时要执行的命令序列。 fi
是一个关键字,用于标识if
语句块的结束- 例如,判断一个变量是否大于 10:
#!/bin/bash
num=15
if [ $num -gt 10 ]; thenecho "$num is greater than 10"
fi
- 这里的
$num -gt 10
是条件表达式,-gt
是用于比较大小的操作符,表示 “大于”。当num
的值大于 10 时,就会执行echo
命令。 - 除了只在条件为真时执行命令,还可以在条件为假时执行其他命令,这就用到了
if - else
语句。结构如下:
if [ condition ]; thencommands1
elsecommands2
fi
- 例如,判断一个数是偶数还是奇数:
#!/bin/bash
num=7
if [ $((num % 2)) -eq 0 ]; thenecho "$num is even"
elseecho "$num is odd"
fi
- 这里使用
$((num % 2)) -eq 0
作为条件表达式,%
是取余运算,-eq
是 “等于” 操作符。如果num
除以 2 的余数为 0,则为偶数,执行echo
偶数相关的命令;否则为奇数,执行echo
奇数相关的命令。
- if - elif - else 语句
- 当需要判断多个条件时,可以使用
if - elif - else
语句。结构如下:
if [ condition1 ]; thencommands1
elif [ condition2 ]; thencommands2
……
elsecommandsn
fi
- 例如,根据分数范围输出等级:
#!/bin/bash
score=85
if [ $score -ge 90 ]; thenecho "A"
elif [ $score -ge 80 ]; thenecho "B"
elif [ $score -ge 70 ]; thenecho "C"
elif [ $score -ge 60 ]; thenecho "D"
elseecho "F"
fi
- 这里依次判断分数是否大于等于 90、80、70、60,根据不同的范围输出相应的等级。如果分数小于 60,则输出
F
。
条件符号
-
数值比较操作符
- -lt:小于。
- -le:小于等于。
- -eq:等于。
- -ne:不等于。
- -ge:大于等于。
- -gt:大于。
-
字符串比较操作符
- = 或 ==:相等(在多数 Bash 环境下,不过 “==” 可能在某些版本中不被支持)。
- !=:不相等。
- -z:判断字符串长度是否为 0。
- if - else 语句
-
文件判断使用到的参数
-e 文件名 如果文件存在则为真
-f 文件名 如果文件存在且为普通文件则为真
-d 文件名 如果文件存在且为目录则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真 -
条件判断使用到的逻辑操作符
①与 的表示方法:&&、-a
要求所有条件为真,则条件为真
②或 的表示方法:||、-o
要求任意条件为真,则条件为真
③非 的表示方法:!
要求条件反转为真时,条件为真
循环语句
- for 循环
- 基本语法:
for
循环用于遍历一系列的值,通常是一个列表。基本格式为:
- 基本语法:
for variable in list; docommands
done
- 其中
variable
是循环变量,用于依次存储list
中的每个元素;list
可以是一个用空格分隔的值列表、一个数组或者是一个由命令生成的结果集;commands
是在每次循环中要执行的命令。 - 遍历列表示例:
- 例如,遍历一个数字列表并打印每个数字:
for number in 1 2 3 4 5; doecho $number
done
- 这里
number
会依次取1
、2
、3
、4
、5
,并在每次循环中通过echo
命令输出。 - 遍历数组示例:
- 假设定义了一个数组
fruits
,并使用for
循环遍历它:
- 假设定义了一个数组
fruits=("apple" "banana" "cherry")
for fruit in "${fruits[@]}"; doecho $fruit
done
- 在这个例子中,
${fruits[@]}
表示数组fruits
的所有元素,fruit
会依次取数组中的每个元素并输出。 - 使用命令生成列表示例:
- 可以使用命令的输出作为
for
循环的列表。例如,通过ls
命令列出当前目录下的文件,并逐个打印文件名:
- 可以使用命令的输出作为
for file in $(ls); doecho $file
done
- 不过要注意,这种方式如果文件名中有空格等特殊字符可能会出现问题,更安全的做法是使用
while
循环和read
命令结合来处理有特殊字符的文件名。
- while 循环
- 基本语法:
while
循环在条件为真时持续执行命令块。基本格式为:
while [ condition ]; docommands
done
- 其中
[ condition ]
是条件表达式,commands
是每次循环要执行的命令。 - 简单计数示例:
- 例如,从 1 开始计数,直到数字达到 5:
count=1
while [ $count -le 5 ]; doecho $countcount=$((count + 1))
done
- 在这里,
count
初始值为 1,每次循环判断count
是否小于等于 5,如果是则打印count
的值,然后将count
的值加 1。当count
大于 5 时,循环结束。 - 读取文件内容示例:
- 假设要逐行读取一个文件的内容,可以这样做:
while read line; doecho $line
done < file.txt
- 这个循环会不断读取
file.txt
文件中的一行内容存储到line
变量中,然后通过echo
命令输出该行内容,直到文件结束。
- until 循环
- 基本语法和特点:
until
循环与while
循环相反,它在条件为假时持续执行命令块,直到条件变为真。基本格式为:
until [ condition ]; docommands
done
- 例如,计算从 1 加到某个数,直到总和大于等于 10:
sum=0
num=1
until [ $sum -ge 10 ]; dosum=$((sum + num))num=$((num + 1))
done
echo $sum
- 在这里,开始时
sum
为 0,num
为 1,每次循环将num
累加到sum
中,并将num
加 1,直到sum
大于等于 10,循环结束后输出sum
的值。
- 循环控制语句
- break 语句:用于立即跳出循环。例如,在
for
循环中,如果满足某个条件就跳出循环:
for i in 1 2 3 4 5; doif [ $i -eq 3 ]; thenbreakfiecho $i
done
- 这个循环在
i
等于 3 时就会跳出,所以只会输出 1 和 2。 - continue 语句:用于跳过当前循环的剩余部分,直接进入下一次循环。例如:
for i in 1 2 3 4 5; doif [ $i -eq 3 ]; thencontinuefiecho $i
done
- 当
i
等于 3 时,continue
语句会跳过echo
命令,直接进入下一次循环,所以会输出 1、2、4、5。
模块化编程
就是在本脚本中调用其他脚本的函数,以此来实现模块化编程
#!/bin/bash
source update.sh
update $n1 $n1
echo 在$0文件中运行update.sh的函数update
$0
是一个特殊的变量,它代表当前脚本的文件名。当脚本被执行时,$0
会被自动赋值为脚本文件的名称。(类似与Windows系统dos编程中的%0)source
是一个命令(也可以用 “.” 来代替,如 “.”filename
与source filename
效果相同)。它的主要作用是在当前脚本环境中读取并执行另一个文件中的命令。(相当于文件包含)
Linux进程操作
查看寻找进程
- ps 命令
- 基本语法:
ps [options]
。例如,ps -ef
是最常用的查看进程的命令组合。-e
选项表示显示所有进程,-f
选项用于显示完整格式的信息。 - 详细解释:它会列出进程的 UID(用户 ID)、PID(进程 ID)、PPID(父进程 ID)、C(CPU 使用率)、STIME(进程启动时间)、TTY(终端类型)、TIME(累计 CPU 时间)和 CMD(命令行)等信息。例如,在命令行输入
ps -ef
后,会看到类似如下的输出:
- 基本语法:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 11:00? 00:00:01 /sbin/init
root 2 0 0 11:00? 00:00:00 [kthreadd]
- 其他常用选项:
ps -aux
:显示所有包含其他用户的进程,并且以 BSD 风格输出。其中a
选项表示显示所有终端下的进程,包括其他用户的进程;u
选项以用户为中心组织输出;x
选项表示显示没有控制终端的进程。
- top 命令
- 基本语法:
top
。直接在命令行输入top
后,会进入一个实时显示系统进程状态的界面。 - 详细解释:它会按照 CPU 使用率、内存使用率等对进程进行排序,并动态更新。在这个界面中,可以看到系统的负载情况(
load average
),包括 1 分钟、5 分钟和 15 分钟的平均负载。每一行代表一个进程,显示的信息和ps -ef
有一些重叠,如 PID、USER、PR(优先级)、NI(Nice 值)、VIRT(虚拟内存大小)、RES(物理内存大小)等。 - 操作方式:在
top
界面中,可以通过按键来进行操作。例如,按P
键可以按照 CPU 使用率排序进程,按M
键可以按照内存使用率排序进程,按q
键可以退出top
界面。
- pgrep 命令
- 基本语法:
pgrep [options] pattern
。例如,pgrep -l firefox
用于查找名称中包含firefox
的进程并显示其 PID 和名称。 - 详细解释:它是通过进程名称或者其他属性来查找进程的 PID。
-l
选项表示在输出中同时显示进程名称。如果只需要 PID,可以不使用-l
选项。
终止进程
- kill 命令
- 基本语法:
kill [signal] PID
。例如,kill -9 1234
表示强制终止 PID 为 1234 的进程。 - 详细解释:
signal
是发送给进程的信号,默认信号是TERM
(15),它会请求进程正常终止。如果进程没有响应TERM
信号,可以使用-9
(SIGKILL
)信号来强制终止进程。不过,强制终止进程可能会导致数据丢失或系统不稳定,因为进程没有机会进行清理操作。 注意
:在使用kill -9
时要谨慎,尽量先尝试使用默认的TERM
信号来终止进程。
- 基本语法:
- pkill 命令
- 基本语法:
pkill [options] pattern
。例如,pkill -9 firefox
用于强制终止所有名称中包含firefox
的进程。 - 详细解释:它是通过进程名称或者其他属性来终止进程,和
pgrep
命令类似,但是它的功能是终止进程而不是查找 PID。-9
选项同样表示强制终止。
- 基本语法:
暂停与恢复进程
- 暂停进程:可以使用
kill -STOP PID
来暂停一个进程。例如,kill -STOP 5678
会暂停 PID 为 5678 的进程。此时,进程会暂停执行,并且不会占用 CPU 资源,直到收到恢复信号。 - 恢复进程:使用
kill -CONT PID
来恢复一个被暂停的进程。例如,kill -CONT 5678
会恢复之前被暂停的 PID 为 5678 的进程,使其继续正常运行。
后台运行
- 在后台运行进程
- 方法一:命令后加 & 符号。例如,
./long_running_script.sh &
。这样,long_running_script.sh
这个脚本就会在后台运行,命令行提示符会立即返回,用户可以继续在命令行进行其他操作。 - 方法二:使用 nohup 命令。
nohup command &
,例如nohup python my_script.py &
。nohup
(no hang up)命令用于在用户退出登录后,进程仍然能够继续运行。它会将进程的输出重定向到nohup.out
文件中(默认情况下)。
- 方法一:命令后加 & 符号。例如,
- 将后台进程恢复到前台
- 基本语法:
fg %n
。其中n
是作业号。可以通过jobs -l
命令来查看后台作业的作业号和 PID。例如,如果jobs -l
显示后台作业的作业号为 1,PID 为 9876,那么fg %1
就可以将这个后台作业恢复到前台运行。
- 基本语法:
bash脚本编写
系统内存资源占用
#!/bin/bash
TOTAL_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
USE_MEM=$((TOTAL_MEM * 30 / 100))
USE_MEM_MB=$((USE_MEM / 1024))
while true;domemtester $USE_MEM_MB 1wait $!
done
-
TOTAL_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
-
grep MemTotal /proc/meminfo
:/proc/meminfo
是 Linux 系统下一个虚拟文件,它包含了系统当前的内存信息。grep MemTotal
命令用于在/proc/meminfo
文件中查找包含 “MemTotal” 字样的行,该行记录了系统的总内存量信息。 -
awk '{print $2}'
:awk
是一种文本处理工具。在这里,它用于从grep
找到的包含 “MemTotal” 的行中提取第二个字段的值,也就是系统总内存量的值(以 KB 为单位)。最终将提取到的值赋给变量TOTAL_MEM
。 -
USE_MEM=$((TOTAL_MEM * 30 / 100))
使用算术扩展($((...))
)来计算需要占用的内存量。它将变量TOTAL_MEM
(系统总内存量,以 KB 为单位)乘以 30 再除以 100,得到的结果就是要占用的内存量(同样以 KB 为单位),并将这个结果赋给变量USE_MEM
USE_MEM_MB=$((USE_MEM / 1024))
再次使用算术扩展,将变量USE_MEM
(以 KB 为单位的要占用的内存量)除以 1024,从而将其转换为以 MB 为单位的内存量,并将结果赋给变量USE_MEM_MB
memtester $USE_MEM_MB 1
使用memtester
工具进行内存测试。$USE_MEM_MB
是前面计算并转换得到的要占用的内存量(以 MB 为单位),1
在这里可能是memtester
工具要求的某个参数(比如可能表示测试的次数或者其他相关参数,具体取决于memtester
的版本和使用方式)。这个命令会启动memtester
对指定的内存量进行测试。
-
wait $!
-
$!
是一个特殊的 Bash 变量,它表示最近在后台运行的命令的进程 ID(PID)。在这里,由于memtester
命令刚刚在后台运行(因为memtachers
通常会在后台执行内存测试操作),所以$!
获取到的就是memtester
的进程 ID。 -
wait
命令用于等待指定的进程完成。在这里就是等待memtester
的进程完成其内存测试操作,确保每次memtester
测试都能完整执行完毕后再进入下一次循环。
tester $USE_MEM_MB 1`
使用memtester
工具进行内存测试。$USE_MEM_MB
是前面计算并转换得到的要占用的内存量(以 MB 为单位),1
在这里可能是memtester
工具要求的某个参数(比如可能表示测试的次数或者其他相关参数,具体取决于memtester
的版本和使用方式)。这个命令会启动memtester
对指定的内存量进行测试。
-
wait $!
-
$!
是一个特殊的 Bash 变量,它表示最近在后台运行的命令的进程 ID(PID)。在这里,由于memtester
命令刚刚在后台运行(因为memtachers
通常会在后台执行内存测试操作),所以$!
获取到的就是memtester
的进程 ID。 -
wait
命令用于等待指定的进程完成。在这里就是等待memtester
的进程完成其内存测试操作,确保每次memtester
测试都能完整执行完毕后再进入下一次循环。
相关文章:
网络安全-Linux基础(bash脚本)
文章目录 bash脚本编写基础使用的脚本解析器/bin/bash(声明)bash脚本需要拥有执行权限bash脚本语法输入与输出函数的封装条件判断语句条件符号 循环语句模块化编程 Linux进程操作查看寻找进程终止进程暂停与恢复进程后台运行 bash脚本编写系统内存资源占…...

Lucene 和 Elasticsearch 中更好的二进制量化 (BBQ)
作者:来自 Elastic Benjamin Trent Lucene 和 Elasticsearch 中更好的二进制量化 (BBQ)。 嵌入模型输出 float32 向量,通常对于高效处理和实际应用来说太大。Elasticsearch 支持 int8 标量量化,以减小向量大小,同时保持性能。其他…...

jmeter基础05_第1个http请求
本节课使用网站“httpbin.org”进行基础的http请求全流程。 请求获取httpbin.org的首页: 请求方法:GET URL:http://httpbin.org 参数:无 1、操作步骤 ① 打开jmeter:命令行窗口输入“jmeter”并回车。 ② 添加线程组…...

C++builder中的人工智能(25):AI中的C++多线程std::thread
主要是为Ai算法中要使用到C的多线程,这是使用C11中的多线程std::thread。 在现代数学、物理和计算机科学中,优化和加速应用程序开发在编程中非常重要,以加快计算速度。多核心CPU和GPU通过核心和晶体管的数量得到了高度发展,为当今…...
RestSharp基本使用方法
关于RestSharp RestSharp is a library that allows you to make REST and HTTP calls in .NET applications. It supports serialization, parameters, async functions, and more. RestSharp是C#的一个WepApi库,支持通用的Web接口处理,支持序列化、参数…...
MySQL与Oracle对比及区别
一、比较 1、MySQL的特点 性能卓越,服务稳定,很少出现异常宕机; 开放源代码无版本制约,自主性及使用成本低; 历史悠久,社区和用户非常活跃,遇到问题及时寻求帮助; 软件体积小&#…...

NCC前端调用查询弹框
系统自带的查询模板 弹框 调启使用默认的 查询模板 是在 单据模板的 列表模板中,有个查询区域 ,查询区域就是查询模板内容如果在列表页做客开 新增按钮 调启查询模板 无问题,但是目前需求是需要再卡片页面下调启系统标准的调启模板代码 //调…...

【高中生讲机器学习】25. AdaBoost 算法详解+推导来啦!
创建时间:2024-11-08 首发时间:2024-11-13 最后编辑时间:2024-11-13 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名高一学生,热爱计…...

第三十七章 Vue之编程式导航及跳转传参
目录 一、编程式导航跳转方式 1.1. path 路径跳转 1.1.1. 使用方式 1.1.2. 完整代码 1.1.2.1. main.js 1.1.2.2. App.vue 1.1.2.3. index.js 1.1.2.4. Home.vue 1.1.2.5. Search.vue 1.2. name 命名路由跳转 1.2.1. 使用方式 1.2.2. 完整代码 1.2.2.1. main.js 1…...

vue 版本升级
Vue 3.4 升级了组件产值方式 v-model ,果断升级玩玩,记录一下升级过程 我的原Vue版本是3.2.13 升级到目前最新3.5.12 1. npm add vuelatest 2. npm add -g vue/clilatest 安装完成后记得查看是否有如下警告 这个警告是说eslint-plugin-vue package…...

探索Copier:Python项目模板的革命者
文章目录 **探索Copier:Python项目模板的革命者**1. 背景介绍:为何Copier成为新宠?2. Copier是什么?3. 如何安装Copier?4. 简单库函数使用方法4.1 创建模板4.2 从Git URL创建项目4.3 使用快捷方式4.4 动态替换文本4.5 …...
云原生后端深度解析
云原生后端 云原生后端是指专门为云计算环境设计的软件架构和服务。它强调了应用程序的设计、开发、部署和运维的方式,以充分利用云平台提供的弹性、可伸缩性和自动化能力。云原生技术主要包括容器化、微服务、不可变基础设施、声明式APIs等核心概念。下面是对这些…...

本地 SSL 证书生成神器,自己创建SSL
本地 SSL 证书生成神器,自己创建SSL 在本地环境中配置HTTPS一直以来是开发者的痛点,手动创建SSL证书、配置信任存储不仅繁琐,还容易出错。今天给大家介绍一个开源神器——mkcert!它能让你快速生成本地受信任的SSL/TLS证书,轻松打造安全的HTTPS开发环境,成为许多开发者的首…...

HCIP-快速生成树RSTP
一、RSTP是什么 STP(Spanning Tree Protocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。 RS…...

企业级RAG(检索增强生成)系统构建研究
— 摘要 检索增强生成(Retrieval-Augmented Generation,RAG)技术已经成为企业在知识管理、信息检索和智能问答等应用中的重要手段。本文将从RAG系统的现状、方法论、实践案例、成本分析、实施挑战及应对策略等方面,探讨企业如何…...
MATLAB基础应用精讲-【数模应用】Google Caffeine算法
目录 前言 算法原理 Caffeine算法的背景和优势 什么是Caffeine算法 Caffeine算法的工作原理 常见的缓存数据淘汰算法 FIFO LRU LFU W-TinyLFU Caffeine W-TinyLFU 实现 元素驱逐 元素访问 Caffeine 的四种缓存添加策略 1. 手动加载 2. 自动加载 3. 手动异步加载…...

第十九届中国国际中小企业博览会将在粤开展
11月15日-18日,第十九届中国国际中小企业博览会(简称“中博会”)将在广州广交会展馆举办,共设8个展厅,展位总数约2800个,将举办超过30场系列配套活动,35个国家(地区)和国…...

云计算在智能交通系统中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算在智能交通系统中的应用 云计算在智能交通系统中的应用 云计算在智能交通系统中的应用 引言 云计算概述 定义与原理 发展历…...
b4tman / docker-squid 可快速安装运行的、容器型代理服务器 + podman
使用容器部署,省时省力。 使用镜像,目前的最大麻烦就是之前各大镜像源纷纷关闭,需要自己找到合适的、安全的镜像源。 幸好 docker-squid 推广在 ghcr.io,目前下载没有障碍。 注:ghcr.io 是 GitHub Container Registry …...

脉冲神经网络(Spiking Neural Network,SNN)学习(1)
目录 一、神经网络 1、神经元 2、激活函数 (1)常见的激活函数:Sigmoid函数 (2)常见的激活函数:ReLU(Rectified Linear Unit)函数 (3)常见的激活函数&…...
【疑难杂症】电脑休眠后无法开机,进入 steamVR 时电脑突然黑屏关机
问题描述 1.电脑休眠后无法启动,只能拔电源再启动 2.进入 steamVR 时,电脑突然断电黑屏关机(无蓝屏,无任何报错) 3.在进行渲染时,如R23等,电脑突然黑屏关机 4.进入 VRChat 时,准备进…...

HTML文件中引入jQuery的库文件
方法一: 1. 首先,在官方网站(https://jquery.com/)上下载最新版本的jQuery库文件,通常是一个名为jquery-x.x.x.min.js的文件。 2. 将下载的jquery-x.x.x.min.js文件保存到你的项目目录中的一个合适的文件夹中,比如将它保存在你的项…...

IntelliJ IDEA超详细下载安装教程(附安装包)
目录 IDEA的简单介绍一、下载IDEA二、安装IDEA三、启动IDEA并使用1.配置IDEA2.输出:"Hello World!" IDEA的简单介绍 IDEA 全称IntelliJ IDEA,是由 JetBrains 开发的一款广泛使用的集成开发环境(IDE)&#x…...

MySQL技巧之跨服务器数据查询:基础篇-更新语句如何写
MySQL技巧之跨服务器数据查询:基础篇-更新语句如何写 上一篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的连接名: MY_ODBC_MYSQL 以及用同样的…...

期权懂|期权新手入门教学:期权合约有哪些要素?
期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 期权新手入门教学:期权合约有哪些要素? 期权合约:是指约定买方有权在将来某一时间以特定价格买入或卖出约定标的物的标准化或非标准化合约。期…...

腾讯云nginx SSL证书配置
本章教程,记录在使用腾讯云域名nginx证书配置SSL配置过程。 一、nginx配置 域名和证书,替换成自己的即可。证书文件可以自定义路径位置。服务器安全组或者防火墙需要开放80和443端口。 server {#SSL 默认访问端口号为 443listen 443 ssl; #请填写绑定证书的域名server_name c…...

重新认识HTTPS
一. 什么是 HTTPS HTTP 由于是明文传输,所谓的明文,就是说客户端与服务端通信的信息都是肉眼可见的,随意使用一个抓包工具都可以截获通信的内容。 所以安全上存在以下三个风险: 窃听风险,比如通信链路上可以获取通信…...

应用于新能源汽车NCV4275CDT50RKG车规级LDO线性电压调节器芯片
关于车规级芯片(Automotive Grade Chip),车规级芯片是专门用于汽车行业的芯片,具有高可靠性、高稳定性和低功耗等特点,以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元(ECU)和…...
GitLab 中文发行版最新版重点功能解读
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
rust模式和匹配
文章目录 模式和匹配match 分支if let表达式while letfor 循环let 语句函数参数 Refutability(可失败)与Irrefutable(不可失败的)模式语法匹配字面量匹配命名变量多个模式通过 .. 匹配值的范围 解构并分解值解构结构体使用字面量作为结构体模式的一部分进…...