开源漏洞扫描器:OpenVAS
一、OpenVAS介绍
OpenVAS (Open Vulnerability Assessment System) 是一款功能强大的开源漏洞扫描器。它由 Greenbone Networks 开发和维护,是 Greenbone 安全管理器 (GSM) 产品的基础,同时也有免费的社区版本(Greenbone Community Edition)。OpenVAS 的核心功能是识别目标系统和应用程序中的安全漏洞。
以下是 OpenVAS 的一些关键特性和详细介绍:
1. 核心功能:漏洞扫描
- 全面的漏洞检测: OpenVAS 能够检测各种类型的安全漏洞,包括操作系统和应用程序的已知漏洞、错误配置、弱密码、恶意软件等。
- 网络漏洞测试 (NVTs): OpenVAS 依赖于一个庞大且持续更新的 NVT 数据库。这些 NVT 是由 Greenbone 社区和安全专家贡献的,包含了针对已知漏洞的详细测试脚本。NVT 每天都会更新,确保 OpenVAS 能够检测最新的威胁。
- 支持多种协议: OpenVAS 可以扫描各种常见的网络协议,如 TCP/IP、HTTP(S)、SSH、SMTP、DNS、SNMP 等,以及一些工业协议。这使得它可以评估各种类型的服务和应用程序的安全性。
- 认证扫描: OpenVAS 支持在提供凭据的情况下进行认证扫描。这使得它能够更深入地检查系统内部的配置和漏洞,例如操作系统补丁级别、用户账户信息、应用程序版本等,从而提供更准确的评估。
- 非认证扫描: OpenVAS 也可以在不提供凭据的情况下进行非认证扫描,主要通过分析网络服务和响应来识别潜在的漏洞。
2. 架构
OpenVAS 采用客户端-服务器架构,通常包含以下组件:
- Greenbone Vulnerability Manager Daemon (gvmd): 这是 OpenVAS 的核心组件,负责控制和管理扫描任务、存储配置和扫描结果、处理用户管理和权限控制等。它通过 Open Scanner Protocol (OSP) 与 OpenVAS 扫描器进行通信。
- OpenVAS Scanner (openvas-scanner): 这是实际执行漏洞扫描的引擎。它根据 gvmd 的指令和 NVT 数据库对目标系统进行安全检查。
- Greenbone Security Assistant (GSA): 这是一个基于 Web 的用户界面,允许用户配置和启动扫描、查看和分析扫描结果、生成报告等。
- Greenbone Security Assistant Daemon (gsad): 这是 GSA 的后端 Web 服务器,负责处理用户界面的请求并与 gvmd 进行通信。
- Vulnerability/Information Feed (NVT Feed): 这是包含所有漏洞测试(NVTs)、SCAP 数据和其他安全相关信息的数据库,由 Greenbone 定期更新。
3. 主要特点
- 开源且免费: OpenVAS 本身是开源的,社区版本可以免费使用,这使得它成为许多组织进行安全评估的经济高效的选择。
- 强大的可扩展性: OpenVAS 的模块化设计使其易于扩展和集成其他安全工具。用户可以根据自己的需求定制扫描配置。
- 灵活的扫描选项: 用户可以根据需要配置各种扫描参数,例如目标主机、端口范围、扫描强度、要执行的 NVT 集合等。
- 全面的报告功能: OpenVAS 可以生成详细的扫描报告,包括 обнаруженные 漏洞的描述、风险级别、CVSS 评分、修复建议等。报告可以导出为多种格式(例如 HTML、PDF)。
- 风险分析: OpenVAS 可以根据漏洞的严重程度和潜在影响进行风险评估,帮助用户优先处理和修复关键漏洞。
- 与其他安全工具集成: OpenVAS 可以与其他安全工具和系统集成,例如 SIEM 系统,以实现更全面的安全管理。
- 性能优化: OpenVAS 提供了性能调整选项,以优化大型网络的扫描效率。
4. 使用场景
OpenVAS 广泛应用于各种场景,包括:
- 漏洞管理: 定期扫描网络和系统,识别和跟踪安全漏洞,以便及时修复。
- 渗透测试: 作为渗透测试工具箱的一部分,用于发现目标系统的潜在入口点。
- 安全审计: 评估组织的安全策略和配置的有效性。
- 合规性检查: 帮助组织满足各种安全合规性要求。
5. 优势与劣势
优势:
- 开源且免费(社区版)。
- 拥有庞大且持续更新的 NVT 数据库。
- 功能强大且灵活,可定制性强。
- 支持多种扫描类型和协议。
- 提供详细的报告和风险评估。
- 活跃的社区支持。
劣势:
- 与商业漏洞扫描器相比,用户界面可能不够直观(尤其对于初学者)。
- 配置和管理可能相对复杂,需要一定的技术知识。
- 社区支持可能不如商业产品的专业支持响应及时。
OpenVAS 是一款强大且灵活的开源漏洞扫描器,对于希望进行安全评估和漏洞管理的组织来说是一个非常有价值的工具。尽管可能需要一定的学习曲线,但其丰富的功能和持续更新的漏洞信息使其成为安全领域的重要组成部分。
二、本地安装部署
请注意: 本地部署 OpenVAS 涉及到操作系统、网络配置等,请确保您具备一定的 Linux 系统管理基础,并在操作前备份重要数据。以下步骤以常见的 Linux 发行版(如 Ubuntu 或 CentOS)为例进行说明。
1、直接在服务器上安装
这种方式是将 OpenVAS 的各个组件直接安装到您的 Linux 服务器上。
步骤:
-
更新系统软件包列表:
sudo apt update # Debian/Ubuntu 系统 sudo yum update # CentOS/RHEL 系统
-
安装 OpenVAS 相关软件包: OpenVAS 的软件包名称可能因 Linux 发行版和版本而略有不同。通常会包含
openvas-gsa
(Web 界面)、openvas-manager
(核心管理组件)、openvas-scanner
(扫描器)和openvas-cli
(命令行工具)。您可以使用包管理器搜索可用的 OpenVAS 软件包。-
Debian/Ubuntu:
sudo apt install openvas
或者,您也可以选择安装更细粒度的组件:
sudo apt install gvm gvm-tools openvas-scanner
-
CentOS/RHEL: 由于 CentOS/RHEL 官方仓库可能没有最新的 OpenVAS 软件包,您可能需要添加 Greenbone 的官方软件源。请访问 Greenbone 官方网站查找适用于您系统的软件源配置信息。添加软件源后,再执行安装命令:
sudo yum install openvas
同样,您也可以选择安装更细粒度的组件。
-
-
配置和初始化 OpenVAS: 安装完成后,您需要进行一些初始化配置,例如设置管理员用户、更新 NVT 数据库等。Greenbone 提供了
gvmd
命令行工具来管理 OpenVAS。-
初始化 GVM 数据库:
sudo gvmd --create-user=admin --new-password=<your_admin_password> sudo gvmd --rebuild-gvmd
将
<your_admin_password>
替换为您希望设置的管理员密码。 -
更新 NVT 数据库:
sudo greenbone-nvt-sync
这个过程可能需要一些时间,取决于您的网络速度。
-
更新 SCAP 数据:
sudo greenbone-scapdata-sync
-
更新 CERT 数据:
sudo greenbone-certdata-sync
-
-
启动 OpenVAS 服务: 使用 systemd 或 service 命令启动 OpenVAS 相关服务(例如
gvmd
和gsad
)。-
使用 systemd (较新的系统):
sudo systemctl start gvmd sudo systemctl start gsad sudo systemctl enable gvmd # 设置开机自启 sudo systemctl enable gsad # 设置开机自启
-
使用 service (较旧的系统):
sudo service gvmd start sudo service gsad start sudo chkconfig gvmd on # 设置开机自启 (CentOS/RHEL) sudo chkconfig gsad on # 设置开机自启 (CentOS/RHEL)
-
-
访问 OpenVAS Web 界面 (GSA): 在您的 Web 浏览器中输入服务器的 IP 地址或域名,默认端口是
9392
。例如:https://your_server_ip:9392
。使用您在步骤 3 中创建的管理员用户名和密码登录。
2、使用虚拟机部署
使用虚拟机可以提供一个隔离的环境,方便您测试和使用 OpenVAS,而不会影响到您的主机系统。
步骤:
-
下载 OpenVAS 虚拟机镜像: Greenbone 官方通常会提供预配置好的 Greenbone Community Edition (GCE) 虚拟机镜像。您可以在 Greenbone 官网的下载页面或社区论坛中找到。
- Greenbone 官方下载: 访问 Greenbone Free: Get Your Free Download - Greenbone,查找 "Virtual Machines" 或 "Greenbone Community Edition" 部分。您可能需要注册才能下载。
- 第三方源: 一些安全社区或个人也会分享预配置的 OpenVAS 虚拟机镜像,但请务必从可信的来源下载,并验证镜像的完整性。
-
安装虚拟机软件: 您需要安装一个虚拟机管理软件,例如:
- VirtualBox: 免费且跨平台,可在 Oracle VirtualBox 下载。
- VMware Workstation Player (免费个人使用) / VMware Workstation Pro (商业使用): 可在 https://www.vmware.com/ 下载。
- Hyper-V (Windows 内置): 如果您使用的是 Windows 专业版或企业版,可以使用 Hyper-V。
-
导入虚拟机镜像: 在您的虚拟机管理软件中,选择导入虚拟电脑(VirtualBox)或打开虚拟机(VMware)。选择您下载的 OpenVAS 虚拟机镜像文件(通常是
.ova
或.ovf
格式)。 -
配置虚拟机网络: 根据您的网络环境配置虚拟机的网络设置。常见的选项包括:
- 桥接模式 (Bridged Networking): 虚拟机将直接连接到您的物理网络,并获得与主机在同一网段的 IP 地址。
- 网络地址转换 (NAT): 虚拟机将通过主机共享网络连接,并使用主机分配的内部 IP 地址。
- 仅主机模式 (Host-only Networking): 虚拟机只能与主机进行通信。
建议初学者使用桥接模式,方便从主机访问 OpenVAS Web 界面。
-
启动虚拟机: 启动导入的 OpenVAS 虚拟机。
-
登录虚拟机: 您可能需要查看 Greenbone 官方文档或虚拟机镜像的说明,了解默认的登录用户名和密码。
-
查找虚拟机 IP 地址: 登录虚拟机后,使用
ip addr
或ifconfig
命令查找虚拟机的 IP 地址。 -
访问 OpenVAS Web 界面 (GSA): 在您的主机 Web 浏览器中输入虚拟机的 IP 地址,通常使用 HTTPS 和端口
9392
。例如:https://<虚拟机IP地址>:9392
。使用虚拟机中预设的或您在初始化时设置的管理员凭据登录。
3、使用 Docker 部署
使用 Docker 可以快速部署和管理 OpenVAS,并且提供了一定的隔离性。
前提条件:
- 服务器上已经安装了 Docker 和 Docker Compose。
步骤:
-
创建 Docker Compose 文件 (例如
docker-compose.yml
): 创建一个 YAML 文件来定义 OpenVAS 的各个服务。以下是一个基本的docker-compose.yml
示例:version: '3.7'services:redis:image: redis:latestrestart: unless-stoppedvolumes:- redis_data:/datapostgres:image: postgres:13restart: unless-stoppedenvironment:POSTGRES_USER: gvmPOSTGRES_PASSWORD: <your_postgres_password>POSTGRES_DB: gvmdvolumes:- postgres_data:/var/lib/postgresql/datagvmd:image: greenbone/gvmd:latestrestart: unless-stoppeddepends_on:- postgres- redisenvironment:POSTGRES_HOST: postgresPOSTGRES_USER: gvmPOSTGRES_PASSWORD: <your_postgres_password>POSTGRES_DB: gvmdGVM_USER: adminGVM_PASSWORD: <your_gvm_password>volumes:- gvmd_data:/var/lib/gvmports:- "9393:9393" # 用于 OSP 协议scanner:image: greenbone/openvas-scanner:latestrestart: unless-stoppeddepends_on:- redisvolumes:- scanner_data:/var/lib/openvasgsad:image: greenbone/gsad:latestrestart: unless-stoppeddepends_on:- gvmdports:- "9392:9392"environment:GVM_HOST: gvmdGVM_PORT: 9393volumes:redis_data:postgres_data:gvmd_data:scanner_data:
请务必替换
<your_postgres_password>
和<your_gvm_password>
为您自己的安全密码。 您也可以根据需要修改端口映射。 -
启动 Docker Compose: 在包含
docker-compose.yml
文件的目录下,运行以下命令:docker-compose up -d
这会下载并启动 OpenVAS 的各个容器。第一次启动可能需要一些时间来下载镜像。
-
等待服务启动: 使用
docker-compose logs -f
命令查看容器的日志,等待所有服务成功启动。 -
访问 OpenVAS Web 界面 (GSA): 在您的 Web 浏览器中输入服务器的 IP 地址或域名,使用您在
docker-compose.yml
文件中设置的GVM_PASSWORD
(默认用户名为admin
)登录,端口通常是9392
。例如:https://your_server_ip:9392
。
Docker 部署的优点:
- 快速部署: 通过 Docker 镜像可以快速部署 OpenVAS。
- 隔离性: 容器之间相互隔离,减少了依赖冲突。
- 易于管理: 使用 Docker Compose 可以方便地管理多个 OpenVAS 组件。
- 可移植性: Docker 容器可以在不同的支持 Docker 的环境中运行。
Docker 部署的缺点:
- 资源占用: 运行多个容器可能会占用一定的系统资源。
- 配置复杂性: 理解 Docker 和 Docker Compose 的概念可能需要一些时间。
以上介绍了 OpenVAS 本地部署的三种主要方式。您可以根据自己的技术水平、需求和环境选择最适合您的方法。直接在服务器上安装提供了最大的灵活性,但需要较多的手动配置。使用虚拟机提供了隔离的环境,方便测试和使用。而 Docker 部署则更加轻便和易于管理。
三、社区版和商业版对比
OpenVAS 的免费版是社区版(Greenbone Community Edition, GCE),它与 Greenbone 的商业版本(Greenbone Security Manager, GSM 设备和云服务)之间存在一些关键区别。以下是详细的对比:
1、核心功能(两者共有):
- 漏洞扫描: 无论是社区版还是商业版,其核心都是强大的 OpenVAS 扫描器,能够对网络、系统和应用程序进行全面的漏洞扫描。
- NVT 规则库: 两者都依赖于漏洞测试规则库(NVT)来检测各种安全弱点。社区版使用 Greenbone 社区规则库,而商业版使用更广泛且更新更频繁的 Greenbone 企业规则库。
- Web 界面 (GSA): 两者都提供基于 Web 的用户界面(Greenbone Security Assistant)来管理扫描、查看结果和生成报告。
- 支持的协议: 两者都支持各种常见的互联网和工业协议进行扫描。
- 认证与非认证扫描: 两者都可以进行需要凭据的认证扫描和不需要凭据的非认证扫描。
- 报告: 两者都能生成详细的漏洞扫描报告。
2、主要区别:
Greenbone 社区版 (GCE) vs. Greenbone 商业版 (GSM / 云服务) 对比:
Greenbone 社区版 (GCE)
- 漏洞规则库: Greenbone 社区规则库(更新频率较低,覆盖范围相对较小)。
- 技术支持: 社区支持(通过论坛和邮件列表)。
- 系统更新: 用户自行负责,依赖底层操作系统,主版本升级可能复杂。
- 管理功能: 基本的漏洞管理功能。
- 可扩展性与性能: 取决于用户硬件和配置,用户需自行优化。
- 易用性: 设置和维护可能对初学者来说更复杂。
- 高可用性与冗余: 需要用户手动配置。
- 备份与恢复: 用户自行负责实施备份解决方案。
- 部署选项: 可直接安装在各种操作系统、虚拟机、Docker 中。
- 成本: 免费。
Greenbone 商业版 (GSM / 云服务)
- 漏洞规则库: Greenbone 企业规则库(每日更新,覆盖范围更广、更及时,包含更多零日漏洞信息)。
- 技术支持: 专业的 SLA 技术支持(服务级别协议)。
- 系统更新: 无缝且经过测试的系统和软件更新,通常包含版本升级。
- 管理功能: 高级的漏洞管理功能,包括集中管理、复杂报告和分析、合规性报告、资产管理、工作流集成、RBAC 等。
- 可扩展性与性能: 设备经过性能优化,云服务提供可扩展的资源。
- 易用性: 交钥匙解决方案(设备)或简单的账户注册(云服务),设计更易于使用。
- 高可用性与冗余: 一些设备和云服务中内置高可用性和冗余选项。
- 备份与恢复: 集成的备份和恢复机制。
- 部署选项: 提供物理设备、虚拟设备和云服务。
- 成本: 基于订阅的许可费用。
3、关键区别的详细说明:
- 漏洞规则库: 这是最关键的区别之一。商业版中的 Greenbone 企业规则库更新更频繁,通常包含更广泛的漏洞测试,包括对新兴威胁甚至一些零日漏洞的更及时信息。这使得商业版在漏洞检测的准确性和及时性方面通常优于社区版。
- 技术支持: 社区版依赖于社区论坛和邮件列表的支持,虽然可以获得帮助,但无法保证响应时间或专业的支持服务。商业版提供直接的 Greenbone 技术支持团队,并有服务级别协议 (SLA),对于需要及时帮助并高度依赖扫描器的组织至关重要。
- 更新与维护: 社区版的更新和升级需要用户自行管理,有时会比较复杂,尤其是在处理底层操作系统依赖关系时。商业版简化了此过程,提供自动化且经过全面测试的更新,减少了管理负担。
- 管理功能: 商业版的 GSM 设备和云服务超越了基本的扫描功能,提供全面的漏洞管理平台。这包括根据资产重要性组织和优先处理漏洞、跟踪修复工作、生成合规性报告以及与其他安全工具集成等功能,从而构建更全面的安全态势。这些高级管理功能在社区版中通常不可用。
- 可扩展性与性能: 商业设备通常针对企业环境中的扫描性能进行了优化。云服务提供可扩展性以应对大型和动态的基础设施。在社区版中,性能调优和扩展需要用户自行完成。
- 易用性: 虽然核心扫描引擎相同,但商业版通常更注重提供更友好的用户体验,包括简化的设置、直观的界面和集成的工作流程。社区版的初始设置和持续维护可能需要更多的技术专业知识。
总结:
- Greenbone 社区版 (GCE): 是一款强大且免费的开源漏洞扫描器,适用于个人、拥有技术专长的小团队以及学习和测试目的。它提供了核心的扫描功能,但需要更多的自我管理,并且漏洞规则库的覆盖范围和更新频率不如商业版。
- Greenbone Security Manager (GSM) / 云服务: 是为需要企业级漏洞管理的组织设计的商业产品。它们提供更全面的漏洞规则库、专业的支持、无缝更新、高级管理功能、更好的可扩展性和易用性,所有这些都基于订阅模式。
选择社区版还是商业版很大程度上取决于组织的规模、安全需求、技术能力和预算。对于具有关键安全需求且内部专业知识有限的组织来说,商业版提供的功能和支持通常更有价值。
四、基础版介绍
Greenbone Basic 是一款由 Greenbone Networks 推出的商业级漏洞扫描解决方案,主要面向中小型企业 (SMEs)。它旨在提供企业级的漏洞管理能力,但通常在功能和价格上会介于免费的 Greenbone Community Edition (GCE) 和更全面的 Greenbone Security Manager (GSM) 之间。
以下是 Greenbone Basic 相对于 GCE 和 GSM 的主要特点和区别:
1、相对于 Greenbone Community Edition (GCE):
- Vulnerability Feed: Greenbone Basic 通常包含 Greenbone Enterprise Feed,该规则库比 GCE 使用的 Greenbone Community Feed 更新更频繁、覆盖范围更广,并包含更多最新的漏洞信息,包括对零日漏洞的更快响应。
- Support: Greenbone Basic 提供商业技术支持,通常有明确的服务级别协议 (SLA),这与 GCE 的社区支持形成鲜明对比。
- Updates: 系统和软件更新通常由 Greenbone 提供和管理,更加便捷和可靠,而 GCE 的更新则需要用户自行负责。
- Ease of Use: Greenbone Basic 的设计通常更注重易用性,提供了更友好的界面和更简化的工作流程,降低了用户的技术门槛。
- Management Features: 虽然可能不如全功能的 GSM 强大,但 Greenbone Basic 通常会提供比 GCE 更高级的漏洞管理功能,例如更强大的报告功能、一定的资产管理能力等。
- Scalability & Performance: Greenbone Basic 的性能通常会优于用户自行搭建和配置的 GCE,并且在一定程度上具备更好的可扩展性以适应中小型企业的需求。
- Cost: Greenbone Basic 是商业产品,需要购买订阅或许可证,而 GCE 是免费的。
2、相对于 Greenbone Security Manager (GSM) / 云服务:
- Functionality: 全功能的 GSM 通常提供最全面的漏洞管理功能,包括更高级的报告和分析、全面的合规性报告、更完善的资产管理、工作流和工单系统集成、更精细的 RBAC 等。Greenbone Basic 在这些高级功能上可能会有所限制。
- Scalability & Performance: GSM 设备和云服务通常具备更高的可扩展性和更优化的性能,能够更好地应对大型和复杂的企业环境。
- Deployment Options: GSM 提供多种部署选项,包括物理设备、虚拟设备和云服务,而 Greenbone Basic 的部署方式可能有所限制。
- Cost: Greenbone Basic 的价格通常会低于全功能的 GSM 设备和云服务,使其成为中小型企业更经济的选择。
3、总结
总结来说,Greenbone Basic 定位为中小型企业的商业级漏洞扫描解决方案,它在以下方面优于免费的 GCE:
- 更及时和全面的漏洞信息 (Enterprise Feed)
- 专业的商业技术支持
- 更便捷的更新管理
- 更好的易用性
- 更强的管理功能
同时,它在功能和可扩展性方面可能不如更高端的 GSM 产品,但价格上更具优势,更符合中小型企业的预算。
如果是中小型企业,希望获得比免费社区版更可靠、更易用且功能更强的漏洞扫描解决方案,Greenbone Basic 可能是一个不错的选择。
相关文章:
开源漏洞扫描器:OpenVAS
一、OpenVAS介绍 OpenVAS (Open Vulnerability Assessment System) 是一款功能强大的开源漏洞扫描器。它由 Greenbone Networks 开发和维护,是 Greenbone 安全管理器 (GSM) 产品的基础,同时也有免费的社区版本(Greenbone Community Edition&…...
PCB封装主要组成元素
PCB(Printed Circuit Board,印刷电路板)封装是指将电子元件固定在 PCB 上,并实现电气连接的方式。主要包括以下几类。 1. 焊盘(Pad) 作用:焊盘是 PCB 封装中最重要的元素之一,它是…...
STC8H DMA 串口1全双工中断方式收发通讯C语言
/************* 功能说明 ************** 本例程基于STC8H8K64U为主控芯片的实验箱9进行编写测试,STC8H系列带DMA模块的芯片可通用参考. 串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的…...
考研英一学习笔记
2024 年全国硕士研究生招生考试 英语(一)试题 (科目代码:201) Section Ⅰ Use of English Directions: Read the following text. Choose the best word(s) for each numbered blank and mark A, B, C or D on the ANS…...
深度理解spring——BeanFactory的实现
BeanFactory Spring之BeanFactory什么是BeanFactoryApplicationContext相对BeanFactory实现的功能性扩展1. MessageSource2. ResourcePatternResolver3. ApplicationEventPublisher4. EnvironmentCapable通用ApplicationContext实践实现BeanFactoryBeanFactory后处理器排序让谁…...
半导体---检测和量测
目录 1.简介2.AOI(检测) 1.简介 半导体晶圆制造前道量测和检测设备。 公司产品涵盖光学薄膜量测、光学关键尺寸量测、光学衍射套刻量测、光学集成量测、X射线薄膜量测、X射线材料性能量测、X射线成分及表面污染量测等系列产品及解决方案。 半导体领域的量测和AOI如同半导体制造…...
CentOS 7 磁盘分区详细教程
CentOS 7 磁盘分区详细教程 在服务器管理和运维过程中,磁盘分区是一项基础且重要的操作。合理的磁盘分区可以提高数据存储的安全性、高效性,方便系统管理与维护。本文将详细介绍在 CentOS 7 系统中进行磁盘分区的具体步骤和方法。 一、准备工作 1.1 确…...
EasyRTC音视频实时通话在线教育解决方案:打造沉浸式互动教学新体验
一、方案概述 EasyRTC是一款基于WebRTC技术的实时音视频通信平台,为在线教育行业提供了高效、稳定、低延迟的互动教学解决方案。本方案将EasyRTC技术深度整合到在线教育场景中,实现师生间的实时音视频互动等核心功能,打造沉浸式的远程学习体…...
栈(Stack)和队列(Queue)
栈 栈(stack)是一种特殊的线性表,只允许在固定的一端进行插入和删除操作。 我们可以将栈近似看作一个桶,要取出桶底的元素,就要将桶顶的元素先取出,再将底部元素取出,也可以叫做后进先出。 这…...
1、AI及LLM基础:Python语法入门教程
Python语法入门教程 这是一份全面的Python语法入门教程,涵盖了注释、变量类型与操作符、逻辑运算、list和字符串、变量与集合、控制流和迭代、模块、类、继承、进阶等内容,通过详细的代码示例和解释,帮助大家快速熟悉Python语法。 文章目录 Python语法入门教程一、注释二…...
跨境电商关键词分类打标
你是一名顶级的亚马逊关键词分析专家,你将用你的亚马逊运营专业的经验帮助我做精准的关键词打标。 首先你会学习以下的知识内容,以便于你后续的关键词分析。 人群词是什么? 是指直接描述或定位特定用户群体的关键词或标签,用于精准识别目标受众的身份、需求或行为特征。 …...
C# 结构(Struct)
原文:C# 结构(Struct)_w3cschool 在 C# 中,结构是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构。 结构是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本…...
Java Collections工具类指南
一、Collections工具类概述 java.util.Collections是Java集合框架中提供的工具类,包含大量静态方法用于操作和返回集合。这些方法主要分为以下几类: 排序操作查找和替换同步控制不可变集合特殊集合视图其他实用方法 二、排序操作 1. 自然排序 List&…...
BBRv2,v3 吞吐为什么不如 BBRv1
为什么 BBRv2/3 测试下来吞吐远不如 2016 年底的 BBRv1,这个事曾经提到过很多次,今天分析一下原理。注意三个事实: BBR 是一种拥塞控制算法;BBR 已经迭代到了 v3 版本;BBRv3 的 “性能” 远不如 BBRv1. 第二点有点不…...
Java集成【邮箱验证找回密码】功能
目录 1.添加依赖 2.选择一个自己的邮箱,作为发件人角色。 3.编写邮箱配置【配置发件人邮箱】 4.编写邮箱配置类 5.编写controller业务代码 6.演示效果 7.总结流程 8.注意 结语 1.添加依赖 <!--导入邮箱依赖--> <dependency><groupId>or…...
Java微服务架构设计与实践 - 面试实战
Java微服务架构设计与实践 - 面试实战 在互联网大厂的Java求职者面试中,微服务架构设计是一个常见的考察点。本文通过严肃的面试官和资深Java架构师马架构之间的对话,详细展示了如何回答SpringCloud相关的核心技术问题。 第一轮提问 面试官࿱…...
Java后端开发面试题(含答案)
在广州一个小公司(BOSS标注是20-99人,薪资2-3k左右),直接面试没有笔试,按流程自我介绍,然后直接拿着简历问项目场景,问题是结合场景题和八股文。废话不多说,直接分享面试题目个大家做参考。 1、…...
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第九篇文章,将重点探讨 高可用性(High Availability, HA) 和 集群管理,包括数据库高可用方案、Sharding-JDBC 的故…...
Node.js 学习入门指南
Node.js 学习入门指南 Node.js 是一种流行的开源、跨平台的 JavaScript 运行时环境,它使开发者能够在服务器端运行JavaScript代码。本篇文章旨在帮助初学者快速入门并掌握Node.js的基础知识和常用技巧。 一、什么是Node.js? 定义 Node.js 是一个基于…...
数智视融合驱动未来,Al+数字孪生重塑价值|2025袋鼠云春季数智发布会回顾
4月16日,袋鼠云成功举办了“做DataAI的长期主义者——2025年袋鼠云春季数智发布会”,从智能分析决策平台到AI大模型应用,从数字孪生中枢到AI增强型数字世界,勾勒出企业数智化转型的进化图谱,真正实现AI赋能企业业务&am…...
nfs服务原理、搭建手册、安全配置建议及异常定位手段
一、NFS服务原理 NFS(Network File System)是一种基于TCP/IP协议的网络文件共享系统,允许客户端像访问本地文件一样访问远程服务器上的共享目录。其核心原理依赖于RPC(Remote Procedure Call)机制,具体流程…...
第十三届蓝桥杯 2022 C/C++组 修剪灌木
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P8781 [蓝桥杯 2022 省 B] 修…...
MySQL:数据库设计
目录 一、范式 二、第一范式 二、第二范式 三、第三范式 四、设计 (1)一对一关系 (2)一对多关系 (3)多对多关系 一、范式 数据库的范式是一种规则(规范),如果我们…...
OpenManus与OWL部署及体验报告
OpenManus与OWL对任务的执行结果均不及Manus;二者比较,Owl达成率更高;二者使用过程中均会消耗大量tokens,单个问题成本高。 一、部署 OpenManus:https://github.com/mannaandpoem/OpenManus.git OWL:https…...
【Pandas】pandas DataFrame pow
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
Red:1靶场环境部署及其渗透测试笔记(Vulnhub )
环境介绍: 靶机下载: https://download.vulnhub.com/red/Red.ova 本次实验的环境需要用到VirtualBox(桥接网卡),VMware(桥接网卡)两台虚拟机(网段都在192.168.152.0/24࿰…...
【多源01BFS】Codeforce:Three States
题干 翻译 给定一个 nm 的网格地图,包含以下元素: .:表示荒地(可以修建道路)。 #:表示岩石(不可通行)。 数字 1、2、3:分别表示三个国家的位置。 目标:将…...
在深度学习中FLOPs和GFLOPs的含义及区别
在深度学习中,FLOPs和GFLOPs是衡量计算性能的关键指标,但两者的定义和应用场景不同: 1. 定义与区别 • FLOPs(Floating-point Operations) 表示模型或算法执行时所需的浮点运算总次数,用于衡量模型的计算复…...
SpringBoot入门实战(项目搭建、配置、功能接口实现等一篇通关)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 SpringBoot入门实战(项目搭建、配…...
昆仑万维开源SkyReels-V2,解锁无限时长电影级创作,总分83.9%登顶V-Bench榜单
昆仑万维开源了全球首个基于扩散强迫框架(Diffusion-forcing)的无限时长视频生成模型——SkyReels-V2。这一模型以总分83.9%的优异成绩登顶权威评测V-Bench1.0榜单,并在质量维度获得84.7%的评分,刷新了开源视频生成技术的天花板。…...
精选面试题
1、js中set和map的作用和区别? 在 JavaScript 中,Set 和 Map 是两种非常重要的集合类型 1、Set 是一种集合数据结构,用于存储唯一值。它类似于数组,但成员的值都是唯一的,没有重复的值。Set 中的值只能是唯一的,任何…...
【技术派后端篇】技术派中 Session/Cookie 与 JWT 身份验证技术的应用及实现解析
在现代Web应用开发中,身份验证是保障系统安全的重要环节。技术派在身份验证领域采用了多种技术方案,其中Session/Cookie和JWT(JSON Web Token)是两种常用的实现方式。本文将详细介绍这两种身份验证技术在技术派中的应用及具体实现…...
【CAPL实战:以太网】对IPv4报文的Payload部分进行分片并创建分片包
As we know,TCP/IP协议栈网络层接收到来自上层的数据时,并不是简单地添加报头发送出去,而是会受到来自网卡配置参数MTU的约束。也就是从网卡上发送出去的以太网帧报文的数据部分的长度不能大于MTU值。即网络层头部 + 有效载荷不能大于MTU。 所以网络层在发送上层的数据时,…...
Spring Security认证流程
认证是Spring Security的核心功能之一,Spring Security所提供的认证可以更好地保护系统的隐私数据与资源,只有当用户的身份合法后方可访问该系统的资源。Spring Security提供了默认的认证相关配置,开发者也可以根据自己实际的环境进行自定义身…...
Spring Security基础入门
本入门案例主要演示Spring Security在Spring Boot中的安全管理效果。为了更好地使用Spring Boot整合实现Spring Security安全管理功能,体现案例中Authentication(认证)和Authorization(授权)功能的实现,本案…...
Axure疑难杂症:母版菜单设置打开链接后菜单选中效果
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:菜单打开链接后子菜单选中效果 主要内容:母版设计、选中效果 应用场景:页面赋值 案例展示: 案例视频:...
4月份最新---Meta发明了一种很新的Transformer
在自然语言处理领域,当模型处理长上下文时,如何在纷繁的 Token 中精准捕捉关键信息、过滤无关干扰,始终是注意力机制优化的核心方向。标准多头注意力(Multi-Head Attention, MHA)通过查询 - 键 - 值(Q-K-V)的点积相似性计算注意力权重,虽能定位单个 Token 级别的语义关…...
Spring Boot知识点详解
打包部署 <!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐> <build><plugins> <plugin> <groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐maven‐plugin</artifactId&g…...
基于 EFISH-SBC-RK3588 的无人机多光谱/红外热成像边缘计算方案
一、硬件架构设计 核心算力平台(EFISH-SBC-RK3588) 处理器性能:搭载 8 核 ARM 架构(4Cortex-A762.4GHz 4Cortex-A551.8GHz),集成 6 TOPS NPU 与 Mali-G610 GPU,支持多光谱图像实时融…...
字典与集合——测试界的黑话宝典与BUG追捕术
主题:“字典是测试工程师的暗号手册,集合是BUG的照妖镜” 一、今日目标 ✅ 掌握字典的「键值对暗号体系」与集合的「去重妖法」✅ 开发《测试工程师黑话词典》,让新人秒变老司机✅ 统计自动化测试结果中的高频BUG类型(附赠甩锅指…...
QT构建即时通讯应用--WebSocket全面解析与实战指南
概述 WebSocket协议因其低延迟和双向通信的能力而成为了现代Web和桌面应用程序的首选,Qt框架提供了强大的WebSocket支持,使得开发者可以轻松地集成这一技术到自己的项目中 WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许服务器主动向客户端推…...
复杂性决策-思维训练
思维训练 1.模式识别 观察、复杂、不确定、波动、模糊 –找出必要和非必要因素 –识别重大威胁和机遇 2.系统分析 为复杂情景构建系统心智模型 利用模型识别模式做出预测,指定有效策略 3.心智敏锐度 利用不同层次的分析探索挑战的能力,对其他利益相关方在…...
缓存集群技术深度解析:从原理到实战
缓存集群技术深度解析:从原理到实战 一、缓存集群核心定位与架构选型 1. 集群模式核心价值 缓存集群通过数据分片、高可用保障、水平扩展解决单节点瓶颈,核心能力包括: 数据分片:将数据分散到多个节点,突破单节点内…...
Qt C++/Go/Python 面试题(持续更新)
目录 1、封装、继承、多态是什么? 2、final标识符的作用是什么? 3、介绍一下虚函数 4、介绍一下智能指针 5、介绍一下左值、右值、左值引用、右值引用 6、指针和引用有什么区别? 7、define和const的区别是什么? 8、C程序的…...
Spring Cloud Alibaba VS Spring Cloud
Spring Cloud Alibaba 与 Spring Cloud 组件对比 服务发现与注册中心 功能Spring CloudSpring Cloud Alibaba对比说明核心组件EurekaNacosNacos 支持动态配置管理、健康检查更灵活,且提供 DNS 服务发现能力。健康检查…...
containerd 配置代理
1.systemd unit file 为 containerd 服务创建一个 systemd 插入目录 mkdir /etc/systemd/system/containerd.service.d/创建名为 /etc/systemd/system/containerd.service.d/http-proxy.conf 的文件 添加 HTTP_PROXY 环境变量 [Service] Environment"HTTP_PROXYhttp:/…...
专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展
一、什么是专家系统 (一)基本思想与定义 1. 核心思想:知识与推理的分离 迄今为止,关于专家系统还没有一个公认的严格定义,一般认为: (1)它是一个智能程序系统; &…...
什么是公链?公链项目有哪些?公链项目开发
公链技术全景解析:定义、生态与开发指南(2025年深度版) 一、公链的本质与核心特征 1.1 公链的定义 公链(Public Blockchain)是一种完全开放、无需许可的区块链网络架构,其核心特征在于去中心化、透明…...
如何解析商品详情页面
解析商品详情页面是爬虫开发中的一个重要环节。由于商品详情页面通常包含丰富的信息,如商品名称、价格、描述、图片等,因此需要仔细分析页面结构并提取所需数据。以下是一个详细的步骤指南,展示如何使用 Java 和 Jsoup 解析商品详情页面。 一…...
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
整个应用(包括 View 和 Compose 部分)的浅色/深色模式保持一致。以下是完整的解决方案: 全局配置方案 1. 基础主题设置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定义统一的主题: <!-- values/themes.x…...