Go语言开发
文章平均质量分 78
适合想要掌握Go语言的零基础读者以及对Go语言感兴趣的程序员学习
Mindfulness code
20年的一线技术以及管理经验,拥有红帽官方授权讲师(RHCI)、红帽认证架构师(RHCA )、红帽认证安全专家(RHCSS)、红帽认证数据中心专家(RHCDS)、红帽认证系统工程师(RHCE)等证书,讲授过RHCA以及RHCE课程,证书编号:110-228-798.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go 语言初探
Google 公司有一个传统,允许员工利用 20% 的工作时间开发自己的实验项目。2007 年 9月,UTF-8 的设计者之一 Rob Pike(罗布.皮克)在 Google 的分布式编译平台上进行 C++ 编译时,与同事 Robert Griesemer (罗布.格里泽默)在漫长的等待中讨论了编程语言面临的主要问题。他们一致认为,相较于在已经臃肿的语言上不断增加新特性,简化编程语言将会带来更大的进步。随后,他们又说服 UNIX 的发明人 Ken Thompson(肯.汤普森)一同来为此做点事情。原创 2024-10-18 18:16:07 · 1015 阅读 · 0 评论 -
在 Go 语言中使用模块
介绍了如使用 Go 创建自己的模块,以及如何测试和使用它们。原创 2024-09-06 16:56:10 · 807 阅读 · 0 评论 -
使用 gRPC
展示了如何使用 gRPC 实现服务器和客户端之间的消息共享。原创 2024-09-05 22:03:49 · 625 阅读 · 0 评论 -
Go 语言 API 开发
介绍了如何创建一个使用 REST 的应用程序,该应用程序可以从远程数据源创建、读取、更新和删除数据。原创 2024-09-03 22:06:52 · 1082 阅读 · 0 评论 -
详解 Go 语言测试
介绍了测试驱动开发(TDD)以及如何使用它来随同代码创建测试。原创 2024-09-02 22:05:06 · 434 阅读 · 0 评论 -
Go 语言文件 I/O 和 OS 操作
介绍了如何读取和写入文件、如何在操作系统中处理目录和文件、如何创建和使用临时文件,以及如何使用命令行参数与程序交互。原创 2024-08-30 21:41:54 · 1775 阅读 · 0 评论 -
Go 语言排序和数据处理
深入了解 Go 提供的包,并学习如何使用它们进行排序、处理日期和时间以及使用正则表达式在字符串中执行搜索。原创 2024-08-29 04:45:00 · 1716 阅读 · 0 评论 -
Go 语言生产服务故障案例精析
首先列举了两种导致 502 状态码的情况,包括 panic 异常和长连接。其次,介绍了服务假死问题的排查以及 HTTP 客户端引发的问题。原创 2024-08-28 14:49:48 · 2307 阅读 · 0 评论 -
Go 服务调试精解
首先讲解了 Go 语言为我们提供的性能分析利器 pprof,并分别介绍了在分析内存指标、CPU指标、锁与阻塞指标等方面的应用。然后讲解了另外一款性能分析工具 Trace,它可以跟踪并采集 Go 进程的诸多事件,通过这些事件可以很清楚地知道 Go 进程每时每刻都在做什么,这对分析并解决 Go 服务性能问题是非常有用的。最后,介绍了 Go 语言专用的调试工具 dlv,并通过具体的例子讲解了如何使用 dlv 调试 Go 程序。原创 2024-08-28 03:45:00 · 1258 阅读 · 0 评论 -
如何完美实现 Go 服务的平滑升级
首先通过一个具体的实验,演示了 Go 服务升级是如何引起的请求 502,从而引起平滑升级的必要性。其次,介绍了 Go 语言原生的信号处理框架,为后续讲解平滑升级打下基础。最后,讲解了如何实现 Go 服务的平滑退出以及开源框架 gracehttp。原创 2024-08-27 18:00:23 · 1884 阅读 · 0 评论 -
如何使用 Go 语言开发微服务
首先以 Go 语言原生的 RPC 标准库为例,介绍了如何实现客户端程序与服务端程序。最后,介绍了字节跳动开源的微服务框架 Kitex 的基本使用方式,还重点介绍了其在可扩展性方面以及服务治理方面的实现原理。原创 2024-08-27 12:41:33 · 1362 阅读 · 0 评论 -
如何利用 Go 语言开发高可用服务
首先介绍了可用性的定义,其次,介绍了高可用三板斧:限流、熔断与降级。原创 2024-08-26 19:42:08 · 1671 阅读 · 0 评论 -
如何利用 Go 语言开发高性能服务
首先介绍了数据库的优化方案,如分库分表,以及如何通过 Gorm 框架实现分表。分库分表之后数据库还是无法满足业务的性能要求,这时通常使用缓存来解决。最后,重点介绍了 Go 服务本身的性能优化方案,包括资源复用、异步化处理以及无锁编程,其中资源复用部分又详细介绍了协程、连接、对象的复用场景。原创 2024-08-26 15:14:03 · 1226 阅读 · 0 评论 -
手把手教你搭建 Go 项目
从 0 到 1 搭建一个基本的 Go 项目、Web 框架 Gin 的原理以及使用技巧,日志框架 Zap 与全链路追踪,数据库访问框架 Gorm, HTTP 客户端框架 go-resty,单元测试等。原创 2024-08-25 21:46:01 · 624 阅读 · 0 评论 -
深入理解 GC 原理、调度与调优
介绍了 Go 语言的内存管理方案以及Go 语言垃圾回收的基本思想:三色标记法,最后从整体上详细讲解了 Go 语言垃圾回收的实现原理,包括垃圾回收的执行阶段、经典的 stopTheWorld、辅助标记、内存清理、垃圾回收触发时机、垃圾回收协程调度模式,以及垃圾回收的调优等。原创 2024-08-25 21:27:38 · 366 阅读 · 0 评论 -
深入理解 Go 语言并发编程底层原理
介绍了并发问题产生的根本原因:非原子操作与多核 CPU 架构。其次,Go 语言的多协程同步方案可以分为两个方向:一是基于管道-协程的 CSP 并发模型;二是基于锁的并发编程。原创 2024-08-24 22:18:54 · 513 阅读 · 0 评论 -
深入理解 Go 语言并发编程之系统调用底层原理
介绍了 Go 语言系统调用的实现原理,包括 Go 语言对系统调用的封装、系统调用是如何触发调度的。原创 2024-08-24 22:00:13 · 1416 阅读 · 0 评论 -
深入理解 Go 语言并发编程--定时器(timer) 底层原理
介绍了定时器的基本用法,以及定时器是如何触发调度的。原创 2024-08-23 21:35:55 · 190 阅读 · 0 评论 -
深入理解 Go 语言并发编程--管道(channel) 的底层原理
介绍了管理的基本用法,管道的读写操作是如何触发调度的。原创 2024-08-23 21:24:21 · 1399 阅读 · 1 评论 -
深入理解 Go 并发编程--网络 IO
介绍了 Go 语言高并发网络 I/O 的实现原理,包括网络编程基本知识,I/O多路复用技术,Go 语言网络 I/O 是如何触发调度的,以及 Go 语言是如何实现网络的读写超时的。原创 2024-08-22 18:10:22 · 493 阅读 · 0 评论 -
Go 语言调度器(schedule)的实现原理
介绍了 Go 语言调度器,讲解了调度器是如何调度并执行用户协程的,并讲解了两中抢占式调度方案。原创 2024-08-22 15:52:41 · 2033 阅读 · 0 评论 -
Go 语言协程管理精解
同样,这里是通过函数 runtime.mcall 切换到系统栈,所以函数 runtime.goexit0 是在系统栈执行的,也是它完成的协程的收尾工作,包括修改协程状态为_Gdead,清理协程相关数据,将协程回收到逻辑处理器 P 的空闲队列,执行调度程序等。协程的入口函数为 gofunc,执行完成时,最后一条语句是 “RET” 汇编指令,它将从协程栈弹出 8 字节数据,并存储到程序计数器 PC,随后通过 "JMP" 指令跳转。另外,每一个协程都有一个协程栈,实际上协程栈也是有结构的。原创 2024-08-21 22:48:48 · 413 阅读 · 0 评论 -
深入理解 Go 语言的 GMP 调度模型
首先引入 Go 语言中经典的 GMP 模型,随后详细介绍 Go 语言协程的实现原理,以及 Go 语言调度器原理。原创 2024-08-21 15:33:23 · 1461 阅读 · 0 评论 -
深入理解 Go 语言中的并发处理请求
首先讨论上下文包,然后将通过一些简单的服务器来探讨如何并发处理请求,并讨论一些处理服务器开发基本问题的方法。原创 2024-08-20 22:30:39 · 183 阅读 · 0 评论 -
解决 Go 语言并发问题
所有较为复杂的程序都会出现错误。当你意识到程序中存在一些异常情况时,启动调试会话通常不是你应该做的第一件事。本文介绍一些无须使用调试器即可进行故障排险的技术。,主要包括以下主题:解读堆栈跟踪信息、检测故障并修复和调试异常。原创 2024-08-20 04:15:00 · 1329 阅读 · 0 评论 -
深入理解 Go 语言原子内存操作
原子内存操作提供了实现其他同步原语所需的低级基础。本文讨论了原子内存操作的内存保证、比较和交换操作和原子的实际用途。原创 2024-08-19 14:09:45 · 1493 阅读 · 0 评论 -
深入理解 Go 语言的 Timer 和 Ticker
Timer 和 Ticker 允许你在未来执行某些操作或定期执行某些操作。Go 运行时提供了这两种工具极其高效的实现。不过,也需要谨慎使用 Timer 和 Ticker,因为它们可能会使流程变得复杂。原创 2024-08-18 22:17:03 · 201 阅读 · 0 评论 -
深入理解GO 语言中的工作池和管道
研究了工作池和管道--这两种模式在几乎每个重要的项目中都以不同的形式出现。这些模式可以通过多种方式使用不同的运行时行为来实现。原创 2024-08-18 22:08:57 · 172 阅读 · 0 评论 -
Go 语言中一些众所周知的并发问题
研究了 3 个众所周知的并发问题,这些问题在处理重要问题时始终会出现。生产者-消费者实现可用于数据处理管道、爬虫设计、设备交互和网络通信等。哲学家就餐问题很好地演示了需要多个互斥体的临界区。原创 2024-08-18 22:00:55 · 119 阅读 · 0 评论 -
深入理解 Go 内存模型
如果你始终序列化对多个 goroutine 之间共享的变量的访问,则无需了解 Go 内存模型的所有细节。但是,当你读取、编写、分析和配置并发代码时,Go 内存模型可以提供很好的见解,指导你创建安全高效的程序。原创 2024-08-18 21:49:40 · 111 阅读 · 0 评论 -
深入理解 Go 并发原语
介绍了 Go 语言支持的两种原语 goroutine 和通道,以及 Go 库中的一些基本同步原语。原创 2024-08-15 21:00:12 · 1139 阅读 · 0 评论 -
Go 语言并发--高级概述
主要讨论了并发和并行、共享内存与消息传递以及原子性、竞争、死锁原创 2024-08-15 19:52:27 · 1162 阅读 · 0 评论 -
深入理解 Go 语言并发 map 安全使用
介绍了 Go 语言内建的 map 类型,了解它的基本使用方法和使用陷阱,然后学习如何实现线程安全的 map 类型,最后介绍 Go 标准库中线程安全的 sync.Map 类型以及第三方库。。原创 2024-08-14 21:53:13 · 1473 阅读 · 0 评论 -
深入理解 GO 语言并发
介绍了并发和并行的概念,以及编程错误可能造成的一些问题。Go 支持并发,并且可帮助处理很多后台工作。另外介绍了如何通过创建和使用协程将并发应用于 Go 应用程序,还使用通道在协程之间进行数据传递。原创 2024-08-14 23:45:00 · 1331 阅读 · 0 评论 -
Go 语言错误处理
了解 GO 语言中错误处理,包括理解不同类型的错误、捕获并处理错误、创建自定义错误消息以及格式化错误信息等内容。原创 2024-08-13 20:16:13 · 554 阅读 · 0 评论 -
Go 语言channel的应用场景及使用技巧
Go 语言channel的应用场景及使用技巧原创 2024-08-13 15:35:46 · 1329 阅读 · 0 评论 -
Go 分布式并发原语
Go 并发编程和调度器原创 2024-08-12 17:00:41 · 1497 阅读 · 0 评论 -
Go 语言错误和恐慌处理
讨论如何将错误处理合并到并发程序中,包括如何在 goroutine 之间传递错误,以便你可以处理或报告错误,然后再讨论恐慌。原创 2024-08-11 23:15:39 · 282 阅读 · 0 评论 -
Go 语言关于 nil 的纷纷扰扰
单词 nil 是一个名词,它的意思是 “零” 或者 “无” ,而在 Go 编程语言里面,nil 则是一个零值。如果我们在声明整数的时候没有为它赋值,那么该整数的值默认为 0,而字符串在同样情况下的值则默认为空字符串,诸如此类。与此类似,如果一个指针没有明确的指向,那么它的值就是 nil。除了指针,nil 标识符还是切片、映射和接口的零值。原创 2024-08-10 22:15:09 · 181 阅读 · 0 评论 -
理解Go语言中多种并发模式
我们先来回顾下同步原语以及它们所解决的问题。Mutex: 解决共享变量或者临界区的并发访问问题RWmutex: 解决在多读少写的场景下互斥锁的并发性能问题。WaitGroup: 解决等待一组子任务完成的问题。Cond: 解决条件满足后通知的问题,单个通知或者全部通知。Once: 解决单次初始化的问题。sync.Map :实现线程安全(goroutine 并发访问安全)的 map 对象Pool:池化对象,重用对象,如果对象的创建和销毁太消耗资源,那么使用池化技术可以很好地解决问题。原创 2024-08-10 21:10:20 · 1119 阅读 · 0 评论
分享