Linux运维之管理工具篇

一、前言

因运维过程中,经常会借助于很多工具来实现我们的监控、备份、校验,安全测试,批量操作,可视化辅助,集中管理等,甚至AI相关,本文特对常用工具进行梳理记录,以备不时之需及后来者参考应用,欢迎留言补充和建议。

二、文件管理或备份工具

2.1、 Rclone

在这里插入图片描述

它是一款免费的云存储管理工具,Rclone是一个采用 Go 语言开发的命令行程序,具有与unix命令rsync、cp、mv、mount、ls、ncdu、tree、rm和cat相当的强大功能,主用于管理云存储上的文件,超过70种云存储产品支持rclone,包括S3对象存储、商业的文件存储服务以及标准传输协议(支持复制,同步,移动,删除文件。它还支持文件加密和压缩,支持分块上传和分块下载,可以暂停和恢复传输,支持文件的校验和合并。),它允许在文件系统和云存储服务之间或在多个云存储服务之间访问和同步文件,它具有单向同步功能,使目录完全相同,它具有加密、缓存和联合后端,支持 Fuse 安装,并且可以通过 HTTP、WebDAV、FTP、SFTP 或 DLNA 服务本地或远程文件。它可以用来做很多事情,包括备份,文件同步,数据迁移等,它可以在各种平台上运行,包括 Windows,macOS,Linux,FreeBSD,NetBSD 等。在云存储场景,我们能够像使用本地文件一样便捷的使用云存储,它也被誉为“云存储界的瑞士军刀”。我们可以使用Rclone工具,对移动云对象存储EOS进行数据导入、数据同步、迁移备份或者挂载等操作。

在这里插入图片描述
注:rclone sync 只支持本地向远程无条件的同步,远程的永远会被覆盖;

相关资源:官网、rclone GitHub、rclone Gitee、软件下载

1)配置说明

默认配置完成的后配置文件都保存在:/root/.config/rclone/rclone.conf 目录下:


#查看默认配置文件位置
rclone config paths
# 编辑配置,配置对象存储EOS数据源
[EOS]                               #配置项名称,用户自定义
type = s3
provider = ChinaMobile
access_key_id = XXXXXXXX
secret_access_key = XXXXXXXXXXXXXXXX
endpoint = XXXXXXXX.cmecloud.cn    #对象存储服务接口地址,一般endpoint地址设置的是内网地址,注意对应资源池是否支持https,否者使用http
location_constraint = XXXXXXXX     #需与接口一致,仅在创建桶时使用,如无需创建桶,可不设置
acl = private					   #默认值:private,可选值: private、public-read、public-read-write、authenticated-read

#向导配置
rclone config --config [config-file-path]  #初始如下
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

#列举桶内的对象
rclone ls [config-name]:[bucket-name] --config [config-file-path]

2)部署安装

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.rpm
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
sudo unzip rclone-current-linux-amd64.zip
sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone
rclone version

3)常用命令

rclone config - 以控制会话的形式添加rclone的配置,配置保存在rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,默认跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。可添加–dry-run标志来检查要复制、删除的数据
rclone move - 将源数据移动到目的地址。
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
rclone mount - 挂载云盘为本地硬盘
fusermount -qzu LocalFolder  - 卸载挂载的云盘
### 同步本地目录或文件到远端bucket
rclone sync <LOCAL_PATH> romote:bucket-name/target-path/
# 同步远端bucket目录到本地
rclone sync romote:bucket-name/target-path/ <LOCAL_PATH>
#两个桶之间数据同步
rclone sync source:bucket-name target:bucket-name
# 将本地文件同步到远端,并备份过程中被删除或修改的文件到备份存储桶中,加 --progress 显示迁移的进度及校验的结果
rclone sync <LOCAL_PATH> romote:bucket-name --backup-dir romote:backup-bucket-name/backup-dir
# 数据校验:-P = --progress可显示实时传输进度,500 ms刷新一次,否则默认1分钟刷新一次
rclone check source:bucket-name/source-path/  target:bucket-name/target-path/ -P

rclone命令常用参数:

参数说明
-n = --dry-run测试运行,查看 rclone 在实际运行中会进行哪些操作
-P = --progress显示实时传输进度,500 ms刷新一次,否则默认1分钟刷新一次
–cache-chunk-size 5M块的大小,默认 5M 越大上传越快,占用内存越多,太大可能会导致进程中断
–onedrive-chunk-size 100M提高 OneDrive 上传速度适用于G口宽带服务器
–drive-chunk-size 64M提高 Google Drive 上传速度适用于G口宽带服务器
–cache-chunk-total-size SizeSuffix块可以在本地磁盘上占用的总大小
–transfers=N并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如 128M 的小鸡上使用建议设置为1。
–config string指定配置文件路径,string为配置文件路径
–ignore-errors跳过错误
–size-only根据文件大小校验,不校验hash
–drive-server-side-across-configs服务端对服务端传输
–exclude-from排除文件或目录列表来自某个文件指定
–include-from包含文件或目录来自某个文件指定
–filter-from文件过滤规则来自某个文件指定
–exclude排除文件或目录;–exclude “{Video,Software}/” 排除所有目录下的 Video 和 Software 目录
–include包含文件或目录
–filter文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头;–filter "+ *.{png,jpg}"等同于–include “*.{png,jpg}”
–min-size num过滤小于指定大小的文件。比如 --min-size 50 表示不会传输小于 50k 的文件。
–max-size num过滤大于指定大小的文件。比如 --max-size 1G 表示不会传输大于 1G 的文件。
-q-rclone将仅生成 ERROR 消息。
-vrclone将生成 ERROR,NOTICE 和 INFO 消息,推荐此项。
-vv-rclone 将生成 ERROR,NOTICE,INFO和 DEBUG 消息。
–log-level LEVEL标志控制日志级别

2.2、Restic

Restic 是一款 GO 语言开发的开源免费快速、高效、安全的跨平台备份工具。Restic 使用AES-256加密技术来保证我们的数据安全性和完整性,可以将本地数据加密后传输到指定的存储。Restic 支持增量备份,还可利用重复数据删除来节省宝贵的存储空间。Restic 目前可与大多数主要的云提供商兼容,支持常见操作系统(Linux、macOS、Windows、FreeBSD、OpenBSD)。Restic备份时,默认它通常必须扫描每个文件的全部内容,会进行下载比较如果文件较大会产生的代价非常昂贵,因此restic还使用基于文件元数据的更改检测规则来确定文件是否可能自上次备份以来未发生更改。如果是,则不会再次扫描该文件。仅对常规文件(而不是特殊文件、符号链接或目录)执行更改检测,这些文件的路径与同一位置的先前备份中的路径完全相同。如果文件或其包含目录之一被重命名,则会将其视为其他文件,并且将再次扫描其全部内容。
在这里插入图片描述

关联资源:restic GitHub、文档、软件下载、restic设计原理

Restic优势:

Restic 每次备份都会生成一个快照,记录当前时间点的文件结构,因此可以找回特定时间点的文件。通常可以实现在不清理快照时同一个文件的版本记录。
Restic 配置信息直接写在仓库,只要有仓库密码,在任何安装了Restic的计算机上都可以操作仓库。
Restic 面向的是文件备份和加密,文件先加密再传输备份,而且是增量备份,即每次只备份变化的部分。
Restic 可以备份数据到不同的类型的数据仓库如本地存储、SFTP、Minio等。
Restic 支持多种操作系统。
Restic 备份与恢复操作相对简单。
Restic 可实现备份验证,因此restic让我们轻松验证所有数据是否可以恢复。
Restic 可实现备份数据加密,假设存储备份数据的位置不是受信任的环境(例如,系统管理员等其他人能够访问您的备份的共享空间)。
Restic 备份时可实现重复文件的去重以达到节省备份空间的目的

1)部署安装

#YUM
yum install yum-plugin-copr -y #或apt-get install restic
yum enable copart/restic -y  #copr enable启用 Copr 存储库,该存储库包含 Restic 备份工具的最新版本
yum install restic -y
#二进制包方式
bzip2 -d restic_0.13.1_linux_amd64.bz2
#添加执行权限
chmod +x restic_0.13.1_linux_amd64
#拷贝到PATH路径
mv restic_0.13.1_linux_amd64 /usr/bin/restic

## REST存储库创建,用于通过HTTP或HTTPS协议将数据备份到远程服务
git clone https://github.com/restic/rest-server
tar xf rest-server_0.11.0_linux_amd64.tar.gz
mv rest-server_0.11.0_linux_amd64 /usr/local/rest-server
#生成认证文件
htpasswd -B -c .htpasswd zhangzhuo
mv htpasswd /data1/rest-server/.htpasswd
#创建数据目录
mkdir /data1/rest-server -p
#创建服务启动文件
cat /etc/systemd/system/rest-server.service 
[Unit]                                                                                                                                         
Description=rest-server
Wants=network-noline.target
After=network-noline.target
 
[Service]
WorkingDirectory=/data1/rest-server
ExecStart=/usr/local/rest-server/rest-server --path /data1/rest-server
Restart=always
 
[Install]
WantedBy=multi-user.target
#启动设置开机自启
systemctl enable --now rest-server.service
#访问测试,端口默认8000
$ curl 127.0.0.1:8000
#初始化
restic -r rest:http://bcadmin:passwd@172.18.1.101:8000/ init

#验证
restic version
​

2)使用

#创建一个备份仓库,即在本地文件系统初始化新建一个存储库,如桶中已存在文件,可能会导致仓库初始化失败或者原有文件丢失,建议创建新桶用于备份;注意:密码丢失会导致文件无法访问和找回
restic init --repo /data1/backup  #--repo: 指定本地文件系统目录;输出
enter password for new repository:
enter password again:
created restic repository a6801fab57 at ./backup

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.


#可将密码配置到环境变量
export RESTIC_PASSWORD=123456

#创建快照,restic多次备份是依据主机名称与备份目标目录名称区别是否备份的是之前备份过的,-r:指定备份存储库的位置;创建备份时会遵循默认检测规则,但如果见改变,可使用如下参数:
# --force:关闭更改检测并重新扫描所有文件
# --ignore-ctime:需要 mtime 才能匹配,但允许 ctime 不同
# --ignore-inode:需要 mtime 才能匹配,但允许 inode 编号和 ctime 不同
restic -r [存储库] --verbose backup [备份目录]

#验证备份结果:输出“no errors were found”时,表示备份成功;也可通过退出状态代码来验证,说明如下:
# 备份成功时为 0(创建所有源文件的快照)
# 1 出现致命错误时(未创建快照)
# 3 当某些源文件无法读取时(不完整的快照,其余文件已创建)
restic check
echo $?

#查看备份库中的所有备份快照
restic -r  /data1/backup snapshots
restic -r s3:http://ip/restic snapshots --password-file pass  #或指定密码文件
restic -r  /data1/backup ls <snapshot-id> #查看指定快照的文件列表
#排除文件
restic -r s3:http://ip/restic backup /etc --exclude="*.c" --exclude-file=excludes.txt
#指定备份文件列表来备份:当想要从许多不同的位置备份文件时,或者当使用其他一些软件来生成要备份的文件列表时,很有用
restic -r s3:http://ip/restic backup --files-from back_list

#快照比较: diff 子命令,它能显示两个快照之间的差异并显示一个小的统计信息,只需传递两个快照 ID
restic -r s3:http://ip/restic diff 7629554a 29328031

#定期检查源和备份呢存储库是否正常且一致
# 结构一致性和完整性,例如快照、树和包文件(默认)restic -r [存储库] check
# 备份的实际数据的完整性restic -r [存储库] check --read-data
restic -r s3:http://ip/restic check
restic -r s3:http://ip/restic check --read-data  #过程中需下载存储库中的所有包文件,会导致流量和带宽耗费
#使用快照还原
# 语法:restic -r [存储库] restore [快照id] --target [恢复到哪里]
# 恢复时可以使用dump将整个文件夹结构的内容输出到标准输出,Restic 将以 tar(默认)或 zip 格式输出内容;也可使用--exclude和--include过滤,只恢复单个文件
restic -r [存储库] dump -a zip [快照id] [快照备份路径] > [压缩包名称].zip
restic -r /data1/backup restore snapshot_ID --target /opt/restore
#恢复单个文件:/opt/etc/fstab
restic -r s3:http://ip/restic restore ff00e6a6 --target /tmp/restore --include /opt/etc/fstab
#备份文件目录结构导出到压缩包
restic -r s3:http://ip/restic dump -a zip ff00e6a6 /opt/etc  > restore.zip

#删除快照
# forget删除快照
# prune删除仅由已删除快照引用的剩余数据
restic -r  s3:http://ip/restic forget 95a8af65  #快照删除后此快照中的文件引用的数据仍存储在存储库中
restic -r s3:http://ip/restic prune    #清理上述命令清理快照后遗留未引用的数据
restic -r s3:http://ip/restic forget 95a8af65 --prune
#保留同一个主机同一个备份目标的最新3个快照其余全部删除
restic -r s3:http://ip/restic forget --keep-last 3 --prune

3)术语

  • 存储库(Repository):备份过程中生成的所有数据都以结构化形式发送并存储在存储库中,例如:存储在文件系统中,文件系统中可以创建多级目录。
    \
  • Blob: Blob是将数据与识别信息(如数据的 SHA-256 哈希值及其长度)组合在一起。
    \
  • (Pack): 一个Pack将多个Blobs进行组合,例如在一个文件中
    \
  • 快照(Snapshot): 一个快照是文件和目录在某个备份时间点的状态。状态的含义是内容以及元数据(metadata)信息,如:文件或目录及其内容的名称、修改时间(mtime),元数据(ctime)。
    \
  • 存储ID(Storage ID):存储ID是存储库中存放内容的SHA-256。只有得到此ID才能从存储库中加载文件。

4)命令参数

–dry-run 模拟运行,仅比较文件,不做实际的上传
–exclude pattern 排除匹配 pattern 的文件,可设置多个
–exclude-file file 根据文件 file 中的 pattern 排除文件
–exclude-larger-than size 排除尺寸超过指定 size 的文件
–host host 指定备份的 host
–iexclude pattern 排除匹配 pattern 的文件,忽略大小写,可设置多个
–iexclude-file file 根据文件 file 中的 pattern 排除文件,忽略大小写
–ignore-ctime 比较文件时,允许创建时间不一致 Windows 系统不支持
–ignore-inode 比较文件时,允许创建时间和 inode number 不一致 Windows 系统不支持
–tag tags 指定备份的 tags
–group-by group 分组显示查询结果 group 的值域:host, paths, tags
–host host 查询指定 host 的快照
–latest n 查询最近的 n 条快照
–path path 查询指定 path 的快照
–tag tags 查询指定 tag 的快照
–exclude pattern 排除匹配 pattern 的文件,可设置多个
–iexclude pattern 排除匹配 pattern 的文件,忽略大小写,可设置多个
–include pattern 还原匹配 pattern 的文件,可设置多个
–iinclude pattern 还原匹配 pattern 的文件,忽略大小写,可设置多个
–path path 还原指定 path 的快照
–host host 还原指定 host 的快照
–tag tags 还原指定 tags 的快照
–target path 指定还原路径
–keep-last n:保留n最后(最近的)快照。
–keep-hourly n对于有一个或多个快照的最后n几个小时,每个小时只保留最近的一个。
–keep-daily n对于有一个或多个快照的最后n几天,每天只保留最近的一个。
–keep-weekly n对于有一个或多个快照的最后n几周,每周只保留最近的一个。
–keep-monthly n对于有一个或多个快照的最后n几个月,每个月只保留最近的一个。
–keep-yearly n对于有一个或多个快照的最后n几年,每年只保留最近的一个。
–keep-tag保留具有此选项指定的所有标签的所有快照(可以指定多次)。
–keep-within duration将所有具有时间戳的快照保留在最新快照的指定持续时间内,其中duration是年数、月数、天数和小时数。例如2y5m7d3h,将保留在最近(最近)快照之前两年、五个月、7 天和三个小时内制作的所有快照。
–keep-within-hourly duration保留在最新快照的指定持续时间内制作的所有每小时快照。的duration指定方式与 for 相同–keep-within,确定每小时快照的方法与 for 相同–keep-hourly。
–keep-within-daily duration保留在最新快照的指定持续时间内制作的所有每日快照。
–keep-within-weekly duration保留在最新快照的指定持续时间内制作的所有每周快照。
–keep-within-monthly duration保留在最新快照的指定持续时间内制作的所有月度快照。
–keep-within-yearly duration保留在最新快照的指定持续时间内制作的所有年度快照

删除快照:高危操作,请谨慎操作

-l n 只保留最近 n 次快照
-H n 最近 n 小时内,只保留每小时最新的快照
-d n 最近 n 天内,只保留每天最新的快照
-w n 最近 n 周内,只保留每周最新的快照
-m n 最近 n 个月内,只保留每月最新的快照
-y n 最近 n 年内,只保留每年最新的快照
–keep-within duration 只保留最近 duration 内的快照 duration 样例:1y5m7d2h
–keep-within-hourly duration 最近 duration 内,只保留每小时最新的快照 duration 样例:1y5m7d2h
–keep-within-daily duration 最近 duration 内,只保留每天最新的快照 duration 样例:1y5m7d2h
–keep-within-weekly duration 最近 duration 内,只保留每周最新的快照 duration 样例:1y5m7d2h
–keep-within-monthly duration 最近 duration 内,只保留每月最新的快照 duration 样例:1y5m7d2h
–keep-within-yearly duration 最近 duration 内,只保留每年最新的快照 duration 样例:1y5m7d2h
–keep-tag tag 保留指定 tag 的快照,可设置多个
–host host 指定 host
–tag tag 指定 tag
–path path 指定 path
–dry-run 模拟运行,不做实际的删除
–prune 删除快照的同时也删除数据

三、容器管理

3.1、 Watchtower(瞭望塔)工具

背景:当我们是通过docker hub上拉取镜像进行容器创建时,当docker hub上镜像版本更新后,本地容器兵不会自动升级镜像版本,依然保持在旧版本,如果我们想要升级只能重新拉取最新的latest版本,然后重新部署容器,这比较麻烦,这是我们就可利用Watchtower工具来完成。
在这里插入图片描述

Watchtower 是一个开源项目,它监视正在运行的容器以及相关的镜像,当检测到 registry 中的镜像与本地的镜像有差异时,它会拉取最新镜像优雅地关闭现有容器并使用最初部署时相同的参数重新启动相应的容器以完成镜像更新,即实现自动化更新 Docker 基础镜像;这对于需要持续部署和集成的项目来说非常有用,可以简化管理工作并确保我们的应用始终运行最新的镜像上。

关联资源:watchtower官网、GitHub

1)部署配置

实际,Watchtower本身就有一个镜像可以像其他容器一样运行:它可将docker的进程映射到容器内进行监控(即映射socket);默认watchtower会每5分钟检查更新一次,可以通过–interval, -i或者–schedule, -s设置更新间隔。 --interval, -i - 设置更新检测时间间隔,单位为秒。当然也可设置定时监测,使用–schedule, -s - 设置定时检测更新时间。格式为 6 字段 Cron 表达式,而非传统的 5 字段,即第一位是秒。

docker pull containrrr/watchtower
#启动Watchtower容器: watchtower 需要与 Docker API 进行交互以监控正在运行的容器,所以在使用时需要加上 -v 参数将 /var/run/docker.sock 映射到容器内
docker run -d --name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
#使用身份验证凭据和环境变量 REPO_USER 和 REPO_PASS
docker run -d --name watchtower -e REPO_USER=username \
-e REPO_PASS=password \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower container_to_watch --debug
#自动清除旧镜像,使用-c参数,即--cleanup
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup
#指定更新nginx容器,用于其他容器不使用经常更新的场景
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c nginx
#配置自定义更新频率,比如每1h检查一次
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c --interval 3600
#定时检查:秒 分 时 日期 月份 星期
docker run -d --name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -c \
--schedule "0 0 2 * * *"
#立即更新:发送一个 SIGHUP 信号给 Watchtower 容器来让它立即检查更新
docker kill -s SIGHUP watchtower

3.2、docker-gc工具

它能够帮助你清理Docker宿主机,删除不再需要的容器和镜像。它会移除存在超过1小时的所有容器。同时,它会删除不属于任何遗留容器的镜像。它会执行一系列的检查和装配步骤,最终创建一个瘦身版本的镜像。

相关资源:docker-gc文档

3.3、docker-slim工具

docker-slim工具使用静态和动态分析方法来为你臃肿的镜像瘦身。

相关资源:Github、文档、文档2

3.4、Rocker工具

代替dockerfile,Rocker传递Rockerfile来构建镜像运行容器。

相关资源:Github、博客

3.5、ctop:容器的类Top界面

ctop能够提供多个容器的实时指标视图。

相关资源:GitHub

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记OnlyOffice的两个大坑

开发版&#xff0c;容器部署&#xff0c;试用许可已安装。 word&#xff0c;ppt&#xff0c;excel均能正常浏览。 自带的下载菜单按钮能用。 但config里自定义的downloadAs方法却不一而足。 word能正常下载&#xff0c;excel和ppt都不行。 仔细比对调试了代码。发现app.js…

2024年3月份实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

Antd中s-table组件某字段进行排序

Antd中s-table组件某字段进行排序 提前说明&#xff0c;s-table组件包含分页等功能 <s-tableref"table":columns"columns":data"loadData"bordered:row-key"(record) > record.id"></s-table>而其中loadData为获取表数…

strcat函数

函数理解记忆&#xff1a;str表示是<string.g>中的函数&#xff0c;cat表示附加。意思是将一个字符串的内容附加到另一个字符串的末尾。 注意要点&#xff1a;既然要附加&#xff0c;附加的字符串和被附加的字符串都要有\0。否则不知道附加多少&#xff0c;不知附加在哪…

【Linux进程的知识点】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档文章目录 前言 操作系统的知识补充 我们来理解一个用户操作接口&#xff1a; 进程的理解 进程的基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 …

算法刷题Day8 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串

目录 0 引言1 反转字符串1.1 我的解题1.2 2 反转字符串II2.1 解题 3 替换数字3.1 双指针法 4 翻转字符串里的单词4.1 我的解题思路4.2 另一种思路 5 右旋转字符串5.15.2 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题…

什么是序列化?为什么需要序列化?

1、典型回答 序列化(Serialization)序列化是将对象转换为可存储或传输的形式的过程(例如: 将对象转换为字节流) 反序列化(Deserialization) 是将序列化后的数据(例如: 二进制文件)转换回原始对象的过程。通过反序列化&#xff0c;可以从存储介质 (如磁盘、数据库) 或通过网络…

程序员们的“薪饭碗”鸿蒙迎来“薪”的就业岗位

随着科技行业的不断创新和发展&#xff0c;程序员们所面对的技术挑战和机遇也在不断增加。近年来&#xff0c;鸿蒙操作系统的崛起为程序员们提供了新的就业机会和发展前景。 鸿蒙系统作为一种全新的操作系统&#xff0c;在市场上占据一席之地。在当前就业市场中&#xff0c;鸿…

网络套接字-UDP服务器

一 预备知识 1 端口号和进程id 主机间的数据传输本质是两个进程在通信&#xff0c;就像是我们打开抖音刷视频&#xff0c;视频不是都保存在手机上的&#xff0c;而是服务器发送给你的&#xff0c;这里就是用到了网络。 那如何保证把数据给指定进程呢? 就是用端口号去标识主机中…

[实战]API防护破解之签名验签

前言&#xff1a; 传统的接口在传输的过程中&#xff0c;是非常容易被抓包进行篡改&#xff0c;从而进行中间人攻击。这时候我们可以通过对参数进行签名验证&#xff0c;如果参数与签名值不匹配&#xff0c;则请求不通过&#xff0c;直接返回错误信息&#xff0c;从而防止黑客…

Java错误:微服务报错Cannot execute request on any known serve

&#x1f414;问题内容 报Cannot execute request on any known server 这个错&#xff1a;连接Eureka服务端地址不对。 &#x1f414;解决方式 检查.yml文件或者.properties文件配置 下划线下划线后面的小写字母等同于去掉下划线大写下划线后面的字母&#xff08;驼峰原则&am…

网络安全从业人员何去何从

从2024年1月1日开始到今天&#xff0c;基本没有真正放下自己休息过一天。可能很多人会说是卷&#xff0c;其实真正的原因是压力。不仅仅是生活压力还有行业压力。 今年这个行业让很多人开始感到了迷茫&#xff0c;不仅是股市的低迷&#xff0c;更多的来自于各大公司不断的因为…

Linux学习:基础开发工具的使用(1)

目录 1. Linux软件包管理器&#xff1a;yum工具1.1 yum是什么&#xff08;软件商城&#xff09;1.2 yum的使用1.3 yum的背景生态 2. 项目开发与集成开发环境3. vim编辑器3.1 vim编辑器的常见模式与模式切换3.3 vim编辑器的使用3.3.1 命令模式下的常见命令&#xff1a;3.3.2 vim…

【安装mysql】centos7 安装mysql

文章目录 1.卸载不用的环境2.获取mysql官方yum源3.开始安装4.常规登录4.1方法一&#xff1a;【博主可以】4.2方法二&#xff1a;直接用client登录4.3方法三&#xff1a;修改配置文件 5.设置配置文件5.1配置my .cnf5.2开机自启动 1.卸载不用的环境 查看有无mysql/mariadb ps ax…

优雅的记录日志,拒绝打印模糊信息导致bug定位难

想必大家都有过这样的经历&#xff1a;在项目中遇到报错需要紧急修复时&#xff0c;却因为日志信息模糊不清&#xff0c;无法迅速准确地定位到错误源头&#xff0c;这确实让人感到十分苦恼和无奈。 在新入职一家公司并着手修改遗留bug时&#xff0c;经常发现之前的开发者并未记…

Java Day9 Stream流

Stream流 1、认识2、Stream流使用步骤3、如何获取Stream流4.Stream流的中间方法5、 Stream流终结方法 1、认识 2、Stream流使用步骤 3、如何获取Stream流 //list获取stream流List<String> listnew ArrayList<>();Collections.addAll(list,"崔十一","…

NUMA简介

NUMA 1 什么是NUMA 早期的计算机&#xff0c;内存控制器还没有整合进 CPU&#xff0c;所有的内存访问都需要经过北桥芯片来完成。如下图所示&#xff0c;CPU 通过前端总线&#xff08;FSB&#xff0c;Front Side Bus&#xff09;连接到北桥芯片&#xff0c;然后北桥芯片连接到…

小型校园网配置笔记

1&#xff0c;搭建网络拓扑图 LSW1:三层交换机命令&#xff1a; <Huawei>sys [Huawei]undo info-center enable Info: Information center is disabled. [Huawei]vlan batch 10 20 30 40 100 101 [Huawei]int vlan 10 [Huawei-Vlanif10]ip add 192.168.10.254 24 …

vivado FIFO IP核的使用

FIFO是先进先出的数据缓存器。起到跨时钟域的数据缓冲作用&#xff0c;一般在实际应用过程当中采用异步读写的方式&#xff0c; 选择的配置如下 封装IP核 module clk_wiz(input resetn ,input clk_in1 ,output clk_out1 ,output clk_out2 …

VScode Error Lens插件

安装完成之后&#xff0c;当我们输入一些错误的语法格式的时候&#xff0c;它都会有一些提示&#xff01; 一开始是英文提示 修改为中文提示 设置搜索 typescript.local