随笔分类 - Go
摘要:安装go package: go get github.com/olivere/elastic 开撸: /** * es demo * author:JetWu * date:2020.06.10 */ package es import ( "context" "errors" "fmt" "lo
阅读全文
摘要:本文讲解gRPC接入etcd,实现服务注册与服务发现。需要先安装Go语言的etcd客户端包: go get go.etcd.io/etcd/clientv3 然后就可以开始操作一波了。说明:以下代码需要根据实际代码位置对import语句内容进行微调。我的目录结构:$GOPATH/src/go-git
阅读全文
摘要:本文主要是Go语言调用NSQ的简单实践,demo分为两部分:生产者和消费者。 生产者: /** * nsq demo - 生产者 * author: JetWu * date: 2020.05.06 */ package main import ( "fmt" nsq "github.com/nsq
阅读全文
摘要:本文是gRPC的简介与实践,介绍内容主要有gRPC本身,以及gRPC默认使用的数据交换格式protobuf,最后提供一个简单版本的gRPC demo。 一、gRPC是什么 gRPC是Google开源的RPC实现,基于最新的HTTP2.0协议,并支持常见的众多编程语言。gRPC客户端和服务端可以在多种
阅读全文
摘要:本文是RPC的简介与实践,首先介绍一下RPC的概念与原理,接着介绍一下Go语言对RPC的支持,最后提供一个Go语言原生RPC的简单demo。 一、RPC是什么 RPC,全称:Remote Procedure Call,中文翻译:远程过程调用。 RPC是一种技术思想,而非规范或协议,它指的是,本地计算
阅读全文
摘要:在go web编程中,当需要展示的列表数据太多时,不可避免需要分页展示,可以使用Go实现一个简单分页器,提供各个数据列表展示使用。具体需求:1. 可展示“首页”和“尾页”。2. 可展示“上一页”和“下一页”。3. 展示一定数量的数字页码,但总保持当前访问页码在中间位置。分页器代码: package
阅读全文
摘要:原生Go语言没有实现session管理机制,所以如果使用原生Go语言进行web编程,我们需要自己进行session管理机制的设计与实现,本文将就此进行详细介绍,并实现一个简单的session管理机制。session信息可以使用内存、文件或数据库等方式进行存储,考虑到对不同存储方式的兼容,我们设计的s
阅读全文
摘要:本文主要讲解go语言web编程中自定义路由器的设计。在此之前需要先了解一下go语言web编程中路由与http服务的基本原理,可以参考笔者另一篇博文:go web编程——路由与http服务 。 我们已经知道,go的默认路由器只支持路由绝对匹配,无法支持正则匹配,这样就没办法设计一些简洁、优雅的路由。那
阅读全文
摘要:本文主要讲解go语言web编程中的路由与http服务基本原理。 首先,使用go语言启动一个最简单的http服务: package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", sayHello) log.Pri
阅读全文
摘要:1. defer(1)defer用于将某个方法或语句推迟到当前函数返回的最后一刻执行,一般用于释放某些已分配的资源。函数返回的最后一刻指的是,return语句更新返回值变量之后,函数返回之前,所以defer语句甚至可用于修改函数的返回值(函数头部命名了返回值的情况)。(2)若defer语句中嵌套了多
阅读全文
摘要:关于随机数,Go语言标准库提供了两个包来实现,分别是math/rand和crypto/rand。 1. math/rand原理:以一个真随机数(随机种子)作为初始条件,使用一定算法不停迭代产生随机数。两个程序,如果设置相同的随机种子和相同的随机数范围,那么它们同样的调用次数,得到的随机数是一样的,所
阅读全文
摘要:package main import ( "fmt" "io/ioutil" "log" ) //文件目录树形结构节点 type dirTreeNode struct { name string child []dirTreeNode } //递归遍历文件目录 func getDirTree(pathName string) (dirTreeNode, error) { r...
阅读全文
摘要:首先,需要安装golang用来操作excel文档的类库: go get github.com/Luxurioust/excelize 一、excel文件创建与写入 效果图: 二、excel文件读取 效果图:
阅读全文
摘要:一、文件读取 1. 将整个文件读取到内存中 2. 分块读取文件 3. 逐行读取文件 二、文件写入 1. 将字符串写入文件 2. 将字节写入文件 3. 追加到文件
阅读全文
摘要:1. 冒泡排序 2. 选择排序 3. 插入排序 4. 希尔排序 算法原理理解:https://blog.csdn.net/qq_39207948/article/details/80006224 5. 堆排序 算法原理理解:https://www.cnblogs.com/Java3y/p/86399
阅读全文
摘要:Go语言中的并发程序可以用两种手段来实现,第一种是传统的并发模型,多线程共享内存,第二种则是现代的并发模型,顺序通信进程(CSP),Go语言使用goroutine和channel来支持顺序通信进程。 一、Goroutine1. 在Go语言中,每一个并发的执行单元叫作一个goroutine。2. ma
阅读全文