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

CentOS 7下利用YUM缓存实现Keepalived高效离线部署

1. 为什么你需要YUM缓存离线部署方案如果你是一名运维工程师或者系统管理员肯定遇到过这样的场景客户现场或者公司内部的生产环境服务器被严格限制在隔离的内网中完全无法访问互联网。这时候你需要部署像Keepalived这样的核心高可用组件却发现传统的yum install命令完全失灵。更让人头疼的是Keepalived并不是一个孤立的软件它背后依赖着一连串的库和组件比如net-snmp、lm_sensors这些。我最早遇到这个问题时也走了不少弯路。最原始的办法是找一台能上网的测试机尝试安装然后根据报错信息去网上一个个搜索缺失的依赖包手动下载RPM文件再用U盘拷到内网服务器上安装。这个过程就像玩一个永远没有尽头的“打地鼠”游戏安装A提示缺少B下载B安装又提示缺少C好不容易找到C结果C还依赖D和E……循环往复不仅效率极低而且极易出错版本兼容性问题更是让人抓狂。后来我发现CentOS的YUM工具其实自带了一个非常强大的“后悔药”功能——本地缓存。默认情况下YUM为了节省磁盘空间安装完软件后会自动清理下载的RPM包。但只要我们打开一个开关它就会把所有下载过的包包括主软件包和所有依赖包统统保留在本地的一个目录里。这不就是我们梦寐以求的“离线安装包全家桶”吗基于这个思路我总结出了一套高效、可靠的离线部署方法。它的核心思想就是在一台能联网的、环境相同的CentOS 7机器上利用YUM缓存“骗”系统完整下载一次Keepalived及其所有依赖然后我们把这个完整的“缓存目录”打包带到内网环境中就能实现一键式离线安装。这个方法完美解决了依赖地狱问题特别适合需要批量、重复部署的企业级环境。下面我就把具体的操作步骤和踩过的坑毫无保留地分享给你。2. 环境准备与YUM缓存机制深度解析工欲善其事必先利其器。在开始操作之前我们需要准备好两台机器一台可以连接互联网的“打包机”建议使用虚拟机方便重置以及最终需要部署的内网“目标机”。两台机器最好都使用相同版本的CentOS 7系统比如都是CentOS 7.6或7.9这能最大程度避免因系统小版本差异导致的库文件不兼容问题。2.1 理解YUM缓存目录结构YUM的缓存功能是其依赖解析能力的副产品。当我们执行yum install时YUM会从配置的仓库Repo中下载元数据metadata和软件包RPM。默认情况下软件包存放在/var/cache/yum/目录下。这个目录的结构是按仓库ID和系统架构组织的非常清晰。/var/cache/yum/ └── x86_64 └── 7 ├── base │ ├── packages │ └── ... ├── updates │ ├── packages │ └── ... └── epel ├── packages └── ...x86_64代表系统架构7代表CentOS主版本下面的base、updates等就是你在/etc/yum.repos.d/目录下配置的仓库ID。所有最终下载的.rpm文件都会存放在对应仓库的packages子目录下。我们的目标就是拿到这个packages目录下的所有文件。2.2 开启并验证YUM缓存在打包机上我们需要修改YUM的全局配置文件永久开启缓存功能。用你熟悉的编辑器如vi或nano打开/etc/yum.confsudo vi /etc/yum.conf找到keepcache这一行默认值是0表示不保留缓存。我们把它改成1keepcache1同时你可以关注一下cachedir这一行它定义了缓存目录的路径默认就是/var/cache/yum/$basearch/$releasever通常我们不需要修改它。保存并退出。为了确保配置生效我们可以先清理一下旧的缓存然后进行一次测试安装来触发缓存# 清理旧缓存可选确保环境干净 sudo yum clean all # 安装一个测试软件比如wget观察缓存是否生成 sudo yum install -y wget # 查看缓存目录应该能看到wget的rpm包 ls -lh /var/cache/yum/x86_64/7/base/packages/ | grep wget如果能看到wget的rpm文件说明缓存配置已经成功生效。这一步非常关键它确认了我们的基础环境是正常的为后续下载Keepalived铺平了道路。3. 实战演练生成Keepalived离线安装包环境准备好后我们就可以开始为核心目标——Keepalived——制作离线安装包了。这个过程就像是在“捕鱼”用YUM作为渔网一网打尽所有需要的“鱼”RPM包。3.1 执行在线安装以填充缓存在打包机上直接运行Keepalived的安装命令。这个命令会像往常一样从互联网仓库下载所有需要的包。sudo yum install -y keepalived安装完成后先别急着卸载。我们来看看YUM到底为我们下载了哪些宝贝。使用rpm -qa | grep keepalived可以确认Keepalived已经安装成功。但更重要的是我们去缓存目录看一看# 切换到缓存目录 cd /var/cache/yum/x86_64/7/ # 使用find命令查找所有下载的rpm包并列出详细信息 find . -name *.rpm -type f | xargs ls -lh你会看到类似下面的输出里面不仅包含了keepalived-1.3.5-19.el7.x86_64.rpm还包含了它依赖的net-snmp-agent-libs、net-snmp-libs、lm_sensors-libs等包。这些就是我们需要收集的全部文件。-rw-r--r--. 1 root root 332K Apr 10 12:00 ./base/packages/keepalived-1.3.5-19.el7.x86_64.rpm -rw-r--r--. 1 root root 707K Apr 10 12:00 ./updates/packages/net-snmp-agent-libs-5.7.2-49.el7_9.2.x86_64.rpm -rw-r--r--. 1 root root 752K Apr 10 12:00 ./updates/packages/net-snmp-libs-5.7.2-49.el7_9.2.x86_64.rpm -rw-r--r--. 1 root root 42K Apr 10 12:00 ./base/packages/lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm这里有一个非常重要的经验点不同时期的CentOS 7其updates仓库的版本可能不同。例如你的打包机如果更新比较频繁下载的net-snmp库版本可能是5.7.2-49.el7_9.2而一个刚安装的、版本较旧的目标机其本地仓库信息可能还停留在更早的版本。如果你只拷贝了高版本的包在低版本系统上安装时YUM或RPM可能会因为版本过高而报错。因此确保打包机和目标机的基础系统版本尽可能一致是成功的关键。3.2 收集与整理离线包现在我们需要把这些散落在各个仓库packages目录下的RPM包集中收集到一个单独的目录中方便我们打包带走。# 创建一个专门存放离线包的目录 mkdir -p ~/keepalived-offline-packages # 使用find和cp命令复制所有rpm包到新目录 find /var/cache/yum -name *.rpm -type f -exec cp {} ~/keepalived-offline-packages/ \; # 查看收集到的包 ls -lh ~/keepalived-offline-packages/ | wc -l ls -lh ~/keepalived-offline-packages/wc -l命令可以告诉你一共收集到了多少个RPM包通常除了Keepalived本身还会有3-5个依赖包。你可以将这些文件打包成一个压缩包tar -czf keepalived-offline.tar.gz -C ~/keepalived-offline-packages .这个keepalived-offline.tar.gz文件就是我们的“离线安装神器”。你可以把它拷贝到U盘或者通过企业内部的文件服务器传输到内网的目标机器上。4. 内网目标机上的高效离线安装拿到离线安装包我们来到最终战场——那台无法连接外网的目标服务器。这里的操作核心是绕过YUM的仓库依赖检查直接使用RPM命令进行本地安装。4.1 上传与准备安装包首先将打包好的keepalived-offline.tar.gz上传到目标服务器的一个目录比如/usr/local/src/。然后解压# 切换到目标目录 cd /usr/local/src/ # 上传你的压缩包假设通过scp或物理介质 # 解压 tar -xzf keepalived-offline.tar.gz # 进入解压后的目录 cd keepalived-offline-packages/现在你的当前目录下应该躺着所有必需的RPM文件。在安装前我强烈建议你先检查一下目标机是否已经安装了任何可能冲突的旧版本Keepalivedrpm -qa | grep keepalived如果已经有安装你可能需要先卸载它rpm -e keepalived但请注意在生产环境操作需谨慎。4.2 使用RPM命令强制安装所有依赖这是最关键的一步。我们将使用rpm命令的-Uvh升级或安装参数配合两个非常重要的选项--nodeps和--force。sudo rpm -Uvh *.rpm --nodeps --force让我解释一下这几个参数-Uvh: U代表升级或安装v显示详细信息h显示进度条。*.rpm: 通配符表示安装当前目录下所有的rpm包。--nodeps:忽略依赖检查。这是离线安装的灵魂。因为我们已经在同一个目录下提供了所有必需的包所以可以放心地让RPM跳过复杂的依赖关系验证直接安装。--force:强制安装。这个参数会覆盖文件冲突、重复安装等问题。在离线环境下它能解决大部分因环境细微差异导致的安装失败。执行命令后你会看到屏幕上快速滚过安装进度最后显示“Complete!”。整个过程通常在几秒钟内完成比你想象的要快得多。4.3 验证安装与服务启动安装完成不代表万事大吉我们必须进行验证。# 1. 再次检查Keepalived软件包是否已安装 rpm -qa | grep keepalived # 2. 检查Keepalived二进制文件是否存在 which keepalived ls -lh /usr/sbin/keepalived # 3. 检查服务状态此时服务应该是未启动的 sudo systemctl status keepalived # 4. 尝试启动服务 sudo systemctl start keepalived # 5. 查看启动后的状态 sudo systemctl status keepalived如果一切顺利systemctl status命令会显示active (running)并且会打印出Keepalived进程的PID。你还可以通过查看日志来确认sudo journalctl -u keepalived -f --since 1 minute ago最后别忘了设置开机自启这对于高可用服务至关重要sudo systemctl enable keepalived5. 进阶技巧与避坑指南掌握了基本流程后我们再来聊聊一些能让你事半功倍的进阶技巧以及我踩过的一些坑。5.1 使用yumdownloader进行更精准的下载前面我们通过修改yum.conf来开启全局缓存。但有时你可能只想下载某个特定的软件包及其依赖而不想真的安装它。这时yum-utils工具包里的yumdownloader命令就派上用场了。首先在打包机上安装这个工具sudo yum install -y yum-utils然后使用--downloadonly和--downloaddir参数来指定只下载不安装并指定下载目录sudo yum install -y keepalived --downloadonly --downloaddir/path/to/your/download这个方法更干净目的性更强。但根据我的经验它有时可能不会像开启全局缓存那样捕获到某些更深层次的间接依赖。两种方法可以结合使用互为补充。5.2 处理“依赖的依赖”与版本冲突这是离线部署中最常见的问题。你可能发现从打包机拷贝的包在目标机上安装时仍然提示缺少某个库文件比如libmysqlclient.so.18。这通常是因为你的打包机在安装Keepalived时系统里已经存在某些基础库比如从其他渠道安装的MySQL开发库所以YUM没有去下载这些依赖。但目标机是一个纯净的系统就缺失了。解决方案在打包机上模拟最小化安装最好使用一个全新的、最小化安装的CentOS 7虚拟机作为打包机这样它缺失的依赖目标机大概率也会缺失能最大程度保证依赖包的完整性。手动补充缺失包如果还是缺少你需要根据报错信息在另一台能上网的机器上使用yum provides */libmysqlclient.so.18这样的命令查找是哪个RPM包提供了这个文件然后单独下载这个包加入你的离线包集合。创建本地YUM仓库高级对于需要批量部署多台内网服务器的情况更专业的做法是在内网搭建一个本地YUM仓库。将收集的所有RPM包放入一个目录使用createrepo命令生成仓库元数据。然后在目标机上将/etc/yum.repos.d/中的源指向这个本地仓库路径。这样在内网就可以继续使用yum install keepalived命令享受自动依赖解析的便利。这算是离线部署的“终极形态”。5.3 批量部署与自动化脚本如果你需要在内网的几十上百台服务器上部署Keepalived手动上传、解压、运行命令显然不现实。这时可以编写一个简单的Shell脚本来自动化这个过程。#!/bin/bash # deploy_keepalived_offline.sh OFFLINE_PKG_DIR/usr/local/src/keepalived-offline-packages SERVICE_NAMEkeepalived echo 开始离线部署Keepalived... # 1. 检查安装包目录是否存在 if [ ! -d $OFFLINE_PKG_DIR ]; then echo 错误离线包目录 $OFFLINE_PKG_DIR 不存在 exit 1 fi # 2. 进入目录并安装 cd $OFFLINE_PKG_DIR || exit echo 正在安装RPM包... if rpm -Uvh *.rpm --nodeps --force; then echo RPM包安装成功。 else echo RPM包安装失败请检查。 exit 1 fi # 3. 启动并设置开机自启 echo 配置Keepalived服务... systemctl daemon-reload if systemctl start $SERVICE_NAME; then echo 服务启动成功。 systemctl enable $SERVICE_NAME /dev/null 21 echo 已设置开机自启。 else echo 服务启动失败请检查配置。 systemctl status $SERVICE_NAME exit 1 fi # 4. 最终状态检查 echo 最终服务状态 systemctl is-active $SERVICE_NAME echo 部署完成你可以将这个脚本和离线包一起分发然后在每台目标机上执行即可。通过Ansible、SaltStack等自动化运维工具来批量执行此脚本效率会更高。6. 方法延伸搞定Nginx及其他软件的离线部署掌握了Keepalived的离线部署方法你就掌握了一把万能钥匙。这套基于YUM缓存的思路几乎适用于所有通过YUM仓库分发的CentOS/RHEL系软件比如Nginx、HAProxy、MySQL、Redis等等。以Nginx为例流程完全一样在打包机上开启YUM缓存 (keepcache1)。执行sudo yum install -y nginx。从/var/cache/yum/.../packages/目录收集所有Nginx及其依赖的RPM包。打包传到内网目标机。使用sudo rpm -Uvh *.rpm --nodeps --force安装。我亲自用这个方法部署过内网的Nginx集群同样高效。它把复杂的依赖管理问题提前在可联网的环境中一次性解决将离线部署的复杂度降到了最低。当然每款软件的依赖树不同可能遇到的特殊问题也不同。比如某些软件可能需要额外的仓库如EPEL你在打包机上就需要提前配置好这些仓库确保下载的依赖包完整。最后我想说技术方案没有绝对的好坏只有适合与否。这种YUM缓存离线法在需要快速部署、环境相对标准化的场景下优势非常明显。但它也要求你对操作系统的包管理有基本的了解。希望这篇结合了我大量实战经验的分享能帮你彻底摆脱内网部署的烦恼让Keepalived的安装变得像在公网一样简单顺畅。如果在实际操作中遇到新的问题不妨回头看看“进阶技巧与避坑指南”那部分大多数难题都能在那里找到思路。

相关文章:

CentOS 7下利用YUM缓存实现Keepalived高效离线部署

1. 为什么你需要YUM缓存离线部署方案? 如果你是一名运维工程师或者系统管理员,肯定遇到过这样的场景:客户现场或者公司内部的生产环境,服务器被严格限制在隔离的内网中,完全无法访问互联网。这时候,你需要部…...

告别复杂 SQL 性能瓶颈!金仓智能下推技术的实战解析

你是否遇到过这样的场景:一个看似逻辑清晰的复杂SQL,在测试环境小数据量下运行飞快,一到生产环境海量数据场景就直接“卡死”;查看执行计划后发现,子查询无差别扫描全量数据,生成了远超预期的巨大中间结果集…...

Claude桌面客户端深度体验:Electron框架下的跨平台实践与性能优化

1. 从网页到桌面:Claude桌面客户端初体验 作为一个每天要和Claude打交道的AI工具重度用户,当我听说Claude终于推出桌面客户端时,第一反应是“终于来了”。毕竟,看着ChatGPT、Perplexity这些同行都陆续有了自己的“专属地盘”&…...

Verilog实战:从零构建四种关键触发器

1. 触发器:数字世界的记忆细胞 如果你刚开始接触FPGA和数字电路设计,可能会觉得“触发器”这个词听起来有点抽象,甚至有点吓人。别担心,让我用一个最简单的比喻来解释:触发器就是数字电路里的“记忆细胞”。就像我们的…...

LangChain `return_direct` 实战应用与性能优化指南

1. 为什么你需要关注 return_direct:不止是“跳过思考” 如果你正在用 LangChain 构建智能应用,尤其是涉及工具调用的 Agent,那你大概率遇到过这样的烦恼:我只是想让 Agent 帮我查个数据库或者算个数,结果它拿到数据后…...

树莓派4B——利用.desktop文件实现QT程序开机自启动

1. 为什么你的QT程序需要开机自启动? 我猜你和我一样,折腾树莓派4B,用QT辛辛苦苦写了个漂亮的界面程序,可能是智能家居的控制面板,也可能是工控设备的监控界面。程序在开发机上跑得飞起,一部署到树莓派上&a…...

解决PaddleOCR与Torch冲突导致的[WinError 127]问题

1. 问题初探:那个让人摸不着头脑的[WinError 127] 如果你最近在Windows上同时折腾PaddleOCR和PyTorch,大概率会遇到一个让人非常头疼的错误。明明代码写得没问题,环境也装得好好的,一运行,啪,一个[WinError…...

【硬件设计实战】从原理到选型:滤波电容的工程化选择指南

1. 从理论到工作台:为什么你的电路板总在“闹脾气”? 干了这么多年硬件设计,我调试过无数块板子,发现一个特别有意思的现象:很多新手工程师画的板子,原理图看起来挺漂亮,元器件选得也“高大上”…...

Grokking 现象解析:小数据集下神经网络的泛化之谜

1. 什么是Grokking?一个让AI研究者困惑的“顿悟”现象 想象一下,你在教一个学生做数学题。你给了他10道例题,他一开始完全不会,只能靠死记硬背把答案背下来。你考他这10道原题,他都能答对,但稍微变一下数字…...

2025外研版三起点三年级下册:用技术赋能小学英语词汇教学新场景

1. 告别“哑巴英语”:用AI语音技术点燃孩子的开口热情 我教了这么多年英语,最头疼的就是看到孩子们抱着单词表,一个个字母地“啃”,发音要么不敢开口,要么就是“中式英语”味儿十足。尤其是三年级这个阶段&#xff0c…...

ADS仿真实战:精准测量元器件输入阻抗的完整流程

1. 为什么我们需要在ADS里“看透”元器件的输入阻抗? 做射频电路设计,尤其是搞匹配、调滤波器的时候,我猜你肯定遇到过这种抓狂时刻:辛辛苦苦搭了个电路,仿真S参数看着还行,但一上板子实测,性能…...

从ValueError到顺畅加载:揭秘load_dataset中trust_remote_code参数的实战应用

1. 那个让人头疼的ValueError:不只是Stable Diffusion的烦恼 不知道你有没有遇到过这种情况:好不容易在Hugging Face Hub上找到了一个非常适合自己项目的数据集,满心欢喜地准备用load_dataset把它拉下来开始干活,结果终端里“啪”…...

秩-零化度定理:从线性变换的“丢失”与“保留”看维数守恒

1. 秩-零化度定理:一个被低估的“维数守恒定律” 很多朋友一听到“秩-零化度定理”或者“维数公式”这个名字,就觉得头大,感觉又是线性代数里一个抽象难懂的定理。我刚开始学的时候也这么想,直到后来在搞图像压缩和数据分析时&…...

深入解析FLAC与APE:无损音频格式的技术差异与应用场景

1. 从“听个响”到“听细节”:为什么我们需要无损音频? 不知道你有没有这样的经历:几年前用手机随便听听歌,觉得128kbps的MP3已经很满足了。后来偶然间,在朋友家或者某个展会上,用一套不错的耳机或音响&…...

SPH与Lagrange混合建模在超高速碰撞仿真中的应用——基于Ls-Dyna的实践探索

1. 为什么需要混合建模?聊聊超高速碰撞仿真的“老大难” 大家好,我是老张,在CAE仿真这个行当里摸爬滚打了十几年,尤其跟Ls-Dyna打交道的时间最长。今天想和大家深入聊聊一个在超高速碰撞仿真中特别实用,但也让很多新手…...

Obsidian 插件开发,AI 协作者的实战手册:从需求描述到一键发布,让 TRAE 帮你搞定代码

1. 从“想法”到“描述”:如何与你的AI协作者TRAE高效沟通 你是不是也遇到过这种情况?用Obsidian做笔记时,总觉得少了点什么。比如,你希望笔记里的某个关键词能自动关联到某个外部网站,或者想在侧边栏一键生成当天的待…...

PythonStudio 控件使用常用方式(三十三)THotKey 实战:自定义快捷键绑定与冲突处理

1. THotKey控件:你的快捷键管家 在PythonStudio里捣鼓桌面应用,给菜单项或者按钮绑定个快捷键,是不是觉得挺酷的?以前你可能得自己写一堆监听键盘事件的代码,判断Ctrl、Alt、Shift这些修饰键,还得处理各种按…...

企业网络卡顿疑难排查:从症状到解决方案的全流程解析

1. 从“莫名其妙”的卡顿说起:企业网络间歇性卡顿的典型症状 你有没有遇到过这种情况?办公室里,大家正热火朝天地工作,突然有人喊了一句:“网又卡了!”紧接着,抱怨声此起彼伏:“网页…...

立创天空星ODrive扩展板:双路无刷电机驱动与SimpleFOC/ODrive框架实战

立创天空星ODrive扩展板:双路无刷电机驱动与SimpleFOC/ODrive框架实战 最近在做一个机器人关节项目,需要同时精确控制两个无刷电机,既要力矩平稳,又要位置准确。市面上现成的驱动板要么太贵,要么功能单一,于…...

一键检测:实时手机检测-通用模型,轻松识别图像中的手机

一键检测:实时手机检测-通用模型,轻松识别图像中的手机 前言: 你有没有遇到过这样的场景?整理手机相册时,想快速找出所有包含手机的图片;或者在一个复杂的监控画面里,需要立刻定位出手机的位置。…...

拖延症福音!AI论文工具 千笔AI VS 文途AI,专科生写作神器

随着人工智能技术的迅猛发展,AI辅助写作工具已逐渐成为高校学生完成毕业论文的重要帮手。越来越多的专科生开始借助这些智能工具来提升写作效率、降低写作难度,尤其是在面对开题报告、文献综述、正文撰写等复杂环节时,AI工具的价值愈发凸显。…...

Flutter 三方库 deno_postgres_interop 的鸿蒙化适配指南 - 跨越边界的数据库桥梁、在鸿蒙端实现 Deno 与 Postgres 互操作实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 deno_postgres_interop 的鸿蒙化适配指南 - 跨越边界的数据库桥梁、在鸿蒙端实现 Deno 与 Postgres 互操作实战 前言 在进行 Flutter for OpenHarmony 的全栈开发或是构建…...

基于Cursor与CMake的STM32现代化开发工作流:从零搭建到一键调试

1. 为什么你需要这套现代化开发工作流? 如果你还在用 Keil 或者 IAR 开发 STM32,每次新建工程都要重复配置一堆路径,代码补全慢半拍,换个电脑或者操作系统就得重头再来,那我猜你肯定想过:“有没有更爽一点的…...

Flutter 三方库 dart_dotenv 的鸿蒙化适配指南 - 配置隔离的指挥官、在鸿蒙端实现多环境安全解耦实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 dart_dotenv 的鸿蒙化适配指南 - 配置隔离的指挥官、在鸿蒙端实现多环境安全解耦实战 前言 在进行 Flutter for OpenHarmony 的企业级应用开发时,我们经常需要…...

NHSE技术指南:从问题解决到创意实现的动物森友会存档编辑全攻略

NHSE技术指南:从问题解决到创意实现的动物森友会存档编辑全攻略 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 一、问题导入:突破动物森友会的机制限制 1.1 玩家的常见困…...

如何突破《原神》帧率限制?genshin-fps-unlock工具的技术解析与应用指南

如何突破《原神》帧率限制?genshin-fps-unlock工具的技术解析与应用指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 问题溯源:为何帧率限制成为游戏体验的隐形…...

PCB阻焊工艺全解析:从油墨选择到关键工序优化

1. 阻焊工艺:不只是“绿油”那么简单 很多刚接触PCB设计的朋友,可能都和我当初一样,觉得电路板上的那层“绿油”就是个背景板,选个颜色而已。直到我第一次打样回来的板子,在焊接时发生了好几处不该有的桥连&#xff0c…...

BurpSuit实战:SQL注入漏洞的17种攻击手法全解析

1. 从零开始:认识Burp Suite与SQL注入 如果你刚开始接触Web安全,可能会觉得Burp Suite和SQL注入这两个词听起来有点吓人。别担心,我刚开始学的时候也是一头雾水,感觉像在看天书。但实际用起来你会发现,Burp Suite其实就…...

金融理财系列课程

金融理财系列课程 财企分析系列课程 01什么是年报(半年报、季报等) 02掌握资产负债表 03掌握企业利润表 04掌握现金流量表 05通过财报了解企业 理财与金融系列课程 01 投资原则 02投资指数基金的计算方法 03投资股票的计算方法 04投资债券的计算方法…...

小红书内容采集开源工具完全指南:从入门到精通

小红书内容采集开源工具完全指南:从入门到精通 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader 在数字…...