单向golang grpc

数据结构 in Golang:Hash Tables(哈希表)

# 数据结构 in Golang:Hash Tables(哈希表) ### 场景 - 水果店的价格表: - 苹果 Apple:3元 - 香蕉 Banana:4元 - 桃子 Peach:2元 - 梨 Pear:3元 - 找到一种水果的价格: - 可以使用 binary search,通过名称来查找,耗 ......
数据结构 结构 数据 Golang Tables

golang并发channel实践

前言 在我前面一篇文章Golang受欢迎的原因中已经提到,Golang是在语言层面(runtime)就支持了并发模型。那么作为编程人员,我们在实践Golang的并发编程时,又有什么需要注意的点呢?下面我会跟大家详细的介绍一些在实际生产编程中很容易踩坑的知识点。 CSP 在介绍Golang的并发实践前 ......
channel golang

golang实现封装trycatch异常处理

老外的分享 package main import ( "reflect" ) type TryCatch struct { errChan chan interface{} catches map[reflect.Type]func(err error) defaultCatch func(err ......
trycatch golang

go语言使用GRPC流处理模式

# go语言使用GRPC流处理模式 标签(空格分隔): go,grpc proto文件 syntax = "proto3"; package four_kinds_method.v1; option go_package="go-example/grpc/four_kinds_method/prot ......
语言 模式 GRPC

Golang中如何控制goroutine的执行顺序?

首先说明一下原理:前后协程之间通过通道去相互限制,后一个线程尝试去获取一个channel的值,当channel中没有值时,就会一直阻塞,而前一个协程则负责关闭channel,当前一个协程完成了这个操作,后一个协程才可以结束阻塞,继续执行。 示例代码: package main import ( "f ......
goroutine 顺序 Golang

gRPC 简介

# gRPC 简介 标签(空格分隔): go,grpc 概述 在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用 ......
简介 gRPC

GRPC核心概念、架构和生命周期

# GRPC核心概念、架构和生命周期 标签(空格分隔): go,grpc 官网地址:https://grpc.io/docs/what-is-grpc/core-concepts/ 概述 与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。默认情况下, ......
架构 周期 核心 概念 生命

算法 in Golang:Breadth-first search(BFS、广度优先搜索)

# 算法 in Golang:Breadth-first search # (BFS、广度优先搜索) ## 最短路径问题 Shortest-path problem - 从 A 到 F 点有多条路径 ## 解决问题的算法 Breadth-first Search(广度优先搜索) 1. 将问题建模为图 ......
广度 Breadth-first 算法 Breadth Golang

算法 in Golang:Quicksort(快速排序)

# 算法 in Golang:Quicksort(快速排序) ## Quicksort(快速排序) - 快速排序 O(nlog2^n),比选择排序要快 O(n²) - 在日常生活中经常使用 - 使用了 D & C 策略(分而治之) ## 使用 Quicksort 排序数组 - 不需要排序的数组(也就 ......
算法 Quicksort Golang in

算法 in Golang:Recursion(递归)

# 算法 in Golang:Recursion(递归) ## 递归算法 ### 场景:在套娃中找到宝石 ### 可以这样做 - while 没找到: - if 当前项 is 宝石: - return 宝石 - else if 当前项 is 套娃: - 打开这个套娃 - if 当前项 is 宝石: ......
算法 Recursion Golang in

20个Golang片段让我不再健忘

本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助。 ......
片段 Golang

Golang中关于Channel读写的一些细节

我们知道,对于一个已经关闭的channle来说,如果channel内部还有值的话,可以继续执行读操作,读出channel里的元素,但是不能执行写操作; 相反,如果关闭后,channel里已经没有元素可读的情况,再执行读操作的话会读出channel的零值,同样,也不能执行写操作。 首先,先让我们通过代 ......
细节 Channel Golang

golang中for select时,如果channel关闭会怎么样?

首先,如果对于一个已经关闭的channel来说,如果此时channel里还有值,则会正确读到channel里的值,且返回的第二个bool值为true;如果关闭前,channel里的值已经被读完,则最后返回的则是channel的零值; 那么针对该问题,我们通过代码来验证一下: package main ......
channel golang select for

golang sqlite3 cgo 静态编译方法

https://xiazemin.github.io/MyBlog/golang/2020/04/13/statically.html go build -o release/main_linux_amd64 -ldflags '-linkmode "external" -extldflags "- ......
静态 sqlite3 方法 golang sqlite

golang打包成windows和linux

1.先用 go env 命令查看当前信息 如果GOOS=windows代表当前打包环境是windows的 go build -o 包名 main.go 打包直接为exe程序 打包linux需要执行 set GOOS=linux 将打包环境改为linux 这样打包就是linux的了 ......
windows golang linux

gosec 基于ast 的golang 安全检查工具

gosec 基于ast 的golang 安全检查工具,核心是基于了一些rule 进行安全的处理 参考使用 安装 官方提供了对应操作系统的包,安装就可以了,也可以使用go install 命令安装 使用 当然gosec 还有其他命令可以选择,具体可以通过gosec 查看 gosec . 参考资料 ht ......
工具 golang gosec ast

算法 in Golang:Selection sort(选择排序)

# 算法 in Golang:Selection sort(选择排序) ## Selection Sort(选择排序) 假设有一个数组,它里面有6个元素,它的顺序是乱的,现在我们想对这个数组进行排序,就是从小到大进行排序。 选择排序是挨个遍历元素,把最小的放在最前面,再把剩余的遍历,把最小的放在后面 ......
算法 Selection Golang sort in

Golang高性能编程--slice的学习总结

在go语言中,数组变量属于值类型,因此当一个数组变量被复制或者传递时,实际上会复制整个数组。eg,将a赋值给b,修改a中的元素,并不会修改b中的元素。为了避免复制数组,一般会传递指向数组的指针。 package main import "fmt" func main() { a := [...]in ......
高性能 Golang slice

golang中关于websocket的使用的一些高级用法

很多网站都实现了“推送”功能,都会用到轮训这个技术,轮询就是每隔一段时间客户端就向服务器发送请求,来获得最新的数据。这种方式的缺点十分明显,浏览器每次发出的请求都含有比较大的header数据,浪费带宽资源。在这种背景下,HTML5定义了websocket协议,能够更好的节省服务器资源和带宽,而且可以 ......
websocket golang

grpc 与http比较,具有哪些优势

1. 更高的性能:gRPC使用Protocol Buffers作为默认的数据序列化工具,相比于JSON等文本格式,它的编码和解码速度更快,传输的数据量更小,因此可以更快地处理大量的请求和响应。 2. 更小的带宽占用:由于使用二进制数据格式,gRPC的数据传输量比HTTP更小,因此可以降低网络传输的带 ......
优势 grpc http

写给go开发者的gRPC教程-通信安全

使用 TLS 安全传输数据 什么是 SSL/TLS SSL 包含记录层(Record Layer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Session key[3])。这个 ......
开发者 教程 gRPC

算法 in Golang:D & C(分而治之)

# 算法 in Golang:D & C(分而治之) ### D & C 算法(策略) - Divide & Conquer - 属于递归算法的一种 - 其实它更像是一种思路、策略 ### 递归 - 递归 Recursion - 基线条件 Base Case - 递归条件 Recursive Cas ......
算法 Golang amp in

Golang Web--中间件的学习总结

关于在golang中的中间件,可以翻阅笔者之前的博客,在这里不予详细说明。这里简单介绍下中间件的高级用法: 1.如果每个路由分别要配置多个中间价,该如何处理 2.如果有多个路由分别要配置多个中间件,该如何处理 3.尝试不定义结构体开发中间件 package main import ( "contex ......
中间件 Golang Web

极客时间--golang并发编程实战课--Cond的学习总结

Go标准库的Cond目的是:为等待/通知场景下的并发问题提供支持。Cond通常应用于等待某个条件的一组goroutine,等条件变为true的时候,其中一个goroutine或者所有的goroutine都会被唤醒。 Cond是和某个条件相关,这个条件需要一组goroutine协作共同完成,当条件还没 ......
实战 时间 golang Cond

极客时间--golang并发实战课--Mutex的常见使用错误场景

1.Lock/Unlock 没有成对出现,就意味着会出现死锁的情况,或者是因为 Unlock 一个未加锁的 Mutex 而导致 panic。 2.第二种误用是 Copy 已使用的 Mutex。 Package sync 的同步原语在使用后是不能复制的。原因在于,Mutex 是一个有状态的对象,它的 ......
实战 场景 常见 错误 时间

极客时间--golang并发编程实战课--WaitGroup学习总结

什么是WaitGroup? WaitGroup解决的就是并发-等待问题:现在有一个goroutineA在检查点等待一组goroutine全部完成,如果 在执行任务的这些goroutine还没全部完成,那么goroutine A就会阻塞在检查点,知道所有goroutine都完成后才能继续执行。 Gol ......
实战 WaitGroup 时间 golang

golang深入理解指针

## Golang中的指针 指针的概念:指针地址,指针类型,指针取值 两个符号:*:根据地址取值,&:取地址 ## 关于指针 变量是用来存储数据的,变量的本质是给存储数据的内存地址起了一个好记的别名。 ```shell a:=1 //直接通过a这个变量来读取内存中保存的1这个值。在计算机底层a这个变 ......
指针 golang

Golang标准库之bytes介绍

本次主要介绍golang中的标准库`bytes`,基本上参考了 [字节 | bytes](https://cloud.tencent.com/developer/section/1140520) 、[Golang标准库——bytes](https://www.jianshu.com/p/e6f7f2 ......
标准 Golang bytes

golang 学习之 etcd protobuffer grpc 服务注册发现 go-micro

#1.etcd使用步骤 ####1)下载:https://github.com/etcd-io/etcd/releases/ ####2)配置环境变量 ####3)编辑local-cluster-profile文件:(利用goreman 启动方式,生产环境参考官方文档) ``` etcd1: etc ......
protobuffer go-micro golang micro etcd

golang的打点定时器

## 定时器 方式1:使用time.NewTicker(时间间隔)来设置定时器 ```go // 定时器, 定义一个1秒间隔的定时器 ticker := time.NewTicker(time.Second) n := 0 for i := range ticker.C { fmt.Println( ......
定时器 golang