go
INGNIGHT
这个作者很懒,什么都没留下…
展开
-
clientv3 github.com与go.etcd.io冲突 /github.com/coreos/etcd/clientv3/auth.go:166:106: too many errors
编译出现下面错误,github.com/coreos/etcd/clientv3…/github.com/coreos/etcd/clientv3/auth.go:121:72: cannot use auth.callOpts (type []“github.com/coreos/etcd/vendor/google.golang.org/grpc”.CallOption) as type ...原创 2020-03-30 15:27:35 · 1030 阅读 · 0 评论 -
protobuf与protoc-gen-go
一、protobuf安装下载地址 :https://github.com/protocolbuffers/protobuf/releases新直接./configure就行,这个是protobuf 3版本tar zvxf protobuf-all-3.6.1.tar.gzcd protobuf-3.6.1./configure -–prefix=/usr/local/sudo ...原创 2020-03-25 15:07:39 · 1616 阅读 · 3 评论 -
使用xorm工具,根据数据库自动生成 go 代码
引入使用 golang 操作数据库的同学都会遇到一个问题 —— 根据数据表结构创建对应的 struct 模型。因为 golang 的使用首字母控制可见范围,我们经常要设计 struct 字段名和数据库字段名的对应关系。久而久之,这是一个非常繁琐的过程。事情变得繁琐了,我们都会想,有没有好的办法自动生成 model 呢?今天,记录一种自动生成代码的方法 —— xorm 工具。关于 xorm...原创 2020-03-18 23:28:53 · 1548 阅读 · 0 评论 -
8-4 测试http服务器(上)
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/errhandling/filelistingserver_test1.假的request/response,速度快,测试密度更细,像单元测试,测试一个小函数2.起服务器集成度高,覆盖代码覆盖量大,速度慢package filelistingserver...原创 2020-02-23 22:33:19 · 414 阅读 · 0 评论 -
8-3 使用pprof进行性能调优
go test -bench . -cpuprofile cpu.outgo tool pprof cpu.out测试更多方面的信息go test -bench . -cpuprofile cpu.out查看CPU结果go tool pprof cpu.out //此时进入交互式命令,可以输入help查看帮助web //自动弹出网页展示svg图查看结果...原创 2020-02-17 10:22:52 · 1049 阅读 · 0 评论 -
8-2 代码覆盖率和性能测试
go test代码覆盖率:go test -coverprofile=c.outgo tool cover -html=c.outgo tool cover性能测试:go test -bench .代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/nonrepeating/...原创 2020-02-16 21:16:15 · 194 阅读 · 0 评论 -
8-1 测试
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/nonrepeating_test.go https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/triangle_test.gopa...原创 2020-02-16 18:58:06 · 212 阅读 · 0 评论 -
10-5 传统同步机制
package mainimport ( "fmt" "time")type atomicInt intfunc (a *atomicInt) increment() { *a++}func (a * atomicInt) get() int { return int(*a)}func main() { var a atomi...原创 2020-02-16 18:08:47 · 192 阅读 · 0 评论 -
10-4 用select进行调度
两个generator,1个worker消耗,如果worker处理慢(worker处理sleep 5s)。则会出现有些n没有打印。package mainimport ( "fmt" "time" "math/rand")func generator() chan int { out := make(chan int) go func(...原创 2020-02-16 14:18:18 · 271 阅读 · 0 评论 -
10-2 使用Channel等待任务结束
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/channel/donepackage mainimport ( "fmt" //"time")func doWorker(id int, c chan int, done chan bool) { for n := range...原创 2020-02-15 23:06:31 · 226 阅读 · 0 评论 -
10-1 channel
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/channel/channel.gopackage mainimport ( "fmt" "time")func worker(id int, c chan int) { for { n, ok := &...原创 2020-02-15 21:25:19 · 3069 阅读 · 0 评论 -
3-6 字符和字符串处理
strings.go代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/strings.gopackage mainimport ( "fmt" "unicode/utf8")func main() { s := "Yes我爱慕课网!" // UTF-8 ...原创 2020-02-15 17:49:20 · 707 阅读 · 0 评论 -
2-2 内建变量类型
package mainimport ( "fmt" "math" "math/cmplx")func euler() { //c := 3 + 4i //fmt.Println(cmplx.Abs(c)) fmt.Printf( "%.3f", cmplx.Exp(1i * mat...原创 2020-02-15 17:11:26 · 112 阅读 · 0 评论 -
2-3 常量与枚举
package mainimport ( "fmt" "math")func consts() { // go语言的常量不要求大写 const ( filename = "abc.txt" a, b = 3, 4 ) var c int c = int(math.Sqrt(a*a + b...原创 2020-02-15 14:49:09 · 141 阅读 · 0 评论 -
2-7 指针
package mainimport ( "fmt")func swap(a, b *int) { *a, *b = *b, *a}func swap2(a, b int) (int, int) { return b, a}func main() { a := 3 b := 4 swap(&...原创 2020-02-15 14:11:52 · 120 阅读 · 0 评论 -
9-2 go语言的调度器
原创 2020-02-13 14:07:24 · 115 阅读 · 0 评论 -
3-5 Map例题
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/nonrepeating.gopackage mainimport ( "fmt")func lengthOfNonRepeatingSubStr(s string) int { lastOccurred :...原创 2020-02-04 21:07:55 · 210 阅读 · 0 评论 -
3-4 Map
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/maps.gopackage mainimport ( "fmt")func main() { m := map[string]string { "name": "ccmouse", "c...原创 2020-02-04 20:35:22 · 160 阅读 · 0 评论 -
3-3 切片的操作
sliceops.gopackage mainimport ( "fmt")func printSlice(s []int) { fmt.Printf("v=%v, len=%d, cap=%d\n", s, len(s), cap(s))}func main() { fmt.Println("Creating slice") var ...原创 2020-02-03 23:04:11 · 388 阅读 · 0 评论 -
3-2 切片的概念
array.gopackage mainimport ( "fmt")// 测试数组是值类型func printArray(arr [5]int) { arr[0] = 100 for i, v := range arr { fmt.Printf("index: %d value: %d\n", i, v) }...原创 2020-02-03 22:35:11 · 309 阅读 · 0 评论 -
3-1 数组
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/basic/array.gopackage mainimport ( "fmt")// 测试数组是值类型func printArray(arr [5]int) { arr[0] = 100 for i, v...原创 2020-02-03 10:04:02 · 137 阅读 · 0 评论 -
6-2 函数式编程例一
package mainimport ( "fmt" "io" "strings" "bufio")func fibonacci() intGen{ a, b := 0, 1 return func() int { a, b = b, a + b return a }}type intGe...原创 2020-02-02 21:16:30 · 130 阅读 · 0 评论 -
6-1 函数式编程
代码:1.https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/functional/adder/adder.go2.https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/ch10/func/func_test.gopac...原创 2020-02-02 18:03:36 · 279 阅读 · 0 评论 -
7-5 服务器统一出错处理2
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/errhandling/filelistingserver运行:go run web.go打开chrome:http://localhost:8888/li,此时server并没有挂掉原因:panic运行defer遇见recover修改版本1:...原创 2020-02-02 15:06:01 · 317 阅读 · 0 评论 -
7-4 panic和recover
代码:https://github.com/NIGHTFIGHTING/go_learning/blob/master/src/errhandling/recover/recover.gopackage mainimport ( //"errors" "fmt")func tryRecover() { defer func() { ...原创 2020-02-02 14:32:36 · 278 阅读 · 0 评论 -
7-3 服务器统一出错处理
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/errhandling/filelistingserverfilelisting/handler.gopackage filelistingimport ( "net/http" "os" "io/ioutil")f...原创 2020-02-02 13:04:19 · 359 阅读 · 0 评论 -
7-2 错误处理概念
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/errhandling/defererrhandling/defer/defer.gopackage mainimport ( "fmt" "errhandling/defer/fib" "os" "bufio" ...原创 2020-02-01 22:00:31 · 136 阅读 · 0 评论 -
7-1 defer调用
代码:https://github.com/NIGHTFIGHTING/go_learning/tree/master/src/errhandling/defererrhandling/defer/defer.gopackage mainimport ( "fmt" "errhandling/defer/fib" "os" "bufio"...原创 2020-02-01 18:41:22 · 118 阅读 · 0 评论 -
5-5 常用系统接口
main.gopackage mainimport ( "fmt" "retriever/mock" "retriever/real" "time")const url = "http://www.imooc.com"// 下载接口type Retriever interface { Get(url string) string}f...原创 2020-02-01 12:17:26 · 253 阅读 · 0 评论 -
5-4 接口的组合
main.gopackage mainimport ( "fmt" "retriever/mock" "retriever/real" "time")const url = "http://www.imooc.com"// 下载接口type Retriever interface { Get(url string) string}f...原创 2020-02-01 11:35:01 · 379 阅读 · 0 评论 -
5-3 接口的值类型
main.gopackage mainimport ( "fmt" "retriever/mock" "retriever/real" "time")type Retriever interface { Get(url string) string}func download(r Retriever) string {...原创 2020-02-01 10:50:21 · 141 阅读 · 0 评论 -
5-2 接口的定义和实现
main.gopackage mainimport ( "fmt" "retriever/mock" "retriever/real")type Retriever interface { Get(url string) string}func download(r Retriever) string { return r....原创 2020-01-31 23:11:13 · 154 阅读 · 0 评论 -
5-1 duck typing的概念
原创 2020-01-31 22:02:34 · 170 阅读 · 0 评论 -
15-4 队列实现调度器
原创 2020-01-31 19:09:40 · 159 阅读 · 0 评论 -
15-3 并发调度器
原创 2020-01-31 19:04:17 · 88 阅读 · 0 评论 -
15-1 并发版爬虫架构
原创 2020-01-31 15:06:36 · 195 阅读 · 0 评论 -
Golang爬取网页数据时403
情景:浏览器通过url能正常访问,但是使用http.get请求报403修改前的实现func Fetcher(url string) ([]byte, error) { resp, err := http.Get(url) if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCod...转载 2020-01-31 12:15:19 · 517 阅读 · 0 评论 -
14-4 单任务版爬虫的架构
原创 2020-01-22 13:27:59 · 141 阅读 · 0 评论 -
14-2 正则表达式
https://city.zhenai.com/打开网页,右键检查,在console中,$('#app>article>dl')可以得到css元素package mainimport ( "regexp" "fmt")const text = `My email is flliuqi@didiglobal.comemail is abc@def...原创 2020-01-21 20:58:01 · 229 阅读 · 0 评论 -
14-1 获得初始页面内容
编码库gopm get -g -v golang.org/x/textgopm get -g -v golang.org/x/net/html原创 2020-01-21 20:43:00 · 231 阅读 · 0 评论