青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理
青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理
- 课题摘要:
- 一、项目结构
- 各目录说明:
- 二、依赖项
- 三、依赖管理任务
- 四、依赖管理步骤
- 1. 初始化Go Modules项目
- 2. 添加依赖
- 3. 指定依赖版本
- 4. 更新依赖
- 5. 清理未使用的依赖
- 6. 离线工作
- 7. 模块隔离
- 8. 可重现构建
- 五、依赖项的安全性
- 六、GoLand中依赖项的安全性
本文讨论了Go语言项目中的依赖管理,包括项目结构、依赖项特点、依赖管理任务和步骤。项目结构应遵循标准,如包含
cmd/
、internal/
、vendor/
等目录。依赖项指项目所依赖的外部库、服务或资源,具有外部性、版本控制等特点。依赖管理任务涉及声明、安装、解析、隔离、更新等关键活动。Go Modules是Go语言官方的依赖管理工具,通过go mod init
初始化项目,自动处理依赖,并可通过go get
、go mod tidy
等命令管理依赖。
课题摘要:
本文讨论了Go语言项目中的依赖管理,包括项目结构、依赖项特点、依赖管理任务和步骤。项目结构应遵循标准,如包含cmd/
、internal/
、vendor/
等目录。依赖项指项目所依赖的外部库、服务或资源,具有外部性、版本控制等特点。依赖管理任务涉及声明、安装、解析、隔离、更新等关键活动。Go Modules是Go语言官方的依赖管理工具,通过go mod init
初始化项目,自动处理依赖,并可通过go get
、go mod tidy
等命令管理依赖。文章还强调了依赖项安全性,提出了使用可信源、依赖审计、保持更新等最佳实践,以降低安全风险。
一、项目结构
Go语言项目的基本结构可以根据项目的复杂性和需求有所不同,但通常遵循一定的标准和最佳实践。以下是一个典型的Go语言项目的基本结构:
my-go-project/
│
├── cmd/ # 存放可执行程序的入口点
│ ├── main.go # 主应用程序的入口点
│ └── other.go # 其他可执行程序的入口点
│
├── internal/ # 私有的应用程序和库代码
│ ├── pkg/ # 私有的库代码
│ └── app/ # 私有的应用程序代码
│
├── vendor/ # 存放项目依赖的第三方库
│
├── api/ # API定义文件,如OpenAPI/Swagger文件
│
├── config/ # 配置文件和脚本
│
├── controllers/ # HTTP控制器和请求处理逻辑
│
├── models/ # 数据模型和数据库ORM结构
│
├── services/ # 业务逻辑层
│
├── utils/ # 辅助工具和功能
│
├── tests/ # 测试代码
│
├── Go.mod # Go Modules的依赖文件
├── go.sum # 依赖的校验和文件
├── .gitignore # Git忽略文件设置
├── LICENSE # 许可证文件
├── README.md # 项目说明文件
└── .golangci.yml # Go语言CI配置文件
各目录说明:
- cmd/:包含项目的可执行程序的入口点。每个可执行的二进制文件都放在单独的子目录中,通常以
main.go
作为主入口文件。 - internal/:存放私有的应用程序和库代码。这个目录下的代码只能被该项目内部的其他代码所引用。
- vendor/:存放项目依赖的第三方库。通过
go mod vendor
命令生成,包含了项目运行所需的所有第三方依赖。 - api/:存放API定义文件,如OpenAPI/Swagger规范文件,用于定义RESTful API的结构和行为。
- config/:存放配置文件和脚本,如YAML、JSON配置文件和初始化脚本。
- controllers/:包含HTTP控制器和请求处理逻辑,处理来自客户端的请求并调用服务层。
- models/:定义数据模型和数据库ORM(对象关系映射)结构,用于数据库操作。
- services/:包含业务逻辑层代码,封装应用程序的核心业务逻辑。
- utils/:存放辅助工具和功能,如帮助函数、常量定义等。
- tests/:包含测试代码,如单元测试、集成测试等。
- Go.mod 和 go.sum:Go Modules的依赖文件,记录项目的依赖关系和依赖的校验和。
- .gitignore:指定Git版本控制中需要忽略的文件和目录。
- LICENSE:项目的许可证文件。
- README.md:项目的说明文件,通常包含项目介绍、安装和使用说明。
- .golangci.yml:Go语言CI配置文件,用于配置静态代码分析工具。
这个结构是一个起点,你可以根据项目的具体需求进行调整。例如,对于更复杂的项目,可能需要更详细的目录结构来组织代码,而对于小型项目,结构可能更简单。重要的是保持代码的组织性和可维护性。
二、依赖项
依赖项(Dependency)在软件开发中指的是一个项目或组件所依赖的其他库、框架、服务或资源。这些依赖项为项目提供了必要的功能,但它们并不是项目本身的一部分。依赖项可以是:
- 库和框架:提供特定功能的代码库,如数学计算库、图形用户界面框架等。
- 服务:如数据库服务、API服务等,应用程序可能需要这些服务来执行其功能。
- 资源文件:如图像、音频、视频或配置文件,它们是应用程序运行所必需的。
- 其他组件:应用程序可能依赖的其他软件组件,这些组件可能是项目的一部分,但分布在不同的模块或包中。
依赖项的主要特点包括:
- 外部性:依赖项通常来自外部源,不是由项目团队直接控制的。
- 版本控制:依赖项有特定的版本,项目需要指定依赖项的版本以确保兼容性和功能。
- 传递性:一个依赖项可能自身也有依赖,这些间接依赖也必须被管理。
- 环境依赖:某些依赖项可能只在特定的操作系统或环境中可用。
管理依赖项是软件开发中的一个重要方面,因为它们可以影响项目的构建过程、运行时行为和安全性。不当的依赖管理可能导致版本冲突、安全漏洞和难以追踪的bug。因此,开发者通常会使用依赖管理工具来帮助自动化依赖项的获取、更新和维护。这些工具包括npm(Node.js)、Maven(Java)、pip(Python)和Go模块(Go语言)等。
三、依赖管理任务
依赖管理是软件开发中的一个重要任务,它涉及到多个关键活动,以确保项目能够正确地使用和管理第三方库和框架。以下是依赖管理的一些主要任务:
-
依赖声明:
- 明确项目依赖哪些外部库和框架。
- 在项目的配置文件中声明这些依赖及其版本。
-
依赖安装:
- 下载和安装声明的依赖到项目中。
- 确保依赖的版本符合项目要求。
-
依赖解析:
- 解析依赖关系图,处理依赖项之间的版本冲突。
- 确定依赖项的最终版本,包括传递性依赖。
-
依赖隔离:
- 确保不同项目或不同模块之间的依赖不会相互冲突。
- 使用虚拟环境或容器技术来隔离依赖。
-
依赖更新:
- 定期检查依赖项的更新,包括新版本和安全补丁。
- 自动或手动更新依赖项到合适的版本。
-
依赖审计:
- 分析依赖项的安全性,识别潜在的安全漏洞。
- 检查依赖项的许可证,确保它们符合项目的合规性要求。
-
依赖测试:
- 在更新依赖后,测试项目以确保依赖项的更改没有破坏项目的功能。
- 确保依赖项的更改不会引入性能问题。
-
依赖清理:
- 移除不再使用的依赖项,以减少项目体积和潜在的安全风险。
- 优化依赖项,减少冗余和重复。
-
依赖记录:
- 在项目文档中记录依赖项的使用情况。
- 生成依赖项的清单,用于审计和合规性检查。
-
依赖版本控制:
- 管理依赖项的版本,确保在不同环境(开发、测试、生产)中使用一致的依赖版本。
- 使用语义化版本控制来管理依赖项的版本更新。
-
依赖缓存:
- 缓存已下载的依赖项,以加快构建速度和减少网络请求。
-
依赖配置:
- 配置构建工具和依赖管理工具以满足项目特定的需求。
-
依赖文档化:
- 在项目文档中包含依赖项的详细信息,包括版本和用途。
-
依赖兼容性:
- 确保依赖项与项目使用的其他库和框架兼容。
通过执行这些任务,开发团队可以确保依赖项的正确使用,同时减少安全风险和提高项目的可维护性。
四、依赖管理步骤
在Go语言项目中,管理依赖项主要通过Go Modules来实现,这是Go语言官方推出的依赖管理工具。以下是如何使用Go Modules来管理依赖项的详细步骤:
1. 初始化Go Modules项目
要开始使用Go Modules,首先需要初始化你的项目。在项目的根目录下执行以下命令:
go mod init <module-name>
其中<module-name>
通常是你的项目名或项目的导入路径。这个命令会创建一个go.mod
文件,记录模块名称和Go语言的版本信息。
2. 添加依赖
当你在代码中导入一个新的第三方包时,可以通过运行Go的构建命令(如go build
、go run
、go test
等)来自动下载该包并将其版本记录到go.mod
和go.sum
文件中。例如,如果你导入了github.com/sirupsen/logrus
日志库:
import "github.com/sirupsen/logrus"
然后运行构建命令,Go Modules会自动处理依赖并更新go.mod
文件。
3. 指定依赖版本
你可以在go.mod
文件中指定依赖的特定版本,以确保在不同环境下使用的依赖是相同的。例如:
go get github.com/sirupsen/logrus@v1.8.1
这会下载logrus
版本v1.8.1
,并在go.mod
中记录。
4. 更新依赖
要更新依赖项,可以使用go get -u
命令来更新依赖的次版本或修订版本,以获得最新的功能和bug修复。
5. 清理未使用的依赖
如果你在开发过程中删除了某些不再需要的依赖,可以使用go mod tidy
命令来清理。这个命令会添加丢失的依赖并移除未使用的依赖。
6. 离线工作
Go Modules允许在本地缓存依赖项,这意味着你可以在没有网络连接的情况下继续开发,因为依赖项已经被下载并存储在本地。
7. 模块隔离
每个项目都可以独立管理其依赖项,不再依赖全局的GOPATH
,这提高了项目的可移植性和可维护性。
8. 可重现构建
使用Go Modules,每次构建都可以使用相同的依赖版本,保证了项目的一致性。
通过这些步骤,你可以有效地管理Go语言项目中的依赖项,确保项目的稳定性和可维护性。
五、依赖项的安全性
确保依赖项的安全性是软件开发中的关键任务,以下是一些常用的方法和最佳实践:
-
使用可信的源:
- 仅从可信的包管理仓库下载依赖,如npm官方仓库、Maven中央仓库等。
-
依赖审计:
- 使用工具定期审计项目的依赖项,检查已知的安全漏洞,如Snyk、OWASP Dependency-Check等。
-
保持依赖更新:
- 定期更新依赖项到最新版本,以包含最新的安全修复。
-
使用语义化版本控制:
- 遵循语义化版本控制(SemVer)来管理依赖的版本,确保兼容性和安全性。
-
依赖锁定:
- 使用依赖锁定文件(如npm的
package-lock.json
或Go的go.sum
)来确保在不同环境间使用相同的依赖版本。
- 使用依赖锁定文件(如npm的
-
最小权限原则:
- 只请求依赖项所需的最小权限,避免不必要的权限请求,减少潜在的安全风险。
-
许可证合规性检查:
- 检查依赖项的许可证,确保它们符合项目的许可证要求,避免许可证冲突。
-
供应链安全:
- 确保依赖项的供应链安全,比如检查依赖项是否被篡改,确保下载过程中的完整性和真实性。
-
代码审查:
- 对于重要的依赖项,进行代码审查,特别是那些需要修改或直接包含在项目中的。
-
使用安全扫描工具:
- 集成安全扫描工具到CI/CD流程中,自动化地在构建过程中检查安全问题。
-
依赖白名单/黑名单:
- 定义依赖白名单,只允许使用已知安全的依赖项,或定义黑名单,禁止使用已知不安全的依赖项。
-
环境隔离:
- 使用容器、虚拟机或沙箱环境来隔离依赖项,减少对主系统的影响。
-
依赖项的深度检查:
- 不仅检查直接依赖项,还要检查间接依赖项,以发现潜在的隐藏风险。
-
应急响应计划:
- 制定应急响应计划,一旦发现依赖项存在安全问题,能够快速响应和修复。
-
教育和培训:
- 对开发团队进行安全意识培训,让他们了解如何安全地使用和管理依赖项。
通过实施这些措施,可以显著提高依赖项的安全性,降低因依赖项引入的安全风险。
六、GoLand中依赖项的安全性
在GoLand中,确保依赖项的安全性可以通过以下几个步骤来实现:
-
使用Go Modules:
- 确保你的项目使用Go Modules进行依赖管理。这可以帮助你更好地控制和锁定依赖项的版本,避免潜在的安全问题。
-
启用Vulnerability Detection:
- GoLand提供了一个内置的安全检查功能,可以检测依赖项中的已知漏洞。在GoLand的设置中启用“Vulnerability Detection”功能。这通常在“Settings/Preferences” -> “Editor” -> “Inspections”中配置。
-
定期更新依赖项:
- 定期运行
go get -u
命令来更新项目中的依赖项到最新版本,这有助于获取最新的安全修复。
- 定期运行
-
使用外部安全扫描工具:
- 集成外部的安全扫描工具,如Snyk、Gitleaks、OWASP Dependency-Check等,这些工具可以与GoLand的CI/CD流程集成,或者直接在IDE中运行。
-
代码审查:
- 对于重要的依赖项,进行代码审查,特别是那些需要修改或直接包含在项目中的。
-
使用GoLand的内置终端:
- 在GoLand的内置终端中运行
go mod tidy
命令,以清理未使用的依赖项并更新go.mod
和go.sum
文件。
- 在GoLand的内置终端中运行
-
依赖项分析:
- 使用GoLand的“Analyze”功能,它可以帮助你识别代码中的潜在问题,包括依赖项相关的问题。
-
查看依赖图:
- GoLand提供了查看项目依赖图的功能,这有助于理解项目的依赖结构,并识别潜在的风险。
-
配置.gitignore文件:
- 在
.gitignore
文件中排除go.sum
文件以外的依赖项文件,以防止依赖锁定文件被错误地提交。
- 在
-
教育和培训:
- 确保开发团队了解如何安全地使用和管理依赖项,包括Go Modules的最佳实践。
-
使用GoLand的版本控制集成:
- 利用GoLand的版本控制集成功能,跟踪依赖项的变更历史,并确保在合并请求中审查这些变更。
通过这些步骤,你可以在GoLand中提高项目依赖项的安全性,减少因依赖项引入的安全风险。记得定期检查和更新你的工具和流程,以适应新的安全威胁和最佳实践。
相关文章:
青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理
青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理 课题摘要:一、项目结构各目录说明: 二、依赖项三、依赖管理任务四、依赖管理步骤1. 初始化Go Modules项目2. 添加依赖3. 指定依赖版本4. 更新依赖5. 清理未使用的依赖6. 离线工作7. 模块隔离8. 可重现构建 …...
代码生成器
源码 表结构 代码的目录结构 后端代码 前端代码 查询数据库的表 前端 后端 只查询当前数据库的表去除掉定时任务和生成器的表格去除掉已经导入的表格<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult"…...
MySQL 性能调优:打造高效数据库
SQL 语句层面的性能调优策略 合理选择字段属性 在创建 MySQL 表时,为了获取更好的性能,选择合适的字段属性至关重要。 首先,要依据实际情况合理设置字段的类型及宽度。例如,对于像手机号码这类固定长度为 11 位的字段ÿ…...
Elasticsearch 实战应用:提升数据洞察与交互体验
随着数据量的不断增长和数据处理需求的日益复杂,Elasticsearch 在实战应用中的价值愈发凸显。在本次教学中,我们继续深入探索 Elasticsearch 的更多高级实战应用,致力于培养学生在数据洞察和用户交互方面的卓越能力。 一、数据建模与优化策略…...
Ubuntu 配置静态 IP 地址
在 Ubuntu 系统中配置静态 IP 地址,适用于服务器或虚拟机需要固定 IP 的场景。以下是详细的步骤说明。 1. 确认网络接口信息 在配置之前,先确认系统的网络接口名称和当前的网络配置。 1.1 查看网络接口 运行以下命令获取网络接口的名称(如…...
2025美赛数学建模十大常用算法之层次分析法AHP详解
层次分析法(Analytic Hierarchy Process, AHP)详解 一、层次分析法简介 层次分析法(AHP)是一种系统化的多准则决策方法,由美国运筹学家萨蒂(Thomas L. Saaty)于20世纪70年代提出。AHP通过构建层…...
鸿蒙学习笔记:用户登录界面
文章目录 1. 提出任务2. 完成任务2.1 创建鸿蒙项目2.2 准备图片资源2.3 编写首页代码2.4 启动应用 3. 实战小结 1. 提出任务 本次任务聚焦于运用 ArkUI 打造用户登录界面。需呈现特定元素:一张图片增添视觉感,两个分别用于账号与密码的文本输入框&#…...
电脑上怎么运行手机APP(电脑上运行手机APP的4种方法)
玩家可能不愿意在小屏幕上使用 Android 应用程序。此外,某些游戏玩家可能更喜欢在更大的屏幕上寻找刺激的体验,例如 PC 提供的体验,这可以增强他们的乐趣。因此,他们可能对如何在 PC 上流畅地运行 Android 应用程序感到好奇。本指…...
Java原生实现代码沙箱的实现
代码沙箱实现 代码沙箱:只负责接收代码和输入,返回编译运行的结果,不负责判题(可作为独立项目/服务,提供给其他需要执行代码的项目使用) 以Java语言为主,实现代码沙箱。主要学习其思想、关键流…...
Docker基础命令实战
问题:Error response from daemon: Get "https://index.docker.io/v1/search?qmysql&n25": dial tcp 199.59.148.9:443: connect: connection refused 在pull nginx时出现的报错,可能原因是镜像源过期了,我们需要更换镜像源 …...
【QT实战の心情笔记】
文章目录 界面布局主要界面分为三部分:1. 笔记列表区域2. 笔记内容编辑区域3. 操作按钮区域 Qt Designer 界面设计步骤完整界面布局图各控件设置和属性Qt Designer 文件 (.ui) 数据库表结构SQL 表结构: 逻辑代码1. 项目结构2. Note 类 (Note.h 和 Note.c…...
关于Unity VFX 在Spawn状态的一些笔记
一. periodic burst 和 single burst 的区别 1. Single Burst 定义:Single Burst 是一次性发射粒子,只在粒子系统启动时触发一次。 它是一个瞬时的发射行为,适合单次效果。 特性: 只触发一次。发射时间通常是粒子系统启动时。不会重复发射,除非重新触发粒子系统。适用场景…...
AutoMQ 流表一体新特性 Table Topic 发布: 无缝集成 AWS S3 Table 和 Iceberg
超越共享存储:使用 Apache Iceberg 中的 AutoMQ Table Topic 实现流处理与分析的统一 自 2023 年底官宣以来,AutoMQ 成功地将 Apache Kafka 从“Shared Nothing architecture”转变为“Shared Storage architecture”,这为京东、知乎、小红书…...
springboot445新冠物资管理(论文+源码)_kaic
摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的新冠物资管…...
【AIGC】LangChain 环境搭建及模型API能力集成使用详解
目录 一、前言 二、LangChain 概述 2.1 LangChain 是什么 2.2 LangChain 主要特点 2.3 LangChain能做什么和能力一览 2.4 LangChain 主要应用场景 三、环境准备 3.1 python 开发环境 3.1.1 python环境 3.1.2 配置vscode环境 3.1.3 安装LangChain相关插件包 3.2 获取…...
YOLOv8目标检测(六)_封装API接口
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训…...
Firecrawl教程①:自动化抓取与数据转化,赋能AI应用
Firecrawl教程①:自动化抓取与数据转化,赋能AI应用 前言一、功能特点1. 支持 LLM 可处理的数据格式2. 全面抓取网站3. 强大的操作支持4. 灵活的定制选项5. 支持多种编程语言 SDK二、如何开始使用 Firecrawl第一步:获取 API 密钥第二步:官网在线工具使用第三步:安装 Firecr…...
2-2-18-17 QNX系统架构之“实时”
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...
Linux下部署MySQL8.0集群 - 主从复制(一主两从)
目录 一、部署前准备 1、查看系统信息 # 查看系统版本 cat /etc/red* # 查看系统位数 getconf LONG_BIT[rootlocalhost ~]# cat /etc/red* CentOS Linux release 7.5.1804 (Core) [rootlocalhost ~]# getconf LONG_BIT 642、下载对应安装包 进入MySQL官网:https:…...
将HTML转换为PDF:使用Spire.Doc的详细指南
目录 引言 1. 为什么选择 Spire.Doc? 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...
HarmonyOS 实践 - 设计模式在代码中的作用
文章目录 前言设计模式概述单例模式:全局状态管理代码分析 策略模式:界面主题切换代码分析 示例测试单例模式测试策略模式测试 体验评价总结 前言 在软件开发中,设计模式是公认的最佳实践,它能帮助开发者通过模块化和规范化的代码…...
kubeadm一键部署K8S 集群架构
kubeadm一键部署K8S 集群架构(centos7) https://www.k8src.cn/ https://kubernetes.io/zh-cn/docs/home/ https://blog.csdn.net/m0_58709145/article/details/140128179 https://blog.csdn.net/jiaqijiaqi666/article/details/129745828 Kubeadm init报错[ERROR CRI]: contai…...
[NSSCTF 2022 Spring Recruit]factor
给了: 说n是p*q 先求一下p*q factordb.com 然后再让pq 得到:31207540994438423298 接着用md5加密得到falg NSSCTF{7957a92ef959998115a6bda6d992656e}...
go 中使用redis 基础用法
1、安装redis 参考链接:https://www.codeleading.com/article/98554130215/ 1.1 查看是否有redis yum 源 yum install redis没有可用的软件包,执行1.2 1.2下载fedora的epel仓库 yum install epel-release --下载fedora的epel仓库1.3启动redis s…...
git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
好的,git branch -r 这个命令用于列出远程分支。让我详细解释一下: 命令: git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用: 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…...
回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测
回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 CNN-BiGRU,即卷积神经网络(CNN)与双…...
【人工智能数学基础】——深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用
深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用 贝叶斯理论(Bayesian Theory)是概率论和统计学中的一个重要分支,它以托马斯贝叶斯(Thomas Bayes)命名,主要关注如何根据新的证据更…...
Gin-vue-admin(1):环境配置和安装
目录 环境配置如果443网络连接问题,需要添加代理服务器 后端运行前端运行 环境配置 git clone https://gitcode.com/gh_mirrors/gi/gin-vue-admin.git到server文件目录下 go mod tidygo mod tidy 是 Go 语言模块系统中的一个命令,用于维护 go.mod 文件…...
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例 摘要 本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,并通过分析给定代码示例,揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器…...
Gargoyle路由安装dockerd
ea8500刷石像鬼路由1.14.0,安dockerd,需先下载并安装以下依赖包,逐个安装。 kernel_5.10.176-1-6b05bc664d80d655942a20fb9ef8c3cd_arm_cortex-a15_neon-vfpv4.ipk kmod-br-netfilter_5.10.176-1_arm_cortex-a15_neon-vfpv4.ipk kmod-crypto…...
在linux系统的docker中安装GitLab
一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …...
滑动窗口
滑动窗口 标志: 利用两个指针 只进不退的特性 (样子与窗口类似) 解题模板 更新结果的时机 应该具体题目具体分析。 例题: 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) 1658. 将 x 减到 0 的最小操作数 - 力…...
人工智能 AI 大模型研究设计与实践应用技术研究报告
人工智能 AI 大模型研究设计与实践应用技术研究报告 摘要: 本报告深入探讨了人工智能 AI 大模型的研究设计架构以及在各领域的实践应用技术。通过对模型架构、训练方法、优化策略的详细阐述,结合实际案例分析其在自然语言处理、计算机视觉、智能医疗等领…...
【深度学习】 零基础介绍卷积神经网络(CNN)
CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…...
答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境
一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统,支持多种试题类型、多种试题难度、练题、考试、补考模式,提供全部前后台无加密源代码,支持私有化部署 二.测试环境 系统环境:CentOS、 运行环境&#x…...
PowerMILL 客制化宏 - 变量
从PowerMILL2012起,命令起始支持变量。支持变量将使宏命令更加灵活和功能强大。可以对变量做一些运算而不依赖其它语言。 当前支持有变量类型为: INT; REAL; STRING; ENTITY; ARRAY LIST; OBJECT; 以下就…...
第五篇:前后端如何“扯皮”——HTTP 在开发中的应用
文章目录 第五篇:前后端如何“扯皮”——HTTP 在开发中的应用1. HTTP 在前后端分离中的作用1.1 前后端分离的崛起1.2 HTTP 的职责 2. RESTful API 与 GraphQL 的对比2.1 RESTful API:标准化的老兵2.2 GraphQL:灵活的新秀2.3 RESTful 和 Graph…...
如何在 Ubuntu 22.04 服务器上安装 Jenkins
简介 Jenkins 是一个非常流行的免费自动化工具,每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本,即 Ubuntu 22.04 中安装 Jenkins。 但在此之前,让我们快速讨论一下 Jenk…...
关于代码注释
代码注释的重要性与最佳实践 在软件开发过程中,代码注释被认为是代码质量的一个重要组成部分。它不仅帮助开发人员理解和维护代码,还有助于团队协作和代码的可持续性。然而,如何有效地使用注释是一个值得深思的问题。本文将探讨代码注释的重…...
Mitt 库使用笔记
1. 介绍 Mitt 是一个轻量级的 JavaScript 库,用于在应用程序中实现事件触发和监听。它不依赖任何外部库,功能简洁,主要用于在模块间进行事件传递。 体积小:Mitt 的压缩版本仅有几千字节,非常适合在前端框架中作为事件…...
OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+
漏洞库在企业中扮演着至关重要的角色,不仅提升了企业的安全防护能力,还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库,今天给大家介绍一款集成了多款漏洞库的开源漏洞…...
uniapp中的uni-file-picker组件上传多张图片到服务器
由于在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,默认的是上传到自带的服务,所以我们要修改成自己的服务器 1. 添加 :auto-upload"false" 加上这个取消自动上传 <uni-file-picker v-model"jobAddUpdateForm.imag…...
LIF神经元模型的显隐转换
本文星主将介绍LIF神经元模型的显式和隐式转换(星主看见有论文[1]是这个称呼的,所以本文也称显式和隐式),并得到隐式模型的解析解。注意:理解本文内容需要有一定的微积分基础,如果大家看着数学头疼…...
Node的学习以及学习通过Node书写接口并简单操作数据库
Node的学习 Node的基础上述是关于Node的一些基础,总结的还行; 利用Node书写接口并操作数据库 1. 初始化项目 创建新的项目文件夹,并初始化 package.json mkdir my-backend cd my-backend npm init -y2. 安装必要的依赖 安装Express.js&…...
Android 获取屏幕物理尺寸
注:编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view ,对 view 显示的位置要求比较精确,通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…...
#渗透测试#红队全栈 powshell基础使用
声明! 学习视频来自B站up主 泷羽sec,任何违法事件与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!! 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…...
Qt之自定义标题栏拓展(十)
Qt开发 系列文章 - user-defined-titlebars(十) 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 1.初始化函数 2.功能函数 3.窗口关…...
设计模式之创建型
1、What 关注对象的创建过程,旨在通过不同的方式来创建对象,以解耦对象的创建与其使用过程。这些模式提供了创建对象的灵活性和可扩展性,使得代码更加易于维护和管理。 1.1 单例模式 确保一个类只有一个实例,并提供一个全局访问…...
记录一下自己对网络安全法的笔记
仅记录一下自己对网络安全法的笔记 文章来源(https://www.cac.gov.cn/2016-11/07/c_1119867116_2.htm)(2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过)该法自2017年6月1日起施行。《网络安全法》是我国第一…...