go tcp通信

go 的tcp的应用层代码看起来极为简单1,多个协程同时Accept , 不知道这种实现有没有什么问题2,多个协程同时处理网络IO事件, 貌似意味着, 有多少个连接过来就需要有多少个协程了, 对于go来说,一个进程支持足够都的协程, 远远大于带宽的限制服务端代码ackage main import ( "net" "time" "fmt" ) func ca(){ a := recover() fmt.Pr...阅读全文

2017-07-15 22:43:02 jinjiashan
阅读:2325 评论:0

go http服务

go 实现一个http服务是很简单的1,特点:不需要依赖容器, 不同于java 与 php2,可以使用进程的内存, 对于配置文件就不需要第三方存储服务端代码:package main import "fmt" import ( "net/http" "time" ) func MyHandle(res http.ResponseWriter, req *http.Request){ fmt.Println("MyHanle") ...阅读全文

2017-07-15 23:54:24 jinjiashan
阅读:1831 评论:0

go+chan并发执行

利用一个chan执行一个并发的任务, 整个任务的最大耗时是最耗时的那个子任务 func SendChan(data int){ t := 10 - data if data == 5{ t = 20 } time.Sleep(time.Duration(t*1e9)) C <- data } func main(){ for i:=0; i<10; i++{ ...阅读全文

2017-08-05 11:14:53 jinjiashan
阅读:2018 评论:0

go int 和 []byte互相转化

1,Int2Byte       把int的每个字节取出来放入byte数组中,存储采用Littledian2,Byte2Int   把byte Slice 中的每个字节取出来, 按Littledian端拼成一个intfunc Int2Byte(data int)(ret []byte){ var len uintptr = unsafe.Sizeof(data) ret = make([]byte, len) var tmp int = 0xff ...阅读全文

2017-08-06 11:59:03 jinjiashan
阅读:12351 评论:2

go append返回一个新的内存

关于go 的append1, 当slice基于array创建的时候,slice和array是同一段内存, slice的len, cap受限与array;2,当append的时候, 返回的值是一个新的内存, 与源array没有关系import "fmt"func TestSliceBaseArray(){ var data [3]string = [3]string{"1", "2", "3"} one := data[:] fmt.Println(one) t...阅读全文

2017-08-19 11:13:19 jinjiashan
阅读:1552 评论:3