From cedcc0f0140ab762ee3ef024266092df0b228907 Mon Sep 17 00:00:00 2001
From: jack <1904650862@qq.com>
Date: Thu, 14 Mar 2024 22:59:10 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B9=8B=E5=89=8D?=
=?UTF-8?q?=E4=B8=8E=E6=96=B0=E5=BC=80=E5=A7=8B=E7=9A=84=E7=BB=83=E4=B9=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
New/.idea/.gitignore | 8 +
New/.idea/dataSources.xml | 12 ++
New/.idea/excerise.iml | 9 ++
New/.idea/modules.xml | 8 +
New/.idea/vcs.xml | 6 +
New/gin/g.go | 37 +++++
New/gin/sever/ser.go | 39 +++++
New/gin/templates/index.html | 10 ++
New/go.mod | 40 +++++
New/go.sum | 98 ++++++++++++
New/gorm/enum01.go | 50 +++++++
New/gorm/enumWithSql.go | 98 ++++++++++++
New/gorm/sql01.go | 64 ++++++++
New/gorm/sql02.go | 76 ++++++++++
New/gorm/sql03.go | 62 ++++++++
New/gorm/sql04.go | 69 +++++++++
New/gorm/sql05.go | 139 ++++++++++++++++++
New/gorm/sql06.go | 58 ++++++++
"New/go\345\237\272\347\241\200/lock01.go" | 22 +++
New/note/0314taskmd | 22 +++
.../BookManage}/controller/book.go | 0
.../BookManage}/controller/user.go | 0
.../BookManage}/dao/mysql/initsql.go | 0
{BookManage => Old/BookManage}/go.mod | 0
{BookManage => Old/BookManage}/go.sum | 0
{BookManage => Old/BookManage}/main.go | 0
.../BookManage}/model/BookUser.go | 0
{BookManage => Old/BookManage}/model/book.go | 0
{BookManage => Old/BookManage}/model/user.go | 0
.../BookManage}/router/api_router.go | 0
.../BookManage}/router/init_router.go | 0
.../BookManage}/router/test_router.go | 0
{Gin => Old/Gin}/Gorm/test01/testsql01.go | 0
{Gin => Old/Gin}/Gorm/test02/testsql02.go | 0
{Gin => Old/Gin}/demo01_base/main.go | 0
{Gin => Old/Gin}/demo02/main.go | 0
{Gin => Old/Gin}/note/go.go | 0
{Gin => Old/Gin}/router_layer/go.mod | 0
{Gin => Old/Gin}/router_layer/go.sum | 0
{Gin => Old/Gin}/router_layer/main.go | 0
.../Gin}/router_layer/routers/manger.go | 0
.../Gin}/router_layer/routers/redirect.go | 0
.../Gin}/router_layer/routers/users.go | 0
{client_get => Old/client_get}/main.go | 0
{client_post => Old/client_post}/main.go | 0
go.mod => Old/go.mod | 0
{os => Old/os}/main.go | 0
{sever => Old/sever}/main.go | 0
48 files changed, 927 insertions(+)
create mode 100644 New/.idea/.gitignore
create mode 100644 New/.idea/dataSources.xml
create mode 100644 New/.idea/excerise.iml
create mode 100644 New/.idea/modules.xml
create mode 100644 New/.idea/vcs.xml
create mode 100644 New/gin/g.go
create mode 100644 New/gin/sever/ser.go
create mode 100644 New/gin/templates/index.html
create mode 100644 New/go.mod
create mode 100644 New/go.sum
create mode 100644 New/gorm/enum01.go
create mode 100644 New/gorm/enumWithSql.go
create mode 100644 New/gorm/sql01.go
create mode 100644 New/gorm/sql02.go
create mode 100644 New/gorm/sql03.go
create mode 100644 New/gorm/sql04.go
create mode 100644 New/gorm/sql05.go
create mode 100644 New/gorm/sql06.go
create mode 100644 "New/go\345\237\272\347\241\200/lock01.go"
create mode 100644 New/note/0314taskmd
rename {BookManage => Old/BookManage}/controller/book.go (100%)
rename {BookManage => Old/BookManage}/controller/user.go (100%)
rename {BookManage => Old/BookManage}/dao/mysql/initsql.go (100%)
rename {BookManage => Old/BookManage}/go.mod (100%)
rename {BookManage => Old/BookManage}/go.sum (100%)
rename {BookManage => Old/BookManage}/main.go (100%)
rename {BookManage => Old/BookManage}/model/BookUser.go (100%)
rename {BookManage => Old/BookManage}/model/book.go (100%)
rename {BookManage => Old/BookManage}/model/user.go (100%)
rename {BookManage => Old/BookManage}/router/api_router.go (100%)
rename {BookManage => Old/BookManage}/router/init_router.go (100%)
rename {BookManage => Old/BookManage}/router/test_router.go (100%)
rename {Gin => Old/Gin}/Gorm/test01/testsql01.go (100%)
rename {Gin => Old/Gin}/Gorm/test02/testsql02.go (100%)
rename {Gin => Old/Gin}/demo01_base/main.go (100%)
rename {Gin => Old/Gin}/demo02/main.go (100%)
rename {Gin => Old/Gin}/note/go.go (100%)
rename {Gin => Old/Gin}/router_layer/go.mod (100%)
rename {Gin => Old/Gin}/router_layer/go.sum (100%)
rename {Gin => Old/Gin}/router_layer/main.go (100%)
rename {Gin => Old/Gin}/router_layer/routers/manger.go (100%)
rename {Gin => Old/Gin}/router_layer/routers/redirect.go (100%)
rename {Gin => Old/Gin}/router_layer/routers/users.go (100%)
rename {client_get => Old/client_get}/main.go (100%)
rename {client_post => Old/client_post}/main.go (100%)
rename go.mod => Old/go.mod (100%)
rename {os => Old/os}/main.go (100%)
rename {sever => Old/sever}/main.go (100%)
diff --git a/New/.idea/.gitignore b/New/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/New/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/New/.idea/dataSources.xml b/New/.idea/dataSources.xml
new file mode 100644
index 0000000..a9a50a6
--- /dev/null
+++ b/New/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://116.62.160.30:1234
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/New/.idea/excerise.iml b/New/.idea/excerise.iml
new file mode 100644
index 0000000..5e764c4
--- /dev/null
+++ b/New/.idea/excerise.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/New/.idea/modules.xml b/New/.idea/modules.xml
new file mode 100644
index 0000000..cd11378
--- /dev/null
+++ b/New/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/New/.idea/vcs.xml b/New/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/New/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/New/gin/g.go b/New/gin/g.go
new file mode 100644
index 0000000..02478b6
--- /dev/null
+++ b/New/gin/g.go
@@ -0,0 +1,37 @@
+package main
+
+import (
+ "github.com/gin-gonic/gin"
+ "net/http"
+)
+
+func Index(context *gin.Context) {
+ context.String(200, "Hello 枫枫!")
+}
+func main() {
+
+ // 创建一个默认的路由
+ router := gin.Default()
+
+ router.GET("/xml", func(c *gin.Context) {
+ c.XML(http.StatusOK, gin.H{"user": "hanru", "message": "hey", "status": http.StatusOK})
+ })
+ router.GET("/yaml", func(c *gin.Context) {
+ c.YAML(http.StatusOK, gin.H{"user": "hanru", "message": "hey", "status": http.StatusOK})
+ })
+
+ //加载模板
+ router.LoadHTMLGlob("gin/templates/*")
+
+ //定义路由
+ router.GET("/tem", func(c *gin.Context) {
+ //根据完整文件名渲染模板,并传递参数
+ c.HTML(http.StatusOK, "index.html", gin.H{
+ "title": "Main djw ",
+ })
+ })
+
+ // 启动监听,gin会把web服务运行在本机的0.0.0.0:8080端口上
+ router.Run("0.0.0.0:80")
+
+}
diff --git a/New/gin/sever/ser.go b/New/gin/sever/ser.go
new file mode 100644
index 0000000..fe52687
--- /dev/null
+++ b/New/gin/sever/ser.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+ "fmt"
+ "github.com/gorilla/websocket"
+ "net/http"
+)
+
+var UP = websocket.Upgrader{
+ ReadBufferSize: 1024,
+ WriteBufferSize: 1024,
+}
+
+func handler(res http.ResponseWriter, req *http.Request) {
+ // 服务升级
+ conn, err := UP.Upgrade(res, req, nil)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ for {
+ // 消息类型,消息,错误
+ _, p, err := conn.ReadMessage()
+ if err != nil {
+ break
+ }
+ conn.WriteMessage(websocket.TextMessage, []byte(fmt.Sprintf("你说的是:%s吗?", string(p))))
+ //fmt.Println(t, string(p))
+ fmt.Println(string(p))
+
+ }
+ defer conn.Close()
+ fmt.Println("服务关闭")
+}
+
+func main() {
+ http.HandleFunc("/", handler)
+ http.ListenAndServe(":8080", nil)
+}
diff --git a/New/gin/templates/index.html b/New/gin/templates/index.html
new file mode 100644
index 0000000..0529bd1
--- /dev/null
+++ b/New/gin/templates/index.html
@@ -0,0 +1,10 @@
+
+
+
+
+ {{.title}}
+
+
+
+
+
\ No newline at end of file
diff --git a/New/go.mod b/New/go.mod
new file mode 100644
index 0000000..b431939
--- /dev/null
+++ b/New/go.mod
@@ -0,0 +1,40 @@
+module excerise
+
+go 1.20
+
+require (
+ github.com/gin-gonic/gin v1.9.1
+ github.com/gorilla/websocket v1.5.1
+ gorm.io/driver/mysql v1.5.4
+ gorm.io/gorm v1.25.7
+)
+
+require (
+ github.com/bytedance/sonic v1.9.1 // indirect
+ github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.2 // indirect
+ github.com/gin-contrib/sse v0.1.0 // indirect
+ github.com/go-playground/locales v0.14.1 // indirect
+ github.com/go-playground/universal-translator v0.18.1 // indirect
+ github.com/go-playground/validator/v10 v10.14.0 // indirect
+ github.com/go-sql-driver/mysql v1.7.0 // indirect
+ github.com/goccy/go-json v0.10.2 // indirect
+ github.com/jinzhu/inflection v1.0.0 // indirect
+ github.com/jinzhu/now v1.1.5 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.4 // indirect
+ github.com/leodido/go-urn v1.2.4 // indirect
+ github.com/mattn/go-isatty v0.0.19 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.0.8 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ugorji/go/codec v1.2.11 // indirect
+ golang.org/x/arch v0.3.0 // indirect
+ golang.org/x/crypto v0.14.0 // indirect
+ golang.org/x/net v0.17.0 // indirect
+ golang.org/x/sys v0.13.0 // indirect
+ golang.org/x/text v0.13.0 // indirect
+ google.golang.org/protobuf v1.30.0 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+)
diff --git a/New/go.sum b/New/go.sum
new file mode 100644
index 0000000..2377f39
--- /dev/null
+++ b/New/go.sum
@@ -0,0 +1,98 @@
+github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
+github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
+github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
+github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
+github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
+github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU=
+github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
+github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
+github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js=
+github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
+github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
+github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
+github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk=
+github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
+github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
+github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
+github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
+github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
+golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
+golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
+golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
+golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.5.4 h1:igQmHfKcbaTVyAIHNhhB888vvxh8EdQ2uSUT0LPcBso=
+gorm.io/driver/mysql v1.5.4/go.mod h1:9rYxJph/u9SWkWc9yY4XJ1F/+xO0S/ChOmbk3+Z5Tvs=
+gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A=
+gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
diff --git a/New/gorm/enum01.go b/New/gorm/enum01.go
new file mode 100644
index 0000000..dbbcafc
--- /dev/null
+++ b/New/gorm/enum01.go
@@ -0,0 +1,50 @@
+package main
+
+import (
+ "encoding/json"
+ "fmt"
+)
+
+type Status int
+
+func (status Status) MarshalJSON() ([]byte, error) {
+ var str string
+ switch status {
+ case Running:
+ str = "Running"
+ case Except:
+ str = "Except"
+ case OffLine:
+ str = "Status"
+ }
+ return json.Marshal(str)
+}
+
+type Host struct {
+ ID uint `json:"id"`
+ Name string `json:"name"`
+ Status Status `json:"status"`
+}
+
+const (
+ Running Status = 1
+ Except Status = 2
+ OffLine Status = 3
+)
+
+// var StatusTypeList = []Status{Running, Except, OffLine}
+var StatusStringList = []string{"Running", "Except", "OffLine"}
+
+// String 转字符串
+func (s Status) String() string {
+ return StatusStringList[s-1]
+}
+
+func main() {
+ //host := Host{1, "枫枫", 1}
+
+ //data, _ := json.Marshal(host)
+ //fmt.Println(string(data)) // {"id":1,"name":"枫枫","status":"Running"}
+
+ fmt.Println(Status(2))
+}
diff --git a/New/gorm/enumWithSql.go b/New/gorm/enumWithSql.go
new file mode 100644
index 0000000..d2975f1
--- /dev/null
+++ b/New/gorm/enumWithSql.go
@@ -0,0 +1,98 @@
+package main
+
+import (
+ "time"
+)
+
+type Weekday int
+
+const (
+ Sunday Weekday = iota + 1 // EnumIndex = 1
+ Monday // EnumIndex = 2
+ Tuesday // EnumIndex = 3
+ Wednesday // EnumIndex = 4
+ Thursday // EnumIndex = 5
+ Friday // EnumIndex = 6
+ Saturday // EnumIndex = 7
+)
+
+var WeekStringList = []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
+var WeekTypeList = []Weekday{Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}
+
+// String 转字符串
+func (w Weekday) String() string {
+ return WeekStringList[w-1]
+}
+
+//// MarshalJSON 自定义类型转换为json
+//func (w Weekday) MarshalJSON() ([]byte, error) {
+// return json.Marshal(w.String())
+//}
+//
+//// EnumIndex 自定义类型转原始类型
+//func (w Weekday) EnumIndex() int {
+// return int(w)
+//}
+
+// ParseWeekDay 字符串转自定义类型
+//func ParseWeekDay(week string) Weekday {
+// for i, i2 := range WeekStringList {
+// if week == i2 {
+// return WeekTypeList[i]
+// }
+// }
+// return Monday
+//}
+
+// ParseIntWeekDay 数字转自定义类型
+
+func ParseIntWeekDay(week int) Weekday {
+ return Weekday(week)
+}
+
+type DayInfo struct {
+ Weekday Weekday `json:"weekday" gorm:"size:3"`
+ Date time.Time `json:"date"`
+}
+
+func main() {
+ //w := 1
+ //fmt.Println(w)
+
+ //dayInfo := DayInfo{Weekday: 1, Date: time.Now()}
+ //data, err := json.Marshal(dayInfo)
+ //fmt.Println(string(data), err)
+
+ //week := ParseWeekDay("Saturday")
+ //fmt.Println(week)
+ //
+ //week = ParseIntWeekDay(2)
+ //fmt.Println(week)
+
+ //fmt.Println(Weekday(2))
+
+ //数据库测试
+ //DB.Debug().AutoMigrate(&DayInfo{})
+
+ //DB.Debug().Create(DayInfo{
+ // Weekday: 6,
+ // Date: time.Now(),
+ //})
+ // //INSERT INTO `djw07_day_infos` (`weekday`,`date`) VALUES (4,'2024-03-14 17:27:48.306')
+
+ //var day []DayInfo
+ //DB.Debug().Limit(3).Offset(2).Find(&day)
+ //fmt.Println(day)
+
+ //data, _ := json.Marshal(day)
+ //fmt.Println(string(data))
+
+ var engine string
+ result := DB.Raw(" SHOW TABLE STATUS WHERE `Name` = 'djw07_day_infos';\n ").Scan(&engine)
+ if result.Error != nil {
+ panic("failed to query table engine")
+ }
+ //
+ //fmt.Printf("表使用的引擎:%s\n", engine)
+
+}
diff --git a/New/gorm/sql01.go b/New/gorm/sql01.go
new file mode 100644
index 0000000..aea3cef
--- /dev/null
+++ b/New/gorm/sql01.go
@@ -0,0 +1,64 @@
+package main
+
+import (
+ "fmt"
+ "gorm.io/driver/mysql"
+ "gorm.io/gorm"
+ "gorm.io/gorm/schema"
+)
+
+type StudentInfo struct {
+ Email *string `gorm:"size:32"` // 使用指针是为了存空值
+ Addr string `gorm:"column:y_addr;size:16"`
+ Gender bool `gorm:"default:true"`
+}
+
+type Student struct {
+ ID uint `gorm:"size:3"`
+ Name string `gorm:"size:8"`
+ Age int `gorm:"size:3"`
+ Gender bool
+ Email *string `gorm:"size:32"`
+}
+
+var s1 Student
+var DB *gorm.DB
+
+func init() {
+ username := "root" //账号
+ password := "djw210503" //密码
+ host := "116.62.160.30" //数据库地址,可以是Ip或者域名
+ port := 1234 //数据库端口
+ Dbname := "ceshi01" //数据库名
+ timeout := "10s" //连接超时,10秒
+
+ // root:root@tcp(127.0.0.1:3306)/gorm?
+ dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s", username, password, host, port, Dbname, timeout)
+ //连接MYSQL, 获得DB类型实例,用于后面的数据库读写操作。
+
+ db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
+ NamingStrategy: schema.NamingStrategy{
+ TablePrefix: "djw07_", // 表名前缀
+ SingularTable: false, // 单数表名
+ NoLowerCase: false, // 关闭小写转换
+ },
+ })
+
+ if err != nil {
+ panic("连接数据库失败, error=" + err.Error())
+ }
+
+ var studentList []Student
+ for i := 0; i < 100; i++ {
+ studentList = append(studentList, Student{
+ Name: fmt.Sprintf("机器人%d号", i+1),
+ Age: 21,
+ Gender: true,
+ //Email: &email,
+ })
+ }
+ DB = db
+ // 连接成功
+ //DB.Create(&studentList)
+
+}
diff --git a/New/gorm/sql02.go b/New/gorm/sql02.go
new file mode 100644
index 0000000..d5ffc15
--- /dev/null
+++ b/New/gorm/sql02.go
@@ -0,0 +1,76 @@
+package main
+
+import (
+ "fmt"
+ "gorm.io/gorm"
+)
+
+func (user *Student) BeforeCreate(tx *gorm.DB) (err error) {
+ email := fmt.Sprintf("%sbefore@qq.com", user.Name)
+ user.Email = &email
+ return nil
+}
+
+var studentList []Student
+var student Student
+
+func main() {
+ //for i := 0; i < 30; i++ {
+ // //studentList = append(studentList, Student{
+ // // Name: fmt.Sprintf("机器人%d号", i+1),
+ // // Age: 21,
+ // // Gender: true,
+ // // Email: &email,
+ // //})
+ // studentList = append(studentList, Student{
+ // ID: uint(i + 51),
+ // Gender: false,
+ // })
+ //}
+ //DB.Debug().Save(&studentList)
+ //单独更新一个
+ //DB.Debug().Take(&student)
+ //student.Name = "临时"
+ //DB.Debug().Save(&student)
+
+ //DB.Debug().Where("id > 20 and id <60").Find(&studentList).Updates(Student{
+ // Name: "temp",
+ // Gender: false,//gender没有更新
+ //})
+
+ //DB.Model(&Student{}).Debug().Where("id < 80 and id >60").Select("name", "gender").Updates(Student{
+ // Name: "test",
+ // Gender: false,
+ //})
+
+ //DB.Debug().Delete(&studentList)
+ // 排除年龄大于23的
+
+ type Base struct {
+ //Count1 int `gorm:"column:count(id)"`
+ //Count2 int `gorm:"column:count(gender)"`
+ Name string
+ Age int
+ }
+
+ type NameList struct {
+ Name string
+ }
+ //var b1 []Base
+ //var a1 []NameLis t
+ //
+ //DB.Debug().Raw(`SELECT name,age FROM f_students GROUP BY gender`).Scan(&b1)
+ //
+ //DB.Debug().Table("f_students").Select("name").Scan(&a1)
+ //fmt.Println(b1)
+
+ //var res []map[string]any
+ //DB.Table("f_students").Find(&res)
+ //fmt.Println(res)
+
+ var users []Student // 假设 Student 是你的结构体类型
+ DB.Debug().Table("f_students").Scopes(func(db *gorm.DB) *gorm.DB {
+ return db.Where("age < ? AND gender = ?", 23, true) // 注意这里使用的是布尔值true代替了数字1表示gender
+ }).Find(&users)
+ fmt.Println(users)
+}
diff --git a/New/gorm/sql03.go b/New/gorm/sql03.go
new file mode 100644
index 0000000..a5c87d0
--- /dev/null
+++ b/New/gorm/sql03.go
@@ -0,0 +1,62 @@
+package main
+
+import (
+ "fmt"
+ "time"
+)
+
+// // 多对多
+type Article struct {
+ ID uint
+ Title string
+ Tags []Tag `gorm:"many2many:article_tags"`
+}
+
+type Tag struct {
+ ID uint
+ Name string
+}
+
+type ArticleTag struct {
+ ArticleID uint `gorm:"primaryKey"`
+ TagID uint `gorm:"primaryKey"`
+ CreatedAt time.Time
+}
+
+func main() {
+
+ // 设置Article的Tags表为ArticleTag
+ DB.Debug().SetupJoinTable(&Article{}, "Tags", &ArticleTag{})
+ // 如果tag要反向应用Article,那么也得加上
+ // DB.SetupJoinTable(&Tag{}, "Articles", &ArticleTag{})
+ //err := DB.Debug().AutoMigrate(&Article{}, &Tag{}, &ArticleTag{})
+ //fmt.Println(err)
+ //var tags []Tag
+ //DB.Debug().Find(&tags, "id = 2 or id = 3 or id = 4")
+ //DB.Debug().Save(&Article{
+ // Title: "gin零基础入门",
+ // Tags: tags,
+ //})
+
+ //var article []Article
+ //var tags []Tag
+ //DB.Find(&tags, []int{2, 3, 4})
+ //
+ //DB.Preload("Tags").Find(&article, 2)
+ //DB.Model(&article).Association("Tags").Replace(tags)
+ //fmt.Println(article)
+
+ //DB.Debug().Raw("DELETE FROM djw_article_tags WHERE article_id = 3;\n").Find(&article)
+
+ //DB.Debug().Preload("Tags").Raw("DELETE FROM djw_articles WHERE id = 3;\n").Find(&article)
+ //fmt.Println(article)
+
+ var article Article
+ var tags []Tag
+ DB.Find(&tags, []int{2, 3})
+
+ DB.Preload("Tags").Take(&article, 2)
+ DB.Debug().Model(&article).Association("Tags").Replace(tags)
+ fmt.Println(article)
+
+}
diff --git a/New/gorm/sql04.go b/New/gorm/sql04.go
new file mode 100644
index 0000000..e91f307
--- /dev/null
+++ b/New/gorm/sql04.go
@@ -0,0 +1,69 @@
+package main
+
+import (
+ "time"
+)
+
+type ArticleModel struct {
+ ID uint
+ Title string
+ Tags []TagModel `gorm:"many2many:article_tags;joinForeignKey:ArticleID;JoinReferences:TagID"`
+}
+
+type TagModel struct {
+ ID uint
+ Name string
+ Articles []ArticleModel `gorm:"many2many:article_tags;joinForeignKey:TagID;JoinReferences:ArticleID"`
+}
+
+type ArticleTagModel struct {
+ ArticleID uint `gorm:"primaryKey"` // article_id
+ TagID uint `gorm:"primaryKey"` // tag_id
+ CreatedAt time.Time
+}
+
+// 指定 Product 模型对应的数据库表名称为 "abc"
+//
+// func (guaNxiModel) TableName() string {
+// return "abc"
+// }
+func main() {
+ //DB.SetupJoinTable(&ArticleModel{}, "Tags", &ArticleTagModel{})
+ //DB.SetupJoinTable(&TagModel{}, "Articles", &ArticleTagModel{})
+ //err := DB.Debug().AutoMigrate(&ArticleModel{}, &TagModel{}, &ArticleTagModel{})
+ //fmt.Println(err)
+
+ //var artivleList []ArticleModel
+ //for i := 0; i < 5; i++ {
+ // artivleList = append(artivleList, ArticleModel{
+ // Title: fmt.Sprintf("测试文章%d号", i+1),
+ // })
+ //}
+ //var tagList []TagModel
+ //for i := 0; i < 5; i++ {
+ // tagList = append(tagList, TagModel{
+ // Name: fmt.Sprintf("测试biaoqian%d号", i+1),
+ // })
+ //}
+ //DB.Debug().Create(&tagList)
+
+ var article ArticleModel
+ var tags []TagModel
+
+ //Error 1146 (42S02): Table 'ceshi01.djw04_article_tags' doesn't exist
+ //DB.Find(&tags, []int{8, 6, 7})
+ //DB.Preload("Tags").Take(&article, 2)
+ //DB.Model(&article).Association("Tags").Replace(tags)
+
+ //给已有文章关联标签
+ DB.SetupJoinTable(&ArticleModel{}, "Tags", &ArticleTagModel{})
+ article.ID = 1
+ DB.Debug().Find(&tags, "name in ?", []string{"测试biaoqian1号", "测试biaoqian2号"})
+ DB.Debug().Take(&article, article.ID).Association("Tags").Append(tags)
+
+ //删除标签
+ //DB.Preload("Tags").Take(&article, 2)
+ //DB.Model(&article).Association("Tags").Delete(article.Tags)
+ //fmt.Println(article)
+
+}
diff --git a/New/gorm/sql05.go b/New/gorm/sql05.go
new file mode 100644
index 0000000..0d96199
--- /dev/null
+++ b/New/gorm/sql05.go
@@ -0,0 +1,139 @@
+package main
+
+import (
+ "database/sql/driver"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "time"
+)
+
+type UserModel05 struct {
+ ID uint `json:"id"`
+ Name string `json:"name"`
+ Collects []ArticleModel05 `gorm:"many2many:user_collect_models;joinForeignKey:UserID;JoinReferences:ArticleID;type:string"`
+}
+
+type ArticleModel05 struct {
+ ID uint `json:"id"`
+ Title string `json:"title"`
+ // 这里也可以反向引用,根据文章查哪些用户收藏了
+}
+
+// UserCollectModel 用户收藏文章表
+type UserCollectModel05 struct {
+ UserID uint `gorm:"primaryKey" json:"uID"` // article_id
+ ArticleID uint `gorm:"primaryKey" json:"articleID"` // tag_id
+ CreatedAt time.Time
+}
+
+// UserCollectModel 用户收藏文章表
+type UserCollectModel05new struct {
+ UserID uint `gorm:"primaryKey"` // article_id
+ UserModel UserModel05 `gorm:"foreignKey:UserID"`
+ ArticleID uint `gorm:"primaryKey"` // tag_id
+ ArticleModel ArticleModel05 `gorm:"foreignKey:ArticleID"`
+ CreatedAt time.Time
+}
+
+// Scan 从数据库中读取出来
+func (a *ArticleModel05) Scan(value interface{}) error {
+ bytes, ok := value.([]byte)
+ if !ok {
+ return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
+ }
+
+ article := ArticleModel05{}
+ fmt.Println("used scan")
+ err := json.Unmarshal(bytes, &article)
+ *a = article
+ return err
+}
+
+// Value 存入数据库
+func (a ArticleModel05) Value() (driver.Value, error) {
+ fmt.Println("used value")
+ return json.Marshal(a)
+}
+
+func main() {
+ //err := DB.Raw("DROP TABLE djw04_tag_models")
+ //fmt.Println(err)
+
+ //DB.Debug().SetupJoinTable(&UserModel05{}, "Collects", &UserCollectModel05new{})
+ //err := DB.Debug().AutoMigrate(&UserModel05{}, &ArticleModel05{}, &UserCollectModel05new{})
+ //fmt.Println(err)
+
+ //var userlist []UserModel05
+ //var articlelist []ArticleModel05
+ //for i := 0; i < 5; i++ {
+ // userlist = append(userlist, UserModel05{
+ // Name: fmt.Sprintf("djw%d号", i+1),
+ // })
+ //}
+ //for i := 0; i < 5; i++ {
+ // articlelist = append(articlelist, ArticleModel05{
+ // Title: fmt.Sprintf("wenzhang%d号", i+1),
+ // })
+ //}
+ //DB.Debug().Save(&articlelist)
+
+ //给已有文章关联标签
+ //var articlelist []ArticleModel05
+ //var user UserModel05
+ //DB.SetupJoinTable(&UserModel05{}, "Collects", &UserCollectModel05{})
+ //user.ID = 4
+ //DB.Debug().Find(&articlelist, "id in ?", []uint{4, 3, 5})
+ //DB.Debug().Take(&user, user.ID).Association("Collects").Append(articlelist)
+
+ //普通查询
+ //var user UserModel05
+ //DB.Preload("Collects").Take(&user, "name LIKE ?", "%1号")
+ //fmt.Println(user)
+
+ //升级查询(感觉没有直接用sql方便)
+ //var collects []UserCollectModel05new
+ //var collectshow []UserCollectModel05
+
+ //var user UserModel05
+ //DB.Take(&user, "name LIKE ?", "%1号")
+ //// 这里用map的原因是如果没查到,那就会查0值,如果是struct,则会忽略零值,全部查询
+ //DB.Debug().Preload("UserModel").Preload("ArticleModel").Where(map[string]any{"user_id": user.ID}).Find(&collects).Scan(&collectshow)
+ //
+ //for _, collect := range collectshow {
+ // fmt.Println(collect)
+ //}
+
+ //升级查询(直接用sql方便)
+ //DB.Raw("SELECT * FROM djw05_user_model05 WHERE name LIKE '%1%' ; ").Scan(&user)
+ //fmt.Println(user)
+
+ //DB.Raw(" SELECT * " +
+ // "FROM djw05_user_collect_model05news " +
+ // "WHERE user_id = (select id " +
+ // "from djw05_user_model05 " +
+ // "where name LIKE '%1%' )").Scan(&collectshow)
+ //
+ //for _, collect := range collectshow {
+ // fmt.Println(collect)
+ //}
+
+ //搭配value和scan方法
+ //DB.Debug().SetupJoinTable(&UserModel05{}, "Collects", &UserCollectModel05{})
+ //DB.Debug().Create(&UserModel05{
+ // Name: "佳文",
+ // Collects: []ArticleModel05{
+ // ArticleModel05{
+ // Title: "佳文一号文章",
+ // },
+ // ArticleModel05{
+ // Title: "佳文二号文章",
+ // },
+ // },
+ //})
+
+ var user UserModel05
+ DB.Take(&user)
+ fmt.Println(user)
+
+}
diff --git a/New/gorm/sql06.go b/New/gorm/sql06.go
new file mode 100644
index 0000000..a29aa54
--- /dev/null
+++ b/New/gorm/sql06.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "fmt"
+)
+
+type Info06 struct {
+ Status string `json:"status"`
+ Addr string `json:"addr"`
+ Age int `json:"age"`
+}
+
+// Scan 从数据库中读取出来
+//func (i *Info06) Scan(value interface{}) error {
+// bytes, ok := value.([]byte)
+// if !ok {
+// return errors.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
+// }
+//
+// fmt.Println("1111111")
+// Info06 := Info06{}
+// err := json.Unmarshal(bytes, &Info06)
+// *i = Info06
+// return err
+//}
+//
+//// Value 存入数据库
+//func (i Info06) Value() (driver.Value, error) {
+// fmt.Println("2222222")
+// return json.Marshal(i)
+//}
+
+type User06 struct {
+ ID uint
+ Name string
+ Info06 Info06 `gorm:"type:string"`
+}
+
+func main() {
+
+ //err := DB.Debug().AutoMigrate(&Info06{}, &User06{})
+
+ //err := DB.Create(&User06{
+ // Name: "jiawen",
+ // Info06: Info06{
+ // Status: "hubei",
+ // Addr: "jingmen",
+ // Age: 21,
+ // },
+ //})
+ //
+ //fmt.Println(err)
+
+ var user User06
+ DB.Debug().Take(&user)
+ fmt.Println(user)
+
+}
diff --git "a/New/go\345\237\272\347\241\200/lock01.go" "b/New/go\345\237\272\347\241\200/lock01.go"
new file mode 100644
index 0000000..d068f33
--- /dev/null
+++ "b/New/go\345\237\272\347\241\200/lock01.go"
@@ -0,0 +1,22 @@
+package main
+
+import (
+ "sync"
+)
+
+var wg sync.WaitGroup
+
+func pow(a int, b int) int {
+ if b == 0 {
+ return a
+ }
+ num := a
+ for i := 1; i < b; i++ {
+ a *= num
+ }
+ return a
+}
+
+func main() {
+ println(pow(10, 0))
+}
diff --git a/New/note/0314taskmd b/New/note/0314taskmd
new file mode 100644
index 0000000..d265002
--- /dev/null
+++ b/New/note/0314taskmd
@@ -0,0 +1,22 @@
+# 自学阶段(2.27-3.14)
+看完并跟练完 goland、gin、gorm的基础练习
+每天两道leecode的题
+(gin和gorm里面很多技巧跟着练就可以了,面试不用太在乎这些技巧,比如gorm里很多用原生sql语句会更方便一些)
+
+# 回答问题:(3.14-3.21)
+## gorm
+1、mysql 连接池创造和维持
+2、gorm 链式连接是如何实现
+3、gorm 的底层 如何防御注入
+
+## gin
+1、gin 结构有哪些 | 如何响应http请求
+2、gin 上下文(context)是怎么实现的
+3、gin中间件是什么(底层原理)
+4、gin路由是如何实现的 与原生的区别
+
+## goland
+1、go new与make的区别
+2、go 切片(slice)与数组的区别
+3、go 切片如何扩容
+4、go 错误处理有哪些注意事项 :panic、recover、defer……
\ No newline at end of file
diff --git a/BookManage/controller/book.go b/Old/BookManage/controller/book.go
similarity index 100%
rename from BookManage/controller/book.go
rename to Old/BookManage/controller/book.go
diff --git a/BookManage/controller/user.go b/Old/BookManage/controller/user.go
similarity index 100%
rename from BookManage/controller/user.go
rename to Old/BookManage/controller/user.go
diff --git a/BookManage/dao/mysql/initsql.go b/Old/BookManage/dao/mysql/initsql.go
similarity index 100%
rename from BookManage/dao/mysql/initsql.go
rename to Old/BookManage/dao/mysql/initsql.go
diff --git a/BookManage/go.mod b/Old/BookManage/go.mod
similarity index 100%
rename from BookManage/go.mod
rename to Old/BookManage/go.mod
diff --git a/BookManage/go.sum b/Old/BookManage/go.sum
similarity index 100%
rename from BookManage/go.sum
rename to Old/BookManage/go.sum
diff --git a/BookManage/main.go b/Old/BookManage/main.go
similarity index 100%
rename from BookManage/main.go
rename to Old/BookManage/main.go
diff --git a/BookManage/model/BookUser.go b/Old/BookManage/model/BookUser.go
similarity index 100%
rename from BookManage/model/BookUser.go
rename to Old/BookManage/model/BookUser.go
diff --git a/BookManage/model/book.go b/Old/BookManage/model/book.go
similarity index 100%
rename from BookManage/model/book.go
rename to Old/BookManage/model/book.go
diff --git a/BookManage/model/user.go b/Old/BookManage/model/user.go
similarity index 100%
rename from BookManage/model/user.go
rename to Old/BookManage/model/user.go
diff --git a/BookManage/router/api_router.go b/Old/BookManage/router/api_router.go
similarity index 100%
rename from BookManage/router/api_router.go
rename to Old/BookManage/router/api_router.go
diff --git a/BookManage/router/init_router.go b/Old/BookManage/router/init_router.go
similarity index 100%
rename from BookManage/router/init_router.go
rename to Old/BookManage/router/init_router.go
diff --git a/BookManage/router/test_router.go b/Old/BookManage/router/test_router.go
similarity index 100%
rename from BookManage/router/test_router.go
rename to Old/BookManage/router/test_router.go
diff --git a/Gin/Gorm/test01/testsql01.go b/Old/Gin/Gorm/test01/testsql01.go
similarity index 100%
rename from Gin/Gorm/test01/testsql01.go
rename to Old/Gin/Gorm/test01/testsql01.go
diff --git a/Gin/Gorm/test02/testsql02.go b/Old/Gin/Gorm/test02/testsql02.go
similarity index 100%
rename from Gin/Gorm/test02/testsql02.go
rename to Old/Gin/Gorm/test02/testsql02.go
diff --git a/Gin/demo01_base/main.go b/Old/Gin/demo01_base/main.go
similarity index 100%
rename from Gin/demo01_base/main.go
rename to Old/Gin/demo01_base/main.go
diff --git a/Gin/demo02/main.go b/Old/Gin/demo02/main.go
similarity index 100%
rename from Gin/demo02/main.go
rename to Old/Gin/demo02/main.go
diff --git a/Gin/note/go.go b/Old/Gin/note/go.go
similarity index 100%
rename from Gin/note/go.go
rename to Old/Gin/note/go.go
diff --git a/Gin/router_layer/go.mod b/Old/Gin/router_layer/go.mod
similarity index 100%
rename from Gin/router_layer/go.mod
rename to Old/Gin/router_layer/go.mod
diff --git a/Gin/router_layer/go.sum b/Old/Gin/router_layer/go.sum
similarity index 100%
rename from Gin/router_layer/go.sum
rename to Old/Gin/router_layer/go.sum
diff --git a/Gin/router_layer/main.go b/Old/Gin/router_layer/main.go
similarity index 100%
rename from Gin/router_layer/main.go
rename to Old/Gin/router_layer/main.go
diff --git a/Gin/router_layer/routers/manger.go b/Old/Gin/router_layer/routers/manger.go
similarity index 100%
rename from Gin/router_layer/routers/manger.go
rename to Old/Gin/router_layer/routers/manger.go
diff --git a/Gin/router_layer/routers/redirect.go b/Old/Gin/router_layer/routers/redirect.go
similarity index 100%
rename from Gin/router_layer/routers/redirect.go
rename to Old/Gin/router_layer/routers/redirect.go
diff --git a/Gin/router_layer/routers/users.go b/Old/Gin/router_layer/routers/users.go
similarity index 100%
rename from Gin/router_layer/routers/users.go
rename to Old/Gin/router_layer/routers/users.go
diff --git a/client_get/main.go b/Old/client_get/main.go
similarity index 100%
rename from client_get/main.go
rename to Old/client_get/main.go
diff --git a/client_post/main.go b/Old/client_post/main.go
similarity index 100%
rename from client_post/main.go
rename to Old/client_post/main.go
diff --git a/go.mod b/Old/go.mod
similarity index 100%
rename from go.mod
rename to Old/go.mod
diff --git a/os/main.go b/Old/os/main.go
similarity index 100%
rename from os/main.go
rename to Old/os/main.go
diff --git a/sever/main.go b/Old/sever/main.go
similarity index 100%
rename from sever/main.go
rename to Old/sever/main.go
--
Gitee
From a4f04656bb72f7574cec9976f137a7501bd2bfbc Mon Sep 17 00:00:00 2001
From: jack <1904650862@qq.com>
Date: Thu, 14 Mar 2024 23:05:57 +0800
Subject: [PATCH 2/5] =?UTF-8?q?=E5=90=88=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7a15f40
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+# GoWebExercise
+
+#### 介绍
+goweb练习
+
+
+
--
Gitee
From 08dff49a534e71ffa358f7cb9c0e00ce19d9770b Mon Sep 17 00:00:00 2001
From: jack <1904650862@qq.com>
Date: Thu, 14 Mar 2024 23:31:06 +0800
Subject: [PATCH 3/5] update
---
.idea/GoWebExercise.iml | 9 --
{New/.idea => .idea}/dataSources.xml | 0
{New/.idea => .idea}/excerise.iml | 0
.idea/modules.xml | 2 +-
.idea/vcs.xml | 2 +-
.idea/watcherTasks.xml | 53 -------
New/.idea/.gitignore | 8 -
New/.idea/modules.xml | 8 -
New/.idea/vcs.xml | 6 -
Old/BookManage/controller/book.go | 1 -
Old/BookManage/controller/user.go | 72 ---------
Old/BookManage/dao/mysql/initsql.go | 36 -----
Old/BookManage/go.mod | 39 -----
Old/BookManage/go.sum | 93 -----------
Old/BookManage/main.go | 23 ---
Old/BookManage/model/BookUser.go | 9 --
Old/BookManage/model/book.go | 13 --
Old/BookManage/model/user.go | 19 ---
Old/BookManage/router/api_router.go | 12 --
Old/BookManage/router/init_router.go | 16 --
Old/BookManage/router/test_router.go | 9 --
Old/Gin/Gorm/test01/testsql01.go | 61 --------
Old/Gin/Gorm/test02/testsql02.go | 85 -----------
Old/Gin/demo01_base/main.go | 48 ------
Old/Gin/demo02/main.go | 70 ---------
Old/Gin/note/go.go | 66 --------
Old/Gin/router_layer/go.mod | 31 ----
Old/Gin/router_layer/go.sum | 105 -------------
Old/Gin/router_layer/main.go | 19 ---
Old/Gin/router_layer/routers/manger.go | 20 ---
Old/Gin/router_layer/routers/redirect.go | 18 ---
Old/Gin/router_layer/routers/users.go | 21 ---
Old/client_get/main.go | 36 -----
Old/client_post/main.go | 21 ---
Old/go.mod | 38 -----
Old/os/main.go | 144 ------------------
Old/sever/main.go | 133 ----------------
README.md | 1 -
{New/gin => gin}/g.go | 0
{New/gin => gin}/sever/ser.go | 0
{New/gin => gin}/templates/index.html | 0
New/go.mod => go.mod | 0
New/go.sum => go.sum | 0
{New/gorm => gorm}/enum01.go | 0
{New/gorm => gorm}/enumWithSql.go | 22 +--
gorm/readme.md | 3 +
{New/gorm => gorm}/sql01.go | 0
{New/gorm => gorm}/sql02.go | 0
{New/gorm => gorm}/sql03.go | 0
{New/gorm => gorm}/sql04.go | 0
{New/gorm => gorm}/sql05.go | 0
{New/gorm => gorm}/sql06.go | 0
.../lock01.go" | 0
{New/note => note}/0314taskmd | 0
54 files changed, 17 insertions(+), 1355 deletions(-)
delete mode 100644 .idea/GoWebExercise.iml
rename {New/.idea => .idea}/dataSources.xml (100%)
rename {New/.idea => .idea}/excerise.iml (100%)
delete mode 100644 .idea/watcherTasks.xml
delete mode 100644 New/.idea/.gitignore
delete mode 100644 New/.idea/modules.xml
delete mode 100644 New/.idea/vcs.xml
delete mode 100644 Old/BookManage/controller/book.go
delete mode 100644 Old/BookManage/controller/user.go
delete mode 100644 Old/BookManage/dao/mysql/initsql.go
delete mode 100644 Old/BookManage/go.mod
delete mode 100644 Old/BookManage/go.sum
delete mode 100644 Old/BookManage/main.go
delete mode 100644 Old/BookManage/model/BookUser.go
delete mode 100644 Old/BookManage/model/book.go
delete mode 100644 Old/BookManage/model/user.go
delete mode 100644 Old/BookManage/router/api_router.go
delete mode 100644 Old/BookManage/router/init_router.go
delete mode 100644 Old/BookManage/router/test_router.go
delete mode 100644 Old/Gin/Gorm/test01/testsql01.go
delete mode 100644 Old/Gin/Gorm/test02/testsql02.go
delete mode 100644 Old/Gin/demo01_base/main.go
delete mode 100644 Old/Gin/demo02/main.go
delete mode 100644 Old/Gin/note/go.go
delete mode 100644 Old/Gin/router_layer/go.mod
delete mode 100644 Old/Gin/router_layer/go.sum
delete mode 100644 Old/Gin/router_layer/main.go
delete mode 100644 Old/Gin/router_layer/routers/manger.go
delete mode 100644 Old/Gin/router_layer/routers/redirect.go
delete mode 100644 Old/Gin/router_layer/routers/users.go
delete mode 100644 Old/client_get/main.go
delete mode 100644 Old/client_post/main.go
delete mode 100644 Old/go.mod
delete mode 100644 Old/os/main.go
delete mode 100644 Old/sever/main.go
rename {New/gin => gin}/g.go (100%)
rename {New/gin => gin}/sever/ser.go (100%)
rename {New/gin => gin}/templates/index.html (100%)
rename New/go.mod => go.mod (100%)
rename New/go.sum => go.sum (100%)
rename {New/gorm => gorm}/enum01.go (100%)
rename {New/gorm => gorm}/enumWithSql.go (84%)
create mode 100644 gorm/readme.md
rename {New/gorm => gorm}/sql01.go (100%)
rename {New/gorm => gorm}/sql02.go (100%)
rename {New/gorm => gorm}/sql03.go (100%)
rename {New/gorm => gorm}/sql04.go (100%)
rename {New/gorm => gorm}/sql05.go (100%)
rename {New/gorm => gorm}/sql06.go (100%)
rename "New/go\345\237\272\347\241\200/lock01.go" => "go\345\237\272\347\241\200/lock01.go" (100%)
rename {New/note => note}/0314taskmd (100%)
diff --git a/.idea/GoWebExercise.iml b/.idea/GoWebExercise.iml
deleted file mode 100644
index 5e764c4..0000000
--- a/.idea/GoWebExercise.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/New/.idea/dataSources.xml b/.idea/dataSources.xml
similarity index 100%
rename from New/.idea/dataSources.xml
rename to .idea/dataSources.xml
diff --git a/New/.idea/excerise.iml b/.idea/excerise.iml
similarity index 100%
rename from New/.idea/excerise.iml
rename to .idea/excerise.iml
diff --git a/.idea/modules.xml b/.idea/modules.xml
index f999f48..cd11378 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..6c0b863 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
deleted file mode 100644
index a9e8697..0000000
--- a/.idea/watcherTasks.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/New/.idea/.gitignore b/New/.idea/.gitignore
deleted file mode 100644
index 35410ca..0000000
--- a/New/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/New/.idea/modules.xml b/New/.idea/modules.xml
deleted file mode 100644
index cd11378..0000000
--- a/New/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/New/.idea/vcs.xml b/New/.idea/vcs.xml
deleted file mode 100644
index 6c0b863..0000000
--- a/New/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Old/BookManage/controller/book.go b/Old/BookManage/controller/book.go
deleted file mode 100644
index b0b429f..0000000
--- a/Old/BookManage/controller/book.go
+++ /dev/null
@@ -1 +0,0 @@
-package controller
diff --git a/Old/BookManage/controller/user.go b/Old/BookManage/controller/user.go
deleted file mode 100644
index ab8a6e3..0000000
--- a/Old/BookManage/controller/user.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package controller
-
-import (
- sql "BookManage/dao/mysql"
- "BookManage/model"
- "fmt"
-
- "github.com/google/uuid"
-
- "github.com/gin-gonic/gin"
-)
-
-// 注册
-func RegisterHandle(c *gin.Context) {
- p := new(model.User)
- //参数校验。绑定
- if err := c.ShouldBindJSON(p); err != nil {
- c.JSON(400, gin.H{
- "err": err.Error(),
- "msg": "注册失败",
- })
- return
- }
- //入库:用户名和密码
- sql.DB.Create(&p)
- fmt.Println("zhuce", p)
- c.JSON(200, gin.H{
- "msg": "success",
- })
-}
-
-// 登录
-func LoginHandle(c *gin.Context) {
- p := new(model.User)
- //参数校验
- if err := c.ShouldBindJSON(p); err != nil {
- c.JSON(400, gin.H{
- "err": err.Error(),
- "msg": "登录失败",
- })
- return
- }
-
- fmt.Println("denglu", p)
- //判断用户的用户名和密码是否正确
- u := model.User{Username: p.Username, Password: p.Password}
-
- if rows := sql.DB.Where(&u).Row(); rows == nil {
- c.JSON(403, gin.H{
- "msg": "密码错误",
- })
- return
- }
- //if rows := sql.DB.Where(&u).RowsAffected; rows == 0 {
- // c.JSON(403, gin.H{
- // "msg": "密码错误",
- // })
- // return
- //}
- //uuid -- 随机生成一个字符串作为token
- token := uuid.New().String()
-
- sql.DB.Model(u).Update("token", token)
- c.JSON(200, gin.H{
- "msg": "登录成功",
- "token": token,
- })
-
- //更新用户token --- (tokens 忘记加s了,怪不得更新没有显示)
- sql.DB.Table("user").Model(&model.User{Username: p.Username, Password: p.Password}).Where("username = ?", p.Username).Update("tokens", token)
- fmt.Println(p.Username, "更新成功")
-}
diff --git a/Old/BookManage/dao/mysql/initsql.go b/Old/BookManage/dao/mysql/initsql.go
deleted file mode 100644
index d627686..0000000
--- a/Old/BookManage/dao/mysql/initsql.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package sql
-
-import (
- "BookManage/model"
- "fmt"
-
- booksql "gorm.io/driver/mysql"
- "gorm.io/gorm"
-)
-
-//booksql 是为防止命名重复,给驱动定义的别名
-
-// DB 定义全局变量,用于连接数据库
-var DB *gorm.DB
-
-func InitMySQL() {
- //1、连接数据库
- // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
- dsn := "root:root@tcp(116.62.160.30:1234)/BookManage?charset=utf8mb4&parseTime=True&loc=Local"
-
- db, err := gorm.Open(booksql.Open(dsn), &gorm.Config{})
-
- if err != nil {
- fmt.Println("数据库连接失败")
- fmt.Println(err)
- }
-
- DB = db
-
- //2、创建表
- if err := DB.AutoMigrate(model.Book{}, model.User{}); err != nil {
- fmt.Println("数据表创建失败")
- fmt.Println(err)
- }
-
-}
diff --git a/Old/BookManage/go.mod b/Old/BookManage/go.mod
deleted file mode 100644
index 3b48af1..0000000
--- a/Old/BookManage/go.mod
+++ /dev/null
@@ -1,39 +0,0 @@
-module BookManage
-
-go 1.20
-
-require (
- github.com/gin-gonic/gin v1.9.0
- gorm.io/driver/mysql v1.5.1
- gorm.io/gorm v1.25.1
-)
-
-require (
- github.com/bytedance/sonic v1.8.0 // indirect
- github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
- github.com/gin-contrib/sse v0.1.0 // indirect
- github.com/go-playground/locales v0.14.1 // indirect
- github.com/go-playground/universal-translator v0.18.1 // indirect
- github.com/go-playground/validator/v10 v10.11.2 // indirect
- github.com/go-sql-driver/mysql v1.7.0 // indirect
- github.com/goccy/go-json v0.10.0 // indirect
- github.com/google/uuid v1.3.0 // indirect
- github.com/jinzhu/inflection v1.0.0 // indirect
- github.com/jinzhu/now v1.1.5 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/klauspost/cpuid/v2 v2.0.9 // indirect
- github.com/leodido/go-urn v1.2.1 // indirect
- github.com/mattn/go-isatty v0.0.17 // indirect
- github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/pelletier/go-toml/v2 v2.0.6 // indirect
- github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
- github.com/ugorji/go/codec v1.2.9 // indirect
- golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
- golang.org/x/crypto v0.5.0 // indirect
- golang.org/x/net v0.7.0 // indirect
- golang.org/x/sys v0.5.0 // indirect
- golang.org/x/text v0.7.0 // indirect
- google.golang.org/protobuf v1.28.1 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
-)
diff --git a/Old/BookManage/go.sum b/Old/BookManage/go.sum
deleted file mode 100644
index 4249273..0000000
--- a/Old/BookManage/go.sum
+++ /dev/null
@@ -1,93 +0,0 @@
-github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
-github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA=
-github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
-github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8=
-github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k=
-github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
-github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
-github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
-github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
-github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
-github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU=
-github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s=
-github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
-github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
-github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA=
-github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
-github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
-github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
-github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
-github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
-github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
-github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
-github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
-github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
-github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU=
-github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
-golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
-golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
-golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw=
-gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o=
-gorm.io/gorm v1.25.1 h1:nsSALe5Pr+cM3V1qwwQ7rOkw+6UeLrX5O4v3llhHa64=
-gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
-rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
diff --git a/Old/BookManage/main.go b/Old/BookManage/main.go
deleted file mode 100644
index 2c3adec..0000000
--- a/Old/BookManage/main.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package main
-
-import (
- sql "BookManage/dao/mysql"
- "BookManage/router"
-
- "github.com/gin-gonic/gin"
-)
-
-func main() {
- //初始化mysql
- sql.InitMySQL()
-
- //r := gin.Default()
-
- r := router.InitRouter()
-
- r.GET("/", func(c *gin.Context) {
- c.String(200, "hello")
- })
-
- r.Run(":10086")
-}
diff --git a/Old/BookManage/model/BookUser.go b/Old/BookManage/model/BookUser.go
deleted file mode 100644
index 8aa98bf..0000000
--- a/Old/BookManage/model/BookUser.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package model
-
-/*
-*
- */
-type BookUser struct {
- UserID int32 `json:"user_id" gorm:"primary_key"`
- BookID int32 `json:"book_id" gorm:"primary_key"`
-}
diff --git a/Old/BookManage/model/book.go b/Old/BookManage/model/book.go
deleted file mode 100644
index d284d7a..0000000
--- a/Old/BookManage/model/book.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-type Book struct {
- Id int32 `json:"id" gorm:"primary_key"`
- BookName string `json:"name" gorm:"type:varchar(20);not null" binding:"required"`
- //Author string `json:"author" gorm:"type:varchar(20);not null" binding:"required"`
- Desc string `json:"desc"`
- User []User `gorm:"many2many:book_users;"`
-}
-
-func (Book) TableName() string {
- return "book"
-}
diff --git a/Old/BookManage/model/user.go b/Old/BookManage/model/user.go
deleted file mode 100644
index 2132d3f..0000000
--- a/Old/BookManage/model/user.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package model
-
-/**
-json:"id" 为了在返回json数据时,将id字段改为小写--反向解析的名字
-grom:"primary_key" 为了在数据库中,将id字段设置为主键
-gorm:"type:varchar(20);not null" 为了在数据库中,将username字段设置为varchar(20)类型,且不能为空
-binding:"required" 为了在绑定数据时,将username字段设置为必须的
-*/
-
-type User struct {
- Id int32 `json:"id" gorm:"primary_key"`
- Username string `json:"username" gorm:"type:varchar(20);not null" binding:"required"`
- Password string `json:"password" gorm:"type:varchar(20);not null" binding:"required"`
- Tokens string `json:"token" `
-}
-
-func (User) TableName() string {
- return "user"
-}
diff --git a/Old/BookManage/router/api_router.go b/Old/BookManage/router/api_router.go
deleted file mode 100644
index 4c8b030..0000000
--- a/Old/BookManage/router/api_router.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package router
-
-import (
- "BookManage/controller"
-
- "github.com/gin-gonic/gin"
-)
-
-func LoadAPIRouter(r *gin.Engine) {
- r.POST("/register", controller.RegisterHandle)
- r.POST("/login", controller.LoginHandle)
-}
diff --git a/Old/BookManage/router/init_router.go b/Old/BookManage/router/init_router.go
deleted file mode 100644
index 904f14f..0000000
--- a/Old/BookManage/router/init_router.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package router
-
-import "github.com/gin-gonic/gin"
-
-/*
- 加载其他路由文件中的路由
-*/
-
-// 初始化其他文件中的路由
-func InitRouter() *gin.Engine {
- //初始化Gin服务
- r := gin.Default()
- LoadTestRouter(r)
- LoadAPIRouter(r)
- return r
-}
diff --git a/Old/BookManage/router/test_router.go b/Old/BookManage/router/test_router.go
deleted file mode 100644
index 49b3511..0000000
--- a/Old/BookManage/router/test_router.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package router
-
-import "github.com/gin-gonic/gin"
-
-func LoadTestRouter(r *gin.Engine) {
- r.GET("/test", func(c *gin.Context) {
- c.String(200, "测试成功")
- })
-}
diff --git a/Old/Gin/Gorm/test01/testsql01.go b/Old/Gin/Gorm/test01/testsql01.go
deleted file mode 100644
index 1cff779..0000000
--- a/Old/Gin/Gorm/test01/testsql01.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package main
-
-import (
- "fmt"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
-)
-
-type User struct {
- Id uint `json:"id"`
- Name string `json:"name"`
- Age int64 `json:"age"`
- Password string `json:"password"`
-}
-
-// 3.1、定义模型
-type Player struct {
- gorm.Model
- ID uint `gorm:"primarykey" json:"id"`
- Name string `json:"name"`
- Age int64 `json:"age"`
- Game string `json:"game"`
-}
-
-func main() {
- //1、连接数据库
- // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
- dsn := "root:root@tcp(116.62.160.30:1234)/GormTest?charset=utf8mb4&parseTime=True&loc=Local"
-
- //2、定义数据库连接池
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
-
- if err != nil {
- fmt.Println("数据库连接失败")
- fmt.Println(err)
- }
-
- fmt.Println("数据库连接成功")
-
- //var players []Player
- var users []User
-
- //迁移,自动创建表
- //fmt.Println("表自动创建成功")
- //db.AutoMigrate(Player{})
-
- //db.Find(&players)
- //fmt.Println("开始查询")
- //for _, player := range players {
- // fmt.Printf("ID: %d, Name: %s, Age: %d, Game: %s\n", player.ID, player.Name, player.Age, player.Game)
- //}
- //fmt.Println("查询结束")
-
- db.Table("user").Find(&users)
- fmt.Println("开始查询")
- for _, user := range users {
- fmt.Printf("ID: %d, Name: %s, Age: %d, Password: %s\n", user.Id, user.Name, user.Age, user.Password)
- }
- fmt.Println("查询结束")
-
-}
diff --git a/Old/Gin/Gorm/test02/testsql02.go b/Old/Gin/Gorm/test02/testsql02.go
deleted file mode 100644
index 8b13199..0000000
--- a/Old/Gin/Gorm/test02/testsql02.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "fmt"
-
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
-)
-
-type Player struct {
- ID uint `gorm:"primarykey" json:"id"`
- Name string `json:"name"`
- Age int64 `json:"age"`
- GameID uint `json:"gameid" gorm:"column:gameid"`
- Game Game `gorm:"foreignKey:GameID;references:ID"`
-}
-
-type Game struct {
- ID int `gorm:"column:gameid" json:"gameid"`
- Name string `gorm:"column:game_name" json:"game_name"`
-}
-
-// 3.1、定义模型对应的表名
-func (Game) TableName() string {
- return "game"
-}
-
-func main() {
- //1、连接数据库
- // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
- dsn := "root:root@tcp(116.62.160.30:1234)/GormTest?charset=utf8mb4&parseTime=True&loc=Local"
-
- //2、定义数据库连接池
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
-
- if err != nil {
- fmt.Println("数据库连接失败")
- fmt.Println(err)
- }
-
- /**
- Association 查询关联,两步查询,先查询主表Player,再查询关联表Game
- */
- p := Player{}
- db.Table("players").Find(&p)
- fmt.Println("开始查询")
- fmt.Printf("ID: %d, Name: %s, Age: %d, Game: %d\n", p.ID, p.Name, p.Age, p.GameID)
- err = db.Model(&p).Table("game").Association("Game").Find(&p.Game)
- if err != nil {
- fmt.Println(err)
- }
- fmt.Println(p)
- fmt.Println("结构体转换成json")
- strPlayer, _ := json.Marshal(p)
- fmt.Println(string(strPlayer))
- fmt.Println("查询结束")
-
- /**
- Preload 查询关联,一步查询,先查询主表Player,再查询关联表Game
- */
- //var players = []Player{}
- //db.Table("players").Preload("gameid").First(&players)
- //fmt.Println("开始查询")
- //fmt.Println(players)
- ////for _, p := range players {
- //// fmt.Println(p)
- ////}
- //fmt.Println("结构体转换成json")
- //strPlayer, _ := json.Marshal(players)
- //fmt.Println(string(strPlayer))
- //fmt.Println("查询结束")
-
- /**
- 带条件的预加载插座
- */
- //var players = []Player{}
- //db.Where("id = ?", 2).Find(&players)
- //fmt.Printf("ID: %d, Name: %s, Age: %d, GameId: %d\nGame :%s\n", players[0].ID, players[0].Name, players[0].Age, players[0].GameID, players[0].Game.Name)
-
- //var games = []Game{}
- //db.Where("gameid = ?", 2).Find(&games)
- //fmt.Printf("ID: %d, Name: %s\n", games[0].ID, games[0].Name)
-
-}
diff --git a/Old/Gin/demo01_base/main.go b/Old/Gin/demo01_base/main.go
deleted file mode 100644
index 173242a..0000000
--- a/Old/Gin/demo01_base/main.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package main
-
-import "github.com/gin-gonic/gin"
-
-/**
- * @Description:Gin框架练习
- */
-func main() {
-
- //1.路由
- /**
- * @Description:创建一个默认的路由引擎
- * @return *Engine 容器对象,包含路由、中间件和配置等信息
- */
- r := gin.Default()
-
- //2.绑定路由规则,执行的函数
- /**
- * @Description:gin.Context,封装了request和response
- * @param relativePath string
- * @param handlerFunc ...HandlerFunc--视图函数
- */
- r.GET("/ping", func(c *gin.Context) {
- //响应数据
- /**
- 第一步:解析get/post请求的参数
- 第二步:处理业务逻辑
- */
- c.String(200, "pong")
-
- /**
- * @Description:JSON序列化
- * @param code int
- * @param obj interface{}
- */
- //c.JSON(200, gin.H{
- // "message": "pong",
- //})
- })
-
- //3.启动服务--监听端口
- /**
- 对 net/http ListenAndServe(addr,engine)的封装
- */
-
- r.Run(":8008")
-
-}
diff --git a/Old/Gin/demo02/main.go b/Old/Gin/demo02/main.go
deleted file mode 100644
index 1dcaaf6..0000000
--- a/Old/Gin/demo02/main.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package main
-
-import (
- "fmt"
- "github.com/gin-gonic/gin"
- "net/http"
- "strings"
-)
-
-type User struct {
- //post数据的字段名必须和json的key一致,否则无法绑定
- //binding:"required"表示必须要传递该参数
- Name string `json:"name" binding:"required"`
- Password string `json:"password"`
-}
-
-/**
- * @Description:Gin框架练习
- */
-func main() {
-
- r := gin.Default()
-
- //01基本路由
- /**
- r.GET("/ping", func(c *gin.Context) {
- c.JSON(200, gin.H{
- "message": "pong",
- })
- })
- */
-
- //02API路由(带参) http.StatusOK==200
- r.GET("/user/:name/*action", func(c *gin.Context) {
- name := c.Param("name")
- action := c.Param("action")
- //截取/
- action = strings.Trim(action, "/")
- c.String(http.StatusOK, name+" 正在 "+action)
- })
-
- //03URL路由
- r.GET("/user", func(c *gin.Context) {
- //获取值,如果没有,则返回nil
- name1 := c.Query("name1")
- //获取值,如果没有,则返回默认值
- name2 := c.DefaultQuery("name2", "(默认名)jack")
- c.String(http.StatusOK, fmt.Sprintf("hello %s 和 %s", name1, name2))
- })
-
- //04表单路由
- /**
- shouldBind方法可以根据请求头中content-type的类型来做不同的binding操作
- 可以获取到get、post、put、delete等请求方式的参数
- 并且可以根据参数的类型来做不同的binding操作(进行校验)
- */
- r.POST("/login", func(c *gin.Context) {
- //c.HTML(http.StatusOK, "login.html", nil)
- var user User
- if err := c.ShouldBind(&user); err != nil {
- fmt.Printf("请求错误:%s", err.Error())
- c.String(http.StatusOK, "表单路由错误\t")
- }
- fmt.Println(user.Name, user.Password)
- c.String(http.StatusOK, fmt.Sprintf("用户:%v", user))
- })
-
- r.Run(":8008")
-
-}
diff --git a/Old/Gin/note/go.go b/Old/Gin/note/go.go
deleted file mode 100644
index 59e2303..0000000
--- a/Old/Gin/note/go.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package note
-
-/**
-学习资料
-http://v5blog.cn/go/
-*/
-
-/**
- 1、初始化项目
-go mod init router_layer //初始化项目
-go mod tidy //整理依赖包,删除不用的依赖包--更新项目中使用的模块
-go get //下载依赖包
-go mod vendor go mod download go mod verify
-go mod graph go mod edit go mod why
-
-go build //打包项目
-go build -o router_layer.exe //指定打包文件名
-
-*/
-
-/**
-go env 检查go的环境变量
-go env -w GOPROXY=https://goproxy.cn,direct 设置代理
-go env -w GO111MODULE=on 开启go mod
-go env set GO111MODULE 查看os设置值
-
-*/
-
-/**
-go get 参数 用法说明
-
-go get 下载保存目录:$GOPATH/src
-如果设置有多个GOPATH,则保存在第一个GOPATH目录中。
-
--a 下载所有依赖包
--t 同时下载命令行指定包的测试代码(测试包)
--f 忽略掉对已下载代码包的导入路径的检查
--insecure 允许命令在非安全的scheme(如HTTP)下执行get命令
--fix 在下载代码包后先执行修正动作,而后再进行编译和安装,根据当前GO版本对所下载的模块(包)代码做语法修正
-
--get-mode 指定下载模式,可选值有:fetch、update、readonly
--get-vcs 指定下载版本控制系统,可选值有:git、hg、svn、bzr、fossil
--get-u 指定下载的模块(包)的版本,格式为:module[@version][=revision]
--get-d 指定下载的模块(包)的存放目录
--get-insecure 允许命令在非安全的scheme(如HTTP)下执行get命令
--get-json 以JSON格式输出get命令的结果
--get-mod 指定下载的模块(包)的版本,格式为:module[@version][=revision]
--get-v 打印出所下载的包名
--get-x 打印输出,get 执行过程中的具体命令
--get-tags 指定下载的模块(包)的版本,格式为:module[@version][=revision]
-*/
-
-/**
-Engine 是 gin 的核心,包含了路由、中间件和配置等信息。
-
-Engine.tree 是一个 Radix Tree,用来保存路由信息、Handle方法的映射。
-
-Engine.groups 是一个数组,用来保存分组信息。
-
-Engine.handlers 是一个 HandlersChain,用来保存中间件信息。
-
-Context 是 gin 的上下文,每个请求都会创建一个 Context,用来保存请求的信息,比如请求的 method、path、post 参数、query 参数等。
-其中Handlers是储存处理请求时的中间件和处理方法的数组,index是当前执行的中间件或处理方法的索引。
-
-
-*/
diff --git a/Old/Gin/router_layer/go.mod b/Old/Gin/router_layer/go.mod
deleted file mode 100644
index d4e1ec6..0000000
--- a/Old/Gin/router_layer/go.mod
+++ /dev/null
@@ -1,31 +0,0 @@
-module router_layer
-
-go 1.20
-
-require github.com/gin-gonic/gin v1.9.0
-
-require (
- github.com/bytedance/sonic v1.8.0 // indirect
- github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
- github.com/gin-contrib/sse v0.1.0 // indirect
- github.com/go-playground/locales v0.14.1 // indirect
- github.com/go-playground/universal-translator v0.18.1 // indirect
- github.com/go-playground/validator/v10 v10.11.2 // indirect
- github.com/goccy/go-json v0.10.0 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/klauspost/cpuid/v2 v2.0.9 // indirect
- github.com/leodido/go-urn v1.2.1 // indirect
- github.com/mattn/go-isatty v0.0.17 // indirect
- github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/pelletier/go-toml/v2 v2.0.6 // indirect
- github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
- github.com/ugorji/go/codec v1.2.9 // indirect
- golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
- golang.org/x/crypto v0.5.0 // indirect
- golang.org/x/net v0.7.0 // indirect
- golang.org/x/sys v0.5.0 // indirect
- golang.org/x/text v0.7.0 // indirect
- google.golang.org/protobuf v1.28.1 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
-)
diff --git a/Old/Gin/router_layer/go.sum b/Old/Gin/router_layer/go.sum
deleted file mode 100644
index eb5b44a..0000000
--- a/Old/Gin/router_layer/go.sum
+++ /dev/null
@@ -1,105 +0,0 @@
-github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
-github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
-github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
-github.com/bytedance/sonic v1.8.0 h1:ea0Xadu+sHlu7x5O3gKhRpQ1IKiMrSiHttPF0ybECuA=
-github.com/bytedance/sonic v1.8.0/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
-github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
-github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
-github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8=
-github.com/gin-gonic/gin v1.9.0/go.mod h1:W1Me9+hsUSyj3CePGrd1/QrKJMSJ1Tu/0hFEH89961k=
-github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
-github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
-github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
-github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
-github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
-github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU=
-github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s=
-github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA=
-github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
-github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
-github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
-github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
-github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
-github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
-github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
-github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
-github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
-github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU=
-github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU=
-golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
-golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
-golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
-golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
diff --git a/Old/Gin/router_layer/main.go b/Old/Gin/router_layer/main.go
deleted file mode 100644
index 0a20e7b..0000000
--- a/Old/Gin/router_layer/main.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package main
-
-import (
- "github.com/gin-gonic/gin"
-
- //go mod 文件中指定的路径
- "router_layer/routers"
-)
-
-func main() {
-
- r := gin.Default()
-
- routers.LoadUsers(r)
- routers.LoadMandges(r)
- routers.LoadRedirect(r)
-
- r.Run(":8008")
-}
diff --git a/Old/Gin/router_layer/routers/manger.go b/Old/Gin/router_layer/routers/manger.go
deleted file mode 100644
index 2a27d92..0000000
--- a/Old/Gin/router_layer/routers/manger.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package routers
-
-import (
- "github.com/gin-gonic/gin"
- "net/http"
- "strings"
-)
-
-func LoadMandges(e *gin.Engine) {
- e.GET("/manger/:name/*action", MangerHandler)
-}
-
-func MangerHandler(c *gin.Context) {
- name := c.Param("name")
- action := c.Param("action")
- //截取/
- action = strings.Trim(action, "/")
- c.String(http.StatusOK, "路由分层--manger层\n")
- c.String(http.StatusOK, "管理员"+name+" 正在 "+action)
-}
diff --git a/Old/Gin/router_layer/routers/redirect.go b/Old/Gin/router_layer/routers/redirect.go
deleted file mode 100644
index 6f251fe..0000000
--- a/Old/Gin/router_layer/routers/redirect.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package routers
-
-import (
- "github.com/gin-gonic/gin"
- "net/http"
- "time"
-)
-
-func LoadRedirect(e *gin.Engine) {
- e.GET("/redirect1", func(c *gin.Context) {
- //1
- c.String(200, "重定向即将开始,倒数3秒\n")
- time.Sleep(3 * time.Second)
- //2
- c.Redirect(http.StatusMovedPermanently, "http://www.bilibili.com/")
- //1和2不能同时启动吗
- })
-}
diff --git a/Old/Gin/router_layer/routers/users.go b/Old/Gin/router_layer/routers/users.go
deleted file mode 100644
index 026b129..0000000
--- a/Old/Gin/router_layer/routers/users.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package routers
-
-import (
- "github.com/gin-gonic/gin"
- "net/http"
- "strings"
-)
-
-func LoadUsers(e *gin.Engine) {
- e.GET("/user/:name/*action", UserHandler)
-}
-
-func UserHandler(c *gin.Context) {
- name := c.Param("name")
- action := c.Param("action")
- //截取/
- action = strings.Trim(action, "/")
- c.String(http.StatusOK, "路由分层--user层\n")
- c.String(http.StatusOK, "用户"+name+" 正在 "+action)
-
-}
diff --git a/Old/client_get/main.go b/Old/client_get/main.go
deleted file mode 100644
index 5bb7826..0000000
--- a/Old/client_get/main.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package main
-
-import (
- "fmt"
- "io/ioutil"
- "net/http"
- "net/url"
-)
-
-/*
-*
-使用net/http包
-作为web的客户端发送get请求
-*/
-func main() {
-
- //1.直接通过url拼接url字符串
- //apiUrl := "http://localhost:8008/req/get?age=24&name=zhang&password=code"
- apiUrl := "http://127.0.0.1:8008/req/get"
-
- //2.通过url.Parse进行url解析
- data := url.Values{}
- //中文会乱码
- data.Set("name", "zhang")
- data.Set("password", "code2")
- data.Set("age", "24")
- u, _ := url.ParseRequestURI(apiUrl)
- u.RawQuery = data.Encode()
- fmt.Println("请求的地址:", u.String())
- resp, err := http.Get(u.String())
- if err != nil {
- fmt.Println(err)
- }
- body, _ := ioutil.ReadAll(resp.Body)
- fmt.Println(string(body))
-}
diff --git a/Old/client_post/main.go b/Old/client_post/main.go
deleted file mode 100644
index 96ea2fe..0000000
--- a/Old/client_post/main.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package main
-
-import (
- "fmt"
- "io/ioutil"
- "net/http"
- "strings"
-)
-
-func main() {
- url := "http://127.0.0.1:8008/req/post"
- //模拟form表单提交数据 content-type:application/x-www-form-urlencoded
- //传json数据: json content-type:application/json
- contentType := "application/json"
-
- data := `{"name":"jack","password":"code2","age":24}`
-
- resp, _ := http.Post(url, contentType, strings.NewReader(string(data)))
- body, _ := ioutil.ReadAll(resp.Body)
- fmt.Println(string(body))
-}
diff --git a/Old/go.mod b/Old/go.mod
deleted file mode 100644
index c87ef1a..0000000
--- a/Old/go.mod
+++ /dev/null
@@ -1,38 +0,0 @@
-module GoWebExercise
-
-go 1.20
-
-require (
- github.com/gin-gonic/gin v1.9.0
- gorm.io/driver/mysql v1.5.1
- gorm.io/gorm v1.25.1
-)
-
-require (
- github.com/bytedance/sonic v1.8.8 // indirect
- github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
- github.com/gin-contrib/sse v0.1.0 // indirect
- github.com/go-playground/locales v0.14.1 // indirect
- github.com/go-playground/universal-translator v0.18.1 // indirect
- github.com/go-playground/validator/v10 v10.13.0 // indirect
- github.com/go-sql-driver/mysql v1.7.1 // indirect
- github.com/goccy/go-json v0.10.2 // indirect
- github.com/jinzhu/inflection v1.0.0 // indirect
- github.com/jinzhu/now v1.1.5 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/klauspost/cpuid/v2 v2.2.4 // indirect
- github.com/leodido/go-urn v1.2.4 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/pelletier/go-toml/v2 v2.0.7 // indirect
- github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
- github.com/ugorji/go/codec v1.2.11 // indirect
- golang.org/x/arch v0.3.0 // indirect
- golang.org/x/crypto v0.9.0 // indirect
- golang.org/x/net v0.10.0 // indirect
- golang.org/x/sys v0.8.0 // indirect
- golang.org/x/text v0.9.0 // indirect
- google.golang.org/protobuf v1.30.0 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
-)
diff --git a/Old/os/main.go b/Old/os/main.go
deleted file mode 100644
index f165a0b..0000000
--- a/Old/os/main.go
+++ /dev/null
@@ -1,144 +0,0 @@
-package main
-
-import (
- "fmt"
- "os"
-)
-
-func main() {
-
- //打印当前目录
- //PrintCurrentPath()
-
- //查看当前目录下是否存在Test_Dir文件夹,不存在则创建文件夹
- //fmt.Println("当前目录下是否存在Test_Dir文件夹")
- //_, err := os.Stat("Test_Dir")
- //if err != nil {
- // fmt.Println("文件夹不存在")
- // //创建文件夹
- // os.Mkdir("Test_Dir", 0777)
- //} else {
- // fmt.Print("\t文件夹存在")
- //}
-
- //切换路径
- //os.Chdir("./Test_Dir ")
- //PrintCurrentPath()
-
- //创建文件
- //fmt.Println("创建文件")
- //os.Create("./test1.txt")
- //PrintCurrentPathFile()
-
- //重命名文件
- //fmt.Println("重命名文件")
- //os.Rename("./test1.txt", "./test2.txt")
- //PrintCurrentPathFile()
-
- //删除文件
- //fmt.Println("删除文件")
- //os.Remove("./test2.txt")
- //PrintCurrentPathFile()
-
- //删除当前文件夹下的所有文件
- //fmt.Println("删除当前文件夹下的所有文件")
- //os.RemoveAll("./Test_Dir")
-
- //删除当前文件夹
- //fmt.Println("删除当前文件夹")
- //os.Chdir("../")
- //os.Remove("Test_Dir")
- //PrintCurrentPath()
-
-}
-
-// 打印当前路径
-func PrintCurrentPath() {
- fmt.Println("当前路径")
- fmt.Println(os.Getwd())
-}
-
-// 查看当前路径下的文件
-func PrintCurrentPathFile() {
- fmt.Println("当前路径下的文件")
- file, _ := os.Open(".")
- names, _ := file.Readdirnames(0)
- for _, name := range names {
- fmt.Println(name)
- }
-}
-
-/**
-O_RDONLY 打开只读文件
-O_WRONLY 打开只写文件
-O_RDWR 打开可读可写文件
-O_APPEND 写操作时将数据附加到文件尾部
-O_CREATE 如果不存在将创建一个新文件
-O_EXCL 和O_CREATE一起使用,文件必须不存在
-O_SYNC 打开文件用于同步I/O
-O_TRUNC 如果可能,打开时清空文件
-*/
-
-/**
-文件权限
-0777 所有用户都有读写执行权限
-0700 只有文件所有者有读写执行权限
-0666 所有用户都有读写权限
-0600 只有文件所有者有读写权限
-0444 所有用户都有读权限
-0400 只有文件所有者有读权限
-0222 所有用户都有写权限
-0200 只有文件所有者有写权限
-0111 所有用户都有执行权限
-0100 只有文件所有者有执行权限
-0000 所有用户都没有权限
-0007 所有用户都有读写执行权限
-0006 所有用户都有读写权限
-0005 所有用户都有读执行权限
-0004 所有用户都有读权限
-0003 所有用户都有写执行权限
-0002 所有用户都有写权限
-0001 所有用户都有执行权限
-
-文件权限的设置
-1.通过数字设置
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, 0666)
-2.通过常量设置
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, os.ModePerm)
-3.通过位运算设置
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, os.ModePerm|os.ModeTemporary)
-4.通过os.Chmod()设置
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, 0666)
- //设置文件权限
- os.Chmod("./test.txt", 0666)
-
-文件权限的获取
-1.通过os.Stat()获取
- fileInfo, err := os.Stat("./test.txt")
- fmt.Println(fileInfo.Mode())
-2.通过os.FileMode()获取
- file, err := os.Open("./test.txt")
- fileInfo, err := file.Stat()
- fmt.Println(fileInfo.Mode())
-
-文件权限的修改
-1.通过os.Chmod()修改
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, 0666)
- //设置文件权限
- os.Chmod("./test.txt", 0666)
-2.通过os.Chown()修改
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, 0666)
- //设置文件权限
- os.Chown("./test.txt", 0, 0)
-3.通过os.Chtimes()修改
- //创建文件
- file, err := os.OpenFile("./test.txt", os.O_CREATE, 0666)
- //设置文件权限
- os.Chtimes("./test.txt", time.Now(), time.Now())
-*/
diff --git a/Old/sever/main.go b/Old/sever/main.go
deleted file mode 100644
index 228bdbb..0000000
--- a/Old/sever/main.go
+++ /dev/null
@@ -1,133 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "fmt"
- "io/ioutil"
- "net/http"
- "strconv"
-)
-
-type User struct {
- Name string `json:"name"`
- Password string `json:"password"`
- Age int `json:"age"`
-}
-
-// 假设其为数据库中存储的数据
-var u0 = User{
- Name: "用户名",
- Password: "密码",
- Age: 24,
-}
-
-/*
-开发web的主要步骤
-1:路由
-2:处理函数
---解析请求的数据(获取对象的id信息等,发送给后端)
---响应数据(把从后端读取到的数据返回给前端或者请求方)
-*/
-func main() {
- //第一步:路由
- /*
- dealGetHandle : 处理函数(处理服务请求)
- */
- http.HandleFunc("/req/get", dealGetHandle)
- http.HandleFunc("/req/post", dealPostHandle)
-
- //第三步:启动服务
- /*
- addr: 当前server监听的端口号和ip
- handle:处理函数
- */
- http.ListenAndServe(":8008", nil)
-
-}
-
-func dealGetHandle(w http.ResponseWriter, r *http.Request) {
- //1解析请求数据
- /*
- r.URL.Query() 返回map[string][]string
- r.URL.Query() 从url请求参数
- */
- query := r.URL.Query()
- //1.1 通过字典下标 取 路由参数
- /*
- 如果get请求不带name参数,就会出错
- 暂时不知道怎么改
- */
- if len(query["name"][0]) > 0 {
- name1 := query["name"][0]
- fmt.Println("字典下标取 name:", name1)
- } else {
- name1 := "无"
- fmt.Println("字典下标取 name:", name1)
- }
-
- //1.2 通过get方法取值
- name2 := query.Get("name")
- age02 := query.Get("age")
- //把age转为int类型
- age2 := 0
- age2, _ = strconv.Atoi(age02)
- password2 := query.Get("password")
- fmt.Println("Get标取 name:", name2)
- fmt.Println("Get标取 password:", password2)
- fmt.Println("Get标取 age:", age2)
-
- //打印/r.URL.Query()的返回值
- //fmt.Println(query)
-
- //2响应数据
- //2.1直接返回数据
- _, err2 := w.Write([]byte("hello get\n"))
- if err2 != nil {
- return
- }
-
- //2.2解析数据库数据并返回
- var u1 = User{
- Name: name2,
- Password: password2,
- Age: age2,
- }
-
- //err := json.NewEncoder(w).Encode(u0)
- //if err != nil {
- // return
- //}
-
- err := json.NewEncoder(w).Encode(u1)
- if err != nil {
- return
- }
-
-}
-
-func dealPostHandle(w http.ResponseWriter, r *http.Request) {
-
- //1.1post请求从http的body中获取数据
- /*
- Go 1.16 版本开始,直接调用 io.ReadAll() 函数,
- 如果待拷贝数据的容量超过 512 字节,就会开始切片扩容。
- 数据量越大,扩容越频繁,性能受影响越大。
- 可以使用 io.Copy 函数来代替
- */
- bodyContent, _ := ioutil.ReadAll(r.Body)
- //byte数组转string
- postdata := string(bodyContent)
-
- var d User
- json.Unmarshal([]byte(postdata), &d)
- fmt.Printf("%T %v\n", bodyContent, bodyContent)
- fmt.Printf("body content:%s\n", postdata)
- fmt.Println("post请求已完成")
- //2响应数据
- //2.1直接返回数据
- w.Write([]byte("hello post\n"))
-
- //2.2解析body数据并返回响应内容
- json.NewEncoder(w).Encode(fmt.Sprintf("收到的名字,%s", d.Name))
-
-}
diff --git a/README.md b/README.md
index 7a15f40..b85ede9 100644
--- a/README.md
+++ b/README.md
@@ -4,4 +4,3 @@
goweb练习
-
diff --git a/New/gin/g.go b/gin/g.go
similarity index 100%
rename from New/gin/g.go
rename to gin/g.go
diff --git a/New/gin/sever/ser.go b/gin/sever/ser.go
similarity index 100%
rename from New/gin/sever/ser.go
rename to gin/sever/ser.go
diff --git a/New/gin/templates/index.html b/gin/templates/index.html
similarity index 100%
rename from New/gin/templates/index.html
rename to gin/templates/index.html
diff --git a/New/go.mod b/go.mod
similarity index 100%
rename from New/go.mod
rename to go.mod
diff --git a/New/go.sum b/go.sum
similarity index 100%
rename from New/go.sum
rename to go.sum
diff --git a/New/gorm/enum01.go b/gorm/enum01.go
similarity index 100%
rename from New/gorm/enum01.go
rename to gorm/enum01.go
diff --git a/New/gorm/enumWithSql.go b/gorm/enumWithSql.go
similarity index 84%
rename from New/gorm/enumWithSql.go
rename to gorm/enumWithSql.go
index d2975f1..42c1afd 100644
--- a/New/gorm/enumWithSql.go
+++ b/gorm/enumWithSql.go
@@ -1,6 +1,7 @@
package main
import (
+ "fmt"
"time"
)
@@ -80,19 +81,20 @@ func main() {
//})
// //INSERT INTO `djw07_day_infos` (`weekday`,`date`) VALUES (4,'2024-03-14 17:27:48.306')
- //var day []DayInfo
- //DB.Debug().Limit(3).Offset(2).Find(&day)
- //fmt.Println(day)
+ var day []DayInfo
+ DB.Debug().Limit(3).Offset(2).Find(&day)
+ fmt.Println(day)
//data, _ := json.Marshal(day)
//fmt.Println(string(data))
- var engine string
- result := DB.Raw(" SHOW TABLE STATUS WHERE `Name` = 'djw07_day_infos';\n ").Scan(&engine)
- if result.Error != nil {
- panic("failed to query table engine")
- }
- //
- //fmt.Printf("表使用的引擎:%s\n", engine)
+ //有问题
+ //var engine string
+ //result := DB.Raw(" SHOW TABLE STATUS WHERE `Name` = 'djw07_day_infos';\n ").Scan(&engine)
+ //if result.Error != nil {
+ // panic("failed to query table engine")
+ //}
+ ////
+ ////fmt.Printf("表使用的引擎:%s\n", engine)
}
diff --git a/gorm/readme.md b/gorm/readme.md
new file mode 100644
index 0000000..c4fe01a
--- /dev/null
+++ b/gorm/readme.md
@@ -0,0 +1,3 @@
+# 远程数据库
+本项目的数据库用的是阿里云的轻量服务器上的
+是用docker生成的mysql8.0
\ No newline at end of file
diff --git a/New/gorm/sql01.go b/gorm/sql01.go
similarity index 100%
rename from New/gorm/sql01.go
rename to gorm/sql01.go
diff --git a/New/gorm/sql02.go b/gorm/sql02.go
similarity index 100%
rename from New/gorm/sql02.go
rename to gorm/sql02.go
diff --git a/New/gorm/sql03.go b/gorm/sql03.go
similarity index 100%
rename from New/gorm/sql03.go
rename to gorm/sql03.go
diff --git a/New/gorm/sql04.go b/gorm/sql04.go
similarity index 100%
rename from New/gorm/sql04.go
rename to gorm/sql04.go
diff --git a/New/gorm/sql05.go b/gorm/sql05.go
similarity index 100%
rename from New/gorm/sql05.go
rename to gorm/sql05.go
diff --git a/New/gorm/sql06.go b/gorm/sql06.go
similarity index 100%
rename from New/gorm/sql06.go
rename to gorm/sql06.go
diff --git "a/New/go\345\237\272\347\241\200/lock01.go" "b/go\345\237\272\347\241\200/lock01.go"
similarity index 100%
rename from "New/go\345\237\272\347\241\200/lock01.go"
rename to "go\345\237\272\347\241\200/lock01.go"
diff --git a/New/note/0314taskmd b/note/0314taskmd
similarity index 100%
rename from New/note/0314taskmd
rename to note/0314taskmd
--
Gitee
From adb9e1daaa099fb2d1bdee9cf0696525c1524218 Mon Sep 17 00:00:00 2001
From: jack <1904650862@qq.com>
Date: Fri, 15 Mar 2024 00:02:23 +0800
Subject: [PATCH 4/5] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/vcs.xml | 2 +-
README.md | 2 +-
note/{0314taskmd => 0314task.md} | 0
3 files changed, 2 insertions(+), 2 deletions(-)
rename note/{0314taskmd => 0314task.md} (100%)
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 6c0b863..94a25f7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/README.md b/README.md
index b85ede9..624c20a 100644
--- a/README.md
+++ b/README.md
@@ -2,5 +2,5 @@
#### 介绍
goweb练习
-
+20230314 start
diff --git a/note/0314taskmd b/note/0314task.md
similarity index 100%
rename from note/0314taskmd
rename to note/0314task.md
--
Gitee
From 48c5fbefaadfd00d8064a93175b3dbb7eb03c18e Mon Sep 17 00:00:00 2001
From: jack <1904650862@qq.com>
Date: Fri, 15 Mar 2024 00:10:45 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 624c20a..23a8cae 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# GoWebExercise
+# goland练习
#### 介绍
-goweb练习
+goweb练习
20230314 start
--
Gitee