教你如何帮助前端同学快速生成API接口代码

最近我们团队开源的后端微服务框架go-zero增长势头比较迅猛,这篇文章我讲讲go-zero对前端团队的作用,并通过一个示例来给大家演示我们是怎么做的,希望能给后端的同学也可以帮助前端同学提高开发效率????首先,我们来看看正常怎么实现api接口:1,后端给出(或经过协商给出)api定义文档2,前端多端开发编写各自的api请求代码3,单元测试,如果有的话4,前后端都完成后,联调接口然后,给大家讲讲我们团队是怎么做的:1,后端(或经过协商)通过.api文件定义出接口2,前端多端开发通过命令一键生成...阅读全文

Segmentfault 2020-10-23 11:32:33 kevinwan

初学grpc,请教.proto导入错误的原因

今天在学习grpc-gateway的时候,遇到一些小问题。 导入google/api/annotations.proto文件失败, ![1.png](https://static.studygolang.com/201019/fda7e53ca0d522e8e575b88f6af5c378.png) 我照着官网的案例将其文件拷贝到自己文件的项目下, ![2.png](https://static.studygolang.com/201019/f9c63940ac6b25f91f0a3...阅读全文

Go语言中文网 2020-10-19 16:14:56 tangzhenjia

ProtoBuf3语法指南(Protocol Buffers)_下

0.说明 ProtoBuf3语法指南, 又称为proto3, 是谷歌的Protocol Buffers第3个版本。 本文基于官方英文版本翻译, 加上了自己的理解少量修改, 一共分为上下两部分。 1.Any Any类型消息允许在没有.proto定义的情况下, 将消息作为嵌入类型使用。 Any以bytes的形式包含任意序列化的消息, 以及充当该消息类型的全局惟一标识符的URL 从而解析为该消息类型。 为了使用Any类型, 需要使用声明import google/protobuf/any.proto:...阅读全文

简书 2020-10-19 14:32:44 木木与呆呆

Golang之HTTP server 502问题分析

李乐问题引入  生产环境Golang服务有时会产生502报警,排查发现大多是以下三种原因造成的:http.Server配置了WriteTimeout,请求处理超时,Golang断开连接;http.Server配置了IdleTimeout,且网关和Golang之间使用长连接,Golang断开连接;Golang服务出现了panic。  第三种case非常简单,本文将重点分析前两种case背后的深层原因。  注:请求链路为 客户端 ===> Nginx ===> GolangWriteTimeout ...阅读全文

Segmentfault 2020-10-23 08:32:33 LNMPR源码研究

HTTP2服务器推送的第一次尝试

来自公#众#号:新世界杂货铺 在HTTP1.x中,访问一个页面,浏览器首先获取HTML资源,然后在解析页面时增量地获取其他资源,服务器必须等待浏览器发出请求后才下发页面内资源。而服务器实际上是知道页面内资源有哪些的,如果服务器能够在浏览器显式请求资源之前就将资源推送到浏览器,页面加载速度将会大大提示,这也是本篇的主旨。 本篇主要分为两个部分,第一部分是用go实现的服务器推送例子,第二部分是自签名证书。为什么会有自签名证书,这里笔者先卖个关子,继续阅读后文将会守得云开见月明。 服务器推送例子 目前...阅读全文

简书 2020-10-19 10:32:44 新世界杂货铺

Goland必备指令配置技巧

俗话说的好,工欲善其事必先利其器,所以在日常的开发Go语言的过程中,熟知编译器的配置是必不可少的。 Gopher们都知道Golang是一门编译性语言,那么在运行之前势必是要编译成应用程序才能够运行的。 Goland这款编译器也需要我们去手动配置应用程序的编译指令。使用过类似IntelliJ家的产品的人都知道,一般我们需要执行代码程序,只要点击运行按钮就可以: image.png 很多其它编译器都不需要我们去做什么过多的处理,导入项目该运行按钮就是可以点击的,但是对于Goland,你很有可能发现竟...阅读全文

Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制

来自公众号:新世界杂货铺阅读建议这是HTTP2.0系列的第二篇,所以笔者推荐阅读顺序如下:Go中的HTTP请求之——HTTP1.1请求流程分析Go发起HTTP2.0请求流程分析(前篇)本篇主要分为三个部分:数据帧,流控制器以及通过分析源码逐步了解流控制。本有意将这三个部分拆成三篇文章,但它们之间又有联系,所以最后依旧决定放在一篇文章里面。由于内容较多,笔者认为分三次分别阅读三个部分较佳。数据帧HTTP2通信的最小单位是数据帧,每一个帧都包含两部分:帧头和Payload。不同数据流的帧可以交错发送...阅读全文

Segmentfault 2020-10-22 11:32:39 新世界杂货铺

二叉树遍历

以前在数据结构的书上学过二叉树的遍历,老师讲了前序、中序、后序遍历三种,但是只是讲了一下概念,在纸上画一下遍历的过程,并没有讲代码的实现。<!--more-->算法思想先序遍历前序遍历的顺序是 根节点-左子树-右子树 。意思是从根节点开始,要一直访问左子树,直到没有左孩子,然后访问右子树。(图片来自知乎)理解起来应该是很简单的,不过实现起来就不一样了,图中演示的是用递归的方式遍历的,事实上还可以用迭代来实现,也就是 DFS 和 BFS。中序遍历后序遍历在这个算法演示 的网站上没有找到后序遍历的图...阅读全文

Segmentfault 2020-10-22 10:32:35 五行缺金

数据库事务隔离级别

数据库的事务对数据并行访问的时候,有可能会出现一些问题,因此数据库设置了四个不同的隔离级别来解决问题。在 MySQL 数据库的隔离级别可以分为四层,分别是读未提交、读提交、可重复读和串行化。与之对应出现的问题有脏读、幻读、不可重复读。<!--more-->隔离级别读未提交(read uncommited)一个事务还未提交时,它做的变更就能被其他的事务看到。读提交(read commited)一个事务提交之后,它做的变更才会被其他事务看到可重复读(repeatable read)一个事务执行过程中...阅读全文

Segmentfault 2020-10-22 10:32:33 五行缺金

如何理解 HTTPS

经常都在听说 https ,在谷歌浏览器上浏览不是 https 的网站,都会提示网站不安全。那到底什么是 https ,以前大概了解过一点点,但是对它的原理则是很模糊,趁着这次作业的机会,好好看看一下协议的实现方式。<!--more-->http谈 https 之前先说一下 http, http 是位于应用层的网络协议,主要用于网络中数据的传输,但是 http 传输是明文传输,这意味着网络上的任何一个人都可以看到你发送了什么消息,接收了什么消息。如果世界上没有不怀好意的人,那这样确实没有什么问题...阅读全文

Segmentfault 2020-10-22 09:32:33 五行缺金

kube-scheduler架构设计和启动流程简介

之前都是花时间在k8s的搭建,基础概念学习以及具体应用在k8s上的搭建,一直想对k8s源码进行阅读学习,这次借着云原生社区的Kubernetes 源码研习社项目机会对k8s源码进行摄入的学习,也能鞭策自己坚持下去把源码读完。本文主要对第一周kube-scheduler的架构设计和启动流程的学习进行了一个总结。1、kube-scheduler架构设计kube-scheduler组件是kubernetes默认的调度器,kube-scheduler组件内置的预选和优选算法,主要负责把创建的Pod调度到...阅读全文

Segmentfault 2020-10-21 23:32:32 hancf

在开启go module情况下,go.etcd.io/etcd/clientv3 报错的解决方法

本人在编译rpcx库里的client例子时,发生了如下etcd版本不兼容的问题:经过研究发现,google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的,也就是说要把这个改成 1.26 版本的就可以了。具体操作方法是在 go.mod 里加上如下内容:replace google.golang.org/grpc => google.golang.org/grpc v1.26.0然后,重新go build,问题解决了!阅读全文

Segmentfault 2020-10-21 22:32:32 simamengde

【go语言学习】web开发框架gin

一、gin简介 Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架,由于 httprouter,速度提高了近 40 倍,是最快的 http 路由器和框架。 如果你是性能和高效的追求者,你会爱上 Gin。 二、gin安装和使用 安装 下载并安装 gin: $ go get -u github.com/gin-gonic/gin 2、将gin引入到项目中: import "github.com/gin-gonic...阅读全文

简书 2020-10-18 22:32:38 Every_dawn

2020-10-18 go

https://blog.csdn.net/qq_37242224/article/details/89096377 https://www.ctolib.com/topics-4113.html https://www.php.cn/manual/view/35207.html 使用go/scanner库来查找golang标准库源码中最常用的标识符 https://segmentfault.com/a/1190000022098290 https://www.cnblogs.com/doubl...阅读全文

简书 2020-10-18 22:32:38 nokiacfg

【Golang】GC探秘/写屏障是什么?

之前写了 一篇【Golang】内存管理 ,有了很多的阅读量,那么我就接着分享一下Golang的GC相关的学习。 由于Golang的GC机制一直在持续迭代,本文叙述的主要是Go1.9版本及以后的GC机制,该版本中Golang引入了 混合写屏障大幅度地优化了STW的时间。具体GC机制的版本迭代可以参考 :GC的过去、现在和未来 基本概念 GC的对象 不再被需要的内存块,如果无法回收这部分内存将无法重复使用 内存泄漏 不再被需要的内存块,未在预期时间以内被回收的称为内存泄漏 常见的GC方法: 1.【P...阅读全文

简书 2020-10-18 20:32:39 千杉沐雪

关注服务质量--重试

在当前主流的微服务架构体系中,由于存在大量的远程服务调用,会存在各种各样的稳定性问题,包括但不仅限于网络拥堵,服务宿主机系统抖动,服务配置下发导致的额外开销等等。为了尽可能的提升服务质量,我们常常需要在各种存在风险的远程调用中,采用适当的重试策略,今天就简单讨论下重试相关的问题。 重试策略 所谓重试策略,首先关注的是两个参数:1.重试次数;2.调用间隔。 两个参数都很重要,首先来说重试次数,如果对重试次数不加限制,在出现下游系统故障,或者恰好命中下游系统bug的情况下,可能出现在相当一段时间内的...阅读全文

简书 2020-10-18 16:32:37 MontyOak

【Go从学会到学废】(四) Golang初览

介绍 Go是一种基于系统编程设计的通用语言。 它是强类型和垃圾收集的,并显式支持并发编程。 程序是由包构造的,包的属性允许有效地管理依赖关系。 该语法紧凑且易于解析,允许通过集成开发环境等自动工具进行简单的分析。 符号 Production = production_name "=" [ Expression ] "." . Expression = Alternative { "|" Alternative } . Alternative = Term { Term } . Term = pr...阅读全文

简书 2020-10-18 16:32:37 WhoCan

暂离

我暂时性的离开了golang组,一个我为之奋斗了一年的地方。现在的我要重学java,基础的巩固对于以后的提升非常的重要。心理上的落差让我一度消弭,我知道结果会很坏,但是当老师亲口跟说出来的时候,我瞬间有重晴天霹雳的感觉。我甚至一度误解为了退组,顿时感觉身边的一切都不重要了,都消失了,耳朵里发出了鸣响。我一直相信老师的选择和判断,虽然我心里上非常的不同意和不理解。我想说我真的没有将我的能力发挥出来;我想说,我不是很理解;我想说,这是对我这一整年努力学习的完全否定,几乎彻底的将我击垮;我想说,努力还...阅读全文

简书 2020-10-18 12:32:38 胡超_强化班

docker安装使用指南

带你进入Docker的世界 Docker优势 操作系统: debain/unbuntu /FreeBSD/Centos/openSUSE 编程语言: java、C /C++ python、Ruby、Golang Web服务器:resin、tomcat、 apache、nginx、lighttpd、jetty 数据库:mysql、redis、mongoDB、sqlserver、H2、DB2、MariaDB Docker是什么 应用容器 docker是一个开源的应用容器 Java:write onc...阅读全文

简书 2020-10-18 11:32:39 海若Hero