Golang
文章平均质量分 51
JieLinDee
天道酬勤,厚积薄发.对Go语言有兴趣的朋友可以加:259693140(此群不允许闲聊)
展开
-
验证码图片二值化去噪
package mainimport ( "image" "gocv.io/x/gocv")func main() { mat := gocv.IMRead("2.png", gocv.IMReadColor) defer mat.Close() bilatera := gocv.NewMat() defer bilatera.Close() gocv.BilateralFilter(mat, &bilatera, 0, 100, 15) gocv.MedianBlu原创 2021-11-10 13:58:10 · 710 阅读 · 0 评论 -
Go语言panic和recover使用
package mainimport ( "fmt")func main() { f() fmt.Println("Returned normally from f.")}func f() { defer func() { if r := recover(); r != nil { fmt.Println("R原创 2015-05-11 11:28:16 · 1357 阅读 · 0 评论 -
Go语言目录压缩,"archive/zip","path/filepath"
关于"path/filepath"和"archive/zip"使用原创 2015-05-05 08:54:43 · 1504 阅读 · 0 评论 -
Go语言的gob简单使用
编码结构体:package mainimport ( "encoding/gob" "fmt" "os")func main() { info := map[string]string{ "name": "xichen", "age": "24", } name := "test.gob" File, _ := os.OpenFile(name, os.O_R原创 2015-05-15 10:45:04 · 2701 阅读 · 0 评论 -
关于Go语言手动管理内存的见解
Go 语言是自带GC的, 相对C语言等的手动内存管理省事很多, 弊端便是会消耗更多的内存, 以及在GC时导致整个程序的停顿. 在某些特殊场合, 如果能够可选地手动进行内存管理, 效果会好不少.Go 目前的 GC 实现比较简单(mark-sweep算法), 进程的内存使用量取决于两次GC操作直接的内存申请量(不能重复使用), 而且通常GC发生在函数调用的深处, 大量对象无法立即释放. 另外,转载 2015-05-06 17:14:46 · 1631 阅读 · 0 评论 -
Go语言ssh简单的使用
package mainimport ( "bufio" "go-ssh/ssh" "os")func main() { SSH("user", "password", "ip_port")}func SSH(user, password, ip_port string) { PassWd := []ssh.AuthMethod{ssh.Password(password原创 2015-05-06 08:25:29 · 3533 阅读 · 0 评论 -
Go语言冒泡排序
package mainimport ( "fmt")func main() { A := []int{5, 21, 2, 4, 1} num := len(A) for i := 0; i < num; i++ { for j := i + 1; j < num; j++ { if A[i] > A[j] { A[i], A[j] = A[j], A[i]原创 2015-05-14 15:48:13 · 443 阅读 · 0 评论 -
Go语言爬取网站磁力链接
package mainimport ( "bufio" "fmt" "io" "io/ioutil" "net/http" "os" "regexp" "strconv" "strings" "time")func main() { fmt.Print("输入要查询的字符:") reader := bufio.NewReader(os.Stdin) input原创 2015-05-14 17:11:27 · 3113 阅读 · 0 评论 -
Go语言单元测试
package ceimport ( "crypto/md5" "math/rand")func getmd5(s []byte) []byte { md := md5.New() md.Write(s) x := md.Sum([]byte("")) return x}func T() string { name := rangdom_string() x :=原创 2015-05-20 13:41:08 · 848 阅读 · 0 评论 -
go语言结构体定义使用
package mainimport ( "fmt" "sync")type Info struct { info map[int]string mu sync.RWMutex}func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang原创 2015-05-20 11:21:38 · 2292 阅读 · 0 评论 -
Go语言标准库Json的使用.
GitHub上别人做的封装,挺好用的,推荐一下:https://github.com/bitly/go-simplejson这个内置的标准库用起来还是很烦得,要知道对方发过来的type,不然只能自己分析反射.package mainimport ( "encoding/json" "fmt")type Status_slice [][]inttype Info str原创 2015-05-07 20:56:26 · 1522 阅读 · 0 评论 -
Go语言实现定向聊天,最简单的.
代码不做注释了,因为我是把这个当作笔记来做的,如果感兴趣Go语言,加我QQ 我们一起学习这门新兴的语言.服务端:Message_server.gopackage mainimport ( "container/list" "encoding/json" "fmt" Json "go-json" //go-simplejson "net" "sync" "time")原创 2015-06-16 14:04:45 · 3400 阅读 · 0 评论 -
做了个实验,给一千万个随机数排序,用了24秒.不过内存使用有些高,下面是代码.使用的是双核.
maste.gopackage mainimport ( "fmt" "os" "runtime" "test" "time")var x chan []int = make(chan []int, 1)var Num int = 100var WNum int = 100func main() { fmt.Println(time.Now()) var lis原创 2015-06-18 08:06:42 · 2242 阅读 · 0 评论 -
关于go语言中http做服务器使用正则的实例
package mainimport ( "net/http" "regexp")func main() { http.HandleFunc("/", route) http.ListenAndServe(":8080", nil)}var num = regexp.MustCompile(`\d`)var str = regexp.MustCompile(`\s`)原创 2015-05-30 14:59:59 · 3207 阅读 · 0 评论 -
Go语言Mysql简单使用.
查询:package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time")func main() { con, _ := sql.Open("mysql", "root:123456@tcp(localhost:3316)/mysql") defer con原创 2015-05-18 11:41:39 · 1258 阅读 · 0 评论 -
用Go语言写了一个电脑搜索文件的小东西
package mainimport ( "bytes" "fmt" "os" "os/exec" "path/filepath" "sync")type jieguo struct { go_num int Lock sync.Mutex}var searchName string = os.Args[1]var search_result chan str原创 2015-06-02 13:39:00 · 1738 阅读 · 0 评论 -
一千万个随机数排序,如何24秒蜕变成3秒?如何从700M内存消耗变成200M?
上一篇文章写的十分的烂,经过科普看语言源码实现用的是quicksort实现的底层排序,在这里模仿一下,勿喷!package mainimport ( "fmt" "math/rand" "runtime" "sort" "time")func mergeonce(l, r []int) []int { m := make([]int, 0, len(l)+len(r))原创 2015-06-20 09:13:29 · 1673 阅读 · 0 评论 -
Go语言ssh群发linux命令
闲着没事搞了小程序,在Window上面往linux机器上群发命令,写的不好欢迎大家指正,还有就是用此工具发送恶意命令的人请离开,编译了一份64_Window和linux的程序,供大家参考使用,Rm_tmp_cmd.exe 在win下面提供使用!我的目录结构:flagparse --------flag.goGetconf --------getc原创 2015-05-22 12:46:56 · 2263 阅读 · 4 评论 -
Go语言smtp模块发纯文本文件
package mainimport ( "fmt" "net/smtp")func main() { auth := smtp.PlainAuth("text/plain", "fyxichen@163.com", "123456", "smtp.163.com") to := []string{"123456@qq.com"} msg := []byte(`To:12345原创 2015-05-22 15:53:27 · 1566 阅读 · 0 评论 -
Go语言Slice操作.
1、基本用法: a = append(a, b...) 例如:list = appened(list,[]int{1,2,3,4}...) 可以用来合并两个列表. 不用这样了 :list := make([]int,len(list1)+len(list2)) 然后再copy(list,list1) copy(list[len(list1):],list2)2、Cop原创 2015-06-24 15:35:33 · 2883 阅读 · 0 评论 -
Go语言用堆排序的方法进行一千万个int随机数排序.
上篇文章用的是quicksort方法排序,但是如果用快速排序法对重复率很高的slice排序的时候,时间复杂度会激增,速度相当慢所以尝试了一下堆排序,实验结果,感觉挺好的.下面是代码,大家可以参考一下,这个是建立的大顶堆.二叉树的特性: 最后一个非叶子节点 : root = length/2(当length为奇数的时候root向下取整) 在GO语言中的索引位置:root - 1,原创 2015-06-26 09:43:27 · 1604 阅读 · 0 评论 -
GO语言quicksort实现.快速排序法代码实现
package mainimport ( "fmt" "math/rand" "time")func main() { var z []int for i := 0; i < 1000000; i++ { z = append(z, rand.Intn(100000)) } sort(z)}func sort(list []int) { if len(list)原创 2015-06-22 21:15:58 · 2726 阅读 · 1 评论 -
关于Go语言共享内存操作的小实例
wrapper.c#include #include #include #include int my_shm_open(char* filename, int open_flag){ int shm_id; key_t key; key = ftok(filename, 0x03); if(key == -1){ return原创 2015-06-09 08:54:35 · 2357 阅读 · 0 评论 -
GO语言使用开源SSH模拟终端
package mainimport ( "go-ssh/ssh" "log" "os")func main() { check := func(err error, msg string) { if err != nil { log.Fatalf("%s error: %v", msg, err) } } client, err := ssh.Dial("t原创 2015-07-08 15:30:23 · 4615 阅读 · 3 评论 -
Go语言统计中文词语的个数,分词.
主要目的是统计一篇文章中的出现词语最多的个数,目前只是出个大概的框架,统计出来的结果只有两种,一种是两个字的一种是三个字的,而且准确率不高,需要优化的地方太多,先记下来,回头闲了继续优化一下,把准确率和处理速度提上来.菜鸟写的不好,望大家多多指教.package mainimport ( "fmt" "io/ioutil" "strings")var Tri map[strin原创 2015-06-10 20:03:48 · 1510 阅读 · 0 评论 -
关于Go语言,自定义结构体标签的一个妙用.
在Go中首字母大小写,决定着这此变量是否能被外部调用,例如:在使用标准库的json编码自定一的结构的时候:package mainimport ( "encoding/json" "fmt")type T struct { name string Age int}func main() { var info原创 2015-07-10 13:32:27 · 4225 阅读 · 0 评论 -
Go语言interface的value.(type)使用小技巧
package mainimport ( "container/list" "fmt" "os" "sync" "time")type INFO struct { lock sync.Mutex Name string Time int64}var List *list.List = list.New()func main() { var Info INFO原创 2015-07-10 18:13:25 · 3573 阅读 · 0 评论 -
Go语言实现简单的文件服务器
package mainimport ( "fmt" "net/http")func main() { http.Handle("/", http.FileServer(http.Dir("./"))) http.Handler e := http.ListenAndServe(":8080", nil) fmt.Println(e)}原创 2015-06-15 08:39:04 · 2020 阅读 · 0 评论 -
关于Go语言daemon启动的方法.
昨天搞了个文件共享的小程序,遇见了意见蛋疼的事,就是启动之后终端不能关闭,不然程序也会随着关闭.我的解决方法: nohup ./httpserver &nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急:nohup ./server 1> server原创 2015-07-14 10:15:34 · 2215 阅读 · 0 评论 -
GO1.5实现简单的http并发请求,支持:GET、POST、HEAD、PUT
package mainimport ( "flag" "fmt" "io/ioutil" "net/http" "sync/atomic" "time")func main() { connection := flag.Int("c", 200, "-c N") timeout := flag.Int("o", 5, "-o N") timeover := flag.原创 2015-08-08 10:00:21 · 8671 阅读 · 0 评论 -
GO语言为结构体排序
package mainimport ( "fmt" "io/ioutil" "sort" "time")type info struct { Name string Time time.Time}type newlist []*infofunc main() { l, e := getFilelist("./") if e != nil { fmt.Prin原创 2015-07-16 08:32:31 · 5253 阅读 · 0 评论 -
关于Go的一个文件目录共享应用实例
package mainimport ( "flag" "fmt" "net/http" "os/exec" "path/filepath" "strings" "sync" "text/template")const L = `文件列表 {{$ip := .IP}} {原创 2015-07-14 19:12:37 · 1095 阅读 · 0 评论 -
Go语言使用http下载文件
package mainimport ( "fmt" "io" "net/http" "os")var ( url = "http://127.0.0.1:1789/src/qq.exe")func main() { res, err := http.Get(url) if err != nil { panic(err) } f, err := os.Crea原创 2015-07-16 17:44:37 · 18758 阅读 · 1 评论 -
falcon-open 问题解决小扩展
package mainimport ( "fmt" "net" "strings" "sync")type List struct { Lock sync.Mutex IPList map[string]bool}var CheckList *List = NewList()func main() { for _, k := range []string{"原创 2015-07-29 17:52:15 · 836 阅读 · 0 评论 -
Go 1.5关键字搜索目录、文件、文件内容_修复一个小BUG
package mainimport ( "bufio" "bytes" "flag" "fmt" "io" "os" "path/filepath" "sync/atomic")var re []bytevar count int32var c, f, d boolvar i, p stringfunc main() { flag.StringVar(&p,原创 2015-08-11 12:52:53 · 1738 阅读 · 0 评论 -
Go1.5使用sftp下载文件
package toolsimport ( "fmt" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" "io" "net" "os" "sftp")func ftp(user, password, ip, port string, file_list []string) { var auths []ss原创 2015-08-25 15:30:44 · 3600 阅读 · 9 评论 -
使用GO语言实现的日志集中查看的小功能.
程序分为站点端和中心端(相当于一个proxy).这个小功能主要是解决,程序经常让我们去拖日志,特别烦.所以做个小程序.使程序可以自己去线上查看.有个问题是,不能把游戏服务器暴露出来,还有就是不能占用业务机器的公网带宽.这个小程序主要就是中心端(proxy)通过内网获取文件,然后转发给访问端.中心端主要有两个文件,一个是程序文件.一个是我命名为json的文件(主要是根据ID来分辨分站原创 2015-07-20 17:43:29 · 3304 阅读 · 0 评论 -
Go语言周边常用命令积累
https://code.google.com/p/go-wiki/wiki/Projects Go语言开源项目$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build Linux下面编译命令$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build Linux下面编译命令原创 2015-05-06 17:23:07 · 1080 阅读 · 0 评论 -
Go 语言sync中waitgroup使用.小实例
package mainimport ( "fmt" "sync" "time")var waitgroup sync.WaitGroupfunc Test(x int) { fmt.Println(x) waitgroup.Done() //任务完成,将任务队列中的任务数量-1,其实.Done就是.Add(-1)}func main() { fmt.Println原创 2015-08-28 13:36:34 · 2856 阅读 · 0 评论 -
Go语言内部rpc简单实例,实现python调用go的jsonrpc小实例
package mainimport ( "errors" "fmt" "net/http" "net/rpc")func s_main() { rpc.Register(new(Remote)) rpc.HandleHTTP() http.ListenAndServe(":1789", nil)}func main() { args := Test{"di", 24原创 2015-07-22 09:23:07 · 4677 阅读 · 0 评论