随笔分类 - Go 编程开发
摘要:**原文链接:** [go-zero 的自适应熔断器](https://mp.weixin.qq.com/s/r1kTYUK_r-JalvhzAKKQwg) 上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断。 熔断和限流还不太一样,限流是控制请求速率,只要还能
阅读全文
摘要:**原文链接:** [Go 语言中排序的 3 种方法](https://mp.weixin.qq.com/s/RyVc_JZJi_pTT_51mEHYiw) 在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法。 废话不多说,下面正文开始。 ## 使用标准库 根据场景直接使用标准库中的方
阅读全文
摘要:**原文链接:** [](https://mp.weixin.qq.com/s/--AdUcwOQyP6r5W8ziVwUg) 上一篇文章介绍了 [如何实现计数器限流?](https://mp.weixin.qq.com/s/CTemkZ2aKPCPTuQiDJri0Q)主要有两种实现方式,分别是固
阅读全文
摘要:**原文链接:** [如何实现计数器限流?](https://mp.weixin.qq.com/s/CTemkZ2aKPCPTuQiDJri0Q) 上一篇文章 [go-zero 是如何做路由管理的?](https://mp.weixin.qq.com/s/uTJ1En-BXiLvH45xx0eFsA
阅读全文
摘要:**原文链接:** [使用 Go 语言实现二叉搜索树](https://mp.weixin.qq.com/s/2wYRmG_AiiHYjLDEXg94Ag) 二叉树是一种常见并且非常重要的数据结构,在很多项目中都能看到二叉树的身影。 它有很多变种,比如红黑树,常被用作 `std::map` 和 `s
阅读全文
摘要:**原文链接:** [Go 语言 select 都能做什么?](https://mp.weixin.qq.com/s/YyyMzYxMi8I4HEaxzy4c7g) 在 Go 语言中,`select` 是一个关键字,用于监听和 `channel` 有关的 IO 操作。 通过 `select` 语句,
阅读全文
摘要:**原文链接:** [Go 语言 map 如何顺序读取?](https://mp.weixin.qq.com/s/iScSgfpSE2y14GH7JNRJSA) Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那
阅读全文
摘要:**原文链接:** [Go 语言 map 是并发安全的吗?](https://mp.weixin.qq.com/s/4mDzMdMbunR_p94Du65QOA) Go 语言中的 map 是一个非常常用的数据结构,它允许我们快速地存储和检索键值对。然而,在并发场景下使用 map 时,还是有一些问题需
阅读全文
摘要:原文链接: 为什么 Go for-range 的 value 值地址每次都一样? 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 for-range 循环迭代数组、切片、字符串、map 和 channel 这些数据类型。 但是在使用
阅读全文
摘要:原文链接: Go 语言切片是如何扩容的? 在 Go 语言中,有一个很常用的数据结构,那就是切片(Slice)。 切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一种引用类型,它有三个属性:指针,长度和容量。 底层源码定义如下: type s
阅读全文
摘要:在 Go 中,如果 interface{} 作为函数参数的话,是可以传任意参数的,然后通过类型断言来转换。 举个例子: package main import "fmt" func foo(v interface{}) { if v1, ok1 := v.(string); ok1 { fmt.Pr
阅读全文
摘要:书单一共包含 10 本书,分为入门 5 本,进阶 5 本。我读过其中 7 本,另外 3 本虽然没读过,但也是网上推荐比较多的。 虽然分了入门和进阶,但是很多书中这两部分内容是都包含了的。大家看的时候可以根据自己的情况,先打好基础,再进行进阶。 有的书是开源的,可以直接在线阅读,有的有电子书,大家可以
阅读全文
摘要:原文链接: 读 Go 源码,可以试试这个工具 编程发展至今,从面向过程到面向对象,再到现在的面向框架。写代码变成了一件越来越容易的事情。 学习基础语法,看看框架文档,几天时间搞出一个小项目并不是一件很难的事情。 但时间长了就会发现,一直这样飘在表面是不行的,技术永远得不到提升。 想要技术水平有一个质
阅读全文
摘要:原文链接: Go Error 嵌套到底是怎么实现的? Go Error 的设计哲学是 「Errors Are Values」。 这句话应该怎么理解呢?翻译起来挺难的。不过从源码的角度来看,好像更容易理解其背后的含义。 Go Error 源码很简单,寥寥几行: // src/builtin/built
阅读全文
摘要:原文链接: 为什么要避免在 Go 中使用 ioutil.ReadAll? ioutil.ReadAll 主要的作用是从一个 io.Reader 中读取所有数据,直到结尾。 在 GitHub 上搜索 ioutil.ReadAll,类型选择 Code,语言选择 Go,一共得到了 637307 条结果。
阅读全文
摘要:原文链接: 如何在 Go 中将 []byte 转换为 io.Reader? 在 stackoverflow 上看到一个问题,题主进行了一个网络请求,接口返回的是 []byte。如果想要将其转换成 io.Reader,需要怎么做呢? 这个问题解决起来并不复杂,简单几行代码就可以轻松将其转换成功。不仅如
阅读全文
摘要:在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto。 那这是什么原因呢? 引用 Go 官方 Wiki 的说法: The golang.org/x/... r
阅读全文
摘要:原文链接: 开始读 Go 源码了 学完 Go 的基础知识已经有一段时间了,那么接下来应该学什么呢?有几个方向可以考虑,比如说 Web 开发,网络编程等。 在下一阶段的学习之前,写了一个开源项目|Go 开发的一款分布式唯一 ID 生成系统,如果你对这个项目感兴趣的话,可以在 GitHub 上拿到源码。
阅读全文
摘要:原文连接: 开源项目|Go 开发的一款分布式唯一 ID 生成系统 今天跟大家介绍一个开源项目:id-maker,主要功能是用来在分布式环境下生成唯一 ID。上周停更了一周,也是用来开发和测试这个项目的相关代码。 美团有一个开源项目叫 Leaf,使用 Java 开发。本项目就是在此思路的基础上,使用
阅读全文
摘要:原文链接: 测试小姐姐问我 gRPC 怎么用,我直接把这篇文章甩给了她 上篇文章 gRPC,爆赞 直接爆了,内容主要包括:简单的 gRPC 服务,流处理模式,验证器,Token 认证和证书认证。 在多个平台的阅读量都创了新高,在 oschina 更是获得了首页推荐,阅读量到了 1w+,这已经是我单篇
阅读全文