-
golang 子类调用父类函数
所属栏目:[大数据] 日期:2020-12-16 热度:141
// testStruct project main.go package main import ( "fmt" ) type A struct { Text string } type Operator interface { Say () } func ( a * A ) Say () { fmt . Printf ( "A::Say():%sn" , a . Text ) } type B struct { A } func ( b * B ) Say () {[详细]
-
golang md5及随机字符串
所属栏目:[大数据] 日期:2020-12-16 热度:174
package encrypt import ( "crypto/md5" "encoding/hex" "math/rand" "time" ) // 生成 32 位 MD5 func MD5 (text string ) string { ctx := md5. New () ctx.Write([] byte (text)) return hex. EncodeToString (ctx.Sum( nil ))} // return len=8 salt fun[详细]
-
golang timestamp
所属栏目:[大数据] 日期:2020-12-16 热度:187
package mmtime import ( "fmt" "strconv" "time" ) // FMT_TYPE_NOMAL const ( DATE_TIME_FMT = "2006-01-02 15:04:05" DATE_FMT = "2006-01-02" TIME_FMT = "15:04:05" DATE_TIME_FMT_CN = "2006 年 01 月 02 日 15 时 04 分 05 秒 " DATE_FMT_CN = "2006[详细]
-
golang gRPC示例
所属栏目:[大数据] 日期:2020-12-16 热度:51
gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成[详细]
-
排序算法 golang 实现
所属栏目:[大数据] 日期:2020-12-16 热度:162
排序算法总结 直接插入排序 希尔排序 快速排序 选择排序 归并排序 堆排序 以上6中排序算法用golang 做了实现 code:https://github.com/leisunstar/go_base/tree/master/sorting_algorithm[详细]
-
MiniJava语言编译器的Golang实现。
所属栏目:[大数据] 日期:2020-12-16 热度:117
Dog-comp Abstract 文章介绍一个编译器的实现流程。源语言选用MiniJava. MiniJava是一个面向对象语言,支持继承,对象创建等面向对象的特性。具体语法参考Tiger book 附录。 Dog-comp是一个用golang实现的minijava编译器,目前可以将minijava翻译成c。dog-co[详细]
-
Golang中new和make的区别
所属栏目:[大数据] 日期:2020-12-16 热度:135
new会分配结构空间,并初始化为清空为零,不进一步初始化 new之后需要一个指针来指向这个结构 make会分配结构空间及其附属空间,并完成其间的指针初始化 make返回这个结构空间,不另外分配一个指针 例子new: var p *[]int = new([]int) 或 p := new([]int)[详细]
-
测试一下golang的json序列化Marshal
所属栏目:[大数据] 日期:2020-12-16 热度:190
functest_json(){x,_:=json.Marshal([]string{"aaa:123","bbb:456"})fmt.Println(x)varcaps[]stringjson.Unmarshal(x,caps)fmt.Println(caps)}//输出结果-------------------------------[913497979758495051344434989898585253543493][aaa:123bbb:456]//把[详细]
-
冒泡排序Bubble sort-golang
所属栏目:[大数据] 日期:2020-12-16 热度:55
算法原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上[详细]
-
快速排序Quick sort - golang
所属栏目:[大数据] 日期:2020-12-16 热度:189
算法原理 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换; 4)从i开[详细]
-
golang学习笔记之---waitgoup
所属栏目:[大数据] 日期:2020-12-16 热度:93
golang学习笔记之—WaitGroup 自己毕业工作过后,由于时间有限,一度中断了写学习笔记。 最近心血来潮,逛CSDN发现博客已经改版了,添加了对Markdown语法的支持。加之最近在学习google的go语言,因此想借写博客的机会学习Markdown语言,同时梳理所学的go语言[详细]
-
Go语言学习:安装本地的Go入门教程
所属栏目:[大数据] 日期:2020-12-16 热度:65
对初学者来说,最好的Go入门资料是A Tour of Go。但是因为官网不能上,每次要查看一下都很费劲。所以可以按照这里的步骤安装本地的Go入门教程。 $ go get github.com/golang/tour$ go get github.com/golang/net$ go get github.com/golang/tools# 因为githu[详细]
-
SublimeGDB调试Golang
所属栏目:[大数据] 日期:2020-12-16 热度:71
下载SublimeGDB 在sublime text 2 中 Install Package -SublimeGDB 重启Sublime Text 2 修改 workingdir 为工程所在目录,修改 commandline中executable为可执行文件名,如"workingdir": "${home}/gocode/bin","commandline": "gdb --interpreter=mi --args .[详细]
-
[go]method的指针声明及非指针声明
所属栏目:[大数据] 日期:2020-12-16 热度:89
刚入手golang,大概弄清楚了method在go里的概念。 以下大部分为搬运过程重写代码。 method可以为一个type添加(声明)一个方法,例如: type Cat struct {}func (c Cat) Hwo() { fmt.Println("Miah!")} 即对Cat类型(结构体)添加Hwo方法,使其在叫唤的时候可以[详细]
-
多进程管理工具:goreman
所属栏目:[大数据] 日期:2020-12-16 热度:170
Linux下多进程管理工具对开发和运维都很有用,常见的功能全面的主流工具主要有monit、supervisor。不过开发中使用则推荐轻量级小工具goreman。 goreman是对Ruby下广泛使用的foreman的重写,毕竟基于golang的工具简单易用多了。顺便提一句:goreman的作者是ma[详细]
-
godep使用注意
所属栏目:[大数据] 日期:2020-12-16 热度:137
godep是目前golang主流的包管理工具,众多基于go语言的项目如docker,coreos,kubernetes等都是使用godep来解决项目包依赖和版本管理问题。作为命令行工具,godep很简单,常用的基本godep save和godep restore两个命令就够了,因此一般新手参照官方说明都能快[详细]
-
[UMU 学 golang](3) TCP Echo Server
所属栏目:[大数据] 日期:2020-12-16 热度:174
测试需要,以前用 C + libevent 写了一个 TCP Echo Server,返回服务器时间、客户端地址信息和客户端发送的原内容。为了水一篇,现在改为 golang 实现。 package mainimport ("fmt""io""net""os""time")const BUFFER_SIZE = 1024 * 4var buffer = make([]byt[详细]
-
golang redis连接池
所属栏目:[大数据] 日期:2020-12-16 热度:106
http://www.epooll.com/archives/760/[详细]
-
[UMU 学 golang](4) 简单的 AWS S3 客户端
所属栏目:[大数据] 日期:2020-12-16 热度:57
公司搞了一套兼容 Amazon S3 的云存储系统,用 C++ 写客户端很蛋疼,UMU 决定还是用 go 来写一个。 首先找到一个靠谱的开源项目,运行以下命令安装: go get github.com/mitchellh/goamz 它内部还用到了 github.com/vaughan0/go-ini。 然后看一下例子: pack[详细]
-
golang import 下划线 的实现原理
所属栏目:[大数据] 日期:2020-12-16 热度:66
这个操作经常是让很多人费解的一个操作符,请看下面这个import import(“database/sql”_“github.com/ziutek/mymysql/godrv”)//_操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数,//要理解这个问题,需要看下面这个图,理解[详细]
-
Go语言自己实现的异步小log程序.
所属栏目:[大数据] 日期:2020-12-16 热度:110
slog.go package slogimport ("errors""fmt""os""strings""time")type Logger struct {console boolwarn boolinfo booltformat func() stringfile chan string}func NewLog(level string,console bool,File *os.File,buf int) (*Logger,error) {log := Logge[详细]
-
golang map to struct
所属栏目:[大数据] 日期:2020-12-16 热度:83
map映射到结构体,这里只支持简单的数据类型,复杂的需要在拓展 package mainimport ("errors""fmt""reflect""strconv""time")type User struct {Name stringAge int8Date time.Time}func main() {data := make(map[string]interface{})data["Name"] = "张三[详细]
-
Go语言监控文件变化小程序.
所属栏目:[大数据] 日期:2020-12-16 热度:191
package mainimport ("log""github.com/go-fsnotify/fsnotify")func main() {watcher,err := fsnotify.NewWatcher()if err != nil {log.Fatal(err)}defer watcher.Close()done := make(chan bool)go func() {for {select {case event := -watcher.Events:log[详细]
-
Golang 语言中的 Slice
所属栏目:[大数据] 日期:2020-12-16 热度:178
概念 Slice切片是对底层数组Array的封装,在内存中的存储本质就是数组,体现为连续的内存块,Go语言中的数组定义之后,长度就已经固定了,在使用过程中并不能改变其长度,而Slice就可以看做一个长度可变的数组进行使用,最为关键的,是数组在使用的过程中都[详细]
-
goquery使用
所属栏目:[大数据] 日期:2020-12-16 热度:118
做过 Web 开发的,应该都用过或听过 jQuery,它提供了方便的操作 DOM 的 API。使用 Go 语言做服务器端开发,有时候需要解析 HTML 文件,比如抓取网站内容、写一个爬虫等。这时候如果有一个类似 jQuery 的库可以使用,操作 DOM 会很方便,而且,上手也会很快[详细]
