golang
Go哥
实习
展开
-
Golang遍历文件夹下的所有文件
func GetAllFile(pathname string) error { rd, err := ioutil.ReadDir(pathname) for _, fi := range rd { if fi.IsDir() { fmt.Printf("[%s]\n", pathname+"\\"+fi.Name())转载 2017-04-07 14:30:11 · 24557 阅读 · 1 评论 -
Golang LRU map使用
LRU:(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。在k8s.io/apimachinery/pkg/util/cache这个代码库中,实现了LRUExpireCache数据结构,他的功能类似于LRU但不完全是。LRUExpireCache可以设定数据结构的大小,当输出超过指原创 2018-01-24 12:02:43 · 1453 阅读 · 0 评论 -
Golang GVT
gvt 是golang众多包管理中的一员,因为我最早用的是gvt,所以其他的工具一直也没用过。并且gvt可以将依赖包的依赖包的依赖包….都下载下来,统一了团队协作环境不一致的问题。使用方法: 1. 下载并配置 go get github.com:FiloSottile/gvt 将在gopath/bin目录放到path下,此时在cmd下执行gvt可以看到如下输出 ...原创 2018-01-31 16:40:35 · 1510 阅读 · 0 评论 -
Golang 加解密
golang 加密与加解密本文介绍几个go实现的常见的加密与加解密算法。1.加密1.1 MD5package md5import ( "crypto/md5" "fmt" "io")func Md5() { h := md5.New() io.WriteString(h, "Hello World!") fmt.Pr原创 2018-01-17 16:50:16 · 962 阅读 · 1 评论 -
Golang 反射
转自:http://www.jb51.net/article/90021.htmvar x float32 = 2.1 v := reflect.ValueOf(x) fmt.Println(v) fmt.Println(v.Float()) fmt.Println(v.Type()) fmt.Println(v.Kind()) // kin转载 2018-01-26 11:35:15 · 224 阅读 · 0 评论 -
Golang json序列化字符串时多了\的问题
golang json序列化得到的数据有\的问题我们在对外提供API接口,返回响应的时候,很多时候需要使用如下的数据结构type Response struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"`}该API接口原创 2018-01-26 18:28:15 · 18193 阅读 · 2 评论 -
golang context
https://studygolang.com/articles/10155?fr=sidebar在go服务器中,对于每个请求的request都是在单独的goroutine中进行的,处理一个request也可能设计多个goroutine之间的交互, 使用context可以使开发者方便的在这些goroutine里传递request相关的数据、取消goroutine的signal或截止日期。转载 2018-01-29 11:10:23 · 216 阅读 · 0 评论 -
docker 部署golang web
http://blog.csdn.net/horsefoot/article/details/51654785http://blog.csdn.net/razilfelix/article/details/70247766使用阿里云的docker镜像加速:https://www.cnblogs.com/atuotuo/p/6264800.html1. 编写Dockerfile举例:...转载 2018-02-28 15:26:08 · 339 阅读 · 0 评论 -
golang 的slice 问题
关于go的slice 底层,这里不多做介绍,就是一个struct和一个数组构成。 通过以下几个例子说明,go对slice的处理方式。(1)func main() { var t = make([]int, 0, 10) var s = make([]int, 0, 10) fmt.Printf("addr:%p \t\tlen:%v content:%v\n", ...原创 2018-03-18 11:32:39 · 569 阅读 · 1 评论 -
go hashmap的实现
本文转自:skoo’s note 参考 golang map源码详解hashmap 通过一个 bucket 数组实现,所有元素将被 hash 到数组中的 bucket 中,bucket 填满后,将通过一个 overflow 指针来扩展一个 bucket 出来形成链表,也就是解决冲突问题。这也就是一个基本的 hash 表结构,没什么新奇的东西,下面总结一些细节吧。注意一个 bucket ...转载 2018-03-18 16:40:09 · 2082 阅读 · 0 评论 -
go int size
由于之前学过c/c++,所以一直认为go的int是4个字节。 最近在go中文社区上看别人的问题时,忽然感觉他描述的int好像是8个字节,测试发现:func cpu() { fmt.Println(runtime.GOARCH) fmt.Println(strconv.IntSize)}当前机器是64位的,所以int也是64位即8个字节。。。。 学了这么久的g...原创 2018-03-19 14:38:48 · 787 阅读 · 0 评论 -
grpc 示例
1go get -u github.com/golang/protobuf/protogo get -u github.com/golang/protobuf/protoc-gen-go2 下载https://github.com/google/protobuf/releases 将bin目录添加到path目录下。3 编写proto文件rpctest.proto...原创 2018-04-24 21:33:36 · 1068 阅读 · 0 评论 -
echo 框架的日志模块
记录一下echo框架的日志使用1 e.Use(mw.Logger())中间件使用logger。每次http请求,会打印日志,该次请求的相关信息。这个中间件的日志模块同https://github.com/labstack/gommon/log 是类似的但是不是直接使用的。2 e.Logger由上图可知,echo自身的logger就是new的https://git...原创 2018-04-26 18:00:24 · 2042 阅读 · 0 评论 -
nsq 的AddConcurrentHandlers函数注意事项
AddConcurrentHandlers在使用这个函数的时候,可以指定n个线程来处理这个消息。在handler函数内,如果不手动调用msg.FInsh函数,表现的结果是: 即使指定了多个协程来处理消息,若某一个hander堵塞了,其他的协程无法获取到消息。所以在使用这个handler函数时,最好的使用方式是:进入handler函数后,就通知msg.finsh。这样handler的错...原创 2018-04-28 17:36:53 · 753 阅读 · 1 评论 -
golang xss 攻击预防
避免XSS攻击 通过使用html的EscapeString 和 UnescapeString 函数实现。package mainimport ( "fmt" "html")func main() { str1 := "<script>alert(2)</script>" str2 := html.EscapeString(s...原创 2018-06-04 12:25:47 · 4051 阅读 · 0 评论 -
Mysql入门学习(5) 之go操作mysql
转自:谢大佬package mainimport ( "database/sql" "fmt" //"time" _ "github.com/go-sql-driver/mysql")func main() { db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")转载 2018-01-16 16:06:49 · 271 阅读 · 0 评论 -
Go语言经典笔试题分析
点击查看go语言经典笔试题1 subslice引用原创 2018-01-31 11:17:53 · 3142 阅读 · 0 评论 -
Golang解压压缩文件
package WinRARimport ( "archive/tar" "compress/gzip" "errors" "fmt" "io" "io/ioutil" "os" "path" "strings" l4g "github转载 2017-04-06 16:44:13 · 2747 阅读 · 0 评论 -
Golang读取文件
package mainimport ( "bufio" "fmt" "io" "os")func main() { file, err := os.Open("2.txt") if err != nil { fmt.Println("打开文件失败:", err) return } read := buf原创 2017-04-18 18:47:25 · 431 阅读 · 0 评论 -
Golang搭建HTTP服务
golang构建HTTP服务转载 2017-08-07 16:14:21 · 575 阅读 · 0 评论 -
Golang 时间的处理
获取时间点 时间戳原创 2017-07-28 16:44:24 · 1943 阅读 · 0 评论 -
golang 模板(test/template)
golang,模板转载 2017-09-04 12:54:59 · 847 阅读 · 0 评论 -
Golang之flage
golang,flage原创 2017-09-05 16:05:24 · 1411 阅读 · 0 评论 -
Golang 实现微信报警
go 微信报警转载 2017-10-10 22:38:02 · 3779 阅读 · 0 评论 -
Golang crontab定时执行任务(github.com/robfig/cron)
github.com/robfig/cron原创 2017-10-13 15:29:25 · 9631 阅读 · 0 评论 -
Golang实现七大排序(1)
排序原创 2017-11-30 23:17:20 · 738 阅读 · 0 评论 -
mgo与session网络资料
mgo转载 2017-12-21 15:42:15 · 265 阅读 · 0 评论 -
Golang 使用Mongodb之pipe
mgo原创 2017-12-15 22:47:49 · 3904 阅读 · 0 评论 -
Golang 方法的结构指针接收者和结构值接收者
值接收者和方法接收者原创 2017-12-26 10:36:49 · 5853 阅读 · 1 评论 -
Golang实现七大排序(2)
1. 计数排序func Count(arr []int, nLength int) { if nil == arr || nLength 0 { return } var max int = 0 for i := 0; i < nLength; i++ { if arr[i] > max { max原创 2017-12-02 23:30:02 · 301 阅读 · 0 评论 -
Golang 注册服务路径的问题
Golang 注册服务路径的问题在使用 "github.com/kardianos/service"将go程序注册成window服务的时候,对于这时候的程序的工作路径,如果我们不去获取,默认当前的路径就是程序所在的路径,就会变成发现service程序所在的 C:\Windows\System32目录下,但是如果我们进行了获取,比如 osPath, _ := e原创 2018-01-30 20:48:04 · 2254 阅读 · 0 评论 -
Golang 使用pprof分析goweb的性能问题
go的pprof可以用来对服务的性能进行检测,其中net/http/pprof包用来检测web服务器的相关的性能的分析,包括goroutine的数量,heap的大小问题。简单使用package mainimport ( "fmt" "log" "net/http" _ "net/http/pprof" "time")func mai...原创 2018-01-23 21:06:04 · 6528 阅读 · 0 评论 -
golang http长连接
http的长连接golang 的net/http库默认支持长连接。 通过ListenAndServe源码可以看到。for { rw, e := l.Accept() ... go c.serve(ctx) }每一个tcp连接,go都会对应一个协程对其服务,再server内,源码显示 for { w,原创 2018-01-16 11:53:11 · 6512 阅读 · 0 评论 -
go get 兼容公司的gitlab
当拉取公司的gitlab时。通过在username目录下的.gitconfig文件中添加[url "git@git.example.com:"] insteadOf = https://git.example.com实现拉取公司内部的gitlab的代码。。。。...原创 2018-05-31 16:55:29 · 2330 阅读 · 0 评论