初始化项目
This commit is contained in:
62
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/dal.go
Normal file
62
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/dal.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-sql-driver/mysql"
|
||||
"github.com/jinzhu/gorm"
|
||||
"Framework/dataSyncMgr/mysqlSync"
|
||||
"goutil/logUtil"
|
||||
)
|
||||
|
||||
var _ = mysql.DeregisterLocalFile
|
||||
|
||||
var (
|
||||
connectionString = "root:moqikaka3309@tcp(10.1.0.10:3309)/develop_liujun?charset=utf8&parseTime=true&loc=Local&timeout=60s"
|
||||
maxOpenConns = 10
|
||||
maxIdleConns = 10
|
||||
|
||||
syncFileSize = 1024 * 1024
|
||||
)
|
||||
|
||||
var (
|
||||
// 数据库对象
|
||||
dbObj *gorm.DB
|
||||
|
||||
// 同步管理对象
|
||||
syncMgr *mysqlSync.SyncMgr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// 初始化数据库连接
|
||||
dbObj = initMysql()
|
||||
|
||||
// 构造同步管理对象
|
||||
syncMgr = mysqlSync.NewLogSyncMgr(1, "Sync", syncFileSize, dbObj.DB())
|
||||
}
|
||||
|
||||
// 初始化Mysql
|
||||
func initMysql() *gorm.DB {
|
||||
dbObj, err := gorm.Open("mysql", connectionString)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("初始化数据库:%s失败,错误信息为:%s", connectionString, err))
|
||||
}
|
||||
logUtil.DebugLog(fmt.Sprintf("连接mysql:%s成功", connectionString))
|
||||
|
||||
if maxOpenConns > 0 && maxIdleConns > 0 {
|
||||
dbObj.DB().SetMaxOpenConns(maxOpenConns)
|
||||
dbObj.DB().SetMaxIdleConns(maxIdleConns)
|
||||
}
|
||||
|
||||
return dbObj
|
||||
}
|
||||
|
||||
// 注册同步对象
|
||||
func registerSyncObj(identifier string) {
|
||||
syncMgr.RegisterSyncObj(identifier)
|
||||
}
|
||||
|
||||
// 保存sql数据
|
||||
func save(identifier string, command string) {
|
||||
syncMgr.Save(identifier, command)
|
||||
}
|
||||
82
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/main.go
Normal file
82
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/main.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"goutil/stringUtil"
|
||||
)
|
||||
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
)
|
||||
|
||||
func init() {
|
||||
wg.Add(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
playerMgr := newPlayerMgr()
|
||||
|
||||
// insert
|
||||
go func() {
|
||||
for {
|
||||
id := stringUtil.GetNewGUID()
|
||||
name := fmt.Sprintf("Hero_%s", id)
|
||||
obj := newPlayer(id, name)
|
||||
playerMgr.insert(obj)
|
||||
|
||||
insert(obj)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
/*
|
||||
// update
|
||||
go func() {
|
||||
for {
|
||||
obj := playerMgr.randomSelect()
|
||||
if obj == nil {
|
||||
continue
|
||||
}
|
||||
suffix := mathUtil.GetRandInt(1000)
|
||||
newName := fmt.Sprintf("Hero_%d", suffix)
|
||||
obj.resetName(newName)
|
||||
|
||||
update(obj)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
|
||||
// delete
|
||||
go func() {
|
||||
for {
|
||||
obj := playerMgr.randomSelect()
|
||||
if obj == nil {
|
||||
continue
|
||||
}
|
||||
playerMgr.delete(obj)
|
||||
|
||||
clear(obj)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}()
|
||||
|
||||
// errorFile
|
||||
go func() {
|
||||
for {
|
||||
time.Sleep(1 * time.Hour)
|
||||
id := stringUtil.GetNewGUID()
|
||||
name := fmt.Sprintf("Hero_%s%s", id, id)
|
||||
obj := newPlayer(id, name)
|
||||
playerMgr.insert(obj)
|
||||
print("errorFile")
|
||||
|
||||
insert(obj)
|
||||
}
|
||||
|
||||
}()
|
||||
*/
|
||||
|
||||
wg.Wait()
|
||||
}
|
||||
64
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/player.go
Normal file
64
trunk/framework/dataSyncMgr/mysqlSync/logSyncTest/player.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
type player struct {
|
||||
// 玩家id
|
||||
Id string `gorm:"column:Id;primary_key"`
|
||||
|
||||
// 玩家名称
|
||||
Name string `gorm:"column:Name"`
|
||||
}
|
||||
|
||||
func (this *player) resetName(name string) {
|
||||
this.Name = name
|
||||
}
|
||||
|
||||
func (this *player) tableName() string {
|
||||
return "player"
|
||||
}
|
||||
|
||||
func newPlayer(id, name string) *player {
|
||||
return &player{
|
||||
Id: id,
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
type playerMgr struct {
|
||||
playerMap map[string]*player
|
||||
|
||||
mutex sync.Mutex
|
||||
}
|
||||
|
||||
func (this *playerMgr) insert(obj *player) {
|
||||
this.mutex.Lock()
|
||||
defer this.mutex.Unlock()
|
||||
|
||||
this.playerMap[obj.Id] = obj
|
||||
}
|
||||
|
||||
func (this *playerMgr) delete(obj *player) {
|
||||
this.mutex.Lock()
|
||||
defer this.mutex.Unlock()
|
||||
|
||||
delete(this.playerMap, obj.Id)
|
||||
}
|
||||
|
||||
func (this *playerMgr) randomSelect() *player {
|
||||
this.mutex.Lock()
|
||||
defer this.mutex.Unlock()
|
||||
|
||||
for _, obj := range this.playerMap {
|
||||
return obj
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func newPlayerMgr() *playerMgr {
|
||||
return &playerMgr{
|
||||
playerMap: make(map[string]*player),
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
//package test
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
con_player_tableName = "player"
|
||||
)
|
||||
|
||||
func init() {
|
||||
registerSyncObj(con_player_tableName)
|
||||
}
|
||||
|
||||
func insert(obj *player) {
|
||||
command := fmt.Sprintf("INSERT INTO `%s` (`Id`,`Name`) VALUES ('%v','%v') ", con_player_tableName, obj.Id, obj.Name)
|
||||
save(con_player_tableName, command)
|
||||
}
|
||||
|
||||
func update(obj *player) {
|
||||
command := fmt.Sprintf("UPDATE `%s` SET `Name` = '%v' WHERE `Id` = '%v';", con_player_tableName, obj.Name, obj.Id)
|
||||
save(con_player_tableName, command)
|
||||
}
|
||||
|
||||
func clear(obj *player) {
|
||||
command := fmt.Sprintf("DELETE FROM %s where Id = '%v';", con_player_tableName, obj.Id)
|
||||
save(con_player_tableName, command)
|
||||
}
|
||||
Reference in New Issue
Block a user