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

Go 语言使用 TCP keepalive

如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN数据包的,并且本地系统不能检测连接是否已中断。所以需要作为程序员的你来解决这种情况。 --zxp翻译于 1 个月 前 0人顶 顶 翻译的不错哦! GO语言为你提供了解决这个问题的几种方法。首选的方法可能是 net.Conn 接口中的SetReadDeadline方法。假设你的连接在以一种特定的间隔来接收数据,你可以简单地把读取超时当作一个io.EOF错误并Close这个连接。很多现有的TCP协议都支持处理错误的这种方法,它们通过定义某种心跳机制或 service health 1,在端点间以特定间隔发送PI...阅读全文

博文 2014-10-09 16:00:00 --zxp, 0x0bject

Go 语言如何去解决 Web 开发人员面临的众多问题?

坦白的说,我的团队非常厌恶我对 Go 语言传道的方式,每当我们团队的代码库出现问题时,他们希望我用一种更委婉的方式提出。 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/web-developers/Screen-Shot-2016-01-29-at-11-57-56.png) 我学会的第一门编程语言是 PHP,这是个优秀的语言,我可以用它很快地构建 Web 应用程序,这些应用程序也能够达到预期的效果。但是我注意到,为了使其可用,我会花费大量的时间来关注缓存。 我也发现自己依靠很多第三方库来做一些更复杂的任务,比如队列,Web Sockets 等等。我发现自己使用了 Pusher,RabbitMQ,Be...阅读全文

博文 2017-12-11 11:22:12 Dingo1991

Go轻松学Android移动App,基础知识一网打尽,你值得拥有

从2013年开始,Go语言开始火了,所以我也学习了一下。另外我用了大概两周的时候做了一个Android的App,从Go语言的环境安装,变量定义,函数定义,高级数据类型之结构体和接口,并行计算,使用包和测试管理项目等都有详细的介绍,而且使用markdown编写,然后转成html,最后给示例代码都加上美化显示。里面的每个例子都是本人亲自写的并测试通过的,可以保证100%正确率。你可以利用点滴的时间,比如坐地铁啊,Bus啊,都可以看看。很方便。 现在我已经将它发布到小米的应用商店。欢迎下载使用。别忘记评论一下哦。 http://app.xiaomi.com/detail/54217 另外:目前没有IOS版的,很抱歉。 不过我做了一个html版本的,可以在电脑上看,如果你有...阅读全文

Golang用body来get或post数据

用body来处理参数,能处理多层结构化参数,url不能传送多层结构数据 // 基础方法,这里多用于访问webapi,配合上json转换。此方法可以运行但是不算完善。 func httpDo(method string, url string, msg string) { fmt.Println("----", url, "----") client := &http.Client{} body := bytes.NewBuffer([]byte(msg)) req, err := http.NewRequest(method, url, body) if err != nil { // handle error } req.Header.Set("Content-Type", "applic...阅读全文

博文 2018-05-22 11:33:08 捍卫机密

在go中使用linked channels进行数据广播

在go中使用linked channels进行数据广播 原文在这里(需翻墙),为啥想要翻译这篇文章是因为在实际中也碰到过如此的问题,而该文章的解决方式很巧妙,希望对大家有用。 在go中channels是一个很强大的东西,但是在处理某些事情上面还是有局限的。其中之一就是一对多的通信。channels在多个writer,一个reader的模型下面工作的很好,但是却不能很容易的处理多个reader等待获取一个writer发送的数据的情况。 处理这样的情况,可能的一个go api原型如下: type Broadcaster … func NewBroadcaster() Broadcaster func (b Broadcaster) Write(v interface{}) func (b Bro...阅读全文

博文 2014-10-15 13:52:44 siddontang

goconvey — Go语言优雅的单元测试工具

这个测试工具真的很酷,真心推荐使用使用。 主要特性: - 集成官方 `go test` - 可读性好(带颜色)的控制台输出 - 全自动的 Web UI - 全面的回归测试套件 - 测试代码自动生成 - ... [官网](http://goconvey.co/) [官方文档](https://github.com/smartystreets/goconvey/wiki) 无闻:[《goconvey - 课时 1:优雅的单元测试》](http://wuwen.org/article/42/02-goconvey-class1.html) 视频教程:[《GoConvey, Part 1: Introduction》](https://www.youtu...阅读全文

mac 安装golang

mac golang 安装 1. 下载golang [https://golang.org/dl/]() 2. 安装 tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz 3. 添加环境变量 设置GOROOT 和 GOPATH vim $HOME/.profile #!/bin/zsh #GOROOT export PATH=$PATH:/usr/local/go/bin #GOPATH export GOPATH=$HOME/Gowork export PATH=$PATH:$GOPATH/bin 4. 创建目录 mkdir Gowork cd $HOME/Gowork;mkdir {bin,src,pkg} -p 5. 在vim $HOME...阅读全文

博文 2018-07-16 22:35:47 wangxing0122

Go Modules 和 Go Proxy

Go Modules 简介 Go 在 1.11 版本引入了新的依赖管理模式 Go Modules,旨在解决一直广为诟病的依赖管理问题。 使用下列命令启用 Go Modules go env -w GO111MODULE=on # 不建议设为 auto 这是持久性设定,环境变量 GOENV 指示配置文件位置。 Go Modules 采用语义化版本,详见 https://semver.org/lang/zh-CN/ 。 Go Modules 的使用方法详见: https://github.com/golang/go/... https://juejin.im/post/5c8e50... https://objcoding.com/2018/09... 改造一个现有的项目 场景:项目来自 Git...阅读全文

博文 2019-09-20 23:32:41 Zack

【互联网早报】2017.11.23

## 国内新闻 1.微信平台开放了原创和留言功能,但是可千万要小心了 https://www.leiphone.com/news/201711/akehJTrt5n05frth.html?state=1&app_id=2016102502320265&scope=auth_userinfo&auth_code=_000000000000000000000000000AX75 2.现金贷监管风暴第一步:网络小贷增量叫停存量整顿 http://tech.sina.com.cn/i/2017-11-23/doc-ifypacti7074564.shtml 3.六大快递公司第三季度财报曝光 百世快递增速最快 http://tech.sina.com.cn/i...阅读全文

Golang为什么没有整型的max/min方法

作为有一些经验的Golang开发者,你可能意识到了Golang并没有max/min方法来返回给定的两个或多个整型数值中的最大值或最小值。其他语言通常会在核心库中提供这类方法。 你有没有想过为什么Golang没有这么做? Golang确实在math包中提供了max/min方法,但是仅用于对比float64类型。方法的签名如下: math.Min(float64, float64) float64 math.Max(float64, float64) float64 Golang为float64提供max/min方法是浮点类型的比较对于大部分开发者来说比较困难。由于涉及精度问题,浮点数的对比往往没有那么直接。所以Golang在math包中提供了用于浮点数对比的内建方法。 对于int/int64数...阅读全文

博文 2019-12-07 20:32:40 李小西033

想问一下bufio.ReadWrite的问题

想问一个通过sock缓冲器发送数据的问题 rw := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) binary.Write(rw, binary.LittleEndian, bags) rw.Flush() conn是socket 连接 连续这样调用Fiush()方法可以把消息发送回去,但是多次访问之后每访问一下内存就会涨,怎么能把这个rw关闭呢并释放内存呢? 谢...阅读全文

gossdb终于可以全速前进了

用了一周的时间才最终找到了一个会在大并发(并发1000,mbp普通本)下可能会发生的空指针问题,现在经过多次测试,终于可以关闭这个bug了。哈哈,高兴啊。 现在的gossdb已经相对成熟了,而且用的人也越来越多了,希望在这里介绍给大家,如果有人用ssdb,不妨尝试一下,会有惊喜的。 下面简单的介绍一下gossdb https://github.com/seefan/gossdb 功能列表 1. 继承官方连接方式。已支持超过40个官方命令。 2. 支持连接池。 3. 已支持 set 相关方法 4. 已支持 hashmap 相关方法 5. 已支持 queue 相关方法 6. 已支持返回值类型转换,可以方便的把从ssdb中取到的内容转化为指定类型。 连接池已支...阅读全文

OPIPING 专业Api 管理及自动化测试工具

功能说明 支持多团队、多项目、多环境,更符合技术开发和使用场景 支持Api场景组并发测试、性能测试 通过功能权限、数据权限让您精准的控制用户的使用权限,使其尽在掌控之中 动态生成API数据,让前后端更好的协同开发,降低等待时间,提高开发效率 官方地址:https://www.opiping.com/ 操作手册:https://shuka.opiping.com/t/opiping Windows、Mac客户端演示 多团队管理 Api快速查找 Api自动化测试 Api Mock测试 常用插...阅读全文

http代理服务器go代理服务器,内网穿透从未如此简单 easyProxy

# easyProxy 轻量级、较高性能http代理服务器,主要应用与内网穿透。支持多站点配置、客户端与服务端连接中断自动重连,多路传输,大大的提高请求处理速度,go语言编写,无第三方依赖,经过测试内存占用小,普通场景下,仅占用10m内存。 ## 背景 我有一个小程序的需求,但是小程序的数据源必须从内网才能抓取到,但是又苦于内网服务器没有公网ip,所以只能内网穿透了。 用了一段时间ngrok做内网穿透,可能由于功能比较强大,配置起来挺麻烦的,加之开源版有内存的泄漏,很是闹心。 正好最近在看go相关的东西,所以做了一款代理服务器,功能比较简单,用于内网穿透最为合适。 ## 特点 - [x] 支持多站点配置 - [x] 断线自动重连 - [x] 支持多...阅读全文

阿里云Quick BI——让人人都成为分析师

摘要: 在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析。大会现场的精彩分享也赢得观众们的一直认可和热烈的反响。 Quick BI诞生于阿里巴巴集团自身对数据分析的需求过程。 在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析。大会现场的精彩分享也赢得观众们的一直认可和热烈的反响。 ![图片描述](http://img.blog.csdn.net/20180403125648812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVucWlpbnNpZ2h0/font...阅读全文

基于Golang开发的开源微信小程序(页面高仿大众点评)

小程序基于Taro2.0 + React Hooks开发 测试数据采集自微信小程序--大众点评 服务端api基于 Golang 计划添加基于Reactjs的后台管理系统、PC版、Wap版 目前主要是已浏览页面为主,接下来会继续做其他业务. Github https://github.com/i-coder-robot/dp-min-program 服务端api 项目地址:https://github.com/i-coder-robot/mock-food 最后 喜欢别忘了Star 本项目长期更新完善,欢迎Watch,欢迎扫码,批评指正...阅读全文

博文 2020-02-10 23:32:49 欢喜哥在学习

[Golang] base64加密与解密

首先解释以下什么是base64(来自百度百科): Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。 在golang里有base64库可以实现相关操作,我尝试实现了加密解密...阅读全文

博文 2016-08-07 17:00:00 vincentX

Golang UnitTest单元测试(go test)

##Golang UnitTest单元测试 Golang单元测试对文件名和方法名,参数都有很严格的要求。 例如: 1、文件名必须以xx_test.go命名 2、方法必须是Test[^a-z]开头 3、方法参数必须 t *testing.T 之前就因为第 2 点没有写对,导致找了半天错误。现在真的让人记忆深刻啊,小小的东西当初看书没仔细。 下面分享一点go test的参数解读。来源 go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译g...阅读全文

保存一个别人的golang 日志库

package loggerimport ( "fmt" "log" "os" "runtime" "strconv" "sync" "time")const ( _VER string = "1.0.0")type LEVEL int32var logLevel LEVEL = 1var maxFileSize int64var maxFileCount int32var dailyRolling bool = truevar consoleAppender bool = truevar RollingFile bool = falsevar logObj *_FILEconst DATEFORMAT = "2006-01-02"type UNIT int64const ( _ = iot...阅读全文

博文 2014-10-04 19:27:43 984195889

go 语言之ReadFromUDP使用

今日阅读GORTP代码的时候,发现其代码中收取UDP网络数据后总是可以认为是一个RTP包,而我一开始认为该代码逻辑存在问题,即如果对方发送的是半个RTP包,那不就存在问题?当经过修改代码验证,当接受数据的缓存缓存小于发送缓存时,ReadFromUDP就会报错。 后来,在网上查询资料得知,UDP的数据在缓存队列中是有边缘保证的,也就是说每一个udp的数据包都是游大小的,每次ReadFromUDP都会取一个完整的udp数据包上来,如果应用程序设置的缓存过小,不够一个udp数据包大小,那么ReadFromUDP就会报错。 以上问题,记录一下,以防下次忘记...阅读全文

博文 2015-12-29 21:00:02 wu2436428

HTTP 流量复制工具Gor

Gor 是用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。 Gor 基础工作流: ![Diagram](http://static.oschina.net/uploads/img/201507/21161205_ezre.jpg) 从端口捕获流量: # Run on servers where you want to catch traffic. You can run it on each `web` machine. sudo gor --input-raw :80 --output-tcp replay.local:28020 # Replay server (rep...阅读全文

开源项目 2015-08-02 14:24:59 buger

EOS将被大规模黑客攻击?此话怎讲!

EOS自启动漏洞赏金计划以来,上半年赏金已超10万美元。 据IMEOS消息,近日,区块链安全公司PeckShield发现部分EOS用户的秘钥存在严重的安全隐患,部分秘钥允许用强度较弱的助记词,很容易存在“彩虹”攻击,并引发账户数字资产被盗。其实自今年5月以来,EOS就屡遭负面新闻缠身。“史诗级”漏洞、百万私钥被盗、主网瘫痪……安全问题似乎已经成为了EOS很大的硬伤。对于这个1年募资40亿美金的明星项目,支持者认为它开启了区块链3.0时代,反对者将其视为史上最大的空气币、传销币,存在严重的安全隐患。更有区块链研究员预言,明年将会有一场大规模利用EOS漏洞的黑客攻击。“考虑到开发人员处理关键安全问题的方式,这一攻击的出现将很可能是不可避免的。”攻击必将到来,而且不可避免?EOS安全事件频发的根源...阅读全文

博文 2018-07-12 17:34:48 BTC123门户

golang代码覆盖率

写了自动化,就得统计代码覆盖率= = 原链接:https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests 其实看了原链接我并没有能成功统计出来,还是看了同事的笔记才成功的。 操作步骤 -- 按我实际操作的步骤写的 1 创建main函数的test文件 2 编译代码,生成可执行文件 3 统计覆盖率 一 Main函数的test文件 package main // This file is mandatory as otherwise the filebeat.test binary is not generated correctly. import ( "testing" "flag" ) var systemTe...阅读全文

博文 2017-12-13 02:00:01 zhaoxd07

golang map性能测试

golang map是golang的方便操作的key-value package main import ( "fmt" "math/rand" "time" _"strconv" ) var x = make(map[int]int, 100000001) //var x = make(map[string]string, 100000001) func main() { ttime := time.Now().UnixNano() //x := make(map[int]int, 100000001) //x := [100000001]int{} fmt.Printf("len x %d \n", len(x)) for i := 1; i < 100000001; i++ { x[r...阅读全文

博文 2015-10-24 13:00:08 webyh

使用算法检测英超中的食物链

最近看到一篇新闻: 英超再现恐怖食物链!20强相生相克 今年用了14轮,对于足球和英超感兴趣的读者一定了解,所谓食物链是指A队胜过B队,B队胜过C队,……,N队也胜过A队,截止到英超第14轮,根据所有的队伍的胜负关系,一条最大的食物链已经形成,英超20队都加入到这个食物链中,相生相克。 我看到这篇新闻的时候,有一点点程序员的不由自主的想法,能否通过算法检查目前最大的食物链,以及能否将食物链罗列出来?这也算是算法解决实际问题的一个很好的例子吧。 很自然的,可以通过图来表示两队之间的已经比赛的关系,因为我们我们只考虑胜负关系,不考虑平局,所以可以使用有向图来表示。食物链可以单纯用胜或者负来表示,所以我们的有向图中以胜表示两个节点之间的关系。 当然,我对图相关的算法不是很熟悉,所以特地搜了一下相关...阅读全文

博文 2017-02-08 12:53:45 smallnest

socket 接收数据 read 读取到字节数组的疑问

Receivebag := make([]byte, 1500) //数据包接收区 k, err := conn.Read(Receivebag) socket 通讯中接收到的数据包怎么会出现异常呢?比如说 发送端发送的是 0x01 0x02 0x03 0x04 但是我接收的时候有时候接受到的某个数据包最后一个字节会出现异常,我接收到的数据变成了 0x01 0x02 0x03 0x?? 每次出现这种问题的时候都是最后一个字节异常了,百思不得其解为什么会这样,求指教 谢谢@polari...阅读全文

这套线上API聚合支付系统有哪些功能与优势

第四方支付是相对第三方而言的,作为对第三方支付平台服务的拓展。第三方支付介于银行和商户之间,而第四方支付是介于第三方支付和商户之间,没有支付许可牌照的限制。 第四方支付集中了各种三方支付平台的接口,也就是说集合了各个第三方支付的优势,能够根据商户的需求进行个性化定制,形成支付通道资源互补优势,满足商户需求,提供适合商户的支付解决方案。 总体来讲,第四方支付属于支付服务集成商,具有第三方支付无可比拟的灵活性,便捷性和支付服务互补性。而且第四方支付比第三方支付更具中立性优势,可以一定程度上调和目前第三方支付恶意竞争的状况,保证支付行业健康发展。 现在市面上的支付系统太多了,价钱不一、开发语言多种多样,什么JAVA、.NET、PHP、GOLANG等等。每个公司都打着自己的支付系统才是真正好的系统,...阅读全文

博文 2019-03-11 11:34:42 qq3037446029

分布式事务解决方案

什么是分布式事务 在大的操作集合中,所有的小操作都属于不同的服务器,不同的应用,分布式事务需要保证这些小操作要么一起成功,要么一起失败。本质上,分布式事务为了保证数据的一致性 分布式事务产生的原因 数据库分库分表(当一个操作需要访问01库又要访问02库的时候就会有这个问题) SOA服务化(所有业务拆分到不同的模块中,数据存储在不同的服务器中,所以需要用到分布式事务) ACID事务特性 原子性 一致性 隔离性 持久性 分布式事务的解决方案 基于XA协议的二阶段提交 消息事务+最终一致性 TCC编程模式 二阶段提交 XA是分布式事务协议, 总的来说 XA协议比较简单,容易实现,但是缺点是 同步阻塞 所有事务参与都在等待其他参与者响应的时候都处于同步阻塞的状态 单点问题 数据不一致 太过保守 任何...阅读全文

博文 2019-11-15 23:34:22 PenggeZhuang

Google算法工程师尹成带你深度学习数据结构与算法导论(信息学竞赛,ACM竞赛常备)视频分享

​标题程序 = 数据结构 + 算法 程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法 ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可...阅读全文

博文 2019-11-23 19:49:13 yanling1994

迎接人工智能时代,自动化测试的深度变革

AlphaGo的出色表演让人工智能名声鹊起,而在不久前的全国两会期间,人工智能被首次写入政府工作报告,人工智能再次向人们展示出了它的魅力。毫无疑问,人工智能、万物互联是未来趋势。 人工智能的兴起离不开大数据、云计算和深度学习等技术的突破,而就目前来说,人工智能更多的是用机器人来模拟人的多种行为以及能力。对于测试行业来说,自动化测试的出现,让其早早地镌上了AI的身影,但是,不少自动化系统的搭建都存在一个让人苦恼的问题: 场景: 某公司搭建了自动化测试平台用于App自动化测试,然而App几乎每周都会发布新版本,不断出现的新特性和功能变更,让Tester疲于写测试脚本,相比手工测试,似乎没有节省太多的工作量。 这种情况应该很多团队都能够感同身受,同时,James Whi...阅读全文

闲谈Kubernetes 的主要特性和经验分享

主要介绍 Kubernetes 的主要特性和一些经验。先从整体上看一下Kubernetes的一些理念和基本架构, 然后从网络、 资源管理、存储、服务发现、负载均衡、高可用、rolling upgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。 我们先从整体上看一下Kubernetes的一些理念和基本架构, 然后从网络、 资源管理、存储、服务发现、负载均衡、高可用、rolling upgrade、安全、监控等方面向大家简单介绍Kubernetes的这些主要特性。 当然也会包括一些需要注意的问题。主要目的是帮助大家快速理解 Kubernetes的主要功能,今后在研究和使用这个具的时候有所参考和帮助。 ##1.Kubernetes的一些理念: 1...阅读全文

Go 代码重构:23 倍性能提升!

要说写代码是每位程序员的使命,那么写优秀的代码则是每位程序员的底线。本文作者分享基于 Go 语言的代码重构,使得性能提升 23 倍的快速方法。以下为译文:几周前,我读了一篇名为“Go 语言中的好代码与差代码”(https://medium.com/@teivah/good-code-vs-bad-code-in-golang-84cb3c5da49d)的文章,作者一步步地向我们介绍了一个实际业务用例的重构。文章的主旨是利用 Go 语言的特性将“差代码”转换成“好代码”,即更加符合惯例和更易读的代码。但是它也坚持性能是项目重要的方面。这就引起了我探索的好奇心:让我们深入看看!1这篇文章里的程序基本上就是读取输入文件,然后解析每一行并存储到内存的对象中。作者不仅在 Github 上发布了他的代码...阅读全文

博文 2018-07-11 14:20:16 Val Deleplace

golang:interface{}类型测试

在golang中空的interface即interface{}可以看作任意类型, 即C中的void *. 对interface{}进行类型测试有2种语法: 1. Comma-ok断言: value, ok = element.(T), 其中T是具体类型. 2. Switch测试: switch element.(type) { case T1: case T2: default: } 其中T1, T2是具体类型. 注意: element.(type)语法不能在switch外的任何逻辑里使用. 在switch外必须使用comma-ok断言或者反射: reflect.TypeOf(element) reflect.ValueOf(element...阅读全文

博文 2016-09-07 07:00:02 zolo

golang服务端, 游戏公测时遇到的socket写超时的问题, 也是游戏框架的设计问题

问题描述: 游戏公测,玩家大概有几百个.运行一小段时间,大概是20分钟左右或最多半个小时,服务端就卡住了. 卡住较长时间,之后又会变正常一小会儿 查问题过程: 经过对运行日志的分析,程序执行到给客户端socket写数据的时候会一直卡住,然后报错,具体错误已忘记, 大概是写超时之类的. 百度查询,认为是, 服务端在给一个已经关闭的socket写数据才导致的错误, 而这个"关闭"在服务端其实认为没有关闭的. 是客户端主动发起了close的请求, 但是服务端没有正确处理该请求, 导致服务端一直认为该socket是正常,直到超时. 那么框架设计是这样的: 一个玩家的操作会同步给其它玩家,这时是直接给其它玩家的socket发送数据, 此时如果有一个玩家客户端写超时了, 那么其后所有的玩家都会在等待该异...阅读全文

博文 2014-10-04 19:27:46 984195889

Golang UnitTest单元测试

最近做项目的时候一直很苦恼,go的单元测试是怎么回事,之前有看过go test xx_test.go命令进行单元测试,只知道有这么一说。最近项目中写了很多工具类,一直想测试一下性能和执行结果。发现完全不对。 这是代码。 发现多次执行go test utilfile_test.go完全没有任何输出。查很多原因和多帖子,都没说到重点。今天在群里问了下,才发现go单元测试对文件名和方法名,参数都有很严格的要求。 例如: 1、文件名必须以xx_test.go命名 2、方法必须是Test[^a-z]开头 3、方法参数必须 t *testing.T 之前就因为第 2 点没有写对,导致找了半天错误。现在真的让人记忆深刻啊,小小的东西当初看书没仔细。 go test -v utilfile_test.go测...阅读全文

博文 2015-06-18 08:02:19 x369201170

访谈阿里孙伟光:这位技术人都经历了啥?

摘要: 做事情不能单单盯着KPI,不是KPI的事情不做。 《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。 提到程序员三个字,有些人的固有印象里会立马冒出如下标签:屌(码)丝(农)、不修边幅、没情调…… 而光哥,哦,不好意思——应该是“光戈”,在内网的18个标签中,被以下三大类占据: 富二代她父亲… 身材非常棒… 会做肉松,有点2的光光… 在技术上,2014年转型做大数据,他研发的产品,在不增加任何投入的情况,将计算集群的CPU利用率从30%多提升到70%以上,极大地提高了服务器的利用率;与此同时,他在...阅读全文

使用 Iris 框架写的一个后台 API 练手项目

最近一个月在从 Laravel 转到 Go ,练手写了一个项目,还没有写完,还在持续更新中。对比了多个框架 gin , echo , beego , iris 多个框架 (如果想了解几个框架的详细对比可以看下这个链接 Awesome Web Frameworks for Gophers ,并且都尝试的写了一些小项目,这一次用 宇宙最快框架 iris 写了这个后台接口项目。 项目介绍 使用了 iris 框架 数据库使用 gorm 数据库 也是使用了几个 orm 作对比 xorm , beego orm , gorm这个几 orm 都不错,可以都了解一下,想用哪一个看个人喜好。 使用了 jwt 做单点认证,上面介绍的几个框架都是支持 jwt 认证的。iris 框架的 jwt 文档写的相对比较简单...阅读全文

博文 2018-11-29 16:34:44 Dream

为什么说程序员一定要看 ElasticSearch 源码

前提 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需,大型企业早已淹没在系统生成的浩瀚数据流当中。大数据技术业已集中在如何存储和处理这些海量的数据上。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到飞跃式的发展。 Elasticsearch 以其开源、分布式、RESTFul API 三大优势,已经成为当下风口中“会飞的猪”。在我的电脑本地写了几篇 ElasticSearch 的源码解析了,回过头来想想应该也写一篇为何我会去看它的源码?为什么呢?下面我讲讲自己从接触搜索到现在看源码的过程!第一次接触搜索 搜索,我们首先想到的是搜索引擎:Google、百度,这个就算是接触的最早的了。我自己项目里面接触搜索是大二暑假那时练习的一个项目...阅读全文

博文 2018-12-21 20:34:42 Java高级架构狮

除痛指南 | P2P公司贷前风控福利贴

最近,随着数据宝的壮大和业务多样化 (骄傲脸)宝妹接到了很多case, 宝妹发现了一些相同的烦恼 临近年末,P2P公司生意火爆, 后台提出了各式各样的烦恼或需求 但细心的宝妹还是做了一个针对性的总结; 借此,宝妹还申请到了这次的专场福利, P2P公司-李先生 宝妹,我们在核查客户信息时经常碰到盲点, 被一些假身份、假号码糊弄,求帮助! 您的问题,宝妹已经在后台收到了呢, 对于这位P2P小伙伴的烦恼, 我们为您推荐以下接口 给您一面“照妖镜”助您让假身份无所遁形, 精准辨别借贷身份真实性。 ![1..jpg](http://studygolang.qiniudn.com/161124/f46f67d68ff96fab7cd54524a96379fb...阅读全文

BoltDB 一个简单的纯 Go key/value 存储 [译]

boltDB Blot Bolt 是由 Howard Chu 的 LMDB 项目启发的一个纯粹的 Go key/value数据库。 该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速和可靠的数据库。 由于 Bolt 是用来作为这样一个低层次的功能,简单是关键。 该API将是小的,只专注于获取值和设置值而已。 项目状态 Blot 稳定,API固定,文件格式固定。 使用完整的单元测试覆盖率和随机黑箱测试来确保数据库一致性和线程安全性。 Blot 目前用于高达1TB的高负载生产环境。 Shopify 和 Heroku等许多公司每天都使用 Bolt 来支持服务。 A message from the author Bolt 最初的目标是提供一个简单的纯 ...阅读全文

基于Golang开发的开源微信小程序(页面高仿大众点评)

小程序基于Taro2.0 + React Hooks开发 测试数据采集自微信小程序--大众点评 服务端api基于 Golang 计划添加基于Reactjs的后台管理系统、PC版、Wap版 目前主要是已浏览页面为主,接下来会继续做其他业务. Github https://github.com/i-coder-robot/dp-min-program 服务端api 项目地址:https://github.com/i-coder-robot/mock-food 最后 喜欢别忘了Star 本项目长期更新完善,欢迎Watch,欢迎扫码,批评指正...阅读全文

博文 2020-02-11 10:32:42 欢喜哥

招聘Golang 分布式平台研发工程师(Docker相关) 上海 (4名)

我们是专门为国内大金融(银行,交易所,保险公司,证券)和电信提供开源解决方案和服务的专业团队。公司技术团队都是热爱开源,长期做开源工作的工程师。 上海总部招聘 4位 Golang 研发工程师 招聘情况如下,喜欢Golang , 分布式和开源技术的小伙伴快来加入我们把。 工作地点: 上海 职位描述: 分布式平台研发工程师 薪酬范围:12k-25k, 13个月 (薪酬级别依照开发经验设置。 福利待遇: 除了国家规定的险和金之外,还有公司商业保险,年终奖金等。 职位要求: 熟悉,相信和热爱开源 ! (这是我们团队招聘的最最最重要的一条) 熟悉Golang 开发, 熟悉Golang并发编程更佳(有C或者Java项目开发经验的加分) 有API建模和设计经验的加分...阅读全文

注释你的代码

每隔一段时间,网上总会突然出现一些令人讨厌的帖子,其观点是:不应该为代码写注释,它存在的唯一原因是因为代码本身不足够好。对于这些论点,我完全不能苟同。 ## 烂代码 他们的观点也不完全是错误的。没有人能说自己的代码足够好。代码本身也会慢慢变坏。你知道什么时候代码腐烂得最厉害吗?当你六个月没有碰这些代码的时候!当回过头再读的时候,你会非常好奇:“这个作者到底是怎么想的?”(于是,使用 git blame 来查看历史记录,没想到代码竟然是自己写的,因为这是你的代码。) 反对注释者的论点是:需要注释的唯一原因是你的代码不够“清晰”。如果代码重构、命名和组织地更好,那就不需要这些注释了。 今天,当整个项目和问题空间都装在你的脑袋里的时候,你自然会觉得代码是干净、清晰和优雅的。但是,当六个月后,又或是...阅读全文

博文 2017-12-10 13:30:17 polaris

Go语言—开发环境搭建

SDK安装和配置 SDK:软件开发工具包 如果不安装SDK, 可以编写Go语言代码, 但是不能编译执行编写好的Go语言代码 1.下载SDK安装包。地址: https://golang.google.cn/dl/ 根据自己需求自行下载对应版本 2.运行图形化安装包 3.检测配置环境变量 4.检查是否安装配置成功 4.1打开cmd 4.2输入go version 4.3输入go env 安装Go语言开发工具 * Goland安装 下载安装包: 点我下载Goland 运行安装文件 激活程序: 自行百度激活(仅供学生党参考, 在职人员请支持正版) 激活安装完毕之后,打开项目文件夹 测试开发工具是否安装正确 看到hello world,证明安装无...阅读全文

博文 2018-09-20 12:34:40 newly_build

Go Girl养成记! Day One—女孩子学Go语言哇

我之所以一意孤行要学go,那是有原因的!就像意外怀孕一样,再怎么意外,那都是有原因的。 我来ThePlant面试时,老板和菲哥都很自豪的声称,ThePlant是工程师文化主导的公司。作为一个初出茅庐的文科生,当时我完全不知道他们在自high什么。工作一段时间之后,姐算是明白了什么是“工程师文化主导的公司”。所谓的工程师文化主导,就是完全由程序员说了算呗! 这里的程序员都是皇阿玛,四阿哥,我顶多就算个嬷嬷吧。我必须好好吐槽一下他们罄竹难书的滔天罪行,呵呵。。。呵呵呵。。。。。。 先说做产品吧,那必须geek!看看Qortex的神一样的编辑器你就知道。最初的版本只支持makdown(当然还支持纯文本!),你叫我一个弱女子怎么用!!!后来我讲道理,摆事实,据理力争,才教会了这群奇葩怎样...阅读全文

freetype-go学习

freetype-go的源码在这里https://code.google.com/p/freetype-go/ 它的作用是生成带文字的png图片 首先解决的几个概念: 什么是FreeType? FreeType是一个可移植的,高效的字体引擎。 字体在电脑上的显示有两种方式:点阵和矢量。对于一个字,点阵字体保存的是每个点的渲染信息。这个方式的劣势在于保存的数据量非常大,并且对放大缩小等操作支持不好。因此出现了矢量字体。对于一个字,矢量字体保存的是字的绘制公式。这个绘制公式包括了字体轮廓(outline)和字体精调(hint)。字体轮廓使用贝塞尔曲线来绘制出字的外部线条。在大分辨率的情况下就需要对字体进行精调了。这个绘制字的公式就叫做字体数据(glyph)。在字体文件中,每个字对应一个glyph...阅读全文

博文 2014-10-20 23:12:53 yjf512

如何做好自适应网站

想要自己动手做一个好网站,首先你要了解网站建设的步骤、流程、所需的要素。做网站不是说一朝一夕就能马上完成的,一个好网站是要通过不停的测试与修改才能算做好一个网站。而不是把一个网站做出来就完事了,还要通过各方面的测试与体验才能更好的完善出一个完美的网站。网站建设的过程是枯燥乏味的,做网站也考验耐心。做为资深网站测评者的小编,今天给大家说说怎么来断定一个网站的好与坏呢? 一、 网站的响应速度 一个网站最重要是浏览用户的体验,如果网站的响应速度慢,就会导致用户在体验时的兴趣大大减少。 二、 网站内容的丰富性 网站内容要多样式,不能太过单一,就算是企业型展示网站也不能光是做一些行业的宣传。要多做点关于行业内的新闻,这样整个网站才会感觉有内容。 三、 网站的快...阅读全文