【网络安全】CI/CD 流水线漏洞
【网络安全】CI/CD 流水线漏洞
- 1. 保护您的软件管道:CI/CD 安全
- 2. 什么是 CI/CD 以及它为何重要?
- 2.1 持续集成(CI):构建坚实的基础
- 2.2 持续交付(CD):准备发布
- 2.3 持续部署(CD):全自动发布
- 2.4 持续交付和部署的安全优势
- 2.5 为什么安全的 CI/CD 管道是不可协商的
- 3. 常见的 CI/CD 管道漏洞:需要注意什么
- 4. 构建安全的 CI/CD 管道:纵深防御
- 5. 结论:安全的 CI/CD – 安全软件
- 关键要点
- Reference
1. 保护您的软件管道:CI/CD 安全
基于您对漏洞管理的理解,本阅读材料重点介绍现代软件开发的一个关键领域:CI/CD 流水线。正如组织定期评估其系统中的漏洞一样,用于自动化软件发布流程的 CI/CD 流水线也需要严格的漏洞管理。本阅读材料将探讨 CI/CD 流水线中的具体漏洞,以及如何应用漏洞管理原则来保护这些流水线,从而确保软件交付流程的稳健性和安全性。
持续集成、持续交付和持续部署 (CI/CD) 流水线对于现代软件开发至关重要。它们帮助团队更快、更高效地交付软件。但是,与任何强大的工具一样,如果管理不当,CI/CD 流水线也可能带来安全风险。
在本指南中,您将探索 CI/CD 流水线中的常见漏洞。您将了解为何保护这些流水线至关重要,以及如何整合安全实践以构建稳健安全的软件开发流程。通过了解这些漏洞并实施最佳实践,您可以将 CI/CD 流水线转变为网络安全策略的关键组成部分。
2. 什么是 CI/CD 以及它为何重要?
CI/CD 自动化了从代码创建到部署的整个软件发布流程。这种自动化使现代开发团队能够敏捷地快速响应用户需求。让我们分解一下其中的关键部分:
2.1 持续集成(CI):构建坚实的基础
持续集成 (CI)是指频繁地将不同开发人员的代码更改合并到一个中心位置。这会触发自动化流程,例如构建软件和运行测试。CI 通过自动化流程捕获问题:每次集成代码时,系统都会自动构建和测试代码。这种即时反馈循环能够在集成问题发生时立即发现。CI 有助于及早发现集成问题,从而提高代码质量。您可以将其视为流水线的基础。
2.2 持续交付(CD):准备发布
持续交付意味着您的代码始终可以发布给用户。通过自动化测试后,代码会自动部署到暂存环境(练习环境)或准备最终发布。通常,在正式上线生产环境之前仍需进行手动审批,以提供一个控制点。
2.3 持续部署(CD):全自动发布
持续部署使整个发布流程自动化。通过所有自动化检查的变更将自动直接部署到实际生产环境,无需人工审批。这一切都是为了速度和效率。
2.4 持续交付和部署的安全优势
您可能想知道安全性如何融入所有这些自动化流程。好消息是,持续交付和部署实际上可以增强安全性。持续交付和部署允许您在部署流水线中构建安全检查。这确保了只发布经过全面审查的软件版本。
这些自动安全检查可以包括:
动态应用程序安全测试 (DAST):在真实的暂存环境中发现正在运行的应用程序中漏洞的自动化测试。
安全合规性检查:自动检查确保软件符合您组织的安全规则和政策。
基础设施安全验证:检查确保托管软件的系统是安全的。
2.5 为什么安全的 CI/CD 管道是不可协商的
掌握 CI/CD 的强大功能至关重要。管道保护并非可有可无,而是至关重要。请考虑以下几点:
安全自动化: CI/CD 可自动执行重复性任务:构建、测试、部署。安全实施自动化可以减少手动操作造成的错误,加快流程,更重要的是,减少造成漏洞的人为错误。然而,不安全的自动化会大规模地引入漏洞。
通过安全检查提升代码质量: CI/CD 中的自动化测试会在发布前严格检查代码。至关重要的是,这其中也包含自动化安全测试。这可以减少最终软件中的错误和安全漏洞,但前提是安全测试必须有效地集成到流程中。
加快安全更新的上市时间: CI/CD 加速发布。这可以更快地交付新功能、错误修复和安全更新,从而缩短对用户需求和安全威胁的响应时间。快速部署安全更新是高度安全的 CI/CD 流程的一项重要安全优势。
以安全为重点,增强协作与反馈: CI/CD 鼓励开发、安全、测试和运营团队之间的协作。快速的反馈循环有助于在开发早期识别和解决漏洞。这种协作环境对于在流程中构建安全性并主动解决漏洞至关重要。
降低风险: CI/CD 带来的频繁、小规模发布比大规模、低频率发布的风险更低。如果出现问题(包括安全问题),查明并修复问题会变得更加容易。这同样适用于安全漏洞;在持续进行安全监控和测试的情况下,小规模、频繁的发布可以限制任何单个版本中引入的安全漏洞的潜在影响。
本质上,CI/CD 是现代敏捷软件开发的引擎。它能够实现可靠、高效且响应迅速的软件交付。然而,不安全的 CI/CD 流水线可能成为漏洞的主要入口点。
3. 常见的 CI/CD 管道漏洞:需要注意什么
了解 CI/CD 的优势只是成功的一半。您还需要了解潜在的安全漏洞。以下是一些需要注意的常见漏洞:
不安全的依赖关系:来自第三方代码的风险
CI/CD 流水线通常会使用许多第三方库和组件。如果这些组件存在已知漏洞(通用漏洞披露,简称 CVE),则这些漏洞可能会在自动构建过程中被不知不觉地添加到您的应用程序中。
行动步骤:定期扫描并更新您的依赖项。确保您使用的是所有外部组件的安全版本。
权限配置错误:控制访问
CI/CD 工具、代码库及相关系统中的访问控制薄弱是一个重大漏洞。未经授权的访问可能允许攻击者修改代码、管道配置或注入恶意内容。
行动步骤:使用基于角色的访问控制 (RBAC) 实施强大的访问管理。确保只有授权人员才能访问和更改关键管道元素。
缺乏自动化安全测试:缺少关键检查
未能在 CI/CD 流程中包含自动化安全测试是一个严重的错误。如果没有 SAST 和 DAST 这样的工具,您发布的软件几乎肯定会充满漏洞,这些漏洞直到上线后才会被发现,从而导致修复成本和工作量显著增加。
行动步骤:将自动化安全测试(SAST 和 DAST)集成到您的 CI/CD 流水线中。这应该是您安全 CI/CD 策略的核心部分。
暴露的秘密:保护敏感信息
将 API 密钥、密码和令牌等敏感数据直接硬编码到代码或管道设置中是一个严重的安全错误。这些机密一旦泄露,可能会导致重大安全漏洞。
行动步骤:切勿对机密信息进行硬编码。使用安全保管库或专用机密信息管理工具来存储和管理敏感信息。在整个团队中强制执行此做法。
不安全的构建环境:保护管道基础设施
CI/CD 环境本身(运行流水线的服务器和系统)需要安全。如果此环境存在漏洞,攻击者就有可能入侵它,从而篡改构建、注入恶意代码或窃取敏感数据。
行动步骤:强化构建环境。使用安全容器或虚拟机,最大限度地降低管道受损的风险。
4. 构建安全的 CI/CD 管道:纵深防御
为了主动解决这些漏洞,分层安全方法是关键。以下是 CI/CD 安全策略的基本最佳实践:
-
从一开始就集成安全性:拥抱 DevSecOps:采用DevSecOps思维模式。这意味着将安全性融入到开发的每个阶段,从规划到部署,甚至更远。这自然也包括将安全检查嵌入到您的 CI/CD 流水线中。
-
实施强大的访问控制:使用基于最小特权原则的严格权限策略。仅授予对代码、流水线设置和部署配置的必要访问权限。使用多重身份验证 (MFA) 和基于角色的访问控制 (RBAC) 等工具来保护您的 CI/CD 环境。
-
随时随地实现安全测试自动化:将自动化安全扫描和测试作为构建和部署流程的基本组成部分。SAST、软件组合分析 (SCA) 和 DAST 等工具并非可有可无,而是构建安全的 CI/CD 流程的必备工具,让您能够及早发现漏洞。
-
保持依赖项更新:维护所有第三方依赖项、库和 CI/CD 插件的最新清单。定期更新这些组件以修补安全漏洞 (CVE)。以下工具Dependabot和Snyk 可以自动化依赖管理。
-
安全的机密管理:切勿在代码或管道配置中硬编码敏感信息。需要使用专用的机密管理工具,例如 HashiCorp Vault 或 AWS Secrets Manager。在整个 CI/CD 流程中安全地存储、访问和轮换机密。
5. 结论:安全的 CI/CD – 安全软件
通过主动解决这些常见漏洞,并在 CI/CD 流程中实施安全最佳实践,您的软件团队可以构建和发布具有更强安全态势的应用程序。安全的 CI/CD 基础对于最大限度地降低安全风险,并为您的应用程序和基础架构构建更具弹性的整体安全策略至关重要。
关键要点
保护 CI/CD 流程的本质在于为软件发布流程提供强大的安全性,使工程师能够自信地开发、测试和部署代码,并抵御威胁。通过在 CI/CD 中构建安全性,您可以让您的团队快速可靠地发布功能、改进和关键安全更新,确保软件不仅高效交付,而且还具有最高级别的安全性,从而主动保护您的组织和客户。
Reference
-
Coursera
-
DevSecOps Using GitHub Actions: Building Secure CI/CD Pipelines.
https://medium.com/@rahulsharan512/devsecops-using-github-actions-building-secure-ci-cd-pipelines-5b6d59acab32 -
6 Steps for Success with CI/CD Securing Hardening.
https://spectralops.io/blog/ci-cd-security-hardening/ -
GitLab CI/CD - Hands-On Lab: Securing Scanning.
https://handbook.gitlab.com/handbook/customer-success/professional-services-engineering/education-services/gitlabcicdhandsonlab9/ -
How can you stay current with the latest problem solving techniques in Cloud Computing as a manager.
https://www.linkedin.com/advice/1/how-can-you-stay-current-latest-problem-solving-msk5e
相关文章:
【网络安全】CI/CD 流水线漏洞
【网络安全】CI/CD 流水线漏洞 1. 保护您的软件管道:CI/CD 安全2. 什么是 CI/CD 以及它为何重要?2.1 持续集成(CI):构建坚实的基础2.2 持续交付(CD):准备发布2.3 持续部署࿰…...
计算机是如何工作的(上)
对于学习JavaEE初阶为什么要知道计算机是如何工作的,是因为在未来我们写代码的时候,会出现一些bug,而在代码层面是看不出来的,所以我们需要了解一些关于计算机内部是如何工作的,从而提高代码的健壮度。 计算机的组成&…...
【SF顺丰】顺丰开放平台API对接(Java对接篇)
对接前置篇: 【SF顺丰】顺丰开放平台API对接(注册、API测试篇)_顺丰api接口对接指南-CSDN博客 1.实现效果展示 2.SF顺丰开放平台,JDK资源下载。 下载地址:顺丰开放平台 3.将下载的JDK放入项目中。 4.将JDK资源引入p…...
【KWDB创作者计划】_针对KWDB时序数据库(多副本集群环境)进行压力测试
【KWDB创作者计划】_针对KWDB时序数据库(多副本集群环境)进行压力测试 1. 概述2. 压测环境部署3. 生成测试数据4. 写入性能测试5. 查询性能测试7. 总结 1. 概述 KWDB是一款主要应用于工业物联网、数字能源、车联网、智慧产业等领域的时序数据库ÿ…...
24.中医知识问答删除历史对话功能前端代码实现
前端实现对话删除功能的完整指南 功能概述 前篇文章介绍了删除历史对话的后端开发,本篇将介绍如何在前端实现一个完整的对话删除功能,包括用户确认、API调用、状态管理和错误处理等关键环节。 功能拆解 1. 用户确认机制 javascript const confirmDe…...
在Cursor编辑器上部署MCP(Minecraft Coder Pack)完整指南
MCP(Minecraft Coder Pack)是用于反编译和修改Minecraft Java版代码的工具包。本教程将详细介绍如何在Cursor编辑器中配置和运行MCP,以便高效地进行Minecraft模组开发或代码研究。 1. 准备工作 1.1 所需工具 Cursor编辑器(基于VS…...
STM32——相关软件安装
本文是根据江协科技提供的教学视频所写,旨在便于日后复习,同时供学习嵌入式的朋友们参考,文中涉及到的所有资料也均来源于江协科技(资料下载)。 Keil5 MDK安装 1.安装Keil5 MDK2.安装器件支持包方法一:离线…...
蓝牙WiFi模组rtl8821cs在Android14调
环境 SDK: AOSP14 主控:RK3576 蓝牙:RTL8821CS 先记一下官网文档关于蓝牙的资料 蓝牙 | Android Open Source Project 还在调,先看看啥情况,点赞多或者想起来记录再回来 TODO...
MCP实践第一步--磕磕碰碰搭环境
由于deepseek-r1不支持function calling,所以我们采用了deepseek-v3进行实践,模型名称为deepseek-chat,在deepseek官网获取api-key。 一、参照MCP官网设置环境 创建项目目录 uv init mcp-client # 若没有uv,则先通过pip instal…...
Java并发:线程池
目录 一、核心概念与设计原理 1、线程池的核心价值 2、核心接口和类 3、线程池的核心构造参数 4、线程池工作流程 二、参数选择 1、任务队列选择 2、拒绝策略选择 3、常见线程池选择 4、参数调优 三、 应用 1、创建建议 2、生命周期管理:优雅关闭 3、…...
Kubernetes集群超配节点容量
目录: 1、节点超配简介2、创建 PriorityClass3、运行请求节点容量的 Pod4、调整占位资源请求5、设置所需的副本数量6、自动扩缩容组件6.1、手动方式6.2、自动方式 1、节点超配简介 节点超配是一种主动预留部分集群计算资源的策略。这种预留有助于减少在扩缩容事件期…...
每日一题(小白)回溯篇7
首先我们可以判断出这是一个dfs的题目,因为简言之就是要求最短路径。其次这个题目与直接找最短路径有所不同,增加了条件必须依次穿过指定的符号。无论坦克走到任何一点都有四个方向可以走(越界要判断),结束的条件是到达…...
rk3588上完成halcon的形状模型配准以及和opencv的图像转换
一、准备工作 1)安装好halcon,确保halcon的c的调用是正常的 2)编译好opencv 上面的两个步骤,均可以参考我的两个博文完成: Halcon在linux及ARM上的安装及c工程化_halcon linux-CSDN博客 RK3588上编译opencv 及基于…...
Spring Boot 断点续传实战:大文件上传不再怕网络中断
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、痛点与挑战 在网络传输大文件(如视频、数据集、设计稿)时,常面临: 上传中途网络中断需重新开始服务器内…...
Springboot集成websocket实现消息推送
假设有个需求需要多个用户同时在对应的消息面板实时查看相关接口的执行流程进度,此时可以可考虑使用websocket来实现结果进度推送 一、引入websocket依赖,并编写WebSocket配置类 <dependency><groupId>org.springframework.boot</group…...
PostgreSQL 用户资源管理
PostgreSQL 用户资源管理 PostgreSQL 提供了多种机制来管理和限制用户对数据库资源的使用,以下是全面的资源管理方法: 1 连接限制 1.1 限制最大连接数 -- 在 postgresql.conf 中设置 max_connections 100 -- 全局最大连接数-- 为特定用户设置连接限…...
Uniapp:pages.json页面路由
目录 一、pages二、style 一、pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现nee…...
使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放
👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… 💫签名:面朝大海,春暖花开! 使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放 引言显示效果点云获取完整代码引言 有很多时候我们需要更改pcd点云某些区域的颜色,可能是颜色随着点…...
玩转Docker | 使用Docker部署nullboard任务管理工具
玩转Docker | 使用Docker部署nullboard任务管理工具 前言一、nullboard介绍简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署nullboard服务下载镜像创建容器创建容器检查容器状态检查服务端口安全设置四、访问nullboard服务访问nullboard首页五…...
如何避免流程形式化导致的效率低下?
要避免流程形式化导致的效率低下,核心在于:聚焦流程价值、保障执行灵活性、优化流程设计、建立反馈机制、提升执行感知。其中,聚焦流程价值 是解决流程“空转”的首要原则。流程不应只是文档或制度的堆叠,而要服务于业务目标&…...
Java学习手册:HTTP 协议基础知识
一、HTTP 协议概述 HTTP(HyperText Transfer Protocol)即超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传输协议。它是一个应用层协议,基于请求-响应模型…...
基于多模态融合算法的航空武器毁伤评估技术方案
基于多模态融合算法的航空武器毁伤评估技术方案 1. 引言 航空武器毁伤评估(Damage Assessment, DA)是现代战争中的关键环节,直接影响后续作战决策。传统的人工评估方式效率低、主观性强,且在高强度战场环境下难以实时完成。因此,本研究提出一种基于多模态融合算法的自动…...
欧拉-国产操作系统替代产品如何
欧拉(openEuler)国产操作系统是由华为发起并联合开源社区共同开发的企业级操作系统,旨在构建自主可控的数字基础设施生态底座。以下从开发背景、技术特点、应用场景、生态建设及市场表现等方面进行全面介绍: 一、开发背景与战略定位 国家需求驱动 在中美技术竞争背景下,国…...
入门-C编程基础部分:16、 预处理器
飞书文档https://x509p6c8to.feishu.cn/wiki/DzSJwsGiTiXkeCkyEYUcuXbKnbf C 预处理是编译过程中一个单独的步骤,是一个文本替换工具而已。所有的预处理命令都是以井号(#)开头。 指令描述#define定义宏#ifdef如果宏已经定义,则返…...
Spark-SQL4
一 .Spark-SQL核心编程(六) Spark-SQL连接Hive Apache Hive 是 Hadoop 上的 SQL 引擎,Spark SQL 编译时可以包含 Hive 支持,也可以不包含。包含 Hive 支持的 Spark SQL 可以支持 Hive 表访问、UDF (用户自定义函数)、Hive 查询语…...
模数转换【1】AD7699
1.开发背景 一款可以模数转换芯片,兼容通用 SPI 接口,支持最多支持 8 个通道和 500KSPS 的采样率。支持单个通道采集和扫描采集模式。 同系列的芯片还有 AD7682 和 AD7689 等。 2.开发需求 配置内部参考电压4.096V,实现单个通道采集和扫描采集…...
P5670 秘籍-反复异或 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an) 和常数 m m m,有 q q q 个操作分两种: add ( l , r , x ) \operatorname{add}(l,r,x) add(l,r,x):对每个 i ∈ [ l , r ] i\in[l,r] …...
PID控制程序编写
目录 一、C语言PID控制器示例代码 二、代码解释 三、重要注意事项 一、C语言PID控制器示例代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> // For sleep function typedef struct { double Kp; // 比例增益 double…...
推荐系统/业务,相关知识/概念2
一、漫画库更新大量新作品,如何融入推荐系统? 参考答案: 快速提取新作品特征:除基础属性外,利用自然语言处理技术提取漫画简介关键词等丰富特征向量,分析情节、角色设定等深层次特征结合物品画像体系分类…...
基于Python的施工图与竣工图对比小工具开发方案
基于Python的施工图与竣工图对比小工具开发方案 一、引言 在工程建设领域,施工图与竣工图的对比是项目验收的关键环节。传统人工对比方式效率低、易出错,本文基于Python开发一款自动化对比工具,支持快速检测图纸差异并生成可视化报告&#x…...
2025年世界职业院校技能大赛实施方案(意见稿)
为贯彻落实《教育强国建设规划纲要(2024—2035年)》,进一步提升世界职业院校技能大赛(以下简称“大赛”)内涵质量,发挥大赛引领作用,提升高技能人才培养质量,服务现代职业教育体系建…...
辛格迪客户案例 | 苏州富士莱医药GMP培训管理(TMS)项目
一、案例概述 富士莱医药股份有限公司位于美丽的江南水乡常熟,前身为常熟富士莱医药化工有限公司,从建厂初期面积仅有10余亩,逐步扩展到100余亩。近年来公司飞速发展,以黑马姿态发展成为中国专业生产硫辛酸系列产品、肌肽系列产品…...
安恒安全渗透面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
【基于WSAAsyncSelec模型的通信程序设计】
文章目录 一、实验背景与目的二、实验设计与实现思路1. 设计思想2. 核心代码实现 总结 一、实验背景与目的 这次实验主要是为了让大家了解基于 WSAAsyncSelect 模型通信程序的编写、编译和执行过程。通过实践操作,深入掌握这种模型在实现计算机之间通信时的应用。 …...
Spring Boot+Mybatis设置sql日志打印
Spring BootMybatis设置sql日志打印 在全局配置文件添加以下内容:logging.level.com.demo.mapperdebug,com.demo.mapper:src下的mapper路径,debug:设置日志打印级别为debug,亦可设置为:ERROR、…...
Java 性能优化:从硬件到软件的全方位思考
Java 性能优化:从硬件到软件的全方位思考 在数字化飞速发展的当下,Java 作为广泛使用的编程语言,在各个应用领域发挥着关键作用。而 Java 性能优化作为提升系统运行效率、降低成本的核心环节,需要我们从硬件到软件进行全方位深入…...
ros2 humble moveit调试笔记
Overview — ROS2 Grasp Library Tutorials 0.5.0 documentation Robot Interface — ROS2 Grasp Library Tutorials 0.5.0 documentation 手动添加ompl_planning.yaml文件 planning_plugins:- ompl_interface/OMPLPlanner # To optionally use Ruckig for jerk-limited s…...
静态点亮数码管的某几段(STC89C52单片机)
#include <reg52.h> sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4; void main() { ENLED 0; //使能U3,选择数码管DS1 ADDR3 1; ADDR2 0; ADDR1 0; ADDR0 0; P0 0xF9; /…...
搭建哨兵架构
Redis大纲 3.1.sentinel环境准备: a.3个sentinel实例信息: 1.sentinel实例信息如下,sentinel只是起到监控作用,不存放数据!!2.为了节省资源,在同一台虚拟机开启3个实例,必须准备三…...
阿里云入门手册
阿里云入门手册 一、付费方式二、云计算基础概念(一)云计算定义(二)云计算优势(三)云计算部署模式(四)专有网络 VPC 三、阿里云ECS实例(一)实例类型ÿ…...
AI日报 - 2024年04月22日
🌟 今日概览(60秒速览) ▎🤖 模型进展 | Google发布Gemini 2.5 Flash,强调低延迟与成本效益;Kling AI 2.0展示多轴运动视频生成;研究揭示SLM在知识图谱上优于LLM,RLHF在推理提升上存局限。 ▎💼…...
Windows BilibiliHistoryFetcher-v1.3.2-v1.2.1-开源B站历史记录管理工具[支持批量管理下载]
Windows BilibiliHistoryFetcher 链接:https://pan.xunlei.com/s/VOONAVJpANYPmzu1Zc3B0q1XA1?pwdnrjc# 使用说明: 以1.3.2与1.2.1版本为例 需要下载 BiliBili-History-Frontend 前端程序,在下载 BilibiliHistoryAnalyzer 解压运行&#…...
CH585单片机的LCD外设怎么驱动段式LCD
1、首先这里只讲应用,不讲具体原理。 要驱动段式LCD,这里就要知道占空比的调整,比如1/4为例就需要4个COM口。这4个COM口由单片机自行驱动,你不用管。就像硬件IIC和SPI,时序问题不用你去操心,你要做的就是向…...
包管理工具有哪些?主流软件分享
常见的包管理工具主要有:npm、Yarn、pnpm、Composer、Maven、pip、Conda 等,其中 npm 是目前全球使用最广泛的JavaScript包管理工具,以丰富的生态、便捷的使用体验以及强大的社区支持闻名。npm具备依赖管理、版本控制、脚本执行等强大功能&am…...
【网络安全】OWASP 十大漏洞
1. OWASP 十大漏洞 为了应对未来的风险,安全专业人员需要随时掌握最新信息。之前,您了解了CVE 列表,这是一个公开的已知漏洞和暴露列表。CVE 列表是全球安全社区相互共享信息的重要信息来源。 在本文中,您将了解安全专业人士参考…...
Fortran中FORALL的用法与性能分析
Fortran中FORALL的用法与性能分析 FORALL语句的基本用法 FORALL是Fortran 95引入的一种结构,用于表达并行数组操作。它的基本语法如下: FORALL (index start:end:stride, mask)array(index) expression END FORALL或者更复杂的多维度形式࿱…...
web组件和http协议
1.web组件 2.自定义元素 3.影子DOM 4.HTML模板 5.http协议 6.tcp ip协议...
论文笔记-arXiv2025-FilterLLM
论文笔记-arXiv2025-FilterLLM: Text-To-Distribution LLM for Billion-Scale Cold-Start Recommendation FilterLLM:面向十亿级冷启动推荐的文本到分布大语言模型摘要1.引言2.前言2.1符号说明2.2文本到判断2.2.1候选生成(从数十亿到数百)2.2…...
Anaconda Prompt 切换工作路径的方法
直接切换是不生效的: (base) C:\Users\96975>cd D:\weiban-tool-master\weiban-tool-master需要先回到根目录C盘,然后切换到目标文件夹盘符,进一步切换到目标文件夹 (base) C:\Users\96975>cd ..(base) C:\Users>cd ..(base) C:\&g…...
Synopsys:printvar命令和puts/echo命令的区别
相关阅读 Synopsyshttps://blog.csdn.net/weixin_45791458/category_12812219.html?spm1001.2014.3001.5482 Synopsys的EDA工具中存在一类变量,它们能控制工具的行为,被称为应用变量(application variable),与之对应的是用户自定义变量(use…...