Go

21 articles
2022

Go中的数据竞争和竞争条件

并发是一个有趣的词,同时我们还可能听过其他词,如:“并行”,“串行”,“线程”,“多线程”等。在计算机科学中,并发是一个宽泛的话题,涉及到许多的主题。很有必要弄清楚他们的定义和区别。
Read more

Golang性能分析-pprof

遵从代码最佳实践或者代码规范指导,可以避免一些参见的坑,但在运行代码时遇到各种问题后,还是需要深入代码了解代码性能和瓶颈, 以便能够发现问题、解决问题和做出相应的优化。
Read more

NeoVim调试Python、Golang

在上两篇中NeoVim开发环境配置、NeoVim配置Go开发环境(进阶), 完成了将NeoVim作为IDE最基本常用功能的,这里将进一步完成对Python、Golang调试环境的配置。
Read more

NeoVim配置Go开发环境

在上一篇NeoVim开发环境配置中记录了NeoVim的基本插件配置,随着了解的深入,这里对NeoVim的插件配置进行一步优化处理。
Read more
2021

grpc SSL/TLS

gRPC提供了内置的授权机制(Authorization),也提供接口用于扩展自定义授权验证。gRPC旨在和多种身份验证(Authentication)机制配合使用,可以轻松安全的使用gRPC同其他系统进行通信。 gRPC支持下面几种机制: SSL/TLS:gRPC集成 …
Read more

创建型模式

1 创建型模式 简单工厂模式(Simple Factory) 单例模式(Singleton) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 创建者模式(Builder) 原型模式(Prototype)
Read more

设计模式:Options Pattern In Golang

下面将记录函数可选(functional options)模式在golang中的实现。
Read more

Apple Login

概述 这里记录了,接入AppleID登录,服务端的实现。 针对后端验证苹果提供了两种验证方式: 一种是 基于JWT的算法验证 一种是 基于授权码的验证
Read more

依赖注入wire

wire是Google开源的一款代码生成工具,通过依赖注入来自动链接不同的组件。
Read more

Go标准库atomic

在 Go 语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,Go 语言在 1.4 版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存 …
Read more

Use Go Embed

Go1.16引入新的//go:embed指令,可以在编译时嵌入文件和目录,并对其进行访问。通过它,真正做到部署时只有一个二进制文件。 背景:2021-02-16,Go Team正式发布了Go1.16。该版本包含下面的一些重要变化: embed 包和 //go:embed 指令 增 …
Read more
2019

GRPC系列 简述

1、简述 gRPC是可以在任何环境中运行的现代开源高性能RPC框架。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像 …
Read more

gRPC系列-开端

简述 gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, …
Read more

Http和golang

Read more

Context包

在Go 1.7中,context包被引入到标准库中。 context是处理并发问题的一个标准风格。 context包内容很简单: var Canceled = errors.New("context canceled") var DeadlineExceeded …
Read more

Golang和假共享(false sharing)

Golang和假共享(false sharing) 多核处理器(SMP)系统中, 每一个处理器都有一个本地高速缓存。内存系统必须保证高速缓存的一致性。当不同处理器上的线程修改驻留再同一高速缓存中的变量时就会发生假共享(false sharing),结果导致高速缓存无效,并强制更 …
Read more
2018

Golang排序

1、基础类型排序 官方package: sort, 提供了对int,float,string的排序 sort.Ints sort.Floats sort.Strings
Read more

[Go]Deferred函数案例

package main func main() { println(DeferFunc1(1)) println(DeferFunc2(1)) println(DeferFunc3(1)) } func DeferFunc1(i int) (t int) { t = i …
Read more

使用Homebrew安装Golang

1、安装Homebrew 安装步骤,参考Homebew 2、安装Golang $ brew install go 2.1、查看Golang安装信息 $ brew info go
Read more
2017

使用Golang基于MongoDB构建Restful服务

近来使用Golang来构建Restful服务变得越发流行。我发现有些时候使用MongoDB作为持久存储,这篇文档中, 我会使用Golang和MongoDB来构建一个简单的用户管理为服务。 MongoDB MongoDB因为极简、灵活、高可用以及面向文档的特性得到越来越多市场上的青 …
Read more

[转] Go Slice 秘籍

Golang官方总结: Slice Tricks 由于引入了内建的append的方法, 包container/vector的很多方法都被移除,可以被内建的append和copy方法代替。 下面是栈vector的操作方法的实现,使用slice实现相关的操作。 1. Append …
Read more