
Go语言
文章平均质量分 66
碎炎
用学核心编程当学操作系统的孩子。。。
展开
-
Go语言学习记录:Go语言环境搭建
安排学习Go语言,那就在这里做下笔记。首先下载Go语言的安装包,地址为http://code.google.com/p/go/downloads/detail?name=go1.2.windows-386.msi&can=2&q=然后选择IDE,选择了国人开发的LiteIDE,地址为http://code.google.com/p/golangide/downloads/detail?na原创 2013-12-10 15:11:00 · 1479 阅读 · 0 评论 -
Golang中的覆盖率测试
Golang中的覆盖率测试golang中提供了不少工具链,可以使用它们方便的进行单元测试、分析性能瓶颈,提供运行时信息等,总而言之是非常有用的。go test这个工具大家用的应该比较多,之前我使用也大多是用来做单元测试的,go中做单元测试非常的方便,然而我忽视了覆盖率测试。单元测试覆盖了多少代码呢?golang的go test工具其实还支持显示覆盖率,最简单的用法就是执行go test -c -co原创 2016-09-02 15:50:07 · 6536 阅读 · 0 评论 -
将Go函数导入Lua中供lua调用
有一个需求,就是使用go语言来实现一些基本模块,使用lua来实现基本逻辑,于是就有了在lua中调用go函数的需求。go的资料非常少,好在go可以嵌入c语言,使得这个实现变得有可行性。最终使用了lua中的full userdata来实现这个东西。将go中的函数全部封装成userdata,供lua调用。这样是可行的,由于userdata可以设置metatable,metatable内可以设置一原创 2014-12-03 16:59:22 · 6739 阅读 · 0 评论 -
将Go函数导入Lua中供lua调用
有一个需求,就是使用go语言来实现一些基本模块,使用lua来实现基本逻辑,于是就有了在lua中调用go函数的需求。go的资料非常少,好在go可以嵌入c语言,使得这个实现变得有可行性。最终使用了lua中的full userdata来实现这个东西。将go中的函数全部封装成userdata,供lua调用。这样是可行的,由于userdata可以设置metatable,metatable内可以设置一个原方法_原创 2016-08-19 15:22:25 · 2881 阅读 · 2 评论 -
golang 模板(template)的常用基本语法
golang 模板(template)的常用基本语法模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。这篇文章不讨论golang后端的模板读取及渲染方法,只讨论模板中嵌入变量,渲染变量、循环等一些基本用法。变量在golang渲染template的时候,可以接受一个interface{原创 2016-08-29 16:01:47 · 64007 阅读 · 0 评论 -
NSQ的golang客户端简单使用
NSQ的golang客户端简单使用NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。获取客户端nsq的golang客户端是官方版本的go get github.com/nsqio/go-nsq即可简单的消费者和生产者使用该客户端有原始的command函数用于一些基础操作,也有consumer和producer的封装,我这里是原创 2016-08-29 11:19:52 · 8641 阅读 · 0 评论 -
golang x/net/context包笔记
golang x/net/context包笔记基本是 https://blog.golang.org/context 的笔记,能翻墙的话,还是建议大家看看简介以前一直见到这个包,感觉很神秘,而context的意思让人觉得不知道它到底是干什么的。context包主要用于request请求。request请求中,我们可能需要开启不同的routine来获取数据,比如从database获取数据。所以我们可能原创 2016-07-20 15:49:28 · 5815 阅读 · 0 评论 -
用Go写一个简单的TCP server or client 模型
对Conn封装的基本思路go内置了net包已经很好的封装了socket通讯。然而在实际使用中,由于net/Conn的Read/Write方法是堵塞的原因,必须将其放入单独的goroutine中进行处理。我们先简单的整理下思路,对于连接(Conn)的处理,我们可以开启2条goroutine进行处理,一条用于堵塞的Read的处理,另一条进行Write的处理。这里必须指出,其实Write本身就是线程安全的原创 2016-07-14 16:52:35 · 10078 阅读 · 0 评论 -
golang的sql.DB的一些注意事项及读写锁的总结
最近在写一个用于存储protobuf配置的配置管理服务,业务逻辑不难,2天就搞定,但是后续bug不少,也踩了很多坑,在这里记录下。首先,一直以为golang内的sql模块是单链接的,所以一开始在每个goroutine内都open了一个DB,并写了一个连接池进行管理。后续发现是多此一举,白白写了好多代码。golang的sql模块自带连接池功能,在执行sql语句的时候才会分配连接,执行完毕原创 2016-07-14 16:42:38 · 7616 阅读 · 0 评论 -
让golang的cron库支持带事件参数的回调
一直在寻觅c/c++下的cron库,可惜一直没找到。目前对我来说,cron可以做定时的某活动,比如晚上八点怎么怎么的,golang下有大神提供的cron库,那么这部分的实现还是放到go实现的服务器下面吧,然后再通知别的服务器,只能绕路子了。go下的cron库使用的是 github.com/robfig/cron,最终使用的是 github.com/jakecoffman/cron,后者原创 2015-12-01 14:46:32 · 6026 阅读 · 0 评论 -
在Go语言里检测内存泄漏
转载于:在Go语言里检测内存泄漏 | DLCoder.com http://dlcoder.com/archives/5648在影响软件系统稳定性的因素里,我们最担心的一个问题是内存泄漏,随着系统的运行,系统消耗的内存越来越多,直到最后整个操作系统越来越慢,甚至还会导致系统崩溃。在Go语言里,我们检测内存泄漏主要依靠的是go里面的pprof包,除此之外,我们还可以使用浏览器来查转载 2015-07-18 11:19:50 · 9006 阅读 · 0 评论 -
golang: 常用数据类型底层结构分析
转自 http://www.cnblogs.com/moodlxs/p/4133121.html虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解go转载 2015-06-16 10:15:45 · 2931 阅读 · 0 评论 -
使用redis写一个简单的分布式锁
对于一个进程来说,内部的资源锁有很多的实现方式,也都很高效,对于同一个机器的不同进程做同步的话,也有很多的方式去实现,对于不同机器上部署的程序来说,假如要进行同步,则比较麻烦。最简单的方式可能就是使用redis了,redis的实现是所有的操作放入单线程中处理的,所以对于并发的请求,都有先后顺序,那么对于实现分布式锁来说有着得天独到的优势。其实所谓的分布式锁,就是在某个共享节点上做一个资源的标记,当标原创 2016-09-22 15:56:27 · 1378 阅读 · 0 评论