
Golang
文章平均质量分 73
Golang学习分享
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Golang GORM系列:GORM无缝集成web框架
在models/解耦:将数据库连接、数据访问逻辑和业务逻辑分离,降低模块之间的耦合性。依赖注入:通过构造函数将数据库连接传递给 Repository 和 Service,避免全局变量的使用。可扩展性:每个模块(用户、产品等)可以独立开发和测试,便于扩展和维护。这种设计模式非常适合中大型项目,能够有效提升代码的可维护性和可测试性。如果有更多问题,欢迎继续讨论!在import (// 初始化数据库连接// 提供 UserRepository// 提供 ProductRepository。原创 2025-02-19 20:38:04 · 1097 阅读 · 0 评论 -
Golang GORM系列:GORM并发与连接池
GORM 是一个流行的 Go 语言 ORM(对象关系映射)库,用于简化数据库操作。它支持连接池和并发访问功能,这些功能对于高性能、高并发的应用场景非常重要。本文结合示例详细介绍gorm的并发处理能力,以及如何是哟个连接池提升gorm性能。原创 2025-02-18 12:49:01 · 1323 阅读 · 0 评论 -
Golang GORM系列:GORM分页和排序
首先,我们需要定义一个与productsnot null"`not null"`在应用程序中,分页和排序是有效表示数据的基本技术。GORM的内置分页和排序方法为你提供了管理大型数据集和根据用户需求定制其表示的工具。当你应用本指南中的示例时,请记住GORM的分页和排序功能旨在增强用户体验并优化Go项目中的数据交互。原创 2025-02-17 09:14:59 · 1027 阅读 · 0 评论 -
Golang GORM系列:GORM钩子和回调
自定义回调允许您将自己的逻辑注入数据交互过程。步骤1:定义回调函数创建匹配签名的函数。步骤2:注册回调使用GORM的Callback方法为特定钩子注册自定义回调。我们定义一个User模型,并在其中添加一些 Hook。import ("fmt""log""time"returnreturnreturnreturnreturnreturnreturnGORM的钩子和回调提供了一种通用的机制,可以为数据库交互注入自定义逻辑。原创 2025-02-15 17:27:40 · 1092 阅读 · 0 评论 -
Golang GORM系列:GORM事务及错误处理
事务和错误处理是可靠数据库操作的基础。借助GORM强大的事务支持和错误处理技术,你可以确保Go应用程序中的数据完整性并保持一致的状态。通过掌握处理事务、优雅地处理错误和理解回滚的重要性的艺术,你已经获得了驾驭复杂场景和自信地处理故障的技能。原创 2025-02-14 09:19:13 · 1297 阅读 · 0 评论 -
Golang GORM系列:GORM数据库迁移
GORM是一种流行的Go语言ORM库,通过抽象SQL查询的复杂性,在促进数据库交互方面发挥了关键作用。其核心功能是数据库模式的管理,其中包括创建、更新和维护数据库结构等任务。在GORM上下文中,迁移是将这些模式更改应用到数据库的系统方法。总之,迁移是基于gorm的应用程序中数据库管理的一个关键方面。无论是选择自动迁移还是手动迁移,开发人员都必须权衡利弊,并选择最适合其项目需求的方法。通过遵循最佳实践并利用可用工具,使用GORM管理数据库模式更改可以是一个无缝且高效的过程。原创 2025-02-13 06:03:47 · 1216 阅读 · 0 评论 -
Golang GORM系列:GORM 高级查询教程
从Go应用程序获取和修改数据的最全面的工具集是由GORM复杂的查询功能提供的。通过学习如何使用连接和关系、预加载相关数据,甚至尝试原始SQL查询,可以很快掌握精确而复杂地数据查询。这些特性不仅提高了程序的效率,而且还提供了对以前难以想象的复杂数据情况的访问。原创 2025-02-12 07:47:03 · 1840 阅读 · 0 评论 -
Golang GORM系列:GORM CRUM操作实战
CRUD操作构成了任何数据驱动的应用程序的核心,而GORM在这一领域的能力确实非常出色。使用GORM,创建、读取、更新和删除记录成为一个无缝的过程,将你从原始SQL查询的复杂性中解放出来。通过遵循本指南中提供的逐步示例,你已经掌握了在Go应用程序中有效管理数据所需的基本技能。原创 2025-02-10 13:52:36 · 1245 阅读 · 0 评论 -
使用 SonarQube 提升 Go 代码质量:Docker 化部署与实战指南
SonarQube是一个开源的代码质量管理平台,用于持续分析和评估代码质量。它支持多种编程语言(包括 Go),并提供代码异味、漏洞、代码覆盖率、重复代码等问题的检测。通过 SonarQube,开发团队可以更好地维护代码质量,减少技术债务。通过结合 Go 和 Docker,SonarQube 提供了一个高效的代码质量管理解决方案。Docker 简化了 SonarQube 的部署和配置,而 SonarScanner 则使得 Go 项目的代码分析变得简单易行。原创 2025-02-09 20:50:19 · 704 阅读 · 0 评论 -
Golang GORM系列:定义GORM模型及关系指南
在应用程序中高效管理数据库的关键是在GORM中定义模型。通过创建模型之间的关系、用相关标记注释字段以及构建有组织的结构模型,你为平滑的数据库交互构建了坚实的基础。GORM中的一对一、一对多和多对多关系处理使您能够轻松地为复杂的数据情况建模。结构良好的基础会产生可伸缩和可维护的应用程序,使你的数据库管理之旅变得简单而富有成效。原创 2025-02-09 19:24:27 · 1128 阅读 · 0 评论 -
Golang:精通sync/atomic 包的Atomic 操作
我们已经游历了Go的sync/atomic包的迷人世界,揭示了原子操作的强大和巧妙。从掌握原子计数器到使用Compare-and-Swap实现无锁算法,您现在可以编写更高效、更安全的并发围棋程序了。请记住,虽然原子操作可以使代码负担过重,但它们需要仔细考虑并正确实现。原创 2025-02-08 21:45:24 · 1081 阅读 · 0 评论 -
Golang:Go 1.23 版本新特性介绍
Go 1.23是一个强大的更新,增强了语言的功能,优化了性能,并引入了开发人员会发现有用的新工具和特性。无论你是对尝试新的语言特性感兴趣,还是对利用最新的工具链改进感兴趣,Go 1.23都有适合你的特性。Go团队一如既往地鼓励开发人员探索新特性并提供反馈,以帮助塑造语言的未来。原创 2025-02-07 21:00:38 · 1497 阅读 · 0 评论 -
Golang 并发机制-7:sync.Once实战应用指南
Go的并发模型是其突出的特性之一,但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次,而不管有多少协程试图执行它。这听起来可能很简单,但它改变了并发环境中管理一次性操作的规则。定义: sync.Once是一个结构体,只有一个方法Do( f func() )目的:它保证函数f最多被调用一次,即使Do被并发地调用了多次线程安全: sync.Once是完全线程安全的,因此非常适合并发程序但是ync.Once与其他同步原语有那些差异?原创 2025-02-07 20:18:43 · 1270 阅读 · 0 评论 -
使用 Docker 轻松部署 Go 应用:从代码到容器化运行
我们已经成功地配置了Dockerfile来构建镜像,并运行带有Go应用程序所需环境的容器。此外,Docker Compose定义文件允许我们在需要时无缝地与其他服务一起运行容器。原创 2025-02-06 16:42:19 · 699 阅读 · 0 评论 -
Golang 并发机制-6:掌握优雅的错误处理艺术
由于并行执行带来的复杂性,并发程序中的错误处理提出了独特的挑战。通过有效地传播来自程序的错误并实现错误分组和报告机制,您可以创建健壮且可靠的并发程序。正确的错误处理是编写既高效又可靠的并发代码的一个重要方面。原创 2025-02-05 11:53:25 · 638 阅读 · 0 评论 -
Golang 并发机制-5:详解syn包同步原语
sync包是Go中的一个标准库包,为并发编程提供同步原语。它为开发人员提供了协调和同步程序的工具,确保安全有序地执行并发任务。sync包提供的一些关键同步原语包括Mutexes, RWMutexes, Cond, Wait Groups。在 Go 语言里,条件变量(sync.Cond)是一种同步原语,它用于协调多个 goroutine 的执行顺序,尤其是在某个条件满足时唤醒等待的 goroutine。条件变量通常和互斥锁(sync.Mutex或。原创 2025-02-03 11:06:53 · 1706 阅读 · 7 评论 -
Golang 并发机制-4:用Mutex管理共享资源
互斥锁是一种同步原语,提供对共享资源或代码关键段的独占访问。它充当看门人,一次只允许一个Goroutine访问和修改受保护的资源。当一个线程持有互斥锁时,所有其他试图获取互斥锁的线程都必须等待轮到它们。Lock() :该方法获取互斥对象,授予对资源的独占访问权。如果另一个线程已经持有互斥对象,新的线程将阻塞,直到它被释放。Unlock():这个方法释放互斥锁,允许其他等待的例程获取互斥锁并访问资源。总之,互斥锁是确保Go中安全并发的强大工具。原创 2025-02-02 12:47:04 · 1063 阅读 · 0 评论 -
Golang 并发机制-3:通道(channels)机制详解
在Go语言中,通道是一个基本的特性,它支持在gooutine(并发执行线程)之间进行安全和同步的通信。它们充当管道,通过它可以在程序之间传递数据,促进并发程序中的协调和同步。通道是单向的,这意味着它们既可以用于发送数据(<- chan)也可以用于接收数据(chan <-这种单向性有助于在程序间实现清晰和可控的数据流。原创 2025-01-31 17:42:18 · 1580 阅读 · 0 评论 -
Golang 并发机制-2:Golang Goroutine 和竞争条件
Goroutine 是 Go 编程语言中并发编程的基本构建块。它本质上是一个轻量级的执行线程,在 Go 程序中与其他 Goroutine 并行运行。与其它编程语言中的传统线程不同,Goroutine 由 Go 运行时管理,在内存和 CPU 利用率方面都更高效。性质与效率Goroutine的突出特性之一是它们的轻量级特性。传统线程可能是资源密集型的,会消耗大量的内存和CPU资源。相比之下,gooutine非常高效,支持创建数千个这样的例程,而不会造成显著的开销。原创 2025-01-30 16:00:21 · 1476 阅读 · 1 评论 -
Golang 并发机制-1:Golang并发特性概述
并发是现代软件开发中的一个基本概念,它使程序能够同时执行多个任务,从而提高效率和响应能力。在本文中,我们将探讨并发性在现代软件开发中的重要性,并深入研究Go处理并发任务的独特方法。原创 2025-01-29 19:19:40 · 670 阅读 · 0 评论 -
Golang :用Redis构建高效灵活的应用程序
在当前的应用程序开发中,高效的数据存储和检索的必要性已经变得至关重要。Redis是一个快速的、开源的、内存中的数据结构存储,为各种应用场景提供了可靠的解决方案。在这个完整的指南中,我们将学习什么是Redis,通过Docker Compose安装Redis的简单过程,并掌握将Redis与Golang集成的艺术。在本次探索结束时,您将能够使用Golang和Redis之间的协同作用来构建高性能和可扩展的应用程序。原创 2025-01-28 12:21:15 · 1508 阅读 · 0 评论 -
Golang Gin系列-9:Gin 集成Swagger生成文档
本文介绍了Gin如何集成Swagger,包括安装依赖,增加API接口注释文档,以及如何配置表单数据参数和JWT认证等。Gin,愈学习愈快乐, Go!原创 2025-01-26 20:59:06 · 1654 阅读 · 0 评论 -
Golang Gin系列-8:单元测试与调试技术
通过遵循本章概述的实践,您可以编写健壮的单元测试,有效地调试问题,并优化您的Gin应用程序的性能。Gin,愈学习愈快乐, Go!原创 2025-01-24 09:47:16 · 1674 阅读 · 0 评论 -
Golang Gin系列-7:认证和授权
Basic 认证是内置于HTTP协议中的简单身份验证方案。它包括在每个请求中发送用户名和密码。尽管它很容易实现,但出于安全考虑,不建议将其用于生产环境应用程序。示例:Basic 认证在这个例子中,杜松子酒。BasicAuth中间件检查有效的用户名和密码。如果凭证正确,则继续请求;否则,它返回401 Unauthorized状态。Token-based认证,特别是使用JSON Web令牌(JWT),是一种更安全、可扩展的方法。jwt是无状态的,这意味着服务器不需要存储会话信息。示例:Token-based原创 2025-01-23 15:39:26 · 1205 阅读 · 0 评论 -
Golang:使用DuckDB查询Parquet文件数据
本文介绍DuckDB查询Parquet文件的典型应用场景,掌握DuckDB会让你的产品分析能力更强,相反系统运营成本相对较低。为了示例完整,我也提供了如何使用Python导出MongoDB数据。Apache Parquet文件格式在存储和传输大型数据集方面变得非常流行。最近遇到一个典型应用场景,在MongoDB中存储大量结构化数据的成本过高。相反,我们将这些数据以Parquet格式存储在S3中。为了提供偶尔的查询,我们下载S3文件并使用DuckDB加载/查询。原创 2025-01-22 20:13:33 · 784 阅读 · 0 评论 -
DuckDB:Golang操作DuckDB实战案例
DuckDB对Go的支持允许开发人员直接从他们的Go应用程序中执行强大的数据分析操作。强大的数据管理系统和通用高效的编程语言之间的这种集成为更先进的数据处理应用打开了大门。有了本文提供的基础知识,你就可以开始探索这些可能性了。原创 2025-01-21 20:56:15 · 1524 阅读 · 0 评论 -
Golang Gin系列-5:数据模型和数据库
Gin框架与GORM相结合,为Go应用程序中的模型和数据库管理提供了强大的解决方案。通过将GORM的ORM功能无缝地集成到Gin中,开发人员可以在更高的抽象级别上工作,抽象掉低级别的数据库细节。Gin优雅的路由系统简化了CRUD操作,而其中间件生态系统可以无缝集成输入验证和CSRF保护等基本功能。理解和实现这些概念使开发人员能够以最小的努力创建可伸缩、高效和安全的web应用程序。通过参考Gin文档和GORM文档,读者可以进一步深入探索。原创 2025-01-21 20:10:39 · 1178 阅读 · 0 评论 -
Golang Gin系列-6:Gin 高级路由及URL参数
通过本文中的示例,你应该能够在Gin应用程序中有效地利用高级路由和URL参数。Gin,愈学习愈快乐, Go!原创 2025-01-20 19:28:30 · 1395 阅读 · 0 评论 -
DuckDB:Golang操作DuckDB实践指南
DuckDB Go驱动程序Go-DuckDB允许通过接口使用DuckDB。有关如何使用此接口的示例,请参阅。Go-DuckDB项目,托管于https://github.com/marcboeker/go-duckdb,是官方的DuckDB Go客户端。本文解释Go操作DuckDB,并结合基本示例和批量追加示例进行说明。原创 2025-01-20 19:23:01 · 954 阅读 · 0 评论 -
Golang Gin系列-4:Gin Framework入门教程
在本章中,我们将深入研究Gin,一个强大的Go语言web框架。我们将揭示制作一个简单的Gin应用程序的过程,揭示处理路由和请求的复杂性。此外,我们将探索基本中间件的实现,揭示精确定义路由和路由参数的技术。此外,我们将深入研究控制器的创建和分组路由的艺术,从而在应用程序中实现更好的组织和可维护性。原创 2025-01-18 12:30:56 · 856 阅读 · 0 评论 -
Golang Gin系列-3:Gin Framework的项目结构
在Gin教程的第3篇,我们将讨论如何设置你的项目。这不仅仅是把文件扔得到处都是,而是要对所有东西的位置做出明智的选择。相信我,这些东西很重要。如果你做得对,你的项目会更容易处理。另外,它会让你的代码看起来更专业。因此,让我们深入了解像老板一样组织Gin项目的细节。原创 2025-01-17 19:03:36 · 1611 阅读 · 0 评论 -
Golang Gin系列-2:搭建Gin 框架环境
开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中,我们将引导你完成安装Go编程语言和Gin框架的过程,Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中,本指南是高效而强大的web开发路线图。原创 2025-01-17 14:14:43 · 943 阅读 · 0 评论 -
Golang Gin系列-1:Gin 框架总体概述
Gin是Go编程语言的web框架,以简单和高性能而设计。它为构建web应用程序和RESTful api提供了一组轻量级和灵活的工具。Gin的主要优势之一是其简约的设计,允许开发人员对他们的应用程序进行细粒度控制,同时保持高水平的性能。Gin是建立在Go语言 net/http 包之上的,它的设计受到了其他web框架的启发,但根据Go语言的习惯进行了定制。它以其速度和效率在Go社区中广泛使用,使其成为构建可伸缩和高性能应用程序的绝佳选择。本文介绍了Gin框架,探索了它的关键特性,并建立了简单入门的应用程序。原创 2025-01-16 21:04:25 · 1018 阅读 · 0 评论 -
Golang结合MySQL和DuckDB提高查询性能
高速分析:DuckDB针对内存,列式存储进行了优化,使其成为分析查询的理想选择。更低的延迟:当处理大型数据集时,DuckDB显著减少了复杂操作所需的时间。灵活的数据存储:使用MySQL存储结构化的事务性数据,同时将分析工作负载卸载到DuckDB以获得更快的见解。有效的资源利用:DuckDB在内存中处理分析工作负载的能力,避免了传统数据库中出现的I/O操作开销。易于扩展:DuckDB的轻量级设计允许它处理更大的数据集,而不需要昂贵的硬件升级。原创 2025-01-16 17:02:29 · 1033 阅读 · 0 评论 -
Golang:使用minio替代文件系统实战教程
本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势。同时给出Golang的实际示例代码,包括初始化客户端、读取minio对象以及设置过期策略等。原创 2025-01-04 08:22:55 · 1563 阅读 · 0 评论 -
Golang使用etcd构建分布式锁案例
在本教程中,我们使用Go等语言构建了简单分布式锁系统。该系统可用于远程Go开发人员管理对其应用程序中共享资源的访问,确保分布式系统中的一致性和防止竞争条件。原创 2024-12-10 14:41:06 · 1740 阅读 · 0 评论 -
Prometheus 查询语言PromQL基础入门
PromQL是一种用于处理时间序列数据的查询语言,支持实时选择和汇总数据等查询功能。在Prometheus中利用PromQL实现绘图和预警功能。基本概念度量:定期收集度量的指标名称标签:向指标添加维度的键值对样本:由float64值和毫秒级精度的时间戳组成的单个数据点本指南绍了PromQL的基础知识。随着你对这些概念越来越熟悉,很快就能够编写更复杂的查询,从而更深入地了解监控系统度量指标。后续还会介绍其他函数和操作、学习聚会和分组,以及探索更高级的PromQL功能,如:子查询和偏移修饰符等。原创 2024-10-29 13:38:26 · 429 阅读 · 0 评论 -
OpenMetrics 和 Prometheus 数据规范
本文介绍了OpenMetrics数据格式规范,理解这些规范有助于我们进一步学习prometheus,实现对各类应用或系统的监控。原创 2024-10-21 06:44:12 · 1115 阅读 · 0 评论 -
快速学Go依赖注入工具wire
Wire是代码依赖工具,它没有采用反射机制或运行时状态,使用Wire可以有效避免手动编写硬代码依赖。原创 2023-05-21 20:55:58 · 1842 阅读 · 0 评论 -
Golang实现简单WebSocket服务
我们每天接触到各类应用,如社交、在线文档、直播等,后端都需要使用WebSocket技术提供实时通信能力。本文介绍如何使用Golang实现实时后端WebSocket服务,首先使用Gin框架搭建http服务,然后使用库实现简单后端WebSocket服务,示例实现从0到1的过程,适合初学者快速入门。原创 2023-05-18 21:29:44 · 3104 阅读 · 0 评论