加载中…
博文
前后端开发时,要遵守共同的参数规则。如何让这个规则对双方都是稳定的,而且可以自动测试的?
前、后端开发的进度不同,如何让他们人员松耦合,在联调时不必等待另外一方?

写了个工具,来完成这样的需求:
1. 自动生成接口文档
2. 自动生成给前端调用的mock service/mock data
3. 自动生成后端自动集成测试的脚本

https://github.com/funkygao/automan
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2014-02-18 23:01)
分类: golang
每秒可以创建多少个空的goroutine?
写个简单的benchmark测试,结果如下:

BenchmarkGoroutine 1000000     21795 ns/op

每次go调用,用时22us,也就是每秒4万多

硬件:27-inch, Mid 2010 双核 3.2GHz Intel Core i3
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2014-02-14 22:14)
分类: golang
在memcache的中间层实现上,利用了memcache的flags,来处理压缩数据和序列化
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2014-02-10 21:51)
分类: golang
利用春节7天长假,写了个一直没时间写的一个SOA中间层基础框架:
https://github.com/funkygao/fae

把后端服务(memcache/mongodb等)都封到中间层,python/php等通过中间层的接口实现后端的访问,使用
了facebook thrift

不过,facebook thrift的坑很多,bug也不少,春节后几天都在填坑。。。

今天,把公司里的memcache服务,都替换成了这个中间层访问,上午在QA机器上跑,出现了一些问题,稍作调整,面前运行良好。
下一步,准备把mongodb的访问都替换过来,不过这部分要比memcache难度大一些,主要是需要兼容现有php代码,估计得一周时间能够上线
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: golang
最近调试一个高并发的代码,运行几个小时后,出现
panic: runtime error: invalid memory address or nil pointer dereference

到对应的代码处,也看不出问题

后来,发现golang本身就支持race detector,能自动帮你发现哪里有问题
go build -race 

加上这个参数后,就可以让golang自动帮你找出问题了,当运行时,自动发现race condition
下面是它给我的代码的提示
==================
WARNING: DATA RACE
Read by goroutine 13:
  runtime.mapaccess2_faststr()
      /usr/local/go/src/pkg/runtime/hashmap_fast.c:129 +0x0
  github.com/funkygao/go-simplejson.(*Json).Get()
      /mnt/funplus/gocode/src/github.com/funkygao/go-simplejson/simplejson.go:58 +0x73
  github.com/funkygao/go-simplejson.(*Json).DeepGet()
      /mnt/funplus/gocode/src/github
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-12-30 21:35)
分类: 运维OPS

Linux provides cpusets, which allow CPUs to be grouped and processes assigned to them. This can improve performance similarly to process binding, but performance can be improved further by making the cpuset exclusive—preventing other processes from using it. The trade-off is a reduction in available CPU for the rest of the system.

The following commented example creates an exclusive set:

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-12-24 16:07)
strace时,有时候出现类似:
mmap(NULL, 528384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b23770c1000

这样的匿名映射,这代表什么意思?
它代表分配一块内存,与malloc/brk是一样的,当申请的内存区大于128kb时,就会调用mmap,好处是系统自动把内存清0,而不必memset初始化
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-12-15 15:26)
分类: 架构


阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
分类: 架构
loopback是完整的tcp实现,与网卡的不同仅仅在于mtu

unix domain socket需要更少的cs,数据拷贝,tcp的header、syn/ack/fin、checksum等开销,更快



阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-12-14 19:28)
分类: 架构
The purpose of TCP handshake is to ensure that the other endpoint exists and is willing to establish a connection, and that the request is genuine (i.e., not a delayed duplicate, or a replay attack).

During this handshake, the two endpoints establish the starting sequence numbers for data transfers in each direction, set connection parameters (e.g., MSS), and negotiate desired options (e.g., timestamps, SACK, or the window scale option for high bandwidth-delay product networks).
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
个人资料
funkygao
funkygao
  • 博客等级:
  • 博客积分:0
  • 博客访问:78,433
  • 关注人气:30
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
搜博主文章
相册专辑
加载中…
访客
加载中…
评论
加载中…
留言
加载中…
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有