2021
03-30
03-30
Golang 端口复用测试的实现
先给出结论:同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口。测试首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接失败,间隔15s后,再次尝试,最多尝试3次,。clientpackagemainimport("bufio""fmt""net""os""time")funcDialCustom(network,addressstring,timeouttime.Duration,localIP[]byte,localPortint)(net.Conn,error){net...
继续阅读 >
在运维开发的过程中,经常碰到这样的情况:启动某个应用前,需要先检测一下端口是否被其他的应用占用了,若占用了,能否得到占用进程的PID。后续可以根据这个PID,查找是哪个应用占据这端口,然后KILL掉。非常简单的需求,思路是:利用netstat命令获取当前的相关端口号的PID,然后正则表达式过滤出相关的PID即可netstat-ano|findstr8099输出如下:以windows系统下为...
有时会有这种需求,将一个json数据形如:{"x":"golang","y":"520.1314"}中的y反序列化为浮点类型,如果这样写:packagemainimport("encoding/json""fmt")typeJsonTeststruct{Xstring`json:"x"`Yfloat64`json:"y"`}funcmain(){s:=`{"x":"golang","y":"520.1314"}`varjtJsonTesterr:=json.Unmarshal([]byte(s),&jt)iferr==nil{fmt.Printf("%+v\n",jt)}else{fmt.Println(err)...
GO语言的float64类型在做加减乘除时会出现一些问题比如乘法运算,实例,将小数的元转换成整数的分:发现将小数的元乘以100后强制转换为整数分,少了1分解决办法:var(a,bfloat64cint64)a=2.55b=0.0c=int64((a+b)*100.0)fmt.Printf("第1次c=%d\n",c)//第1次c=254c=int64(a*100.0)fmt.Printf("第2次c=%d\n",c)//第2次c=254fmt.Println(a*100)//254.99999999999997//发现将小数的元乘以100后强制转换为...