Skip to content

fork #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 66 commits into from
Dec 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
1dc981d
Create Docker基础入门到实战.txt
cserli Nov 16, 2018
26d3e81
Go语言PDF(电子书)
cserli Nov 17, 2018
382df26
Create class3.rar
cserli Nov 17, 2018
a6093a3
Create vender.rar
cserli Nov 17, 2018
24d8a7c
Create Go语言调度原理图.png
cserli Nov 23, 2018
af6a157
Create game_server.xmind
cserli Nov 24, 2018
3330710
Create 优化框架的流程.xmind
cserli Nov 25, 2018
f252aa3
Create Proto2Snake.go
cserli Nov 25, 2018
5fad4e5
add data
cserli Nov 25, 2018
74b2a00
add data
cserli Nov 26, 2018
fc1b79a
add code
cserli Nov 26, 2018
4129f9f
update data
cserli Nov 27, 2018
4eefe2e
add data
cserli Nov 27, 2018
eb7f5cf
Update tmain.go
cserli Nov 27, 2018
f3ff7b8
Update tmain.go
cserli Nov 27, 2018
52deeb5
update data
cserli Nov 27, 2018
888a947
update data
cserli Nov 28, 2018
c88244d
Merge branch 'master' of https://github.com/Golangltd/codeclass
cserli Nov 28, 2018
c36e201
update data
cserli Nov 28, 2018
7cdb84b
add redis
cserli Nov 28, 2018
d21aa0a
update data
cserli Nov 28, 2018
9fd1f6d
update data
cserli Nov 28, 2018
fa3471c
update data
cserli Nov 28, 2018
8f4130a
update data
cserli Nov 28, 2018
e6383db
Update Proto2GameHall.go
cserli Nov 28, 2018
97b4330
add data
cserli Nov 28, 2018
a400309
Create match.go
cserli Nov 28, 2018
506a368
Update match.go
cserli Nov 28, 2018
fae6d28
Create tmain.go
cserli Nov 28, 2018
ba5ca13
add code
cserli Nov 28, 2018
45e6fe6
update data
cserli Nov 29, 2018
e9f8657
update data
cserli Nov 29, 2018
94726f7
update data
cserli Nov 29, 2018
ba43d87
update data
cserli Nov 29, 2018
60107e0
Update NetSnakeClt.go
cserli Nov 29, 2018
fdc5565
update data
cserli Nov 29, 2018
f83ceb0
update match
cserli Nov 29, 2018
f2c1cda
Update match.go
cserli Nov 29, 2018
f4e5b4d
update data
cserli Nov 29, 2018
d30e180
update data
cserli Nov 30, 2018
396a31a
Delete match.go
cserli Nov 30, 2018
a221548
add log
cserli Nov 30, 2018
9a23454
Update conf.go
cserli Nov 30, 2018
6b9b6ae
Update json.go
cserli Nov 30, 2018
e469ad1
update data
cserli Nov 30, 2018
3f6adc9
update data
cserli Nov 30, 2018
98ba3ce
update data
cserli Nov 30, 2018
121f713
update data
cserli Nov 30, 2018
337ed3a
update data
cserli Nov 30, 2018
b2d721d
update data
cserli Nov 30, 2018
ad05f2f
update data
cserli Nov 30, 2018
fc448e2
update data
cserli Nov 30, 2018
06886f9
Update NetRec.go
cserli Nov 30, 2018
3308f85
update data
cserli Dec 2, 2018
c50a404
update data
cserli Dec 3, 2018
68c2044
PutMatch
cserli Dec 3, 2018
8a96669
update data
cserli Dec 3, 2018
522a21e
update data
cserli Dec 3, 2018
57fe8c4
update data
cserli Dec 4, 2018
e87ce63
update data
cserli Dec 4, 2018
8abb764
update data
cserli Dec 4, 2018
c8738d3
update data
cserli Dec 5, 2018
5067eb8
update data
cserli Dec 6, 2018
a6f927c
update data
cserli Dec 6, 2018
b8ccbe4
update data
cserli Dec 6, 2018
2a22860
update data
cserli Dec 6, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
Binary file not shown.
Binary file not shown.
Binary file added Go语言底层技术/Go语言调度原理图.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
1 change: 1 addition & 0 deletions Go语言贪吃蛇/g++安装文件/安装文档.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
http://www.golang.ltd/forum.php?mod=viewthread&tid=7174&extra=
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package main

import (
"Proto"
"Proto/Proto2"
"time"

"code.google.com/p/go.net/websocket"
)

// 定时发心跳
func Timer(conn *websocket.Conn) {
itimer := time.NewTicker(50)
for {
select {
case <-itimer.C:

strOpenID := "A123456789A123456789A123456789A123456789A123456789A123456789A1234"
// 执行的代码
// data := &Proto2.Net_HeartBeat{
// Protocol: Proto.GameNet_Proto,
// Protocol2: Proto2.Net_HeartBeatProto2,
// OpenID: strOpenID,
// }
//发送
//PlayerSendToServer(conn, data)
// -----------------------------------------------------------------
// run的消息
datapro := &Proto2.C2S_PlayerRun{
Protocol: Proto.GameData_Proto,
Protocol2: Proto2.C2S_PlayerRunProto2,
OpenID: strOpenID,
StrRunX: "22",
StrRunY: "22",
StrRunZ: "22",
}
PlayerSendToServer(conn, datapro)
}
}
}
208 changes: 208 additions & 0 deletions Go语言贪吃蛇/最新课节--课程代码/class3/src/Robot/tmain.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
package main

import (
"fmt"
"math/rand"
"strconv"

"Proto"
"Proto/Proto2"
"encoding/base64"
"encoding/json"
"flag"
"os"
"strings"
"sync"
"time"

"code.google.com/p/go.net/websocket"
)

var GW sync.WaitGroup
var Scount int

func main1() {

fmt.Println(os.Args[1:])
fmt.Println(flag.Arg(1))
fmt.Println("Entry server count:", os.Args[1]) // 人数

t1 := time.Now()
count := os.Args[1]
loops, _ := strconv.Atoi(os.Args[2]) // 并发次数
int1, _ := strconv.Atoi(count)
GW.Add(int1)
Scount = int1 * loops
for i := 0; i < int1; i++ {
go GoroutineFunc(loops)
}
GW.Wait()
elapsed := time.Since(t1)
fmt.Println("Total count:", int1*loops)
fmt.Println("Success count:", Scount)
fmt.Println("Cysle TPS:", float64(int1*loops)/elapsed.Seconds())
fmt.Println("Taken Time(s) :", elapsed)
fmt.Println("Average Latency time(ms):", elapsed.Seconds()*1000/(float64(int1*loops)))
//-------------------------------------------------------------------

}
func GoroutineFunc(loops int) {
fmt.Println("Robot 客户端模拟!")
url := "ws://" + *addr + "/GolangLtd"
ws, err := websocket.Dial(url, "", "test://golang/")
if err != nil {
fmt.Println("err:", err.Error())
return
}
// 数据的发送

for i := 0; i < loops; i++ {
Send(ws, "HeartBeat")
// 发送心跳的协议
// 数据处理
var content string
err := websocket.Message.Receive(ws, &content)
if err != nil {
fmt.Println(err.Error())
return
}
// decode
//fmt.Println(strings.Trim("", "\""))
//fmt.Println(content)
content = strings.Replace(content, "\"", "", -1)
contentstr, errr := base64Decode([]byte(content))
if errr != nil {
fmt.Println(errr)
}
// 解析数据
//fmt.Println(string(contentstr))
_ = contentstr
}
GW.Done()

}

/*
robot
1 模拟玩家的正常的“操作”,例如 行走 跳跃 开枪等等
2 做服务器的性能的测试,例如 并发量 内存 CPU 等等
3 压力测试

注意点:
1 模拟 ---> 多线程模拟 goroutine --- server !!!

首先:
1 net 网络使用websocket 进行连接
2 send 如何发送 ??
*/
var addr = flag.String("addr", "127.0.0.1:8888", "http service address")
var connbak *websocket.Conn

// 1 robot客户端 我们是可以一起链接的 ---> websocket.Dial 每次都返回一个
// 2 多个 websocket.Dial ---> 多个客户端的链接

func main() {
fmt.Println("Robot 客户端模拟!")
url := "ws://" + *addr + "/GolangLtd"
ws, err := websocket.Dial(url, "", "test://golang/")
if err != nil {
fmt.Println("err:", err.Error())
return
}
// 数据的发送
for i := 0; i < 100; i++ {
// go Send(ws, "Login")
}

go Send(ws, "HeartBeat")
// 发送心跳的协议
connbak = new(websocket.Conn)
connbak = ws
go Timer(ws)

// 数据处理
for {
var content string
err := websocket.Message.Receive(ws, &content)
if err != nil {
fmt.Println(err.Error())
return
}
// decode
fmt.Println(strings.Trim("", "\""))
fmt.Println(content)
content = strings.Replace(content, "\"", "", -1)
contentstr, errr := base64Decode([]byte(content))
if errr != nil {
fmt.Println(errr)
}
// 解析数据
fmt.Println(string(contentstr))
}

}

// 解码
func base64Decode(src []byte) ([]byte, error) {
return base64.StdEncoding.DecodeString(string(src))
}

// 消息的流程?
// 1 针对我们的消息结构进行数据的组装
// 2 针对我们组装的数据经行一个数据格式的转换 --> json
// 3 json 数据直接发送到我们server

// 发送函数
func Send(conn *websocket.Conn, Itype string) {

if Itype == "Login" {

// 1 组装
data := &Proto2.C2S_PlayerLogin{
Protocol: Proto.GameData_Proto,
Protocol2: Proto2.C2S_PlayerLoginProto2,
Itype: 1,
StrLoginName: "Golangltd" + Rand_LoginName(),
StrLoginPW: "1234556",
StrLoginEmail: "[email protected]",
}
// 3 发送数据到服务器
PlayerSendToServer(conn, data)
} else if Itype == "HeartBeat" { // 心跳
// 1 组装
data := &Proto2.Net_HeartBeat{
Protocol: Proto.GameNet_Proto,
Protocol2: Proto2.Net_HeartBeatProto2,
OpenID: "22323",
}
// 3 发送数据到服务器
PlayerSendToServer(conn, data)
}

return
}

// 公用的send函数
func PlayerSendToServer(conn *websocket.Conn, data interface{}) {

// 2 结构体转换成json数据
jsons, err := json.Marshal(data)
if err != nil {
fmt.Println("err:", err.Error())
return
}
///fmt.Println("jsons:", string(jsons))
errq := websocket.Message.Send(conn, jsons)
if errq != nil {
fmt.Println(errq)
}
return
}

// 随机函数
func Rand_LoginName() string {
idata := rand.Intn(100000)
// 去重?
strdata := strconv.Itoa(idata)
return strdata
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main

import (
"fmt"
"net/http"
)

/*
登录服务器的函数
*/

func IndexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "hello world")
// 需要处理 get请求等
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main

import (
"fmt"
"net/http"
)

/*
登录服务器的函数
*/

func IndexHandlerGM(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "hello world")
// 需要处理 get请求等
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
����λ�ã�
https://blog.csdn.net/wangshubo1989/article/details/75050024/

//-----------------------------------------------------------------
redis ��������
redis-server.exe redis.windows.conf
//-----------------------------------------------------------------
�������
redis-cli.exe -h 127.0.0.1 -p 6379
//-----------------------------------------------------------------
Loading