分类 golang 中的文章

Go总结(二一)| JSON编解码

现在的Web应用,几乎都是采用JSON格式进行数据交互。 Go语言内建对JSON的支持。使用Go语言内置的encoding/json标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据。在Go语言实现JSON的编码和解码时,遵循RFC4627协议标准。深入理解Go是如何编码解码JSON格式数据非常有必要。 JSON规范 JSON ………

阅读全文

Go随笔 | 函数递归调用性能分析

今天说说递归和循环调用的性能比较。 递归的优点是简化程序设计,结构简洁清晰,容易编程,可读性强,容易理解。在很多情况下使用递归是必要的,它往往能把复杂问题分解为更简单的步骤,而且能够反映问题的本质。又比如汉诺塔,用递归的话基本上可以理解,但是如果不用递归而用循环的话,程序根本不知道从何处着手! 但是递归的缺点也很明显:速度慢,运行效率低, ………

阅读全文

Go总结(二十)| 强大的runtime包

runtime包提供了运行时与系统的交互,比如控制协程函数,触发垃圾立即回收等等底层操作,下面我们就运行时能做的所有事情逐个进行说明: 1.获取GOROOT环境变量 2.获取GO的版本号 3.获取本机CPU个数 4.设置最大可同时执行的最大CPU数 5.设置cup profile 记录的速录 6.查看cup profile 下一次堆栈跟踪 ………

阅读全文

go-zero(四)| zRPC拦截器

zRPC是经过生产环境千万日活实践检验的通用RPC框架,其底层依赖gRPC,内置完整的微服务治理能力。是一款简单、通用、高性能、可扩展的RPC框架。 框架特点 通用性:依赖gRPC,支持跨语言的调用 高性能:底层依赖HTTP2协议,序列化采用Protobuf序列化,保证了高性能 可扩展:用户可根据不同的业务特点扩展功能如自定义拦截器等等 ………

阅读全文

go-zero(三)| zRPC

go-zero是一个集成了各种工程实践的包含了Web和RPC协议的功能完善的微服务框架,那么他的RPC功能是如何实现的呢?他自己封装了一个叫zRPC的底层模块,这个模块依赖gRPC,同时内置了服务注册、负载均衡、拦截器等功能,其中还包括自适应降载,自适应熔断,限流等微服务治理方案,是一个简单易用的可直接用于生产的企业级RPC框架。 ………

阅读全文

go-zero(二)| 鉴权

什么是 JWT 根据维基百科的定义,JSON WEB Token(JWT,读作 [/dʒɒt/]),是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。JWT通常由三部分组成: 头信息(header), 消息体(payload)和签名(signature)。 第一部分头信息指定了该JWT使用的签名算法,HS256 表示使用 ………

阅读全文

go-zero(一)| 概览

2020年8月开源的go-zero微服务框架非常热门。他来自好未来(学而思)的研发团队。这样的研发团队还是很有想法的。当然类似这样的微服务框架其实早就有了,比如go-micro,go-kit等大家也可以尝试。 项目地址:https://github.com/tal-tech/go-zero 文档说 ………

阅读全文

RPC(四)| 来自Google的gRPC

gRPC是Google开源的一款RPC框架,跟具体语言无关,以protobuf作为IDL,通过protoc来编译框架代码。gRPC的Java实现的底层网络库是基于Netty开发而来,其Go实现是基于net库。 先说下Protobuf,它是一个纯粹的展示层协议,可以和各种传输层协议一起使用;Protobuf的文档也非常完善。 ………

阅读全文

RPC(三)| 来自Facebook的Thrift

Thrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。 但是,Thrift并不仅仅是序列化协议,而是一个RPC框架。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC ………

阅读全文