go
文章平均质量分 90
学习go语言
hello_old_city
这个作者很懒,什么都没留下…
展开
-
GRPC简单介绍和使用
GRPC简单介绍和使用一、基本介绍 GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。二、概括 在grpc框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此我们就可以非常方便的创建一些分布式的应用服务。 在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server 来处理客户端的请求; 在客户端,gRPC实现了一个stub(可以简单理解为一个...原创 2020-09-06 17:37:22 · 1045 阅读 · 0 评论 -
Go sync包 sync.Pool
Go sync包 sync.Pool Go版本为go1.14可以存或取临时对象集合;可以安全的同时被多线程使用,保证线程安全;sync.Pool中保存的任何项都可能随时不做通知的释放掉,所以不适合用于像socket长连接或数据库连接池;主要用途是增加临时对象的重用率,减少GC负担。sync.Pool 结构 sync.Pool 存取流程图 ...原创 2020-09-06 17:30:04 · 131 阅读 · 0 评论 -
Golang GMP
前言随着服务器硬件迭代升级,配置也越来越高。为充分利用服务器资源,并发编程也变的越来越重要。在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别。并发: 逻辑上具有处理多个同时性任务的能力。并行: 物理上同一时刻执行多个并发任务。通常所说的并发编程,也就是说它允许多个任务同时执行,但实际上并不一定在同一时刻被执行。在单核处理器上,通过多线程共享CPU时间片串行执行(并发非并行)。而并行则依赖于多核处理器等物理资源,让多个任务可以实现并行执行(并发且并行)原创 2020-05-18 09:59:13 · 389 阅读 · 0 评论 -
Golang 3种并发模型
控制并发有三种种经典的方式,一种是通过channel通知实现并发控制 一种是WaitGroup,另外一种就是Context。1. 使用最基本通过channel通知实现并发控制无缓冲通道无缓冲的通道指的是通道的大小为0,也就是说,这种类型的通道在接收前没有能力保存任何值,它要求发送goroutine和接收goroutine同时准备好,才可以完成发送和接收操作。从上面无缓冲的通道定义来看,发送goroutine和接收gouroutine必须是同步的,同时准备后,如果没有同时...原创 2020-05-18 09:59:31 · 893 阅读 · 0 评论 -
由浅入深剖析 go channel
channel是golang中最核心的feature之一,因此理解Channel的原理对于学习和使用golang非常重要。channel是goroutine之间通信的一种方式,可以类比成Unix中的进程的通信方式管道。CSP模型在讲channel之前,有必要先提一下CSP模型,传统的并发模型主要分为Actor模型和CSP模型,CSP模型全称为communicating sequential processes,CSP模型由并发执行实体(进程,线...原创 2020-05-13 14:56:07 · 215 阅读 · 0 评论 -
golang cron 定时任务
cron 用法首先先把第三方库下载下来:$ go get -v -u github.com/robfig/cron我们来看一个小的demo:每隔一秒打印"hello world"package mainimport ( "github.com/robfig/cron" "log")func main() { log.Println("Starting...") c := cron.New() //新建一个定时任务对象 c.AddFunc("...原创 2020-05-13 14:44:36 · 902 阅读 · 0 评论 -
Go的json解析:Marshal与Unmarshal
简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。更多的使用方式,可以参考:https://studygolang.com/artic...原创 2019-09-27 10:06:26 · 490 阅读 · 0 评论 -
go 类型转换
#string到intint,err:=strconv.Atoi(string)#string到int64int64, err := strconv.ParseInt(string, 10, 64)#int到stringstring:=strconv.Itoa(int)#int64到stringstring:=strconv.FormatInt(int64,10)...原创 2019-09-27 10:11:03 · 227 阅读 · 0 评论