for .. range中的坑】的更多相关文章

最近在开发中使用了for range来遍历一个slice,结果在测试的时候遇到了bug,最后定位是错误使用for range造成的,这里记录一下: func redisSlaveScanBigKeys(slaveClient *redis.Client, bigKeyChan chan *bigKeyInstance, wg *sync.WaitGroup) { var cursor uint64 = 0 for { page, cursor_new, error := slaveClient.…
Golang中的坑二 for ...range 最近两周用Golang做项目,编写web服务,两周时间写了大概五千行代码(业务代码加单元测试用例代码).用Go的感觉很爽,编码效率高,运行效率也不错,用了beego,avro,xorm,反射.今天和前端联调遇到了一个bug,发现踩到了第二个坑.踩坑不怕,踩过一次就不会再犯了,这就是实践的好处. 坑是这样的:数据采用avro描述,用xorm存取到mysql:对于有嵌套的数据结构,avro生成的go结构体以指针切片的形式声明,xorm Find方法采用…
package main; import ( "fmt" "time" "sync" ) //修改slice的坑 func add(s []int) { //当s通过append添加元素时,这里会发生内存重新分配 //s会指向新的地址 s = append(s, 3); } //当需要对slice进行修改时,建议通过函数返回值把该slice返回 func add2(s []int) []int { s = append(s, 3); return…
决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom sklearn import treefrom sklearn import preprocessingfrom sklearn.externals.six import StringIO allElectronicsData = open(r"D:\workspace\python\files\A…
Golang 中的坑 短变量声明  Short variable declarations 考虑如下代码: package main import ( "errors" "fmt" ) type MyObject struct { Id string Name string } func GetObjects() (objs []MyObject, err error) { return nil, errors.New("get failed")…
一.Mycat和Sharding-jdbc的区别 1)mycat是一个中间件的第三方应用,sharding-jdbc是一个jar包 2)使用mycat时不需要改代码,而使用sharding-jdbc时需要修改代码 Mycat(proxy中间件层): Sharding-jdbc(TDDL为代表的应用层): 二.Mycat分片join 在前面的文章Mysql系列四:数据库分库分表基础理论中,已经说过分库分表需要应对的技术难题有如下几个: 1.)分布式全局唯一id 2.)分片规则和策略 3.)跨分片技…
本文主页链接:Windows API中的坑 ExpandEnvironmentStrings 风险: 进程会继承其父进程的环境变量.在展开如%APPDATA%等文件夹时,有可能父进程对此环境变量进行过改动.那么可能你获取的就不是你想要的当前SESSION的%APPDATA%了. 建议: 使用SHGetFolderPath系列函数来做这件事. GetModuleFileName 风险: 在DLL中调用时.若传入的instance參数为NULL,那获取的将是载入DLL的进程的EXE的路径.若须要获取…
在vue中,由于是单页面SPA,所以需要使用锚点来定位,在vue的官方文档中提到过也可以不使用锚点的情况,就是在vue-router中使用history模式,这样,在url中就不会出现丑陋的#了,但是这样的缺点在于不能再页面中再使用自己设定的锚点(利用href.name或id)并且需要后台的支持,所以一般我们使用带#的形式就可以了. 而在这之中一种比较特殊的情况在于,如果查询字符串和vue中的锚点同时出现,那么他们的位置关系是怎样的问题, 通过测试可以发现,vue自身的锚点在查询字符串之前或者在…
0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string(s) local encoded = torch.LongTensor(#s) , #s do local token = s:sub(i, i) local idx = self.token_to_idx[token] assert(idx ~= nil, 'Got invalid idx') e…
0.踩坑背景 执行Torch-RNN的时候,在LanguageModel.lua中的encode_string函数中,对start_text的各个character进行id映射编码,实现功能类似“北京天安门”-->“5 10 88 32 111”,方便后面的计算. 这个函数会利用一个全局的类似HashMap的table,hashmap中的key是character(char),value是id(int),涉及到一个从hashmap中按照key取值的操作,代码如下: local idx = sel…