
GO
文章平均质量分 91
GO
爱吃芝麻汤圆
西交22级软工学子,云原生、后端开发、神经网络、机器学习、AI系统、机器人、算法等方向均有涉猎,欢迎关注,大家一起进步成长
展开
-
Golang 之 Context 源码解析(1.20+)
value context的递归调用在查找值,即执行 Value 操作时,会先判断当前节点的 k 是不是等于用户的输入 k,如果相等,返回结果,如果不等,会依次向上从子节点向父节点,一直查找到整个 ctx 的根。同时,这就是value context不能自底向上传递值的原因。这四个With函数,接收的都有一个parent参数,就是父Context,我们要基于这个父Context创建出子Context的意思,这种方式可以理解为子Context对父Context的继承,也可以理解为基于父Context的衍生。原创 2025-05-23 15:30:40 · 852 阅读 · 0 评论 -
网络存储S3 与 MinIO对比
例如 Amazon S3、MinIO,将数据作为“对象”(Object)存储,每个对象包含数据、元数据和唯一标识符(如 URI),适合海量非结构化数据(图片、视频、日志等)。Amazon S3(Simple Storage Service)是 AWS 在 2006 年推出的首个公有云对象存储服务,定义了行业标准的对象存储 API。MinIO 是 2014 年发布的开源对象存储系统,完全兼容 Amazon S3 API,专为云原生环境(如 Kubernetes)设计,强调轻量化和高性能。原创 2025-05-16 14:18:18 · 870 阅读 · 0 评论 -
Golang日志重定向到Windows事件日志
日志重定向是指将应用程序生成的日志消息从默认的输出位置(通常是控制台)转移到其他位置或系统的过程。文件系统(日志文件)数据库远程日志服务器(如ELK、Splunk等)操作系统日志系统(如syslog、Windows事件日志)第三方日志服务(如Loggly、Datadog)日志重定向是构建可维护、可观测系统的重要技术。通过理解其原理和掌握实现方法,开发者可以根据项目需求灵活地配置日志系统。无论是简单的文件重定向,还是复杂的分布式日志收集,核心思想都是通过自定义处理器来控制日志的最终去向。原创 2025-05-09 13:29:26 · 830 阅读 · 0 评论 -
GoFrame之Logger全解析Golang
/ 初始化自定义logger开闭原则:通过配置化支持扩展,无需修改代码单一职责:每个logger实例功能独立依赖倒置:依赖接口而非实现约定优于配置:提供合理的默认值通过深入理解这些设计思想,开发者可以更高效地利用GoFrame的logger模块构建健壮的日志系统,满足从开发调试到生产部署的各种场景需求。原创 2025-04-30 18:46:32 · 554 阅读 · 0 评论 -
go-playground/validator库详细解析
是一个基于标签的结构体验证器,它允许你通过结构体标签定义验证规则,然后自动验证结构体字段的值是否符合这些规则。// 假设我们有一些有效的国家代码// ...Username string `validate:"required" label:"用户名"`Email string `validate:"required,email" label:"电子邮件"`// 注册自定义翻译器// 注册默认翻译// 注册自定义字段名翻译。原创 2025-04-23 13:18:15 · 1045 阅读 · 0 评论 -
Go Validator 自定义验证系统详解
/ 验证器函数// 翻译函数return t})业务规则封装:将业务规则(如优先级范围)封装在验证器中复用性:一次定义,多处使用清晰的错误信息:通过翻译系统提供用户友好的错误提示与结构体解耦:验证规则不直接写在业务代码中本文通过实际代码示例展示了如何在 Go 中构建一个完整的自定义验证系统。这种模式特别适合需要复杂业务规则验证的场景,能够保持代码的整洁性和可维护性。验证器初始化配置自定义验证规则定义验证错误翻译处理结构体验证标签使用统一的验证错误处理。原创 2025-04-22 17:36:43 · 476 阅读 · 0 评论 -
Asynq 深度剖析:Go 语言分布式任务队列的卓越实践
Asynq 是由 Ken Hibino 开发的高性能分布式任务队列库,专为 Go 语言生态量身定制。它融合了 Redis 的强大数据结构与 Go 的并发特性,提供了媲美 Celery(Python)、Sidekiq(Ruby)的功能,同时具备更简洁的 API 和深度优化的性能。计算重试时间存入 asynq:retry。归档至 asynq:archived。BRPOPLPUSH至进行中队列。Hash存储任务数据。原创 2025-04-11 13:52:57 · 827 阅读 · 0 评论 -
Golang中的WorkerHandler讲解
此代码构建了一个完整的后台任务管理系统,运用库来处理异步任务与定时任务。该系统涵盖了异步任务处理器、定时任务调度器,可处理用户触发的即时操作以及系统的周期性维护任务。原创 2025-04-11 11:06:07 · 681 阅读 · 0 评论 -
Golang的Server服务器初始化二——启动多网络服务
middleware.CommonInterceptor, // 通用拦截器(如日志、耗时统计)middleware.AuthenticationInterceptor, // 认证拦截器(如JWT验证)拦截器的作用在 gRPC 方法执行前后插入自定义逻辑,实现以下功能:日志记录:记录请求参数、响应时间和错误信息。认证鉴权:验证请求头中的 Token 或证书。限流熔断:控制请求速率或拒绝超载流量。请求校验:检查参数合法性。执行顺序拦截器按定义顺序执行(先,后。原创 2025-04-11 10:26:56 · 1128 阅读 · 0 评论 -
Golang的Server服务器初始化一——同步异步设计模式
Server初始化一(待push)原创 2025-04-11 10:26:41 · 596 阅读 · 0 评论 -
Dockerfile超详细解释
ARG用于定义构建时的变量,可以在构建时通过参数覆盖。构建阶段使用 Go 镜像作为基础设置 Go 环境编译代码生成二进制文件运行阶段使用轻量级的 OpenEuler 镜像配置运行时环境从构建阶段复制二进制文件设置启动命令。原创 2025-04-10 14:06:28 · 1518 阅读 · 0 评论 -
异步队列任务的go语言处理器函数
这个实现展示了典型的任务队列处理模式,结合数据库事务与外部系统操作,需要注意分布式场景下的数据一致性保障。1.开启事务,锁定任务记录。6.生成作业资源描述。原创 2025-04-08 15:33:41 · 772 阅读 · 0 评论 -
GO的作业工厂模式详解
调用被实现组合复用被实现客户端代码工厂接口具体工厂基础结构体其他工厂为什么需要工厂模式?问题场景假设没有工厂模式:痛点:2. 基础结构体(公共能力)3. 具体工厂(业务实现)二、隐式接口实现机制实现原理与传统语言对比特性Java/C#Go接口声明无显式声明方法关联显式@Override方法签名匹配即实现类型检查编译时强制通过var _检查三、组合模式深度解析1. 内存结构内存布局:2. 方法调用链3. 方法覆盖示例原创 2025-04-08 15:29:06 · 847 阅读 · 0 评论 -
GO常用命令总结
文件进行更新和整理,确保项目依赖的正确性和完整性。命令会根据项目代码中实际的导入情况,对。:交叉编译需安装对应平台的工具链。原创 2025-04-03 18:51:54 · 679 阅读 · 0 评论 -
GoFrame DAO 结构深度解析
AiDictDao。原创 2025-04-03 18:10:41 · 609 阅读 · 0 评论 -
grpc详解与项目架构
/ 1. 定义数据结构// 2. 定义 RPC 服务接口和的序列化代码的客户端和服务端代码(包含GetUser方法)作用:查找./proto目录及其子目录(最多3层)下的所有.proto文件输出示例。原创 2025-04-02 19:50:20 · 1030 阅读 · 0 评论 -
Go 数组、切片与map
对切片进行修改非常方便,可以通过索引进行赋值或修改现有元素的值。此外,还可以使用切片作为参数传递给某个函数,并在函数内部对切片进行修改。len()函数返回切片中实际存储的元素个数,而cap()函数返回切片底层数组的大小。切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。map是无序的,每次打印出来的map都会不一样,它不能通过index获取,而必须通过key获取。copy()函数用于将一个切片的内容复制到另一个切片中。用于向切片中添加元素,可以一次添加一个或多个元素。原创 2025-02-24 22:40:55 · 874 阅读 · 0 评论 -
Go 方法、接口与面向对象
d1d1是一个Describer接口类型的变量。它可以存储任何实现了Describer接口的类型的值。原创 2025-02-23 01:07:04 · 1150 阅读 · 0 评论 -
Go 语言简介、编程规范与零散知识点
规范的语法:不需要符号表来解析。垃圾回收:独有垃圾回收机制。无头文件。明确的依赖。无循环依赖。常量只能是数字。int 和 int32 是两种类型。字母大小写设置可见性。任何类型都有方法。没有子类型继承。包级别初始化以及明确的初始化顺序。文件被编译到一个包里。没有数值类型转换。接口隐式实现。嵌入:不会提升到超类。方法按照函数声明。方法即函数。接口只有方法。方法通过名字匹配。没有构造函数和析构函数。postincrement(如 ++i)是状态。原创 2025-02-21 13:35:59 · 947 阅读 · 0 评论 -
字节后端青训营笔记——GO进阶篇
Goroutine 是 Go 语言中实现并发的核心概念,它是一种轻量级的线程,由 Go 语言运行时(runtime)管理。轻量级:Goroutine 的内存开销非常小,大约只需 2KB,这使得单个程序中可以同时运行成千上万个 Goroutine。高效的调度:Goroutine 由 Go 语言的运行时进行调度,而非操作系统。这种调度方式使得 Goroutine 切换的成本远低于传统线程切换的成本。简化的并发:在 Go 语言中,启动一个 Goroutine 非常简单,只需在函数调用前加上go关键字。原创 2024-12-29 05:58:17 · 1489 阅读 · 0 评论