
go
我的自学笔记
我的自学笔记
展开
-
go协程
channel无缓冲channelfunc main() { ch := make(chan int) //无缓冲的channel go func () { time.Sleep(time.Second) fmt.Println("finish?") <-ch //阻塞,直到channel有值 }() ch <- 1 //阻塞,直到chan...原创 2019-04-22 00:25:28 · 225 阅读 · 0 评论 -
go语法:链式操作
在不会报错的函数中,通过返回原对象,可以定义链式操作,使代码简洁type Student struct { name string age int}func (s *Student)SetName(name string) (*Student) { s.name = name return s}func (s *Student)SetAge(age int) (*Stud...原创 2019-05-17 23:07:20 · 755 阅读 · 0 评论 -
go与elasticsearch(附带kibana)
准备go包:github.com/olivere/elastic/v7elasticsearch权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlKibana:1、https://www.elastic.co/guide/en/kibana/current/getting-started...原创 2019-05-17 23:41:30 · 899 阅读 · 0 评论 -
go工具箱test
test文件在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分。在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,生成一个临时的main包用于调用相应的测试函数,接着构建并运行、报告测试结果,最后清理测试中生成的临时...原创 2019-05-28 19:39:54 · 236 阅读 · 0 评论 -
go与获取本机ip地址
参考获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商https://blog.youkuaiyun.com/wangshubo1989/article/details/78066344https://studygolang.com/articles/01202获取本机的公网ipfunc main() { conn,...原创 2019-06-26 22:36:51 · 5201 阅读 · 0 评论 -
go与tail(github.com/hpcloud/tail)
参考https://github.com/hpcloud/taillinux中的tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。这个包实现了类似的功能。t, err := tail.TailFile("/var/log/nginx....原创 2019-06-27 16:10:22 · 2551 阅读 · 0 评论 -
go与xorm
参考https://github.com/go-xorm/xorm/blob/master/README_CN.md介绍ORM,全称ObjectRelationalMapping,中文叫作对象关系映射,通过它我们可以直接使用面向对象的方式做数据库开发,而不再直接写原生的SQL语句(甚至不需要SQL的基础)。通过把表映射成类,把行作为实例,把字段作为属性,ORM在执行对象操作的时...原创 2019-07-13 23:33:12 · 577 阅读 · 0 评论 -
grpc中提示缺少包"google.golang.org/genproto/googleapis/rpc/status"解决办法
官方在GitHub上提供的文件在这里https://github.com/googleapis/go-genproto下载后放到正确的地址就行了。原创 2019-07-04 15:38:41 · 7161 阅读 · 0 评论 -
go与websocket(golang.org/x/net/websocket)
参考https://github.com/ukai/go-websocket-sample/blob/master/websocket_echo_sample.gohttps://github.com/astaxie/build-web-application-with-golang/blob/master/zh/08.2.mdWebSocket是HTML5的重要特性,它实现了基于浏...原创 2019-07-11 16:05:45 · 5467 阅读 · 0 评论 -
go标准库container
此包定义了三个数据结构以供直接使用:heap(堆)、list(双向链表)、ring(环形链表)。用途:heap可用于快速排序,list可用于类似队列和栈这种,ring用于定长的循环队列,例如轮播heap首先堆是什么?堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1、堆中某个节点的值总是不大于或不小于其父节点的值;2、堆总是一棵完全二叉树(下图)。将根节点最大的堆叫做最...原创 2019-07-07 00:08:00 · 354 阅读 · 0 评论 -
go与kafka(github.com/Shopify/sarama)
启动kafka分别命令行启动zookeeper和kafka.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties.\bin\windows\kafka-server-start.bat .\config\server.propertiesproducerimport ( "fmt" "...原创 2019-05-17 22:25:37 · 7569 阅读 · 0 评论 -
go与系统信息搜集(github.com/shirou/gopsutil)
参考:https://godoc.org/github.com/shirou/gopsutil可以让我们时刻监控系统运行的状态获取本机信息info, _ := host.Info()fmt.Println(info)//output:{"hostname":"WIN-SP09TQCP1U8","uptime":25308,"bootTime":1558574107,"pr...原创 2019-05-23 16:29:57 · 7089 阅读 · 0 评论 -
go标准库flag
用途:解析命令行参数在命令行中设置参数func String(name string, value string, usage string) *stringfunc Int(name string, value int, usage string) *intfunc Bool(name string, value bool, usage string) *boolfunc Fl...原创 2019-05-17 20:52:57 · 263 阅读 · 0 评论 -
go标准库Context
介绍context用于多go协程中,控制go协程的结束,及传递值对于存在父子关系的ctx,一旦cancel父ctx,所有子ctx一起canceltype Context interface { Deadline() (deadline time.Time, ok bool) //返回context预定结束的时间,如果没有设置结束时间,ok返回false Done() &l...原创 2019-05-15 21:59:19 · 207 阅读 · 0 评论 -
go与mysql(github.com/go-sql-driver/mysql)
参考http://go-database-sql.org/overview.html准备建立数据库school和四张表并插入一些数据--学生表CREATE TABLE `Student`( `s_id` VARCHAR(20), `s_name` VARCHAR(20) NOT NULL DEFAULT '', `s_birth` VARCHAR(20) ...原创 2019-05-02 00:11:52 · 5249 阅读 · 0 评论 -
go与http协议
http请求流程在浏览器地址栏键入URL,按下回车之后会经历以下流程:1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为TCP 三次握手的第三个报文的数据发送给服务器;...原创 2019-05-01 10:30:47 · 1607 阅读 · 0 评论 -
go标准库io、ioutil
标准库ioio.WriteStrings输出到wfunc WriteString(w Writer, s string) (n int, err error)io.Copy 自动以32k字节的buf进行遍历复制直到遇到io.EOF。返回总共复制的字节数,如果成功err返回nilfunc Copy(dst Writer, src Reader) (written ...原创 2019-04-30 20:54:42 · 422 阅读 · 0 评论 -
go标准库reflect
在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,...原创 2019-05-07 00:09:08 · 314 阅读 · 0 评论 -
go与grpc
参考:https://github.com/grpc/grpc-gohttp://doc.oschina.net/grpc?t=60133快速入门建议grpc服务分三步:写proto文件、写serve、写clientproto文件建立文件:proto/ServeRoute.protosyntax = "proto3"; // 指定proto版本package pro...原创 2019-05-15 23:59:20 · 538 阅读 · 0 评论 -
go与etcd
etcd高可用的分布式key-value存储,可用于配置共享和服务发现,类似项目有zookeeper提供restful的http接口,使用简单。基于raft算法(主从、选举等)的强一致性,高可用的服务存储目录应用场景:服务发现和服务注册,配置中心,分布式锁,master选举参考:https://coreos.com/etcd/docs/latest/demo.htmlhtt...原创 2019-05-15 23:59:34 · 717 阅读 · 0 评论 -
go与web框架(gin)
参考官方中文文档:https://gin-gonic.com/zh-cn/docs/https://github.com/skyhee/gin-doc-cnhttps://www.jianshu.com/p/98965b3ff638/简单例子import "github.com/gin-gonic/gin"func main() { r := gin.Defaul...原创 2019-05-27 00:28:21 · 832 阅读 · 0 评论