Golang中国

ichenq

Golang China 第 4191 号会员,加入于 2015-08-28 10:33


ichenq最近回复了


回复了 qianlnk 创建的主题: golang实现类似try...catch...的异常处理机制 2017-05-30 20:30

不错的trick

就好像在Lua里面实现类似C++里的Class一样,虽然可以用,但是其实背离了语言最初的设计哲学。

回复了 baiyuxiong 创建的主题: 如何比较好的同时退出多个goroutine? 2017-05-30 20:28

回复4楼

虽然Read是阻塞的,
但是处理其它goroutine的退出的时候,可以Close这个Conn对象,然后Read就返回error了

回复了 baiyuxiong 创建的主题: 有没有这样的开源tcp服务? 2017-05-30 20:26

这些都不难。

1、TCP Server
使用net包即可

2、可以管理无数个终端连接
使用一个map作为所有TCPConn的容器,再加mutex支持线程安全

3、管理终端的上线、心跳、下线
上线就是终端connect上来,
心跳就是终端每隔X秒发消息过来,
下线就是Read()返回error

4、每个终端有ID,可以在后台或者接口向指定的终端发消息
用一个int在配合atomic做自增即可

这些在Go里面已经很好做了,
其实最麻烦是协议解析部分

回复了 745588988 创建的主题: 关于golang计时器的一个问题,请教一下 2016-09-04 11:09

操作系统提供了定时任务的接口,Linux的cron,Windows的任务计划程序,只需要做好配置,让系统在XX时刻调用你的程序就行了。

回复了 xz6597863 创建的主题: golang float运算疑问 2016-09-04 11:02

楼主可以了解一下IEEE-754浮点数标准

回复了 mysll 创建的主题: go的protobuf这个问题是不是一个bug? 2015-10-14 16:06

在执行protoc命令的时候,例如:
protoc --go_out=. a.proto

如果a.proto文件import了b.proto,那么需要在命令行里包含b.proto,如:

protoc --go_out=. a.proto b.proto

或者简单点,把所有proto文件放在一个目录:

protoc --go_out=. *.proto

参考官方protobuf的issue 67

回复了 ichenq 创建的主题: golang如何在对TCPConn进行Read的时候能够对它进行Write? 2015-09-07 20:49

@stevewang
非常谢谢,那么明显的文档说明一直没有注意到~

回复了 ohko 创建的主题: 超长float64位计算,不知是BUG还是使用错误,请高人指教! 2015-08-28 10:43

我的没有任何问题啊, go 1.5, Ubuntu 14.04


func main() {
    var a float64 = 12959653081233152683760791820268915873095215894259158297207384037775798390732947435759407568730776231939495920976951779674164698735094020653357745276190720
    var b float64 = 38702708391292475707970394122420465445262695173878312073868790125970680813462212621273021068406482338979482750490461442604850467520473202688
    c := "12959653081233191386469183112744623843489338314724603559902557916087872259523073406440221030943397504960564327459290759156915189196536625503825265749393408"
    var sum = strconv.FormatFloat(a+b, 'f', 0, 64)
    fmt.Println(sum)
    fmt.Println("equal:", sum == c)
}

ichenq 创建的更多回复