Go语言中文网 为您找到相关结果 5

Go语言的协程池 , 节省内存 , 减少GC压力

Factory Go语言的协程池 , 节省内存 , 减少GC压力 安装 go get github.com/letsfire/factory 用法 // 新建一个协程池,指定协程数量20000 var master = factory.NewMaster(20000) // 新建第一条工作流水线 var line1 = master.AddLine("demo.line.1", func(args interface{}) { // TODO 处理您的业务逻辑 // fmt.Println(args...) }) // 新建第二条工作流水线 var line2 = master.AddLine("demo.line.2", func(args interface{}) { // TODO 处...阅读全文

博文 2019-08-14 19:02:39 letsfire

一个TCP长连接设备管理后台工程(三)

前篇: 一个TCP长连接设备管理后台工程(一)一个TCP长连接设备管理后台工程(二) Github仓库地址 TCP协议整合JTT808协议 前面简单说明了基于golang的net库进行TCP通讯。现在我们需要将现有的协议整合进去。行业内车辆终端一般都是对接交通部的JTT808协议,此处我们要实现的是JTT808-2019版本。 消息结构 标识位 消息头 消息体 校验码 标识位 0x7e 0x7e 标识位应采用0x7e表示,若校验码、消息头以及消息体中出现0x7e及0x7d,则要进行转义处理。转义规则定义如下: 先对0x7d进行转义,转换为固定两个字节数据:0x7d 0x01; 再对0x7e进行转义,转换为固定两个字节数据:0x7d 0x02。 转义处理过程如下: 发送消息时:先对消息进行封装...阅读全文

博文 2019-12-27 17:32:42 qiuzhiqian

服务超时总结

介绍 超时 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求; 服务端内部超时,服务端可能存在DB操作、IO操作、调用其他服务超时; 响应超时,服务端给客户端返回响应时超时,此时服务端已经处理了请求。 超时发生需要客户端和服务端如何处理呢? 客户端最常见方法: 重试(前提是服务端接口支持幂等),重试间隔梯度增大,重试次数阈值最大值 不重试直接去查询请求结果状态,根据结果确认是否请求成功,或者什么都不处理,直接认为失败不做进一步处理 具体接口场景具体对待 服务端: 服务端内部如果超时了,应该尽快给客户端返回,告诉客户端超时失败,这个主要是通过服务端内部超时控制来实现,例如:golang http.TimeoutHandler 幂等性 支持接口无限重试主要靠的就是幂等性,实...阅读全文

博文 2019-08-20 22:02:43 凯文不上班

Golang并发模型:select进阶

特性 nil的通道永远阻塞,即不执行。 break跳出for? select{}阻塞。 select应用场景 无阻塞的读、写通道 给某个请求/处理,设置超时时间,一旦超时时间内无法完成,则停止处理 有多个通道需要处理,哪个可以处理,就处理哪个 并发系列文章推荐 Golang并发模型:轻松入门流水线模型 Golang并发模型:轻松入门流水线FAN模式 Golang并发模型:并发协程的优雅退...阅读全文

博文 2018-12-08 16:34:45 shitaibin

5月26日流水账

了解了一下 Golang 语言的并发编程,开拓了知识面。Golang 用 go 开辟一个协程,利用 channel 这种数据类型进行协程间的通信。之所以说Golang 语言天生具有高并发性,是因为其对并发程序编译速度非常快,超过Java。 做了两道Leetcode子数组的题,收获挺大的。 TCP 是面向连接的,端到端的;UDP面向无连接。TCP 像打电话,UDP像发报文。 网络传输四层模型 : 应用层 -> 传输层 -> 网络层 -> 链路...阅读全文

博文 2020-05-27 22:32:43 禁卫君