自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JieLinDee的专栏

天道酬勤,厚积薄发.对Go语言有兴趣的朋友可以加:259693140(已满),858980110(02群),进群不允许

  • 博客(173)
  • 收藏
  • 关注

原创 Golang1.7.3使用x509标准库创建自签名证书和签发名其他证书

主代码:package rsaimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "io/ioutil" "math/big" rd "math/rand" "os" "time")func init(

2016-11-02 17:56:22 5780 3

原创 Golang1.7使用CGO在Go代码中定义C函数

test.h文件内容:int test(void* fn);void println(char* str);void callback(void* fn);test.c文件内容:#include <test.h>int test(void* fn){ callback(fn); println("Hello,This from Clang"); return 0;

2016-10-10 10:26:44 3734

原创 Golang1.7 Http和Tcp使用同一个端口做服务

先看一下标准库中http server的实现type tcpKeepAliveListener struct { *net.TCPListener}func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) { tc, err := ln.AcceptTCP() if err != nil {

2016-10-08 10:22:41 6056 2

原创 Golang使用amqp发送消息

1.为什么使用信道(channel)而不使用TCP连接发送AMQP命令?对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的方案,在这条连接当中建立多条信道与RabbitMQ进行私密通信,相当于光纤电缆一样,一条电缆有多条光束,信道是没有限制的2.队列 1)AMQP的命令basic.consume

2016-09-26 17:45:10 5574

原创 Golang为别人写的csv文件处理的例子

package mainimport ( "encoding/csv" "flag" "io" "log" "os" "sort" "strings")var quick, first, unrepeat boolfunc main() { path := flag.String("p", "", "-p 指定csv文件路径")

2016-09-19 15:05:12 3591

原创 Go1.7做一了一个简单的远程目录比较工具

package mainimport ( "bufio" "bytes" "flag" "fmt" "io" "log" "net/http" "os" "path/filepath" "strings" "github.com/czxichen/AutoWork/tools/md5" "github.co

2016-09-14 18:12:34 1186

原创 Golang1.7动态库的使用,C和Golang的动态库以及使用

项目目录root@working-srv:/data/code/src# tree project workspace/project└── pro.goworkspace/└── main.gomain.gopackage mainimport ( "project")func main() { project.Hello() pro

2016-09-10 15:59:45 9135

原创 Golang1.7中的TCP交互封装.

package connectionimport ( "encoding/binary" "errors" "io" "net" "sync" "time")//支持的最大消息长度const maxLength int = 1<<32 - 1 // 4294967295var ( rHeadBytes = [4]byte{0, 0, 0,

2016-09-01 11:26:59 3803

原创 Golang1.7闲来无事写了一个基于Gob的tcp通讯用的包

package gobconnimport ( "encoding/gob" "errors" "net" "reflect" "sync" "unsafe")type message struct { Type string value reflect.Value}func (self *message) Recovery()

2016-08-26 17:36:08 3223

原创 Golang实现通过微信接收告警消息

首先需要注册微信企业公众号,选团队的可以不使用认证 如图进入公众平台 选择设置.里面有CorpID 和 SecretID 这个发送的时候需要用到. 下面就是使用提供的API 开始发送信息了.具体自己可以看开发者中心里面的文档.package mainimport ( "bufio" "bytes" "encoding/json" "errors" "fla

2016-08-20 00:40:02 4159

原创 golang1.7中Windows修改盘符小程序

package main// #include <stdlib.h>import "C"import ( "bytes" "errors" "os" "syscall" "unsafe")var ( success = "The operation completed successfully." kernel

2016-08-10 11:25:44 1293

原创 golang1.7 关于CGO的一个小问题:C.free使用.

package main// #include <stdlib.h>import "C"import ( "fmt" "syscall" "unsafe")func main() { kernel := syscall.NewLazyDLL("Kernel32.dll") defer syscall.CloseHandler(syscall.Handle.

2016-08-10 08:12:28 5889

原创 Golang不使用MD5比较文件内容是否一致

func compare(spath, dpath string) bool { sinfo, err := os.Lstat(spath) if err != nil { return false } dinfo, err := os.Lstat(dpath) if err != nil { return false

2016-08-04 13:44:01 2492

原创 Golang 1.7.3 Context 简单用法.类似sync.WaitGroup

package mainimport ( "context" "fmt" "time")func main() { ctx, cancelFunc := context.WithDeadline(context.Background(), time.Now().Add(time.Second*10)) t, ok := ctx.Deadline()

2016-08-03 16:06:18 2173

原创 Golang1.7使用ICMP协议实现ping功能,带TIME和TTL

package mainimport ( "errors" "fmt" "math/rand" "net" "os" "time" "golang.org/x/net/icmp" "golang.org/x/net/ipv4")func Lookup(host string) (string, error) { addrs, e

2016-07-22 15:47:34 5855

原创 Golang1.7使用kernel32.dll 读取共享内存,代码小示例

package mainimport ( "fmt" "syscall" "unsafe")func main() { ShareMemName, _ := syscall.BytePtrFromString("ShareMemory") //ShareMemory共享内存名称. var sharememname = uintptr(unsafe.Point

2016-07-21 20:14:17 1951 2

原创 Golang自玩项目中一个重连机制实现.

package tcp_listentype Connection interface { Read() (value interface{}, tag byte, err error) Write(tag byte, body interface{}) (err error) Close() error LocalAddr() string RemoteAd

2016-07-11 10:37:19 4165

原创 Golang 命令行自动设置网卡名称为LAN or WAN

package mainimport ( "fmt" "net" "os" "os/exec" "strings")func main() { if len(os.Args) != 2 { fmt.Printf("Usage:\n%s 110.10.25.0/24\n", os.Args[0]) return

2016-07-08 16:56:18 2413

原创 golang使用execCommand调用的时候子进程如何杀掉处理方法

当执行的时候调用此方法设置进程组 SetPgid 杀的时候使用KILLALL即可杀掉全部子进程.代码实现:Linux处理方法:package systemimport ( "syscall")func SetPgid(pid, pgid int) error { return syscall.Setpgid(pid, pgid)}func GetPP

2016-07-08 08:19:22 10886

原创 Linux下使用C杀死进程.

#include#include#include#include#include void main(int argc,char *argv[]){ int num; num=atoi(argv[1]); int status; status=kill(num,SIGKILL); if (status == -1) printf("kill faild\n"); wai

2016-06-01 13:35:08 5302

原创 golang实现跨平台scp批量群发文件

package mainimport ( "bufio" "flag" "fmt" "io" "os" "path/filepath" "strings" "github.com/czxichen/AutoWork/tools/split" "golang.org/x/crypto/ssh")var ( passwd = flag.String("p", "",

2016-05-31 10:46:44 3094

原创 golang 实现tcp转发代理

package mainimport ( "flag" "fmt" "io" "net" "os" "strings" "sync")var lock sync.Mutexvar trueList []stringvar ip stringvar list stringfunc main() { flag.StringVar(&ip, "l", ":9897",

2016-05-26 11:16:47 10765 1

原创 golang设置每天12点定时任务

package cronimport "time"func StartTimer(F func()) { go func() { for { F() next := now.Add(time.Hour * 24) next = time.Date(next.Year(), next.Month(), next.Day(), 0, 0, 0, 0, next.Loca

2016-05-24 15:50:03 10088

原创 带交互的telnet小工具,golang版

package netTools //main //import ( "fmt" "net" "strconv" "strings" "time")func smain() { lis, err := net.Listen("tcp", ":1789") if err != nil { fmt.Println(err) } defer lis.Close() fo

2016-05-05 17:41:35 2473

原创 Golang httptls 通信,带证书请求小实例

package wgetimport ( "crypto/tls" "crypto/x509" "io" "net/http" "os")func client(rootCa, rootKey string) *http.Client { var tr *http.Transport certs, err := tls.LoadX509KeyPair(rootCa, roo

2016-04-27 09:04:07 6307

原创 Golang的TLS通信,证书文件使用.

package mainimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "io/ioutil" "math/big" "os" "time")func main() { info := CertInformation{Country: []strin

2016-04-26 15:07:00 5447

原创 Golang tls 链接通信

package tcp_listenimport ( "crypto/rand" "crypto/tls" "net")func Servertls(addr, crt, key string) (net.Listener, error) { cert, err := tls.LoadX509KeyPair(crt, key) if err != nil { return

2016-04-25 21:41:44 1597

原创 Go和C类型对应关系

C.charC.schar (signed char)C.uchar (unsigned char)C.shortC.ushort (unsigned short)C.intC.uint (unsigned int)C.longC.ulong (unsigned long)C.longlong (long long)C.ulonglong (unsigned long long

2016-04-17 21:33:58 3602

原创 Golang实现http文件上传小功能

package mainimport ( "fmt" "io" "net/http" "os")func main() { http.HandleFunc("/", index) http.HandleFunc("/upload", upload) http.ListenAndServe(":1789", nil)}func upload(w http.Respons

2016-04-15 22:29:37 9678

原创 交互批量拖取文件代码片段,非完整代码

package mainimport ( "bytes" "encoding/json" "flag" "fmt" "io/ioutil" "net/http" "os" "strings")const ( bodyType = "application/json")type job struct { FullDir bool Files string

2016-04-13 10:21:28 474

原创 Go语言tcp通信处理粘包问题框架.

代码:package MessageFrameWorkimport ( "encoding/binary" "errors" "io" "net" "sync")//默认消息头的长度是6.const ( HeadLenght = 6)var ( headLenghtError = errors.New("Read Head faild.") connction

2016-04-05 13:44:18 2397

原创 Golang给目录按时间排序.正则、时间条件搜索文件

package mainimport ( "fmt" "io/ioutil" "os" "sort")func main() { list, err := ReadDir("AutoUpdate") if err != nil { fmt.Println(err) return } for _, v := range list { fmt.Println(v.

2016-03-27 15:02:25 4028

原创 golang项目邮件发送模块代码分享

package sendMailimport ( "fmt" "net/smtp" "strings")type senderInfo struct { User string `jsob:user` Passwd string `json:passwd` Host_port string `json:host_port` Mailaddr string

2016-03-24 22:56:30 1318

原创 golang日志中心取日志代码分享

package mainimport ( "archive/zip" "bytes" "encoding/json" "fmt" "io" "io/ioutil" "net" "net/http" "os" "path/filepath" "strings" "time")var tempDir string = "tmp"const zone int64 =

2016-03-22 21:11:04 2266

原创 Golang Linux下面调用nohup启动程序无法返回问题,解决方法.

package mainimport ( "os" "os/exec")func main() { f, _ := os.Create("1.txt") cmd := exec.Command("su", "-", "user00", "-c", "cd /tmp;nohup sh 1.sh &") cmd.Stdout = os.Stdout cmd.Stderr = f

2016-03-18 13:38:44 2897

原创 Windows下面替换命令实现,最新修复一个BUG

package mainimport ( "bufio" "bytes" "flag" "fmt" "io/ioutil" "os" "path/filepath" "regexp" "strings")var ( dir string file string oldstr string newstr string Reg *rege

2016-03-15 17:16:40 862

原创 Linux计算cpu使用率

计算总的 CPU 使用率 TOTALCPUUSE1)采样两个足够短的时间间隔的 CPU 快照,即读取 /proc/stat 文件,获取两个时间点的下列数据:CPUT1 (user1, nice1, system1, idle1, iowait1, irq1, softirq1, stealstolen1, guest1);CPUT2 (user2, nice2, system2, idl

2016-03-10 10:16:19 2654

原创 Golang加头和尾部来解决tcp粘包问题.代码片段示例

package mainimport ( "bufio" "encoding/binary" "fmt" "io" "net")var empty []bytefunc main() { lis, _ := net.Listen("tcp", ":1789") for { con, err := lis.Accept() if err != nil { c

2016-03-09 09:25:11 2343

原创 通过接口实现压缩文件、目录,修正遍历方式,未添加排除文件操作

package zipimport ( "io" "os" "path/filepath" "strings")type Compress interface { Close() error WriteHead(path string, info os.FileInfo) error Write(p []byte) (int, error)}func walk(pat

2016-03-08 11:43:07 666

原创 Go1.5 zip 压缩目录修正时间

package zipimport ( "archive/zip" "io" "os" "path/filepath" "time")const zone int64 = +8func Zip(source, target string) error { zipfile, err := os.Create(target) if err != nil { return

2016-03-07 17:10:57 746

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除