转载自:实现etcd服务注册与发现 0.1、目录结构 . ├── api │ └── main.go ├── common │ └── common.go ├── docker-compose.yml ├── etcd │ └── Dockerfile ├── go.mod ├── go.sum ├── rpc │ ├── courseware │ │ ├── courseware.pb.go │ │ └── courseware_grpc.pb.go │ ├── coursew…
转载自:实现etcd服务注册与发现 0.1、目录结构 . ├── api │ └── main.go ├── common │ └── common.go ├── docker-compose.yml ├── etcd │ └── Dockerfile ├── go.mod ├── go.sum ├── rpc │ ├── courseware │ │ ├── courseware.pb.go │ │ └── courseware_grpc.pb.go │ ├── coursew…
LAL v0.34.3发布,G711音频来了,Web UI也来了 Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本。 LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新增了对音频G711A/G711U(也被称为PCMA/PCMU)的支持。主要表现在: ✒ 1) rtmp G711作为输入 1.1) 首先是rtmp进,rtmp出 测试方法如下: # 推流命令: ffmpeg -re -i testdata/test.fl…
大家好,我是沙漠尽头的狼。 最近几天在看一本Go的书籍,看了100来页,感觉不错,分享给大家。 书籍基本信息 书籍信息: 书名:Go Web编程 作 者:(新加坡)郑兆雄(Sau Sheong Chang) 著;黄健宏 译 著作 定 价:79 出 版 社:人民邮电出版社 出版日期:2017年12月01日 页 数:290 装 帧:平装 ISBN:9787115322470 出版日期是17年的,站长看了100来页还是觉得不过时,主要本书场景是go web开发,使用模板引擎开发web,类似ASP.NET Core M…
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,2023年4月10日,社区正式发布了 2.7.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多…
Raft各阶段的描述 node有三个state:follwer candidate leader 所有节点一开始是follower state,如果followers没有收到leader的消息,那么他们可以成为candidate。 然后candidate请求其他节点投票(request vote),nodes将以投票方式回应,如果candidate获得了大多数 node的投票它将会成为leader。这个过程就是Leader Election。 现在,对系统的所有更改都要经过leader,每个更改都作为entry添加…
singleflight 使用方法以及源码阅读 1、简介 安装方式: go get -u golang.org/x/sync/singleflight singleflight 是Go官方扩展同步包的一个库。通过给每次函数调用分配一个key,相同key的函数并发调用时,在函数执行期间,相同函数的调用,只会被执行一次,返回相同的结果。其本质是对函数调用的结果进行复用。 2、使用方法 2.1 使用Do获取函数执行结果 Do方法是同步返回函数执行结果 package main import ( "fmt…
1. 简介 本文将介绍 Go 语言中的 sync.Pool并发原语,包括sync.Pool的基本使用方法、使用注意事项等的内容。能够更好得使用sync.Pool来减少对象的重复创建,最大限度实现对象的重复使用,减少程序GC的压力,以及提升程序的性能。 2. 问题引入 2.1 问题描述 这里我们实现一个简单的JSON序列化器,能够实现将一个map[string]int序列化为一个JSON字符串,实现如下: func IntToStringMap(m map[string]int) (string, error) { …
1.在运行http时,报错:panic: listen tcp: address xxxx: missing port in address, 初始 代码如下 func HelloWordHander(w http.ResponseWriter, r *http.Request) { /** 具体看一下http协议 */ fmt.Printf("request method: %s\n", r.Method) fmt.Printf("request host: %s\n", …
任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。Go 的包管理方式是逐渐演进的,本文介绍Go语言的两种包管理模式。 任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。Go 的包管理方式是逐渐演进的,本文介绍Go语言的两种包管理模式。 GOPATH模式引包(不推荐) 在 1.5 版本之前,所有的依赖包都是存放在 GOPATH 下,没有多版本控制。 go的编译器会在 $GOPATH/src 下面寻找对应的模块,src 下的每一个目录都可以对应一个模块,目录中的目录也可以…
摘要: 代理模式为一个对象提供一种代理以控制对该对象的访问。 本文分享自华为云社区《【Go实现】实践GoF的23种设计模式:代理模式》,作者:元闰子 。 简介 GoF 对代理模式(Proxy Pattern)的定义如下: Provide a surrogate or placeholder for another object to control access to it. 也即,代理模式为一个对象提供一种代理以控制对该对象的访问。 它是一个使用率非常高的设计模式,在现实生活中,也是很常见。比如,演唱会门票黄牛。…