Skip to content

Latest commit

 

History

History
399 lines (199 loc) · 16 KB

2020.md

File metadata and controls

399 lines (199 loc) · 16 KB

2020年度Go技术文章盘点

Channel

小米大佬走进Golang之Channel的数据结构

走进 Golang 之 Channel 的数据结构

面试官让我用channel实现sync包里的同步锁,是不是故意为难我?

Go 基于 channel 实现连接池

Channel 源码阅读

Go goroutine 和 channel 详解

Go channels 与并发

channel 实现 sync 包里的同步锁

Go 中的 Goroutine + Channel 真的能减少并发 Bug 吗?

经典旧文:Go channel教程

Go的Channel很强大,理解其内在概念会让它更强大

select语句是按何种顺序选择就绪channel的

好未来Golang源码系列三:Channel实现原理分析

Golang channel 源码深度剖析

多 Goroutine 的并发程序如何保证按序输出?channel 的使用是关键

Goroutine + Channel 是 Go 的招牌,但必须留意被遗弃的 Channel

Go 语言 Channel 实现原理精要

用一个生产与消费例子学习go语言中goroutine,channel,select,time

使用GoChannel及Goroutine時機

使用go channels实现发布订阅

图解Go的channel底层原理

channel的使用及源码解析

在 Go 中多路复用 channel

Channel的使用及源码解析

我喜欢 Goroutine 和 Channel

Go 经典入门系列 22:Channel

如何使用 Channel 编排你的 Go Routine

一文读懂 Channel 设计

调试+图解 channel 的内部实现

何时使用带缓冲的channel

Go 语言基于 channel 实现的并发安全的字节池

Go 中的并发性-使用 channel 处理竞争条件

从并发模式看 Go channel 使用技巧

深入理解 Goroutine 和 Channel

Go channel到底有多快

Error

Go 经典入门系列 31:自定义错误

Go 经典入门系列 30:错误处理

Go的错误处理准则

Struct

当 Go struct 遇上 Mutex

Json

如何在Go中使用任意结构的JSON?

Reflect

解密 Go 语言之反射 reflect

String

Go 的 unsafe 字符串驻留 (string interning) 实践

go4.org/intern高效字符串分配原理解析

Interface

Go 经典入门系列 28:多态

Runtime

Golang 的 sync.Pool设计思路与原理

Go Module

干货满满的 Go Modules 知识分享

并发编程

Week03: Go并发编程(七) 深入理解 errgroup

Week03: Go并发编程(八) 深入理解 sync.Once

Week03: Go并发编程(五) 深入理解 sync/atomic

Week03: Go并发编程(六) 深入理解 WaitGroup

并发编程--用SingleFlight合并重复请求

Golang 并发编程核心篇 —— 内存可见性

Week03: Go并发编程(四) 深入理解 Mutex

常用关键字

go make 和new的区别

Go 经典入门系列 28:Defer

panic和recover

Go语言for-range排坑指南

Template

理解Go中的HTML模板

第三方库

go os/exec 简明教程

基于 go-ethereum 实现的火币客户端

如何构建 Go 命令行项目

chatto: 开源聊天机器人的最小框架

pbgopy: 在设备间拷贝和粘贴数据(支持加密)

validator如何使用

hystrix-go 使用与原理

Golang 语言的值验证库 Validator 怎么使用?

利用 Watermill 实现 Golang CQRS

aegis: 多平台调试状态监测库

trigger:基于谷歌 CEL 的决策引擎框架

tupical-rest-server: 使用 typical-go 构建的 Web 项目模版

evon: 一个基于代码生成的轻量级事件分发引擎

Go实现的直播服务器

webify: 将shell命令转换为web服务

gitlab的非官方命令行工具

代码规范及编程范式

记录一次Go代码review

如何写出优雅的go代码

Go 编程模式:切片,接口,时间和性能

《Go编程模式》系列文章

Golang 新特性

2020年Go语言盘点:新冠大流行阻挡不了Go演进的步伐

Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化

Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化

IDE

用于 Go 的浏览器内置 IDE

Goland 2020.3.1 发布,支持 M1 芯片

单元测试

油管视频:使用Testify进行Go测试指南

测试开发技术合集

逆向工程

Go逆向工程part2

反向 Go 二进制文件

对BioNTech/Pfizer SARS-CoV-2疫苗的源代码进行逆向工程

网络编程

一篇文章带你了解Go语言基础之网络编程

HTTPS 温故知新(六) —— TLS 中的 Extensions

HTTPS 温故知新(五) —— TLS 中的密钥计算

HTTPS 温故知新(四) —— 直观感受 TLS 握手流程(下)

HTTPS 温故知新(三) —— 直观感受 TLS 握手流程(上)

HTTPS 温故知新(二) —— TLS 记录层协议

Go netpoller 原生网络模型之源码全面揭秘

代码管理

我们如何构建GitHub Globe

云原生

Kubernetes Service APIs 介绍

Kubernetes学习笔记之LRU算法源码解析

Kubernetes 学习笔记之 ServiceAccount TokensController 源码解析

Kubernetes 探针详解!

配置 containerd 镜像仓库完全攻略

还在手写 Operator?是时候使用 Kubebuilder 了

gitlab迁移到kubernetes上一周年记

云原生制品那些事(2):OCI 镜像规范

Prometheus监控神器-Kubernetes篇(三)

Kubernetes中的有状态应用

Prometheus监控神器-Kubernetes篇(一)

Prometheus监控神器-Kubernetes篇(二)

从k8s configmap中自动重新加载配置

使用Prometheus和RabbitMQ指标为Kubernetes定制HPA扩展

微服务

微服务架构中的熔断器设计与实现( Golang 版)

微服务高可用之熔断器实现原理与 Golang 实践

基于prometheus的微服务指标监控

Go 微服务过载保护原理与实战

Grafana Tempo 分布式跟踪系统存储后端

线上问题定位及性能优化

干货!内存问题探微

我如何使用 pprof 在 Golang 应用中发现内存泄漏

详解 Go 内联优化

详解 Go 逃逸分析

数据库(缓存)

redis懒惰删除的巨大牺牲

防止缓存击穿

数据库索引

用go给redis写组件

Go 项目实战:实现一个 Redis(8) 之TCC分布式事务

分布式事务之底层原理揭秘

Doit是如何实现高效跨表查询的

innoDB数据页结构

redis基础

分布式事务之底层原理

分布式

raft算法知识树

Gin/Echo

Echo 系列:定制篇2 — 自定义 Validator,进行输入校验

Go 语言 Web 框架 Echo 系列:定制篇1:自定义 Binder,处理 Request 数据绑定

链路追踪

像跟踪分布式服务调用那样跟踪Go函数调用链

语言对比

让腾讯、字节跳动放弃 Python 的 Go 微服务,凭什么?

由 C# 改为 Go,用更少的资源将 API 的响应时间减少了 87%

为什么Go的web框架速度还不如Java?阿里工程师给出了一个不错的答案

Web开发:Go vs. Python

Go 语言有哪些 “劣势”

将Go作为商业语言

消息中间件

Go 实现的实时消息服务器 Beaver

[kafka为什么这么快] (https://strikefreedom.top/why-kafka-is-so-fast)

算法

机器学习算法选择指南

最快Levenshtein字符串距离算法的go实现

安全

防止Go中的服务器端请求伪造行为(SSRF)

总结学习

go的学习计划和知识树

书籍

曹大书评

操作系统

初学者,经验丰富用户和专家用户各自的2021年最佳Linux发行版

Linux内核5.10引入静态调用以防止Speculative Execution Attacks

面试

数据库相关

  1. B树和B+树区别

  2. 聚集索引与非聚集索引

  3. 非聚集索引一定回表查询吗(覆盖索引)?

  4. 使用过 Redis 分布式锁么,它是什么回事?

  5. 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?

  6. 谈一谈索引下推,索引覆盖,索引失效。

  7. 为什么要使用索引

  8. 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?

  9. 使用索引的注意事项?

  10. 为什么要用 Redis 而不用 map/guava 做缓存?

  11. Redis有哪些数据类型

语言相关

  • 互斥锁与读写锁的异同,尤其是互斥规则和行为模式方面的异同?

  • 互斥锁和读写锁的指针类型都实现了哪一个接口吗?