| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508 |
- package model
- import (
- "archive/zip"
- "bytes"
- "compress/gzip"
- "context"
- "database/sql"
- "fmt"
- "github.com/go-redis/redis"
- "github.com/go-sql-driver/mysql"
- "github.com/pkg/profile"
- "io"
- "io/ioutil"
- "log"
- "math"
- "math/rand"
- "os"
- "path/filepath"
- "rocommon"
- "rocommon/service"
- mysql2 "rocommon/socket/mysql"
- "rocommon/util"
- "roserver/baseserver"
- "roserver/baseserver/aoi"
- "roserver/baseserver/model"
- "roserver/baseserver/set"
- "roserver/baseserver/shm"
- "roserver/serverproto"
- "sort"
- "strconv"
- "strings"
- "testing"
- "time"
- "unsafe"
- )
- func getScoreTimeByArenaScore(score uint64) (uint32, uint64) {
- nowTime := util.GetTimeMilliseconds()
- tmpScore := uint64(score)
- tmpScore ^= (tmpScore >> 36) << 36
- outTime := 0xfffffffff - tmpScore
- if outTime*50 > nowTime {
- outScore1 := uint64(score) >> 48
- tmpScore1 := score
- tmpScore1 ^= ((uint64(score) >> 48) << 48)
- outTime1 := 0xfffffffffff - tmpScore1
- var scoreStr = outScore1
- if scoreStr >= (1 << 28) {
- scoreStr = (1 << 28) - 1
- }
- scoreStr <<= 36
- scoreStr |= 0xfffffffff - outTime1/50
- return uint32(outScore1), scoreStr
- }
- return uint32(tmpScore >> 36), score
- }
- type SDKQuickLoginAuthCheckReq struct {
- Token string
- Product_code string
- Uid string //从客户端接口获取到的渠道原始uid,无需任何加工如拼接渠道ID等(openid)
- }
- const (
- _ = iota
- KB float64 = 1 << (10 * iota)
- MB
- GB
- TB
- PB
- EB
- ZB
- YB
- )
- func aTestKB(b float64) string {
- switch {
- case b >= YB:
- return fmt.Sprintf("%.2fYB", b/YB)
- case b >= ZB:
- return fmt.Sprintf("%.2fZB", b/ZB)
- case b >= EB:
- return fmt.Sprintf("%.2fEB", b/EB)
- case b >= PB:
- return fmt.Sprintf("%.2fPB", b/PB)
- case b >= TB:
- return fmt.Sprintf("%.2fTB", b/TB)
- case b >= GB:
- return fmt.Sprintf("%.2fGB", b/GB)
- case b >= MB:
- return fmt.Sprintf("%.2fMB", b/MB)
- case b >= KB:
- return fmt.Sprintf("%.2fKB", b/KB)
- }
- return fmt.Sprintf("%.2fB", b)
- }
- func twTest() {
- prof := profile.Start(profile.CPUProfile, profile.ProfilePath("./pprof/test.pprof"), profile.NoShutdownHook)
- tw := util.NewTimeWheel(20, 32)
- for idx := 1; idx < 100; idx++ {
- taskInfo := &util.TWTask{}
- taskInfo.Key = idx
- taskInfo.Delay = 20
- taskInfo.Data = idx
- taskInfo.Callback = func(data interface{}) {
- //log.SetFlags(log.Lmicroseconds)
- //log.Printf("callback data=%v", data)
- }
- tw.AddTask(taskInfo)
- }
- var taskList = map[interface{}]*util.TWTask{}
- for idx := 1; idx <= 5000; idx++ {
- taskInfo := &util.TWTask{}
- taskInfo.Key = idx
- taskInfo.Delay = 100 + uint64(idx)
- taskInfo.Data = idx
- taskInfo.Callback = func(data interface{}) {
- //log.SetFlags(log.Lmicroseconds)
- //log.Printf("callback data=%v", data)
- }
- taskList[taskInfo.Key] = taskInfo
- }
- var tt uint64 = 0
- var tt1 uint64 = 0
- for k := 0; k < 9999; k++ {
- t1 := time.Now()
- nowTime := uint64(t1.UnixNano() / 1e6)
- tw.Update(tt)
- t2 := time.Now()
- nowTime2 := uint64(t2.UnixNano() / 1e6)
- tt1 += nowTime2 - nowTime
- tt += 20
- }
- var tt2 uint64 = 0
- tt = 0
- for k := 0; k < 9999; k++ {
- t1 := time.Now()
- nowTime := uint64(t1.UnixNano() / 1e6)
- for _, val := range taskList {
- if tt >= 0 {
- val.Callback(val.Data)
- }
- }
- t2 := time.Now()
- nowTime2 := uint64(t2.UnixNano() / 1e6)
- tt2 += nowTime2 - nowTime
- tt += 20
- }
- //var tt1 uint64 = 0
- //go func() {
- // delayTimer := time.NewTimer(10 * time.Millisecond)
- // for {
- // delayTimer.Reset(10 * time.Millisecond)
- // select {
- // case <-delayTimer.C:
- // t1 := time.Now()
- // nowTime := uint64(t1.UnixNano() / 1e6)
- // tw.Update(nowTime)
- // t2 := time.Now()
- // nowTime2 := uint64(t2.UnixNano() / 1e6)
- // tt1 += nowTime2 - nowTime
- // }
- // }
- //}()
- //
- //var tt2 uint64 = 0
- //go func() {
- // oldMs := util.GetTimeMilliseconds()
- // delayTimer := time.NewTimer(10 * time.Millisecond)
- // for {
- // delayTimer.Reset(10 * time.Millisecond)
- // select {
- // case <-delayTimer.C:
- // t1 := time.Now()
- // nowTime := uint64(t1.UnixNano() / 1e6)
- // if nowTime-oldMs >= 20 {
- // for _, val := range taskList {
- // if nowTime-oldMs > 20 {
- // val.Callback(val.Data)
- // }
- // }
- // oldMs = nowTime
- // t2 := time.Now()
- // nowTime2 := uint64(t2.UnixNano() / 1e6)
- // tt2 += nowTime2 - nowTime
- // }
- // }
- // }
- //}()
- //delayTimer := time.NewTimer(120 * time.Second)
- //<-delayTimer.C
- //ch := make(chan os.Signal, 1)
- //signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGKILL)
- //<-ch
- log.Printf("tt1=%v tt2=%v", tt1, tt2)
- prof.Stop()
- }
- func cleardb() {
- //db
- service.ServerCmd.Parse(os.Args[1:])
- redisCli := redis.NewClient(&redis.Options{
- Addr: "192.168.10.158:6379",
- DB: *service.DBIndexParam,
- })
- redisCli.FlushDB()
- //etcd
- dis, _ := service.NewNetServiceDiscovery("192.168.10.158:2379")
- disKey := "server/" + *service.ZoneParam
- dis.EtcdCli.Delete(context.TODO(), disKey)
- }
- func zipziptest1() {
- //br := &serverproto.BattleRecord{
- // Result: true,
- // MapId: 1,
- // LevelId: 10,
- // Mode: 11,
- // SubMode: 1,
- // Seed: 1000,
- //}
- //la1 := &serverproto.BattleActorData{}
- //la1.BaseData = &serverproto.ActorBaseData{
- // BaseId: 300102,
- // Id: 1,
- // IsBoss: false,
- // IsFellow: false,
- // IsHero: true,
- // IsMainRole: true,
- // IsNpc: false,
- // Level: 14,
- // StrengthLevel : 7,
- //}
- //la1.AttrData = &serverproto.ActorAtrrData{
- // //AdditionalAttrs: []float32{ 0, 0, 0, 0, 0, 0, 430, 0, 8, 0, 4, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- // //AttrPercents: []float32{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- //}
- //for idx := 0;idx < 25;idx++ {
- // la1.AttrData.ExtendAttrs = append(la1.AttrData.ExtendAttrs, &serverproto.KeyValueType{Key:int32(idx), Value:0})
- //}
- //la1.Skills = append(la1.Skills,
- // &serverproto.ActorSkillData{SkillId:10015, SkillLevel:5},
- // &serverproto.ActorSkillData{SkillId:13018, SkillLevel:12},
- // &serverproto.ActorSkillData{SkillId:13003, SkillLevel:1},
- // &serverproto.ActorSkillData{SkillId:13003, SkillLevel:1})
- //la1.FashionData = &serverproto.ActorFashionData{
- // //HairColor: []float32{ 255, 255, 255, 255 },
- // //HairUvOffset: []float32{ 0, 0 },
- //}
- //for idx := 0;idx < 9;idx++ {
- // la1.FashionData.Parts = append(la1.FashionData.Parts, &serverproto.ActorFashionPartData{
- // Part: int32(idx),
- // ModelPrefab: "Hero_Cloth/Cloth_Archer_300102",
- // LinkPoint: "Bip001 Spine1",
- // //Pos: &serverproto.Position{X:0,Y:0,Z:0},
- // //Rot: &serverproto.Position{X:0,Y:0,Z:0},
- // //ModelRot: &serverproto.Position{X:0,Y:0,Z:0},
- // })
- //}
- //br.LeftActors = append(br.LeftActors, la1)
- //br.LeftActors = append(br.LeftActors, la1)
- //
- //ra1 := &serverproto.BattleActorData{}
- //br.RightActors = append(br.RightActors, ra1)
- //br.RightActors = append(br.RightActors, ra1)
- //br.RightActors = append(br.RightActors, ra1)
- //
- //for idx := 0;idx < 110;idx++ {
- // brp := &serverproto.BattleRecordParam{
- // State: 2,
- // Frame: int32(idx),
- // RecordType: int32(idx),
- // SpawnParam: &serverproto.SpawnRecordParam{
- // Forward: &serverproto.Position{X: 0, Y:0, Z:1000},
- // Pos: &serverproto.Position{X: 0, Y:0, Z:1000},
- // //Rot: &serverproto.Position{X: 0, Y:0, Z:1000},
- // TeamSide: 1,
- // Uid: 3910,
- // },
- // FightingParam: &serverproto.StartFightingParam{
- // Uid: 1,
- // TeamSide: 2,
- // },
- // CastingSkillParam: &serverproto.CastingSkillParam{
- // SkillId: 13000,
- // //SkillType: 0,
- // //TeamSide: 0,
- // Uid: 1,
- // },
- // }
- // if idx % 10 == 0 {
- // brp.MoveParam = &serverproto.FighterMoveParam{
- // StopDist: 3.5,
- // TargetId: 3910,
- // TargetTeamSide: 1,
- // TeamSide: 1,
- // Uid: 1,
- // }
- // }
- //
- // br.Records = append(br.Records, brp)
- //}
- //brpend := &serverproto.BattleRecordParam{
- // State: 2,
- // Frame: int32(1),
- // RecordType: int32(1),
- // EndParam: &serverproto.BattleEndParam{
- // LifeInfo: []int32 { 672, 275, 0, 0, 0 },
- // },
- //}
- //br.Records = append(br.Records, brpend)
- //
- //
- //msgData, _ := rocommon.GetCodec().Marshal(br)
- //log.Printf("len2=%v", len(msgData.([]byte)))
- //
- //var in bytes.Buffer
- //bb := msgData.([]byte)
- //ww:= gzip.NewWriter(&in)
- //ww.Write(bb)
- //ww.Flush()
- //
- //var out bytes.Buffer
- //r,_ := gzip.NewReader(&in)
- //io.Copy(&out, r)
- //log.Printf("len3=%v", len(out.Bytes()))
- //ww.Close()
- }
- func zipziptest() {
- reqMsg := &serverproto.CSGMCommandReq{
- GmCmd: "test MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==MIICWwIBAAKBgQCTnWuCTLNtDiqCt6fEfnLRUGT4zrPPgL1l8alZBcgdIC8ErtqxOZLFjVTYqxE8dqnkyBhW9pjv2WodAf9o0D5Em0Ysx2I8yurWBGmvpxLIaMaqqIPuKBYJSzJkv2wht5eXrUpCJBxn/0kFSBBLvvq/9NWWDniVA71NQaGPUal/DQIBAwKBgBiaPJW3czzXscBz8UtqaHg4ENQic01AH5D9nDmA9q+FXStyecg0QyDs43lx2DS+caYhWWPTxCf5ka+AVTwitQsuDkQ/f9bLvxaqCqhZck2ph0Bb/N+CYKU5jgy88BNZjLvjdLBTjBeVQjk57ofLS6r9mn+QXF4z+fpnIEJrbX7LAkEA1/DMrghmNYuVWK5BKQWJzBkKS4k/ef7Gh8QFNyQ8pV+xExNK2T0BjmZH+uA6Sigkn3otqj7fnB3AtbNB5SDifQJBAK7/xpxazc7kuK97fGVfbKOCHjUNcZ/TY2oaExqncPjrf0V61VWW2PFVZfGY4rEMmWO8awIPgC/DriEsvuf3o9ECQQCP9d3JWu7OXQ47HtYbWQaIELGHsNT7/y8FLVjPbX3DlSC3YjHmKKu0RC/8lXwxcBhqUXPG1JUSvoB5IivuFexTAkB0qoRoPIk0mHsfp6hDlPMXrBQjXku/4kJGvAy8b6Cl8lTY/I45DztLjkP2Zex2CGZCfZysClV1LR7AyH9FT8KLAkEAvxsN59kyXjRrbyRcMzSPrBcVFgLfmFyPQZKc8+BgRENtxPM8+WRLIMgMzVh3Sh175kKNKUDeacpzu1uiaHt6VA==",
- }
- msgData, _ := rocommon.GetCodec().Marshal(reqMsg)
- //log.Printf("len1=%v", len(msgData.([]byte)))
- reqMsg3 := &serverproto.CSGMCommandReq{}
- reqMsg3.GmCmd = "p1:10000,p2:220000"
- reqMsg.GmCmd = ""
- reqMsg.GmParam1 = 10000
- reqMsg.GmParam2 = 220000
- for i := 0; i < 1000; i++ {
- reqMsg.GmParamList = append(reqMsg.GmParamList, 1000)
- reqMsg3.GmCmd += ",p" + strconv.Itoa(i) + ":" + strconv.Itoa(rand.Intn(1000))
- }
- msgData, _ = rocommon.GetCodec().Marshal(reqMsg)
- log.Printf("len2=%v", len(msgData.([]byte)))
- msgData, _ = rocommon.GetCodec().Marshal(reqMsg3)
- log.Printf("len3=%v", len(msgData.([]byte)))
- var in bytes.Buffer
- bb := []byte(reqMsg3.GmCmd)
- ww, _ := gzip.NewWriterLevel(&in, int(gzip.BestSpeed))
- ww.Write(bb)
- ww.Flush()
- var out bytes.Buffer
- r, _ := gzip.NewReader(&in)
- io.Copy(&out, r)
- log.Printf("len4=%v %v", len(out.String()), out.String())
- ww.Close()
- }
- func CSVTest() {
- //https://github.com/gocarina/gocsv
- openFile, err := os.OpenFile("D:/rowok/cehua/csv/aa.csv", os.O_RDONLY, os.ModePerm)
- if err != nil {
- panic(err)
- }
- defer openFile.Close()
- /*
- serverproto.JobCfgLoad("./config/csv/")
- serverproto.JobExpCfgLoad("./config/csv/")
- if cfg,ok := serverproto.JobCfgLoader[32002]; ok {
- log.Print(cfg.ArmsType)
- }
- */
- }
- /*
- //注意过期时间
- status,_ := service.GetRedisConnector().RedisCli().Set("roledbtest", "roledbtest", 10).Result()
- log.Println("status:", status)
- status1,_ := service.GetRedisConnector().RedisCli().Get("roledbtest").Result()
- log.Println("status1:", status1, service.GetRedisConnector().RedisCli().Options().DB)
- ack := &serverproto.SSAccountGetRoleListAck{}
- model.GetRoleListFromRedis("abcdefghijk111111", 1, ack)
- log.Println("ack:",ack)
- return
- */
- type OpenIdServeList struct {
- ServerId int32
- HeadId int32
- Level int32
- }
- func httpTest() {
- node := baseserver.CreateHttpConnector(baseserver.ServiceParam{
- ServiceType: "httpConnector",
- ServiceName: "auth",
- LisAddr: "127.0.0.1:8088",
- })
- temp := &rocommon.HTTPRequest{}
- //node.(rocommon.HTTPConnector).Request("POST", "/auth/verify_login?", temp)
- err := node.(rocommon.HTTPConnector).Request("GET", "/serverlist?type=5&id=1", temp)
- if err != nil {
- log.Printf("err:%v", err)
- }
- /*
- temp.ReqCodecName = "httpform"
- temp.ReqMsg = OpenIdServeList{
- ServerId: 1,
- HeadId: 1,
- Level: 111,
- }
- func(){
- node.(rocommon.HTTPConnector).Request("POST", "/serverlist/add?openid=abc", temp)
- if err != nil {
- log.Printf("err:%v", err)
- }
- }()
- */
- }
- func skipListTest() {
- rand.Seed(int64(util.GetTimeMilliseconds()))
- skipList := aoi.NewSkipList(aoi.LISTTYPE_X)
- a1 := aoi.NewAoiObject(1, 1, 0, 0)
- a2 := aoi.NewAoiObject(2, 1, 0, 0)
- a3 := aoi.NewAoiObject(3, 1, 0, 0)
- skipList.Insert(a1)
- skipList.Insert(a2)
- skipList.Insert(a3)
- skipList.RemoveNode(a1)
- a1.Pos.X = 9.715779
- skipList.Insert(a1)
- skipList.PrintSkipList()
- skipList.RemoveNode(a2)
- a2.Pos.X = 4.3153296
- skipList.Insert(a2)
- skipList.PrintSkipList()
- skipList.RemoveNode(a3)
- a3.Pos.X = 8.794018
- skipList.Insert(a3)
- skipList.Insert(aoi.NewAoiObject(4, 29.715779, 5.183084, 0))
- skipList.Insert(aoi.NewAoiObject(5, 40.3153296, 3.7982264, 0))
- skipList.Insert(aoi.NewAoiObject(6, 6.794018, 10.638061, 0))
- skipList.PrintSkipList()
- return
- skipList.Insert(aoi.NewAoiObject(4, 4, 2, 0))
- skipList.Insert(aoi.NewAoiObject(5, 5, 2, 0))
- skipList.Insert(aoi.NewAoiObject(6, 6, 2, 0))
- //skipList.Insert(aoi.NewAoiObject(6, 5,2))
- // fmt.Printf("search:%v\n", skipList.Search(6, 6).ValueList)
- skipList.Remove(6, 6)
- skipList.PrintSkipList()
- //fmt.Printf("search:%v\n", skipList.Search(2, 6).ValueList)
- skipList.Insert(aoi.NewAoiObject(6, 7, 2, 0))
- skipList.Insert(aoi.NewAoiObject(7, 8, 2, 0))
- skipList.Insert(aoi.NewAoiObject(8, 9, 2, 0))
- //skipList.Remove(4, 7)
- //skipList.Remove(2)
- //aa := skipList.Search(2, 4)
- //fmt.Println("aa:", aa.Value)
- skipList.PrintSkipList()
- /*
- nowTime1 := time.Now()
- var totalTime time.Duration
- for i:= 1;i < 10000;i++ {
- aa := aoi.NewAoiObject(uint64(i), float32(i),float32(i))
- //nowTime := time.Now()
- skipList.Insert(aa)
- //totalTime += time.Now().Sub(nowTime)
- }
- //fmt.Printf("add_delteTime:%v %v\n", time.Now().Sub(nowTime1), totalTime)
- //fmt.Printf("add_delteTime:%v\n", totalTime)
- //return totalTime
- nowTime1 = time.Now()
- count := 0
- for i:= 1;i < 10000;i++ {
- if skipList.Search(float32(i), uint64(i)) != nil {
- count++
- }
- }
- //totalTime = time.Now().Sub(nowTime1)
- //fmt.Printf("search_delteTime:%v %v\n", totalTime,count)
- //return totalTime
- nowTime1 = time.Now()
- for i:= 10;i < 10000;i++ {
- skipList.Remove(float32(i), uint64(i))
- }
- totalTime = time.Now().Sub(nowTime1)
- fmt.Printf("remove_delteTime:%v\n", totalTime)
- return totalTime
- */
- }
- func skiplistTimeTest() {
- rand.Seed(int64(util.GetTimeMilliseconds()))
- skipList := aoi.NewSkipList(aoi.LISTTYPE_X)
- var objList []*aoi.AoiObject
- nowTime1 := time.Now()
- var gridh = 10
- var totalTime time.Duration
- for i := 1; i < 10000; i++ {
- x := int32(rand.Int31n(int32(gridh)))
- aa := aoi.NewAoiObject(uint64(i), float32(x), float32(x), float32(x))
- objList = append(objList, aa)
- nowTime := time.Now()
- skipList.Insert(aa)
- totalTime += time.Now().Sub(nowTime)
- }
- fmt.Printf("add_delteTime:%v %v\n", time.Now().Sub(nowTime1), totalTime)
- //fmt.Printf("add_delteTime:%v\n", totalTime)
- //return totalTime
- nowTime1 = time.Now()
- count := 0
- for i := 0; i < len(objList); i++ {
- if skipList.Search(objList[i].Pos.X, objList[i].Id) != nil {
- count++
- }
- }
- totalTime = time.Now().Sub(nowTime1)
- fmt.Printf("search_delteTime:%v %v\n", totalTime, count)
- //return totalTime
- nowTime1 = time.Now()
- count = 0
- for i := 0; i < len(objList); i++ {
- skipList.Remove(objList[i].Pos.X, objList[i].Id)
- count++
- }
- totalTime = time.Now().Sub(nowTime1)
- fmt.Printf("remove_delteTime:%v %v\n", totalTime, count)
- }
- func quadtreeTimeTest() {
- //aoi.TestQuadtree()
- }
- func aoiTest() {
- aoiTemp := aoi.NewAoi()
- rand.Seed(int64(util.GetTimeMilliseconds()))
- nowTime := time.Now()
- var totalTime time.Duration
- for i := 1; i < 2000; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- nowTime1 := time.Now()
- aoiTemp.Enter(uint64(i), x, y, 0, true, true)
- totalTime += time.Now().Sub(nowTime1)
- }
- //aoiTemp.PrintStackList()
- log.Printf("aoiTesttime=%v %v", time.Now().Sub(nowTime).String(), totalTime)
- nowTime = time.Now()
- for i := 1; i < 1000; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- aoiTemp.Update(uint64(i), aoi.AoiVector2{5, 5, 0}, x, y, true)
- }
- totalTime = time.Now().Sub(nowTime)
- log.Printf("aoiTestUpdate:%v\n", totalTime)
- //aoiTemp.PrintStackList()
- //fmt.Printf("add:%v\n", aoiTemp.GetNode(1).AoiInfo.EnterSet)
- //fmt.Printf("move:%v\n", aoiTemp.GetNode(1).AoiInfo.MoveSet)
- //fmt.Printf("leave:%v\n",aoiTemp.GetNode(1).AoiInfo.LeaveSet)
- }
- func aoiQuadtreeTest() {
- rand.Seed(int64(util.GetTimeMilliseconds()))
- aoiTemp := aoi.NewAoi()
- nowTime := time.Now()
- var totalTime time.Duration
- for i := 1; i < 2000; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- nowTime1 := time.Now()
- aoiTemp.EnterWithQuadtree(uint64(i), x, y, 0, true, true)
- totalTime += time.Now().Sub(nowTime1)
- }
- //aoiTemp.PrintStackList()
- log.Printf("aoiQuadtreeTesttime=%v %v", time.Now().Sub(nowTime).String(), totalTime)
- nowTime = time.Now()
- for i := 1; i < 1000; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- aoiTemp.UpdateQuadtree(uint64(i), x, y, true)
- }
- totalTime = time.Now().Sub(nowTime)
- log.Printf("aoiQuadtreeTestUpdateQuadtree:%v\n", totalTime)
- //aoiTemp.PrintStackList()
- //fmt.Printf("add:%v\n", aoiTemp.GetNode(1).AoiInfo.EnterSet)
- //fmt.Printf("move:%v\n", aoiTemp.GetNode(1).AoiInfo.MoveSet)
- //fmt.Printf("leave:%v\n",aoiTemp.GetNode(1).AoiInfo.LeaveSet)
- }
- func getDeltaValue(f1, f2 float32) float32 {
- deltaValue := f1 - f2
- if deltaValue <= 0 {
- return -deltaValue
- }
- return deltaValue
- }
- func _BenchmarkTest(b *testing.B) {
- aoiTemp := aoi.NewAoi()
- rand.Seed(int64(util.GetTimeMilliseconds()))
- for i := 1; i < 5000; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- aoiTemp.Enter(uint64(i), x, y, 0, true, true)
- }
- //aoiTemp.PrintStackList()
- b.ResetTimer()
- for count := 0; count < b.N; count++ {
- //for i := 1;i <=1; i++ {
- x := rand.Float32() * 10
- y := rand.Float32() * 10
- aoiTemp.Update(uint64(1), aoi.AoiVector2{5, 5, 0}, x, y, true)
- // }
- }
- }
- type nameStr struct {
- name []byte
- age int
- }
- func _BenchmarkShm(b *testing.B) {
- b.ResetTimer()
- for count := 0; count < b.N; count++ {
- segment := shm.MakeShareMemory(1)
- if segment == 0 {
- return
- }
- nameList := (*nameStr)(unsafe.Pointer(segment))
- //nameList.name = []byte("chy123")
- nameList.age = 123
- /*
- segmentRead := shm.ReadSharedMemory(1)
- if segmentRead == 0 {
- return
- }
- nameRead := (*nameStr)(unsafe.Pointer(segment))
- nameRead.age = 124
- */
- }
- }
- type testMap struct {
- a int
- b string
- c bool
- }
- func _BenchmarkMap(b *testing.B) {
- b.ResetTimer()
- test := map[int]*testMap{}
- for count := 0; count < b.N; count++ {
- test = make(map[int]*testMap, 10)
- for i := 0; i < 30; i++ {
- test[i] = &testMap{}
- }
- }
- }
- func _BenchmarkMap1(b *testing.B) {
- b.ResetTimer()
- test := map[int]*testMap{}
- for count := 0; count < b.N; count++ {
- test = map[int]*testMap{}
- for i := 0; i < 30; i++ {
- test[i] = &testMap{}
- }
- }
- }
- func _BenchmarkTestTimeStr(b *testing.B) {
- /*
- str_time1 := time.Unix(0, 0).Format("2006-01-02 15:04:05")
- fmt.Println(str_time1)
- log.Println("str_time1:", str_time1)
- loc, _ := time.LoadLocation("Asia/Shanghai")
- sTime,err1 := time.ParseInLocation("2006-01-02 15:04:05", "2019-12-02 12:00:00", loc)
- log.Println("", sTime, err1)
- var (x,y int)
- x = 10
- y = 10
- log.Println("", x, y)
- */
- joinStr := "joinjoinjoin"
- var abc = ""
- b.ResetTimer()
- for count := 0; count < b.N; count++ {
- //strings.Join([]string{joinStr, "abc"}, "")
- abc = joinStr + "abc"
- }
- strings.Join([]string{joinStr, abc}, "")
- }
- type estest struct {
- User int32 `json:"user"`
- }
- func randActive() {
- rand.Seed(int64(util.GetTimeMilliseconds()))
- tmpFIle, err := os.OpenFile("randcode.txt", os.O_CREATE|os.O_RDWR, 0660)
- if err == nil {
- countId := 1
- var dismapList = map[int]int{}
- for idx := 0; idx < 3000; idx++ {
- //tmpStr := "ro"
- tmpNum := 0
- for i := 0; i < 6; i++ {
- //tmpStr += strconv.Itoa(int(rand.Int31n(10)))
- tmpNum = tmpNum * 10
- tmpRand := rand.Int31n(10)
- if tmpRand == 0 {
- tmpRand = 1
- }
- tmpNum += int(tmpRand)
- }
- dismapList[idx] = tmpNum
- //tmpFIle.WriteString(strconv.Itoa(countId) + " " + tmpStr + "\n")
- countId++
- }
- for _, val := range dismapList {
- tmpStr := "ro"
- tmpStr += strconv.Itoa(val)
- tmpFIle.WriteString(tmpStr + "\n")
- }
- return
- for idx := 0; idx < 5000; idx++ {
- tmpStr := strconv.Itoa(int(rand.Int31n(9) + 1))
- for i := 0; i < 7; i++ {
- tmpStr += strconv.Itoa(int(rand.Int31n(10)))
- }
- tmpFIle.WriteString(strconv.Itoa(countId) + " " + tmpStr + "\n")
- countId++
- }
- for idx := 0; idx < 200; idx++ {
- tmpStr := "rovip"
- for i := 0; i < 3; i++ {
- tmpStr += strconv.Itoa(int(rand.Int31n(10)))
- }
- tmpFIle.WriteString(strconv.Itoa(countId) + " " + tmpStr + "\n")
- countId++
- }
- for idx := 0; idx < 2000; idx++ {
- tmpStr := "test"
- for i := 0; i < 3; i++ {
- tmpStr += strconv.Itoa(int(rand.Int31n(10)))
- }
- tmpFIle.WriteString(strconv.Itoa(countId) + " " + tmpStr + "\n")
- countId++
- }
- tmpFIle.Close()
- }
- }
- func getRankScore44(val uint64, passTime uint64) uint64 {
- //score
- var scoreStr = val
- scoreStr <<= 44
- if 0xfffffffffff > passTime {
- scoreStr |= 0xfffffffffff - passTime
- } else {
- scoreStr |= 0xfffffffffff - passTime/10000
- }
- return scoreStr
- }
- func getValByRankScore44(score float64) (uint32, uint32, uint64) {
- val := uint32(uint64(score) >> 44)
- return val / 10000, val % 10000, uint64(score) & 0xfffffffffff
- }
- func getRankScore48(val uint64, passTime uint64) uint64 {
- //score
- var scoreStr = val
- scoreStr <<= 48
- if 0xfffffffffff > passTime {
- scoreStr |= 0xfffffffffff - passTime
- } else {
- scoreStr |= 0xfffffffffff - passTime/10000
- }
- return scoreStr
- }
- func getValByRankScore48(score float64) (uint32, uint32, uint64) {
- val := uint32(uint64(score) >> 48)
- return val / 10000, val % 10000, uint64(score) & 0xfffffffffff
- }
- func getValByRankScore44_1(score float64) (uint32, uint64) {
- val := uint32(uint64(score) >> 44)
- return val, uint64(score) & 0xfffffffffff
- }
- func getValByRankScore48_1(score float64) (uint32, uint64) {
- val := uint32(uint64(score) >> 48)
- return val, uint64(score) & 0xfffffffffff
- }
- type TestHerodata struct {
- HeroId int32
- HeroLevel int32
- SkillDataList []*serverproto.KeyValueType
- }
- type TestBfInfo struct {
- Uid uint64
- NickName string
- BaseLevel int32
- CreateDate string
- LastLoginDate string
- BanDate string
- MapLevel int32
- FightPower uint32
- ActiveCode string
- OpenId string
- StoryId string
- GuideId string
- MapAnimation string
- TowerLevel int32
- ArenaScore int32
- MainJobId int32
- MainLeftPoint int32
- HeroList []*TestHerodata
- }
- //最低战力通关记录获取
- func GetMapRecord() {
- //tmpConfig := service.ConfigServerNode{}
- //tmpConfig.Node.Config = "./config"
- //tmpConfig.Node.Zone = 1
- //model.BaseConfigInit(tmpConfig)
- util.InitLog(1, 0, "./log", "rotest", "")
- redisCli := redis.NewClient(&redis.Options{
- Addr: "127.0.0.1:6379",
- })
- retList, err := redisCli.HGetAll("brecord:map").Result()
- if err != nil {
- return
- }
- var passMapList = map[string]*serverproto.BattleRecordInfo{}
- var passPowerList []*serverproto.BattleRecordInfo
- for key, val := range retList {
- tmpData := &serverproto.BattleRecordInfo{}
- err = model.GetDecodeMessage(tmpData, val)
- if err != nil {
- continue
- }
- passMapList[key] = tmpData
- if strings.Contains(key, "power") {
- //util.InfoF("%v = %v", key, tmpData.FightPower)
- passPowerList = append(passPowerList, tmpData)
- }
- }
- sort.Slice(passPowerList, func(i, j int) bool {
- return passPowerList[i].MapLevelId < passPowerList[j].MapLevelId
- })
- for idx := 0; idx < len(passPowerList); idx++ {
- util.InfoF("%v = %v", passPowerList[idx].MapLevelId, passPowerList[idx].FightPower)
- }
- }
- func GetTowerRecord() {
- util.InitLog(1, 0, "./log", "rotest", "")
- redisCli := redis.NewClient(&redis.Options{
- Addr: "127.0.0.1:6379",
- })
- retList, err := redisCli.HGetAll("rank:towerfight").Result()
- if err != nil {
- return
- }
- var passPowerList []*serverproto.TowerBriefInfo
- for _, val := range retList {
- tmpData := &serverproto.TowerBriefInfo{}
- err = model.GetDecodeMessage(tmpData, val)
- if err != nil {
- continue
- }
- passPowerList = append(passPowerList, tmpData)
- }
- sort.Slice(passPowerList, func(i, j int) bool {
- return passPowerList[i].CommonInfo.TowerLevel < passPowerList[j].CommonInfo.TowerLevel
- })
- for idx := 0; idx < len(passPowerList); idx++ {
- util.InfoF("%v = %v", passPowerList[idx].CommonInfo.TowerLevel, passPowerList[idx].CommonInfo.FightPower)
- }
- }
- func ConvertServerData() {
- util.InitLog(1, 0, "./log", "rotest", "")
- redisCli := redis.NewClient(&redis.Options{
- Addr: "192.168.10.75:6379",
- })
- //arena
- redisCli.Del("rank:arenatop19")
- redisCli.Del("rank:arenatop20")
- keysList, err := redisCli.Keys("role_arena_*").Result()
- if err != nil {
- return
- }
- for idx := 0; idx < len(keysList); idx++ {
- tmpRoleArena := &serverproto.RoleArena{}
- data, err := redisCli.Get(keysList[idx]).Result()
- if err != nil {
- continue
- }
- err = model.GetDecodeMessage(tmpRoleArena, data)
- if err != nil {
- continue
- }
- if tmpRoleArena.Arena != nil {
- tmpRoleArena.Arena.ArenaSeasonId = 2
- tmpRoleArena.Arena.ArenaSeasonIdReduce = 2
- err, saveData := model.GetEncodeMessage(tmpRoleArena)
- if err == nil {
- redisCli.Set(keysList[idx], saveData, 0)
- }
- }
- }
- //世界boss
- redisCli.Del("wb_state_")
- redisCli.Del("wb_state_list_")
- //宠物羁绊数据
- keysList, err = redisCli.Keys("role_pet_*").Result()
- if err == nil {
- for idx := 0; idx < len(keysList); idx++ {
- tmpkeysList, err := redisCli.HKeys(keysList[idx]).Result()
- if err != nil {
- continue
- }
- for k := 0; k < len(tmpkeysList); k++ {
- if strings.Contains(tmpkeysList[k], "bond") {
- redisCli.HDel(keysList[idx], tmpkeysList[k])
- }
- }
- }
- }
- ////公会数据
- ////guild:recommendindex
- //tmpGuildMsg,err := redisCli.Get("guild:recommendindex").Result()
- //if err == nil {
- // msg11 := &serverproto.RecommendSet{}
- // err = model.GetDecodeMessage(msg11, tmpGuildMsg)
- //
- // tmpOldRecommendSet := &serverproto.OldRecommendSet{}
- // err = model.GetDecodeMessage(tmpOldRecommendSet, tmpGuildMsg)
- // if err == nil {
- // tmpRecommendSet := &serverproto.RecommendSet{}
- // for idx := 0;idx < len(tmpOldRecommendSet.Guild);idx++ {
- // tmpGuild := &serverproto.RecommendGuild{
- // GuildId: uint64(tmpOldRecommendSet.Guild[idx].GuildId),
- // Level: tmpOldRecommendSet.Guild[idx].Level,
- // ActiveTime: tmpOldRecommendSet.Guild[idx].ActiveTime,
- // Active: tmpOldRecommendSet.Guild[idx].Active,
- // }
- // tmpRecommendSet.Guild = append(tmpRecommendSet.Guild, tmpGuild)
- // }
- //
- // err,outGuildMsg := model.GetEncodeMessage(tmpRecommendSet)
- // if err == nil {
- // log.Printf("in=%v \n out=%v", tmpGuildMsg, outGuildMsg)
- // }
- // }
- //}
- ////guild:guildbase
- //tmpGUildBaseMsg,err := redisCli.HGetAll("guild:guildbase").Result()
- //if err == nil {
- // for key,val :=range tmpGUildBaseMsg {
- // tmpGuildBrief := &serverproto.GuildBase{}
- // err = model.GetDecodeMessage(tmpGuildBrief, val)
- // if err != nil {
- // continue
- // }
- // err,tmpMsg := model.GetEncodeMessage(tmpGuildBrief)
- // if err == nil {
- // log.Printf("key=%v tmpMsg=%v \n oldMsg=%v", key, tmpMsg, val)
- // }
- // }
- //}
- ////Role
- //tmpGuildRoleMsgList,err := redisCli.Keys("role_guild_*").Result()
- //if err == nil {
- // for idx := 0;idx < len(tmpGuildRoleMsgList);idx++ {
- // tmpGuildRoleMsg,err := redisCli.Get(tmpGuildRoleMsgList[idx]).Result()
- // tmpRoleGuild := &serverproto.RoleGuild{}
- // err = model.GetDecodeMessage(tmpRoleGuild, tmpGuildRoleMsg)
- // if err != nil {
- // continue
- // }
- // err, tmpMsg := model.GetEncodeMessage(tmpRoleGuild)
- // if err == nil && tmpMsg != "EgAaAA=="{
- // log.Printf("\ntmpMsg=%v \noldMsg=%v", tmpMsg, tmpGuildRoleMsg)
- // }
- // }
- //}
- ////guild:nameindex
- //tmpIndexMsgList,err := redisCli.HGetAll("guild:nameindex").Result()
- //if err == nil {
- // for key,val :=range tmpIndexMsgList {
- // tmpIndex := &serverproto.GuildIdex{}
- // err = model.GetDecodeMessage(tmpIndex, val)
- // if err != nil {
- // continue
- // }
- // err, tmpMsg := model.GetEncodeMessage(tmpIndex)
- // if err == nil{
- // log.Printf("name=%v\ntmpMsg=%v \noldMsg=%v", string(key),tmpMsg, val)
- // }
- // }
- //}
- }
- func GetRoleData() {
- tmpConfig := service.ConfigServerNode{}
- tmpConfig.Node.Config = "./config"
- tmpConfig.Node.Zone = 1
- model.BaseConfigInit(tmpConfig)
- util.InitLog(1, 0, "./log", "rotest", "")
- redisCli := redis.NewClient(&redis.Options{
- Addr: "192.168.10.75:6379",
- })
- tmpAddr := "root:wtgame123@(47.102.45.26:3306)/ro?charset=utf8&loc=Asia%2FShanghai&parseTime=true"
- cfg, err := mysql.ParseDSN(tmpAddr)
- if err != nil {
- util.ErrorF("invalid mysql err=%v", err)
- return
- }
- util.InfoF("connect to mysql addr=%v dbname=%v", cfg.Addr, cfg.DBName)
- mysqlDb, err := sql.Open("mysql", tmpAddr)
- if err != nil {
- util.ErrorF("open mysql database err=%v", err)
- return
- }
- err = mysqlDb.Ping()
- if err != nil {
- util.ErrorF("ping err=%v", err)
- return
- }
- wrapper := mysql2.NewWrapper(mysqlDb)
- var TestBfInfoList = map[uint64]*TestBfInfo{}
- //
- var Uid uint64 = 0
- var NickName sql.NullString
- var BaseLevel sql.NullInt64
- var CreateDate sql.NullString
- var LastLoginDate sql.NullString
- var BanDate sql.NullString
- var MapLevel sql.NullInt64
- var FightPower sql.NullInt64
- var ActiveCode sql.NullString
- var OpenId sql.NullString
- wrapper.Query("select uid,nick_name,base_level,create_date,last_login_date,ban_date,map_level,fight_power,active_code,open_id from role").Each(func(wra *mysql2.Wrapper) bool {
- err := wra.Scan(&Uid, &NickName, &BaseLevel, &CreateDate,
- &LastLoginDate, &BanDate, &MapLevel, &FightPower, &ActiveCode, &OpenId)
- if err == nil {
- bfInfo := &TestBfInfo{
- Uid: Uid,
- }
- if NickName.Valid {
- bfInfo.NickName = NickName.String
- }
- if BaseLevel.Valid {
- bfInfo.BaseLevel = int32(BaseLevel.Int64)
- }
- if CreateDate.Valid {
- bfInfo.CreateDate = CreateDate.String
- }
- if LastLoginDate.Valid {
- bfInfo.LastLoginDate = LastLoginDate.String
- }
- if BanDate.Valid {
- bfInfo.BanDate = BanDate.String
- }
- if MapLevel.Valid {
- bfInfo.MapLevel = int32(MapLevel.Int64)
- }
- if FightPower.Valid {
- bfInfo.FightPower = uint32(FightPower.Int64)
- }
- if ActiveCode.Valid {
- bfInfo.ActiveCode = ActiveCode.String
- }
- if OpenId.Valid {
- bfInfo.OpenId = OpenId.String
- }
- //if !strings.Contains(bfInfo.ActiveCode, "XF") {
- // return true
- //}
- uidStr := strconv.FormatUint(Uid, 10)
- //baseinfo
- tmpBaseInfo := &serverproto.RoleBase{}
- ret, err := redisCli.Get("role_" + uidStr).Result()
- if err == nil {
- err = model.GetDecodeMessage(tmpBaseInfo, ret)
- if err == nil {
- storyStr := ""
- for idx := 0; idx < len(tmpBaseInfo.StoryId); idx++ {
- tmpId := strconv.Itoa(int(tmpBaseInfo.StoryId[idx]))
- storyStr += tmpId + "-"
- }
- bfInfo.StoryId = storyStr
- guideStr := ""
- if tmpBaseInfo.Cguide != nil && tmpBaseInfo.Cguide.Key > 0 {
- tmpId := strconv.Itoa(int(tmpBaseInfo.Cguide.Key))
- tmpVal := strconv.Itoa(int(tmpBaseInfo.Cguide.Value))
- guideStr = tmpId + "-" + tmpVal
- }
- bfInfo.GuideId = guideStr
- mapAnimationStr := ""
- if tmpBaseInfo.MapAnimation != nil && tmpBaseInfo.MapAnimation.Key > 0 {
- tmpId := strconv.Itoa(int(tmpBaseInfo.MapAnimation.Key))
- tmpVal := strconv.Itoa(int(tmpBaseInfo.MapAnimation.Value))
- mapAnimationStr = tmpId + "-" + tmpVal
- }
- bfInfo.MapAnimation = mapAnimationStr
- }
- }
- //tower
- tmpRoleTower := &serverproto.RoleTower{}
- ret, err = redisCli.Get("role_tower_" + uidStr).Result()
- if err == nil {
- err = model.GetDecodeMessage(tmpRoleTower, ret)
- bfInfo.TowerLevel = tmpRoleTower.NowTowerLevel
- }
- //arenaScore
- tmpRoleArena := &serverproto.RoleArena{}
- ret, err = redisCli.Get("role_arena_" + uidStr).Result()
- if err == nil {
- err = model.GetDecodeMessage(tmpRoleArena, ret)
- bfInfo.ArenaScore = tmpRoleArena.Arena.Score
- }
- //mainRole
- MainHeroData := &TestHerodata{}
- tmpRoleBase := &serverproto.RoleBase{}
- ret, err = redisCli.Get("role_" + uidStr).Result()
- if err == nil {
- err = model.GetDecodeMessage(tmpRoleBase, ret)
- bfInfo.MainJobId = tmpRoleBase.RoleData.HeroData.ConfigId
- bfInfo.MainLeftPoint = tmpRoleBase.RoleData.HeroData.AttrPoint
- MainHeroData.HeroId = tmpRoleBase.RoleData.HeroData.ConfigId
- MainHeroData.HeroLevel = tmpRoleBase.RoleData.HeroData.BaseLevel
- tmpList := tmpRoleBase.RoleData.HeroData.Skill.JobSkillList
- for idx := 0; idx < len(tmpList); idx++ {
- for k := 0; k < len(tmpList[idx].UnlockSkillList); k++ {
- MainHeroData.SkillDataList = append(MainHeroData.SkillDataList,
- &serverproto.KeyValueType{
- Key: tmpList[idx].UnlockSkillList[k].Key,
- Value: tmpList[idx].UnlockSkillList[k].Value,
- })
- }
- }
- sort.Slice(MainHeroData.SkillDataList, func(i, j int) bool {
- return MainHeroData.SkillDataList[i].Key < MainHeroData.SkillDataList[j].Key
- })
- bfInfo.HeroList = append(bfInfo.HeroList, MainHeroData)
- }
- //heroData
- tempHeroData := &serverproto.HeroData{}
- retList, err1 := redisCli.HGetAll("role_hero_" + uidStr).Result()
- if err1 == nil {
- for _, val := range retList {
- err = model.GetDecodeMessage(tempHeroData, val)
- testHeroData := &TestHerodata{
- HeroId: tempHeroData.ConfigId,
- HeroLevel: tempHeroData.BaseLevel,
- }
- tmpList := tempHeroData.Skill.JobSkillList
- for idx := 0; idx < len(tmpList); idx++ {
- for k := 0; k < len(tmpList[idx].UnlockSkillList); k++ {
- testHeroData.SkillDataList = append(testHeroData.SkillDataList,
- &serverproto.KeyValueType{
- Key: tmpList[idx].UnlockSkillList[k].Key,
- Value: tmpList[idx].UnlockSkillList[k].Value,
- })
- }
- }
- sort.Slice(testHeroData.SkillDataList, func(i, j int) bool {
- return testHeroData.SkillDataList[i].Key < testHeroData.SkillDataList[j].Key
- })
- bfInfo.HeroList = append(bfInfo.HeroList, testHeroData)
- }
- }
- TestBfInfoList[Uid] = bfInfo
- //util.InfoF("test=%v", bfInfo.Uid)
- }
- return true
- })
- //log.Printf("")
- for _, val := range TestBfInfoList {
- var paramList []interface{}
- paramList = append(paramList, val.Uid, val.NickName, val.BaseLevel, val.CreateDate, val.LastLoginDate,
- val.MapLevel, val.FightPower, val.ActiveCode, val.OpenId,
- val.TowerLevel, val.ArenaScore, val.MainJobId, val.MainLeftPoint,
- val.StoryId, val.GuideId, val.MapAnimation)
- fmtStr := "%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v"
- for idx := 0; idx < len(val.HeroList); idx++ {
- fmtStr += ",%v,%v"
- paramList = append(paramList, val.HeroList[idx].HeroId, val.HeroList[idx].HeroLevel)
- skillStr := ""
- for i := 0; i < len(val.HeroList[idx].SkillDataList); i++ {
- skillStr += strconv.Itoa(int(val.HeroList[idx].SkillDataList[i].Key))
- skillStr += "-"
- skillStr += strconv.Itoa(int(val.HeroList[idx].SkillDataList[i].Value))
- skillStr += ";"
- }
- fmtStr += ",%v"
- paramList = append(paramList, skillStr)
- }
- //log.Printf(fmtStr, paramList...)
- util.InfoF(fmtStr, paramList...)
- }
- }
- func TestIsMatch(t *testing.T) {
- sensitiveList := []string{"中国", "中国人"}
- input := "我来自中国cd"
- utilf := util.NewDFAUtil(sensitiveList)
- if utilf.IsMatch(input) == false {
- t.Errorf("Expected true, but got false")
- }
- }
- func TestHandleWord(t *testing.T) {
- sensitiveList := []string{"中国", "中国人"}
- input := "我来自中国cd"
- utilf := util.NewDFAUtil(sensitiveList)
- newInput := utilf.HandleWord(input, '*')
- expected := "我来自**cd"
- if newInput != expected {
- t.Errorf("Expected %s, but got %s", expected, newInput)
- }
- }
- func Zip(srcFile string, destZip string) error {
- zipfile, err := os.Create(destZip)
- if err != nil {
- return err
- }
- defer zipfile.Close()
- archive := zip.NewWriter(zipfile)
- defer archive.Close()
- filepath.Walk(srcFile, func(path string, info os.FileInfo, err error) error {
- if err != nil {
- return err
- }
- header, err := zip.FileInfoHeader(info)
- if err != nil {
- return err
- }
- header.Name = strings.TrimPrefix(path, filepath.Dir(srcFile)+"/")
- // header.Name = path
- if info.IsDir() {
- header.Name += "/"
- } else {
- header.Method = zip.Deflate
- }
- writer, err := archive.CreateHeader(header)
- if err != nil {
- return err
- }
- if !info.IsDir() {
- file, err := os.Open(path)
- if err != nil {
- return err
- }
- defer file.Close()
- _, err = io.Copy(writer, file)
- }
- return err
- })
- return err
- }
- func BenchmarkQuadtree(b *testing.B) {
- //aoi.TestQuadtree()
- }
- func minWindow(s, t string) string {
- win := make(map[byte]int)
- need := make(map[byte]int)
- for idx := 0; idx < len(t); idx++ {
- need[t[idx]]++
- }
- left := 0
- right := 0
- match := 0
- start := 0
- end := 0
- min := math.MaxInt64
- var c byte
- for right < len(s) {
- c = s[right]
- right++
- if need[c] != 0 {
- win[c]++ //add to win
- if win[c] == need[c] { //need count == win count
- match++
- }
- }
- for match == len(need) {
- if right-left < min { //最小子串
- min = right - left
- start = left
- end = right
- }
- c = s[left] // left move
- left++
- if need[c] != 0 {
- if win[c] == need[c] {
- match--
- }
- win[c]--
- }
- }
- }
- if min == math.MaxInt64 {
- return ""
- }
- return s[start:end]
- }
- func TxtToIpList() {
- f, err := os.Open("ip.txt")
- if err != nil {
- return
- }
- defer f.Close()
- fd, err := ioutil.ReadAll(f)
- if err != nil {
- return
- }
- fileStr := string(fd)
- ipMapList := set.New(set.NonThreadSafe)
- fileStrList := strings.Split(fileStr, "\n")
- for idx := 0; idx < len(fileStrList); idx++ {
- tmpStr := fileStrList[idx]
- ipIdx := strings.Index(tmpStr, "ip=")
- if ipIdx >= 0 {
- aa := ""
- for k := ipIdx + 3; k < len(tmpStr)-6; k++ {
- aa += string(tmpStr[k])
- }
- ipMapList.Add(aa)
- //log.Printf("ip=%v", aa)
- }
- }
- log.Printf("ip=%v", ipMapList.Size())
- for _, ip := range ipMapList.List() {
- log.Printf("ip=%v", ip.(string))
- }
- }
- type moneyTest struct {
- add uint64
- del uint64
- }
- func TextToMoneyList() {
- f, err := os.Open("money.txt")
- if err != nil {
- return
- }
- defer f.Close()
- fd, err := ioutil.ReadAll(f)
- if err != nil {
- return
- }
- fileStr := string(fd)
- var moneyMapList = map[uint64]*moneyTest{}
- fileStrList := strings.Split(fileStr, "\n")
- for idx := 0; idx < len(fileStrList); idx++ {
- tmpStr := fileStrList[idx]
- tmpStrList := strings.Split(tmpStr, " ")
- if len(tmpStrList) <= 4 {
- continue
- }
- tmpStr1List := strings.Split(tmpStrList[4], "=")
- uid, _ := model.Str2NumU64(tmpStr1List[1])
- testInfo, ok := moneyMapList[uid]
- if !ok {
- testInfo = &moneyTest{}
- moneyMapList[uid] = testInfo
- }
- tmpStr1List = strings.Split(tmpStrList[8], "=")
- deltaVal, _ := model.Str2NumU64(tmpStr1List[1])
- tmpStr1List = strings.Split(tmpStrList[9], "=")
- if tmpStr1List[1] == "false" {
- testInfo.del += deltaVal
- } else {
- testInfo.add += deltaVal
- }
- }
- log.Printf("ip=%v", moneyMapList)
- for key, val := range moneyMapList {
- log.Printf("%v,%v,%v", key, val.add, val.del)
- }
- }
|