Go底层探索(五):哈希表map下篇-扩容

1.介绍

随着哈希表中元素的逐渐增加,哈希的性能会逐渐恶化,所以我们需要更多的桶和更大的内存来保证哈希的读写性能。

2.如何触发

在每次对哈希表赋值时,都会调用 runtime.mapassign 函数,该函数每次都会判断是否需要扩容,主要有两个函数:overLoadFactor和tooManyOverflowBuckets:

Go底层探索(三):切片

@注:以下内容来自《Go语言底层原理剖析》、《Go语言设计与实现》书中的摘要信息,本人使用版本(Go1.19)与书中不一致,源码路径可能会有出入。

Go底层探索(一):编译器

1.什么是RPC

@注: 以下内容来自本人学习《Go语言底层原理剖析》书中的摘要信息。另外这本书中使用的Go是老版本,我使用的版本是Go1.19,有时候源码路径可能会不一样

Go扩展包(十九):rocketmq

介绍

本文将会介绍两种rocketmq扩展包,如下(截止到2022.10.04):

包 文档 Star 数量 说明
apache/rocketmq-client-go https://github.com/apache/rocketmq-client-go 979 apache官方提供
aliyunmq/mq-http-go-sdk https://github.com/aliyunmq/mq-http-go-sdk 50 aliyun.mq提供

下载

1
2
3
4
5
// rocketmq-client-go
go get -u github.com/apache/rocketmq-client-go/v2@v2.1.0

// 阿里云mq-http-go-sdk
go get -u github.com/aliyunmq/mq-http-go-sdk@v1.0.3

封装代码

基于 rocketmq-client-go 的生产者封装

文件位置:app/rocketmqpkg/produce.go

RPC编程(六):gRPC中的截取器

1. 介绍

gRPC 中的截取器,类似中间件( middleware )的功能,可以做一些前置校验的工作,比如登陆验证、日志记录、异常捕获等。

2. 流程梳理

gRPC 中的 grpc.UnaryInterceptor 和 grpc.StreamInterceptor 分别对普通方法和流方法提供了截取器的支持。这里主要编写普通方法的截取器。

RPC编程(五):gRPC中的token认证

1.介绍

gRPC 为每个 gRPC 方法调用提供了 token 认证支持,可以基于用户传入的 token 判断用户是否登录、以及权限…,实现 token 认证的前提是,需要定义一个结构体,并实现 grpc.PerRPCCredentials 接口。

RPC编程(四):protobuf语法学习

1.介绍

ProtoBuf 是 Protocol Buffers 的简称,它是Google开发的一种数据描述语言,于2008年开源。 ProtoBuf 刚开源时的定位类似于 XML、JSON 等数据描述语言,通过附带工具生成代码并实现将结构化数据序列化的功能。

RPC编程(三):gRPC快速入门

1.什么是gRPC

gRPC 是一个高性能、开源、通用的 RPC 框架,由 Google 推出,基于 HTTP2 协议标准设计开发,默认采用 Protocol Buffers 数据序列化协议,支持多种开发语言。 gRPC 提供了一种简单的方法来精确地定义服务,并且为客户端和服务端自动生成可靠的功能库。