grpc 简单使用

参考:golang grpc 快速开始 以 windows 平台为例: 下载 安装 go —— 略 下载 protoc 参考:https://grpc.io/docs/protoc-installation/ win平台直接到 github 下载 zip 防盗本地目录解压即可 下载 地址 https://github.com/protocolbuffers/protobuf/releases 把 解压后的 bin 目录加到环境变量,以便控制台找到 protoc 命令 把这个bin 目录加到环境变...阅读全文

简书 2021-07-08 03:32:33 天空蓝雨

GRPC协议 Mock Server服务

PowerMock是一个Mock Server的实现,它同时支持HTTP与gRPC协议接口的Mock,并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员,也可以作为一个通用的Mock服务,部署在网关架构或API管理平台中,实现降级、接口Mock等功能。功能作为一个Mock Server,PowerMock具有以下的核心功能:支持HTTP协议与gRPC协议接口的Mock。支持配置Javascript等脚本语言来动态生成响应。支持对一个接口配置多种响应,并按照条件进...阅读全文

简书 2021-07-08 03:32:32 秃头老码农

Go语言缓存穿透解题思路(singleflight)

缓存穿透: 指用户请求的资源在缓存(redis等缓存中间件)中未命中,按照正常的逻辑,未命中的数据会去持久层(mysql/pg等)去查询并获取返回。 但是一半持久层能承载的访问量非常有限(如果没有按照索引查找或需要很多字段时)。 当一个缓存未命中,用户体量足够大的情况下,一瞬间会有大量的请求直接打到持久层,导致超时甚至崩溃。 这就需要一个可行的方案来处理类似的突发情况,当然,超时控制也是必要的。如果出现超时需要及时返回,否则超时也会造成整条业务线阻塞崩溃。 超时需要考虑三大层级的超时,大家熟知的...阅读全文

简书 2021-07-08 03:32:31 Casso_W

使用 mix/vega + mix/db 进行现代化的原生 PHP 开发

最近几年在 javascript、golang 生态中游走,发现很多 npm、go mod 的优点。最近回过头开发 MixPHP V3 ,发现 composer 其实一直都是一个非常优秀的工具,但是 phper 们对 composer 的用法很多都不是很深入,今天我就采用 composer 手撸一个原生项目,帮助大家理解现代化的原生 PHP 开发流程。 PHP 的开发者可能是所有语言里被惯坏的最厉害的,因为几乎每个框架都提供了脚手架,像这样: composer create-project 这个...阅读全文

简书 2021-07-08 03:32:31 撸代码的乡下人

golang-chan block 内存OOM(线上问题)

1、定义一个没有buffer的chan,但是go routine里面可能出现两次write,导致此routine block,线上高并非压力之下,随着内存不断增加,最后OOM,代码示例如下:func main() { a := make(chan int) go getValueRoutine(a) b := <-a fmt.Println(b)}func getValueRoutine(a chan int) { if err!=nil{ a <- kongStr } a <- realStr...阅读全文

简书 2021-07-08 03:32:31 Awhipltz

Cento8安装Golang及配置

1.检查软件安装情况 rpm -qa|grep wget // 下载工具 rpm -qa|grep gcc // 编译工具 rpm -qa|grep tar // 解压工具2.下载Golang安装包 下载页面:Golang下载 选择Linux版本,并复制下载地址 进入/usr/local目录下,并下载压缩包 wget https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gz3.解压文件 在/usr/local目录下直接解压,解压完成后目录下会...阅读全文

简书 2021-07-08 03:32:31 ElvisChiu

Go go.mod详解

Go go.mod详解 SanfordZhu 2019-07-29 14:20:32 45358 收藏 103 分类专栏: Go 版权 什么是go.mod? Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括...阅读全文

Go语言中文网 2021-07-07 20:48:19 xiaojun1195

必须掌握的Golang23种设计模式之简单工厂模式

go 语言没有构造函数一说,所以一般会定义NewXXX函数来初始化相关类。NewXXX 函数返回接口时就是简单工厂模式,也就是说Golang的一般推荐做法就是简单工厂。在这个simplefactory包中只有API 接口和NewAPI函数为包外可见,封装了实现细节。查看全部设计模式:http://www.golang.ren/article/6477simple.go代码package simplefactoryimport "fmt"//API is interfacetype API int...阅读全文

简书 2021-07-07 14:32:31 bladeIII

必须掌握的Golang23种设计模式之工厂方法模式

工厂方法模式使用子类的方式延迟生成对象到子类中实现。Go中不存在继承 所以使用匿名组合来实现查看全部设计模式:http://www.golang.ren/article/6477factorymethod.gopackage factorymethod//Operator 是被封装的实际类接口type Operator interface { SetA(int) SetB(int) Result() int}//OperatorFactory 是工厂接口type OperatorFactory ...阅读全文

简书 2021-07-07 14:32:31 bladeIII

golang开发中包的使用

在golang中,所有源文件都属于一个包,golang的包具有以下特性: 包可以被其他包引用 每个golang程序只有一个main包 包的主要用途是提高代码的可复用性 本节,我们将介绍包的相关概念以及使用方法,如果你还没有阅读过前面的文章,可以通过以下链接进行阅读 怎样搭建golang开发环境 - 简书 (jianshu.com) 一. GOPATH 环境变量 1. 什么是GOPATH? golang包的使用依赖一个重要的环境变量:GOPATH,无论是自己的代码还是第三方代码,都以GOPATH作...阅读全文

简书 2021-07-07 14:32:31 极客开发者

基于Go,Gin,MySQL和Docker开发博客(Part 1)

原文地址 本文侧重的读者 这部分内容重点不在Go基础。侧重于如何构建后端服务。内容特别适合热衷于使用Gin框架来做web开发的读者。 学习目标 这个系列介绍如何使用Go来创建REST APIs基础。完成这个系列后你就学会了以下内容: 基于MySQL和Docker配置本地Go开发环境 Gin框架实现CRUD接口 DDD领域驱动开发 Go依赖注入 使用Firebase认证等 要求 安装Go(go1.16.3版本 linux/amd64) Docker (版本 20.10.6)和Docker-comp...阅读全文

简书 2021-07-07 04:32:32 Go语言由浅入深

努力读完小学课本才能做出来的:牛吃草算法题

> 昨天去面试,做了一个算法题目,感觉比较有意思,那就记下来吧。问: > 一块草地,够18头牛吃25天,够15头牛吃31天,问:多少头牛吃草,草皮用于吃不完? ### <font color=blue>答案是9头</font>:* ### <font color=red>内心os</font>: >一开始看到这道面试题有点懵逼。这tm也能作为算法题目? 无凭无据的题目也能用来考核算法水平?(牛胃口每天都一样吗?牛不会生病不吃饭吗? 牛难道就没有权利因为失恋了而不吃饭吗?...阅读全文

Go语言中文网 2021-07-06 20:09:01 TangYiMo

用 WasmEdge 中的嵌入式 WebAssembly 函数扩展 Golang 应用程序

GO 编程语言(Golang)是一种易于使用且安全的编程语言,可编译为高性能的原生应用程序。Golang 是编写软件基础设施和框架的非常流行的选择。 软件框架的一个关键要求是,用户能够使用自己的代码对其进行扩展和定制。但是,在 Golang 中,向现有应用程序添加用户定义的函数或扩展并不容易。通常,需要通过组合框架的源代码和用户定义的函数在源代码级别进行集成。虽然可以使用 Golang 创建动态共享模块,但这些广泛用于边缘计算的基于 ARM 的系统,缺乏对共享模块的支持。此外,源代码集...阅读全文

Go语言中文网 2021-07-06 18:19:39 alabulei1