有人在用go-micro吗

回复

技术讨论stirlingx 发起了问题 • 1 人关注 • 0 个回复 • 4 次浏览 • 5 分钟前 • 来自相关话题

GoCN每日新闻(2017-05-23)

文章分享dcb9 回复了问题 • 3 人关注 • 1 个回复 • 102 次浏览 • 6 分钟前 • 来自相关话题

用windows开发,没有人用JetBrains goland吗?

有问必答stirlingx 回复了问题 • 2 人关注 • 1 个回复 • 21 次浏览 • 1 小时前 • 来自相关话题

Godep包管理第三方依赖包的问题

有问必答stirlingx 回复了问题 • 5 人关注 • 3 个回复 • 538 次浏览 • 4 小时前 • 来自相关话题

beego orm目前貌似没有软删除,谁已经造了轮子呢?

有问必答small145900 回复了问题 • 3 人关注 • 2 个回复 • 107 次浏览 • 7 小时前 • 来自相关话题

10亿的md5值,现在来一新的32位的字符串,如何判断该值是否已经存在10亿里,越快越好

有问必答lifei6671 回复了问题 • 11 人关注 • 7 个回复 • 891 次浏览 • 8 小时前 • 来自相关话题

百度外卖SRE团队招聘Golang开发工程师15K-30K

招聘应聘ajian 发表了文章 • 2 个评论 • 339 次浏览 • 23 小时前 • 来自相关话题

介绍: 百度外卖SRE团队,是运维部主要负责运维研发相关的团队. 我们所有的服务和平台都使用的Golang进行的开发. 所以在这里你可以想用golang负责哪个方向都是可以的,既可以做业务需求相关的,也可以做数据处理和计算相关的.直接对接各种资源操作,是... 查看全部

介绍:
百度外卖SRE团队,是运维部主要负责运维研发相关的团队. 我们所有的服务和平台都使用的Golang进行的开发. 所以在这里你可以想用golang负责哪个方向都是可以的,既可以做业务需求相关的,也可以做数据处理和计算相关的.直接对接各种资源操作,是历练成架构师的有效途径.


招聘要求:



  1. 3年以上的开发经验(并不限纯golang开发)

  2. 本科学历及以上


优先:



  1. 有DEVOPS经验者优先;

  2. 有多年运维经验者优先;

  3. 会Golang语言者优先;

  4. 有大型项目负责人经验者优先;


如有兴趣


vscode问题

回复

有问必答loplop 发起了问题 • 1 人关注 • 0 个回复 • 49 次浏览 • 1 天前 • 来自相关话题

redis 使用GETRANGE 来获取一组bitmap状态

技术讨论luw2007 发表了文章 • 2 个评论 • 37 次浏览 • 1 天前 • 来自相关话题

在使用redis 的 bitmap 来存储业务状态。经常需要顺序获取一个范围内bitmap。 业务代码里,一般会使用pipeline来优化查询逻辑。伪代码如下

查看全部
					

在使用redis 的 bitmap 来存储业务状态。经常需要顺序获取一个范围内bitmap。
业务代码里,一般会使用pipeline来优化查询逻辑。伪代码如下


def get_bits_pipe(pipe, key, cur, num=10):
""" 使用pipeline gitbit"""
for i in xrange(num + 1):
pipe.getbit(key, cur + i)
return [cur + i for i, v in enumerate(pipe.execute()) if v]

这里减少了和redis的数据交换。提高了查询性能,但是随着查询数量的增加,性能急剧下降。


其实 redis 有更高效的方式来获取顺序的bitmap。就是通过 getrange来获取bitmap所在的字符串,然后计算出每位的值。需要注意:由于redis 的 bit 并非按照自然二进制位增加,
比如:'\x01' 对应的ascii 为1。其二进制表示'1', 在redis中表示offset为 7。感兴趣可以看看redis的实现逻辑。


以下提供golang 和python版本的样例。
实现代码: https://gist.github.com/luw2007/692d4a615dd71aa2bfa42190ad6a12e3


var nums = [8]uint8{1, 2, 4, 8, 16, 32, 64, 128}

// BitRange 计算下标表
// str: 计算的字符串
// start: 开始的座标
// offset: 偏移值
// size: 查询个数
func BitRange(str []byte, start int, offset int, size int) []int {
bits := []int{}
k := 0
for i, b := range str {
for j, num := range nums {
if b&num != num {
continue
}
k = int(i*8 + 7 - j)
if offset <= k && k < offset+size {
bits = append(bits, start*8+k)
}

}
}
return bits
}

// GetBitRange 按位查询 返回bit位为1的下标
// client: redis的client
// key: redis 存储的key
// cur: 开始位置
// size: 查询个数
func (p *Pool) BitRange(key string, cur int, size int) ([]int, error) {
start := cur / 8
// end必须按8取整
end := (cur+size+7)/8
str, err := r.Bytes(p.ExecuteCMD("GETRANGE", key, start, end))
if err != nil {
return nil, err
}
bits := BitRange(str, start, cur%8, size)
return bits, nil
}

用gokit写服务实在太繁琐了,要不停的对方法进行封装,一层层的像个裹脚布,大家有什么好的是使用实践吗?

有问必答トトロ 回复了问题 • 8 人关注 • 5 个回复 • 384 次浏览 • 1 天前 • 来自相关话题

宕机,找不到原因,请各位指点下解题思路

回复

有问必答xw_heng 发起了问题 • 1 人关注 • 0 个回复 • 99 次浏览 • 1 天前 • 来自相关话题

GoCN每日新闻(2017-05-22)

回复

文章分享astaxie 发起了问题 • 1 人关注 • 0 个回复 • 211 次浏览 • 1 天前 • 来自相关话题

golang 白痴求各位大神指点迷津

技术讨论haohongfan 回复了问题 • 6 人关注 • 6 个回复 • 427 次浏览 • 1 天前 • 来自相关话题

regexp MatchString 的注意点

文章分享tanxiaolong 回复了问题 • 5 人关注 • 4 个回复 • 430 次浏览 • 1 天前 • 来自相关话题

Kubernetes指南(中文版)

文章分享lei 发表了文章 • 0 个评论 • 62 次浏览 • 1 天前 • 来自相关话题