package main import ( "encoding/json" "log" "regexp" "testing" "github.com/Pallinder/go-randomdata" ) func TestMain(t *testing.T) { main() } func estCountTag(t *testing.T) { var a = `男人 女人 儿童 老人 母亲 父亲 爷爷 奶奶 老师 美女 帅哥 性格 善良 性格 品质 聪明 女儿 儿子 军人 坏蛋 心情 笑 哭 高兴 害怕 愤怒 激动 紧张 忧虑 着急 满足 眼睛 鼻子 嘴巴 头发 耳朵 牙齿 美 丑 眉毛 脸 手 脚 腰 腿 胖 瘦 矮 高 清明节 劳动节 端午节 七夕节 中秋节 重阳节 元宵节 服饰 鼠 牛 虎 兔 龙 蛇 马 羊 猴 狗 猪 鸡 颜色 聚会 时间短 时间 爱情 脚步声 水声 花 教堂 速度快 速度慢 桃花 幼苗 紫色 白色 黑色 红色 女性身材 男性身材 沙沙尘尘 猪甘蠢 猪 无脑 大唔透 玩世不恭 眼大无神 大细超 白鸽眼 咸湿 浪漫 靓仔 靓 女 猛男 咸猪手 西施 好色 色狼 色魔 畜牲 食碗面反碗底 抵死 恶死 曾眉凸眼 眉耒眼去 温柔体贴假细心 放荡 淫贱 荒唐 离谱 头尖额窄无厘贵格 肚满肠肥 两面三刀 反革命 红卫兵 ` tags := regexp.MustCompile("[^ \n\t]+").FindAllString(a, -1) for { var stags []string for i := 0; i < randomdata.Number(1, 5); i++ { tag := randomdata.StringSample(tags...) stags = append(stags, tag) } data, _ := json.Marshal(stags) sql := "update streamer set tags = ?, operator = 20 where operator != 20 limit 1" _, err := StoreStreamer.Exec(sql, data) if err != nil { log.Println(err) break } } } func estDupTag(t *testing.T) { querysql := "select uid, tags from streamer where tags is not null" rows, err := StoreStreamer.Query(querysql) if err != nil { panic(err) } for rows.Next() { var uid int64 var tagsbuf []byte var tags []string rows.Scan(&uid, &tagsbuf) json.Unmarshal(tagsbuf, &tags) if len(tags) > 0 { var newtags []string m := make(map[string]int) for _, t := range tags { if _, ok := m[t]; !ok { newtags = append(newtags, t) m[t] = 1 } else { m[t]++ } } if len(newtags) != len(tags) { t.Error(uid, tags) newtagsbuf, err := json.Marshal(newtags) if err == nil { StoreStreamer.Exec("update streamer set tags = ? where uid = ?", newtagsbuf, uid) } else { panic(err) } } } } }