OpenSSL 常见操作手册生成证书生成私钥1openssl genrsa -out private.key 2048
genrsa:生成 RSA 私钥。
-out private.key:指定输出文件名为 private.key。
2048:指定密钥长度为 2048 位(推荐最低长度,越长安全性越高但生成慢)。
生成证书签名请求(CSR)1openssl req -new -key private.key -out request.csr
req:生成证书请求(CSR)或自签证书。
-new:生成新的证书请求。
-key private.key:使用已有私钥生成 CSR。
-out request.csr:指定生成的 CSR 文件名。
执行时会提示填写:
Country Name (C):国家代码,如 CN
State or Province Name (ST):省份
Locality Name (L):城市
Organization Name (O):公司或组织名称
Organizational Unit Name (OU):部门
Common Name (CN ...
mkcertmkcert 是一个简单、零配置的工具,用于制作本地可信的开发证书。它会自动为你生成并安装一个本地 CA(证书颁发机构),并使用该 CA 签发本地域名(如 localhost、*.test、127.0.0.1 等)的证书,浏览器会完全信任这些证书 —— 无需手动点击“继续访问不安全网站”。
🎯 mkcert 的作用
✅ 本地开发 HTTPS:为 localhost、自定义域名(如 myapp.test)或 IP 地址生成有效的 HTTPS 证书。
✅ 自动信任:自动将本地 CA 安装到系统和浏览器信任库,无需手动确认安全警告。
✅ 支持通配符:支持 *.localhost、*.test 等通配符域名。
✅ 跨平台:支持 Windows、macOS、Linux 和多种浏览器。
✅ 安全隔离:生成的证书仅在本地有效,不会被外部识别,安全无风险。
🛠️ 在 Windows 上通过 Scoop 安装 mkcertScoop 是 Windows 下的命令行包管理器,安装软件非常方便。且安装的命令统一管理,只需将 %SCOOP%\shims 配置到环境变量即可。
安装 Sco ...
Spring Boot 全面使用教程本文将从常见的 Spring Boot 项目实践出发,逐步讲解各个关键点的 注解、用法和配置,涵盖以下方面:
控制器 Controller
Service 层
Mapper 与 MyBatis XML
自定义配置注入
依赖注入 & IoC
Lombok 使用
日志记录(Slf4j + logback.xml)
全局异常处理
1. 控制器 Controller1234567891011121314151617@RestController@RequestMapping("/user")public class UserController { private final UserService userService; // 构造器注入推荐(避免循环依赖 & 测试方便) public UserController(UserService userService) { this.userService = userService; } @P ...
1. 安装 Scoop 和 UV首先,确保你的系统已经安装了 Scoop。它是一个优秀的命令行安装工具,可以让你轻松管理命令行应用程序。
如果你还没有安装 Scoop,请在 PowerShell 中执行以下命令:
12Set-ExecutionPolicy RemoteSigned -Scope CurrentUserirm get.scoop.sh | iex
安装 Scoop 后,接着安装 UV:
1scoop install uv
2. 初始化项目并创建虚拟环境UV 的核心思想是一切都以项目为中心。你需要为你的项目创建一个文件夹,然后在这个文件夹里进行所有操作。这确保了每个项目的依赖都是独立的。
创建项目目录:
12mkdir my_projectcd my_project
初始化项目: 执行 uv init 命令。这会在你的项目目录下创建一个 .venv 文件夹,这就是你的虚拟环境。
1uv init
激活虚拟环境: 激活虚拟环境后,所有后续的 uv pip 命令都只会影响当前项目,而不会污染系统全局的 Python 环境。
1.\.venv\Scripts\acti ...
Go 依赖注入利器:Dig 库的 IoC 接口编程实践在 Go 语言开发中,依赖注入(Dependency Injection, DI)是一种至关重要的设计模式,它有助于构建松散耦合、可维护性强且易于测试的应用程序。Uber 开源的 dig 库是 Go 生态中一个功能强大且广受欢迎的依赖注入容器,它通过反射机制自动处理依赖关系图,简化了 DI 的实现。
本文将深入探讨如何使用 dig 库,并重点介绍如何遵循控制反转(Inversion of Control, IoC)原则,基于接口而非具体结构体进行依赖注入。这种做法可以最大程度地解耦组件,提升代码的灵活性和可扩展性。
核心概念:面向接口编程在讨论 dig 的具体用法之前,我们首先需要理解为何要面向接口编程。其核心思想是:依赖于抽象,而非具体实现。
这样做的好处显而易见:
灵活性:只要满足接口定义,我们可以随时替换具体的实现,而无需修改依赖该接口的上层代码。例如,我们可以轻松地将数据存储从 PostgreSQL切换到 MySQL,只需提供一个新的数据库接口实现即可。
可测试性:在单元测试中,我们可以为接口提供一个 “mock” 或 “ ...
Google 的 wire 库。与 dig 基于运行时反射的机制截然不同,wire 是一个编译时的代码生成工具。它通过分析你的代码来自动生成用于连接依赖关系的 Go 源码。这种方法的核心优势在于,任何依赖缺失或类型不匹配的错误都将在编译期间被发现,而不是等到程序运行时才暴露出来,从而极大地提高了代码的健壮性和可预测性。
wire 的核心理念wire 遵循两大原则:
显式优于隐式:wire 不使用任何运行时反射或魔法。所有的依赖关系都是通过生成的代码显式连接的,生成的代码就像你手写的一样清晰易读。
编译时安全:依赖图的构建在编译时完成。如果依赖关系无法满足(例如,缺少提供者、类型不匹配、存在依赖循环),wire 会生成失败并报告清晰的错误信息,你必须修复这些问题才能成功编译。
wire 的核心组件使用 wire 主要涉及以下几个部分:
Provider(提供者): 普通的 Go 函数,用于创建和返回一个组件实例。这与 dig 中的构造函数概念类似。
Injector(注入器): 一个在特定文件中(通常是 wire.go)声明的函数。你只需要提供函数签名,函数体则由 wire 工具自 ...
Cobra 框架:强大的 Go 命令行工具库Cobra 是一个用 Go 语言开发的库,用于创建功能强大的现代命令行界面 (CLI) 应用程序。它是一个应用生成器和命令行解析器,可以帮助你快速构建复杂的 CLI 工具,支持子命令、嵌套命令、标志(flags)以及参数验证等功能。许多知名的 Go 项目,如 Kubernetes、Hugo 和 Docker,都使用了 Cobra。
为什么选择 Cobra?
易于使用: 提供简洁的 API,让定义命令、子命令和标志变得非常直观。
功能丰富: 支持多种命令行功能,如别名、自动补全、帮助信息生成等。
结构化: 鼓励通过命令和子命令的层级结构来组织应用程序,使代码更易于管理。
自动生成: 可以自动生成应用程序的骨架代码和命令的帮助信息。
社区活跃: 作为 Go 语言中广泛使用的 CLI 框架,拥有活跃的社区支持和丰富的文档。
基本概念在深入了解用法之前,我们先理解 Cobra 的几个核心概念:
Command: Cobra 的核心,代表一个命令或子命令。每个命令都有名称、描述、短语(用法字符串)以及一个执行函数 (Run)。
Args: 命令的非 ...
Zap日志库使用文档Zap是由Uber开源的一个Go语言高性能日志库。它以极高的性能和极少的内存分配著称,非常适合用于对性能要求严苛的场景。
快速入门首先,你需要安装Zap库:
1go get -u go.uber.org/zap
下面是一个最简单的使用示例:
1234567891011121314151617181920package mainimport ( "go.uber.org/zap")func main() { // 创建一个开发环境下的Logger,提供了更多调试信息,如文件名和行号 logger, _ := zap.NewDevelopment() defer logger.Sync() // 确保所有缓冲的日志都写入文件 logger.Info("这是一条普通信息", zap.String("name", "Go"), zap.Int("age", 15), ) logger.Warn("这是一条警告信息") logger.Err ...
go GRPC下载依赖protobufprotobuf 是核心可执行文件
安装protobuf,这里使用scoop安装: scoop install protobuf
确认安装: 执行 protoc --version
语言相关要根据不同的语言安装对应的插件, 以生成对应的代码.
其中: protoc-gen-go 用于生成用于生成消息结构体, 生成的代码通常放在 xxx.pb.go 文件中. ``protoc-gen-go-grpc用于生成服务接口和客户端, 生成的代码通常放在xxx_grpc.pb.go` 文件中
项目目录下安装库 go get google.golang.org/grpc
安装插件 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest 以及 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest, 这是下载到 $GOPATH/bin 下的全局命令
proto文件的编写12345678910 ...
第一步:安装 swag 工具打开终端,运行以下命令来安装 swag 命令行工具:
1go get -u github.com/swaggo/swag/cmd/swag
第二步:安装 Swagger UI 中间件为了能在浏览器中查看生成的 Swagger 文档,你需要一个 HTTP 中间件来提供 Swagger UI。这里推荐使用 gin-swagger,因为它和 Go 的 Gin 框架结合得非常好。如果你使用其他框架(如 Echo),也有对应的库。
12go get -u github.com/swaggo/gin-swaggergo get -u github.com/swaggo/files # 静态文件
第三步:在代码中添加注释swag 工具通过解析你 Go 代码中的特定注释来生成 Swagger 文档。这些注释通常放在 main 函数所在的包,或者每个 API 路由处理函数(handler)的上方。
1. 项目主文件(main.go)的注释在你的 main.go 文件顶部,添加项目级别的 Swagger 注释。这些注释定义了 API 的基本信息,比如标题、版本、描述等。
1 ...














