2017-09-16 Go go 域名解析过慢 这几天发现一个问题,用go的HttpClient向某个URL发送post请求超时,经过一番排查,发现主要是在DNS解析的时候很慢要5S左右。但是同样的环境用Python和Java发送请求可以很快的返回结果,<1S。 首先看/etc/resolv.conf文件,默认配置了两个nameserver。strace执行过程发现在请求nameserver时有timeout,并... 阅读全文…
2017-09-16 Go go upgrade on fly 作为一个服务端程序在修改配置时最好能够支持优雅的重启,这样避免给用户带来糟糕的体验。即使不能优雅重启,那么在停止服务做配置修改时,也要做到优雅的停止,而不是粗暴的kill掉进程,这种粗暴的做法会lost正在处理的请求,对用户也是不友好的。 目标: 不掐断当前处理中的连接 不中断socket的监听 新版本的程序能够接替老版本的程序 要做的事情: 启动新的进程并监听到对应的address 老进... 阅读全文…
2017-09-03 此刻我在想什么 只不过是一场生活 九月,伴随着凉爽的秋风一同扑面而来的是一堆婚礼请柬。或许真的是到了年龄了,忽然之间身边的亲戚朋友都要结婚了。 生活真是让人捉摸不透,记忆里已经有些模糊的那些年那些事真要回味起来还是蛮下酒的。谁也没曾想到亲密会戛然而止,然后便相忘于江湖;谁也没有料到会说散就散,随后便听到了婚讯。听到B哥的这首歌的时候,往事忽然涌上心头,然而转过头青春早已散场,剩下我们站在那里泪流满面。 婚姻到底是一场生活,一... 阅读全文…
2017-08-29 Go Go使用感受 使用Go有一段时间了,说一下感受。 语法方面 语法比较简洁,有点像Python,这一点比Java要好。 多返回值。这一点使得go语言程序不需要像用单返回值语言写的程序那样将多个返回值封装到一个对象里,一定程度上减少了代码量。 函数是一级公民,可以将函数作为参数来传递。 语言级别支持并发,减少程序员心智负担。 比较完善的工具包,比如net/http,用简单的几行代码便可以实现一个ht... 阅读全文…
2017-08-18 Go go语言HttpClient中的https证书 关于HTTPS中SSL/TLS具体原理就不具体说了,可以看一下阮一峰老师的文章 这里我们主要说一下HTTPS中的证书,HTTPS开始的握手阶段是基于非对称加密,也就是公钥加密的数据要用私钥才能解开,同理用私钥加密的数据用公钥才能解开。 然而有一肚子坏水的家伙可以进行中间人劫持然后用自己的公钥来替换要访问的服务器的公钥,这样本来要发给服务器的数据发给了中间人,信息就被他们给窃取走了,... 阅读全文…
2017-08-13 search 搜索引擎系列(三)---用户行为分析 搜索引擎主要是帮助用户找到想要的信息或者服务,所以这里面涉及到三件事情,理解用户搜索意图,理解资源,匹配用户意图和资源。在一开始的时候搜索引擎主要通过对文本的统计分析,如TF-IDF,BM25等,来满足二者之间的匹配。后来发现除了文本统计之外还可以通过对页面质量的分析,外链的分析,如PageRank,来提升对资源的理解改善搜索效果。再到后来发现通过分析用户在搜索时的行为可以更好的了解用户意图... 阅读全文…
2017-07-29 search 搜索引擎系列(二)---相关搜索 什么是相关搜索在使用搜索引擎的时候,输入一个关键词之后经常在页面底部或者右侧会出现相关搜索提示。例如搜索”万达”会提示“万达广场”,“万达影院”等。相关搜索的作用是帮助用户更加快速的找到想要的东西,提升用户体验。当你通过一个关键词找不到想要的结果时相关搜索会帮到你,它会推荐你换一个关键词试试,所以它更像是搜索引擎中的一个推荐系统。搜索与推荐是不分家的,在搜索引擎中相关搜索的点击量还是很可观的... 阅读全文…
2017-07-09 此刻我在想什么 7月盛夏 转眼已到7月盛夏的季节,2017已经过了一半。前几天跟同事说,到了这个年龄,最让人感到恐惧的就是时间的飞逝。 所谓一年之计在于春,今年春天的时候回顾自己过去一年的工作与成长,感觉略有失望,跟leader沟通过后,在春末夏初的时候工作上做了新的调整。希望在下一个风口到来时自己不掉队并且能够做些事情。 比较幸运的是,在过去的一年多做过两个新项目,并且自己是其中一个项目的owner。虽然项目都不算... 阅读全文…
2017-06-11 Go Go多个pkg的单元测试覆盖率 在go test命令后面添加 -cover参数开启测试覆盖率统计,其结果如下:ok models 0.012s coverage: 71.4% of statements in models-coverpkg 标记来指定要被统计的代码包之后,未被指定的代码则肯定不会被统计,即使是被直接测试的那个代码包。go test -coverpkg=./... pkg2可以跑pkg2下的所... 阅读全文…
2017-06-11 bash ssh远程执行nohup命令不退出 现象在本机执行ssh target "nohup sh test.sh &",ssh并没有立即结束退出,而是等着test.sh执行完才退出,如果提前断开ssh则执行失败。使用nohup和&是想让test.sh在后台执行,并忽略SIGHUP信号,即使执行命令的console退出了,执行命令的进程也可以继续执行。而ssh远程执行nohup的命令不立即退出跟no... 阅读全文…