go-study

beego学习

源码结构

         GitHub路径: https://github.com/astaxie/beego.官网地址:https://beego.me/.

bee命令

go get -u github.com/astaxie/beego下载beego

go get -u github.com/beego/bee下载bee

bee run -gendoc=true -downdoc=true热编译

bee generate docs自动生成swagger

Controller注解

@Title

接口的标题,用来标示唯一性,唯一,可选

格式:之后跟一个描述字符串

@Description

接口的作用,用来描述接口的用途,唯一,可选

格式:之后跟一个描述字符串

@Param

请求的参数,用来描述接受的参数,多个,可选

格式:变量名传输类型类型是否必须描述

传输类型:

类型:

变量名和描述是一个字符串

是否必须:true 或者false

string

int

int64

对象,这个地方大家写的时候需要注意,需要是相对于当前项目的路径.对象,例如models.Object表示models目录下的Object对象,这样bee在生成文档的时候会去扫描改对象并显示给用户改对象。

query 表示带在url串里面?aa=bb&cc=dd

form 表示使用表单递交数据

path 表示URL串中得字符,例如/user/{uid}那么uid就是一个path类型的参数

body 表示使用raw body进行数据的传输

header 表示通过header进行数据的传输

@Success

成功返回的code和对象或者信息

格式:code 对象类型信息或者对象路径

code:表示HTTP的标准statuscode200 201

对象类型:{object}表示对象,其他默认都认为是字符类型,会显示第三个参数给用户,如果是{object}类型,那么就会去扫描改对象,并显示给用户

对象路径和上面Param中得对象类型一样,使用路径.对象的方式来描述

@Failure

错误返回的信息,

格式: code 信息

code:同上Success

错误信息:字符串描述信息

@router

上面已经描述过支持两个参数,第一个是路由,第二个表示支持的HTTP方法

go命令

test

go test忽略log信息,go test -v冗长模式,打印实时的log信息

go test -(test.)v -(test.)run "Test_Caller_G"测试Test_Caller_G方法

go test -v  err_test.go测试并运行这个文件

go test -test.bench="Benchmark_The_Caller_G"

build

go build

go build main.go

go build -o unichain main.go

go语言

panic, recover——如何在go语言中优雅的处理错误

panic

1、内建函数

2、假如函数F中书写了panic语句,会终止其后要执行的代码,在panic所在函数F内如果存在要执行的defer函数列表,按照defer的逆序执行

3、返回函数F的调用者G,在G中,调用函数F语句之后的代码不会执行,假如函数G中存在要执行的defer函数列表,按照defer的逆序执行

4、直到goroutine整个退出,并报告错误



recover

1、内建函数

2、用来控制一个goroutinepanicking行为,捕获panic,从而影响应用的行为

3、一般的调用建议

a). defer函数中,通过recever来终止一个goroutinepanicking过程,从而恢复正常代码的执行

b). 可以获取通过panic传递的error

单元测试和性能测试

1.        单元测试原则:

a)        文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码

b)        你必须import testing这个包

c)        测试用例会按照源代码中写的顺序依次执行(也可以单独执行某个方法)

d)        所有的测试用例函数必须是Test开头,测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态

e)        测试格式:func TestXxx (t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。

f)         函数中通过调用testing.TErrorErrorfFailNowFatalFatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

2.        性能测试原则

a)        压力测试用例必须遵循如下格式,其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母

funcBenchmarkXXX(b *testing.B) { ... }

b)       go test不会默认执行压力测试的函数,如果要执行压力测试需要带上参数-test.bench,语法:-test.bench="test_name_regex",例如go test-test.bench=".*"表示测试全部的压力测试函数

c)       在压力测试用例中,请记得在循环体内使用testing.B.N,以使测试可以正常的运行

d)       文件名也必须以_test.go结尾

字符串分割和拼接   

1.        字符串分割

func main() {
 fmt.Println(strings.Split("a,b,c,d,e", ",")) //[a b cd e]
}

2.        字符串拼接

func main() {
 s := []string{"hello", "word", "xiaowei"}
 fmt.Println(strings.Join(s, "-")) // hello-word-xiaowei
}

JSON结构体序列化 

结构体字段首字母必须大写,否则不会被解析!!!

newmake

new 的作用是分配内存,并返回一个指向新分配类型零值的指针(*T)make 的作用是为slicemap chan 分配内存,初始化并返回引用(T)

引用和指针

指针是对象有址有值,值是地址,指向对象的地址。可以随意指向,也可为空指针

引用是别名常量指针,绑定对象,无法改变,也不可为空

gRPC-proto

安装

    git clonehttps://github.com/grpc/grpc-go.git %GOPATH%/src/google.golang.org/grpc

    git clone https://github.com/golang/net.git %GOPATH%/src/golang.org/x/net

    git clone https://github.com/golang/text.git%GOPATH%/src/golang.org/x/text

go get -ugithub.com/golang/protobuf/proto

    goget -u github.com/golang/protobuf/protoc-gen-go

    git clonehttps://github.com/google/go-genproto.git %GOPATH%/src/google.golang.org/genproto

    cd %GOPATH%/src/

    go install google.golang.org/grpc

编译命令

·        -I参数:指定import路径,可以指定多个-I参数,编译时按顺序查找,不指定时默认查找当前目录

·        --go_outgolang编译支持,支持以下参数

o    plugins=plugin1+plugin2 - 指定插件,目前只支持grpc,即:plugins=grpc

o    M参数 - 指定导入的.proto文件路径编译后对应的golang包名(不指定本参数默认就是.proto文件中import语句的路径)

o    import_prefix=xxx - 为所有import路径添加前缀,主要用于编译子目录内的多个proto文件,这个参数按理说很有用,尤其适用替代一些情况时的M参数,但是实际使用时有个蛋疼的问题导致并不能达到我们预想的效果,自己尝试看看吧

o    import_path=foo/bar - 用于指定未声明packagego_package的文件的包名,最右面的斜线前的字符会被忽略

o    末尾:编译文件路径 .proto文件路径(支持通配符)

protoc --go_out=plugins=grpc:. common.proto在当前目录下编译名为common.proto的文件

protoc --go_out=plugins=grpc:. unichain-go\protoc\orderer\service.proto编译指定目录下名为service.proto的文件

若编译时引用了其他的文件可能会报如下错误,只需要再命令上加入两个--proto_path即可,一个是引用的路径,一个是待编译文件的路径

protoc -I =C:\Users\dell-20\go\src\unichain-go\protoc\orderer --go_out=plugins=grpc:.unichain-go\protoc\orderer\service.proto

protoc --go_out=plugins=grpc:. protoc\gossip\message.proto

git流程

git clone [url] 下载源码1

git branch查看本地分支git branch -a包括本地和远程

git branch wangff-api创建名为wangff-api的分支2

git checkout wangff-api切换到wangff-api的分支3

git commit -a -m“abc将所有修改的源码提交,注释abc4

git push -u origin wangff-api推送到wangff-api的分支5

git branch -d wangff-api删除本地wangff-api分支

git branch -D wangff-api强制删除本地wangff-api分支

git fetch 拉取本地不存在的远程分支

git remote prune origin 清楚本地无效的远程分支

git push origin --delete wangff-api删除远程wangff-api分支

git pull -u origin wangff-api-mutli-params: wangff-api-mutli-params更新本地代码

Merge Request提交合并请求这里是在浏览器创建的6

进入分支

选中你想merge 的分支,点击Merge request

选择你要切换的分支

选完之后点击Comparebranches and continue

填写相关信息之后,点击Submitmerge request,之后相关责任人就可以看见并讨论处理

linux命令

cat /etc/os-release 查看操作系统相关信息

ubantu命令

xrandr查看当前系统分辨率和支持设置的分辨率

xrandr -s 1600x1200[_60.00]设置当前系统分辨率为1600x1200[刷新频率为60.00Hz]

cvt 1920 1080 60新增1920x1080 刷新频率为60的系统分辨率

ls -l 文件名称查看linux文件的权限

ls -ld 文件夹名称(所在目录)查看linux文件夹的权限

chmod [u/g/o/a][+/-/=][r/w/x]file指定某类用户的权限

·        [ u / g / o / a ] 为权限范围,其中
u
User,即文件或目录的拥有者
g
Group,即文件或目录的所属群组
o
Other,除了文件或目录拥有者和所属群组外,其他用户都属于这个范围
a
All,即全部用户

·        权限操作
+
表示增加权限
-
表示取消权限
=
表示取消之前的权限,并给予唯一的权限

·        权限代号
r
:读取权限,数字代号为“4”
w
:写入权限,数字代号为“2”
x
:执行权限,数字代号为“1”
-
:不具备任何权限,数字代号为“0”

·        file,文件名(路径)

chmod [xyz] file同时指定三类用户的权限

其中xyz分别指定UserGroupOther的权限;用三位二进制数表示 ” r , w , x”(注意顺序)三种权限,其中 0 代表没有该权限,1 代表有该权限,如 100 则表示,有 ‘r”权限,无 “w x”权限;再将这个三位的二进制数转为十进制,则是 x (yz)的值

chmod [xyz] -R file递归处理,修改文件的权限,包括子目录中的文件权限也会修改

创建新终端

gnome-terminal -x bash -c "sh ./run.sh;exec bash;"

-x 后面的为要在打开的终端中执行的脚本,根据需要自己修改就行了。
exec bash
是让打开的终端在执行完脚本后不关闭。

移动复制删除

mv [选项] 源文件或目录 目标文件或目录 移动

- i 交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答yn,这样可以避免误覆盖文件。
- f
禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖。为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用i选项

cp [选项] 源文件或目录 目标文件或目录 复制

- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d
拷贝时保留链接。
- f
删除已经存在的目标文件而不提示。
- i
f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p
此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r
若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- l
不作拷贝,只是链接文件。
  需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项

rm [选项] 文件… 删除

- f 忽略不存在的文件,从不给出提示。
- r
指示rm将参数中列出的全部目录和子目录均递归地删除。
- i
进行交互式删除。
  使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。为了防止这种情况的发生,可以使用i选项来逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。

中文输入法

打开系统设置,点击语言支持,然后弹出下面的框图,点击安装

在把下面的Keyboardinput method system:IBus改为fcitx,重启之后就可以了

lsof

lsof -i用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。root用户来执行lsof -i命令。lsof -i:端口号 用于查看某一端口的占用情况 

echo stat | nc 127.0.0.1 2181

通过nc 命令连接到指定的 ZK 服务器, 然后发送 stat 可以查看 ZK 服务的状态

find

通用格式:find pathname -options[-print -exec -ok]
例子:
find/ -name filename 再根目录里面搜索文件名为filename的文件
find/etc -name *s*在目录里面搜索带有s的文件
find/etc -name *S 在目录里面搜索以s结尾的文件
find/etc -name s*在目录里面搜索以s开头的文件
find/ -amin -10在系统中搜索最后10分钟访问的文件
find/ -atime -2查找在系统中最后48小时访问的文件
find/ -empty 查找在系统中为空的文件或者是文件夹
find/ -group groupname查找在系统中属于groupname的文件
find/ -mmin -5查找在系统中最后5分钟修改过的文件
find/ -mtime -1查找在系统中最后24小时修改过的文件
find/-nouser查找在系统中属于费用户的文件
find/ -user username 查找在系统中属于username的文件
find/ -ctime -1查找在系统中最后24小时被改变状态的文件
find/ -fstype type查找在系统中文件类型为?的文件
find/ -user user1name -or -useruser2name查找在系统中属于user1name或着属于user2name的文件
find/ -user user1name -and-user2name在系统中查找既属于user1name又属于user2name用户的文件.

apt-get

sudo apt-get install golang

apt-get --purge remove golang

# 删除软件及其配置文件

apt-get --purge remove <package>

# 删除没用的依赖包

apt-get autoremove <package>

# 此时dpkg的列表中有“rc”状态的软件包,可以执行如下命令做最后清理:

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

mongodb命令

Linux:

mongo -version 查看mongodb版本

service mongodb start  启动服务

service mongodb stop  停止服务

pgrep mongo -l 查看进程是否启动

show dbs 显示数据库列表

show collections 显示当前数据库中的集合(类似关系数据库中的表table

show users 显示所有用户

use yourDB 切换当前数据库至yourDB

db.help()  显示数据库操作命令

db.yourCollection.help()  显示集合操作命令,yourCollection是集合名

vscode安装

go插件安装

在安装go插件时,会自动更新很多依赖库文件,都是从Github更新下来,但是因为Github的文件中,多有应用go官网中的文件,导致,因为网络缘故,不能直接下载,导致安装失败,如下:

Installing github.com/nsf/gocode SUCCEEDED
Installing github.com/uudashr/gopkgs/cmd/gopkgs SUCCEEDED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/fatih/gomodifytags SUCCEEDED
Installing github.com/haya14busa/goplay/cmd/goplay SUCCEEDED
Installing github.com/josharian/impl FAILED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing sourcegraph.com/sqs/goreturns FAILED
Installing github.com/golang/lint/golint FAILED
Installing github.com/cweill/gotests/... FAILED
Installing github.com/derekparker/delve/cmd/dlv SUCCEEDED
 
8 tools failed to install.

这些失败的库,不是没有下载下来,而是以来的文件在go官网上,导致失败。以下为解决办法,

1、在%GOPATH%\src\ 目录下,建立golang.org 文件夹,并再新建x文件夹。  目录为 "%GOPATH\src\golang.org\x\"
2、完成目录切换后,开始下载插件包:
git clone https://github.com/golang/tools.git tools
3、执行完以后,会多一个tools文件夹。
4git clone https://github.com/golang/lint.git lint 
5、打开vsCode终端,切换到终端,进入“%GOPATH”目录,执行

go installgithub.com/ramya-rao-a/go-outline

go installgithub.com/acroca/go-symbols

go installgolang.org/x/tools/cmd/guru

go installgolang.org/x/tools/cmd/gorename

go get github.com/josharian/impl

go install github.com/josharian/impl

go install github.com/rogpeppe/godef

go install github.com/sqs/goreturns

go installgithub.com/golang/lint/golint

go installgithub.com/cweill/gotests/gotests

go install github.com/ramya-rao-a/go-outline

go installgithub.com/acroca/go-symbols

go installgolang.org/x/tools/cmd/guru

go installgolang.org/x/tools/cmd/gorename

go install github.com/josharian/impl

go install github.com/rogpeppe/godef

go install github.com/sqs/goreturns

go install github.com/golang/lint/golint

go get github.com/cweill/gotests/gotests

go installgithub.com/cweill/gotests/gotests

按此方法,可以安装成功。

govendor

依赖包管理

1.   安装插件

go get -u github.com/kardianos/govendor

2.   查看安装是否成功

govendor

3.   为项目增加依赖包

govendor add +external

4.   删除无用的依赖包

govendor remove +u

5.   查看项目依赖包状态(具体状态)

govendor list  (+u)

6.   下载依赖

govendor fetch github.com/tjfoc/gmsm

7.    

 

Status

Packagescan be specified by their "status".

                    +local    (l) packages in your project
                    +external (e) referenced packages in GOPATH but not in current project
                    +vendor   (v) packages in the vendor folder
                    +std      (s) packages in the standard library
 
                    +excluded (x) external packages explicitly excluded from vendoring
                    +unused   (u) packages in the vendor folder, but unused
                    +missing  (m) referenced packages but not found
 
                    +program  (p) package is a main package
 
                    +outside  +external +missing
                    +all      +all packages

 

go-seele

1.     启动:

/CMD/node/ 文件夹下

点击文件,打开WindowsPowerShell

键入命令go run .\main.go start -c.\cmd\node1.json

 

TBaas

Kafka命令

bin/zookeeper-server-start.sh config/zookeeper.properties &启动zookeeper bin/zookeeper-server-stop.sh 停止zookeeper

bin/kafka-server-start.sh config/server.properties &启动kafka bin/kafka-server-stop.sh停止kafka

bin/kafka-topics.sh --create --zookeeper localhost:2181--replication-factor 1 --partitions 1 --topic testtopic创建Topic bin/kafka-topics.sh--delete --zookeeper localhost:2181 --topic testtopic删除Topic

bin/kafka-console-producer.sh --broker-list localhost:9092 --topictesttopic运行producer

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topictesttopic --from-beginning运行customer

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topictesttopic 显示topicparitionlead节点等配置信息

bin/kafka-topics.sh --list --zookeeper localhost:2181 查看topic

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-listlocalhost:9092 --topic conntopic --time -1 查看当前集群中主题的最大偏移量

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-listlocalhost:9092 --topic conntopic --time -2 查看当前集群中主题的最小偏移量

docker命令

## List Docker CLI commands

docker

docker container --help

## Display Docker version and info

docker --version

docker version

docker info

##Createimage using this directory's Dockerfile 创建docker镜像并命名为friendlyhello

docker build -t friendlyhello .

## Execute Docker image 执行镜像、端口从4000映射到80、后台运行

docker run hello-world

docker run -p 4000:80 friendlyhello

docker run -d -p 4000:80 friendlyhello

## List Docker images  展示本地镜像

docker images

docker image ls

docker image rm <image id># Removespecified image from this machine

docker rmi REPOSITORY:TAG  # 删除指定的image

docker image rm $(docker image ls -a -q)# Remove all images from this machine

## List Docker containers (running, all,all in quiet mode) 显示镜像ID和运行信息

docker container ls

docker container ls -a

docker container ls --all

docker container ls –aq

docker container stop <CONTAINER ID>

docker container kill <hash>  # Force shutdown ofthe specified container

docker container rm <hash># Removespecified container from this machine

docker container rm $(docker container ls -a -q)# Remove all containers

重启docker

docker: Errorresponse from daemon: lstat/var/lib/docker/overlay2/467469c733b0c3121a197cd7c2c60a0923ac969a434256105cb4c98336b228ab:no such file or directory.

See 'docker run--help'.

1 . systemctl stop docker #停止docker服务 
2. rm -rf /var/lib/docker/* #
删除目录
3. systemctl start docker #
再启动docker服务
4. 
重新导入docker镜像
5. 
再启动镜像,成功。

编译docker

docker build -t appname .

docker run appname [params]

删除docker images中为none的镜像

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

docker images|grep none|awk '{print $3 }'|xargs docker rmi

docker kafka

docker pull wurstmeister/zookeeper  下载zookeeper  镜像

docker pull wurstmeister/kafka  下载kafka  镜像

docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper 启动zookeeper

docker run -d --name kafka --publish 9092:9092 \

 --link zookeeper \

 --envKAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \

 --env KAFKA_ADVERTISED_HOST_NAME=localhost\

 --envKAFKA_ADVERTISED_PORT=9092 \

 --volume/etc/localtime:/etc/localtime \

 wurstmeister/kafka:latest 启动kafka

docker exec -it ${CONTAINER ID} /bin/bash   进入kafka容器

bin/kafka-topics.sh --create --zookeeper 172.17.0.1:32772 --replication-factor1 --partitions 1 --topic conntopic   创建Topic

exit 退出容器

exec user process caused "no such file or directory"

那么到底是怎么回事?我们的Scratch容器内已经有静态链接的可执行文件。难道我们犯了什么错误?

事实证明,Go不是静态链接库的,或者至少不是所有的库。在Linux下,我们可以看到动态链接库用以下命令:

ldd unichain

输出:

1.     linux-vdso.so.1 => (0x00007fff039fe000

2.     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f61df30f000

3.     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f61def84000

4.     /lib64/ld-linux-x86-64.so.2 (0x00007f61df530000

为了创建静态链接的可执行文件,我们需要使用cgo编译器,而不是Go编译器。

CGO_ENABLED=0 go build -o unichian main.go

重新运行ldd命令:

输出:

not a dynamicexecutable

然后重新build docker ,运行即可

compose.yml

docker swarm init #初始化集群

docker stack deploy -c docker-compose_sample.ymlunichainlab   #开启

docker stack rm unichainlab   #关闭

docker swarm leave --force

 

docker-compose up

 

docker service ls

docker service logs --detailsunichainlab_zoo1

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
goroutine 342 [running]: sync.fatal({0xbdff5b, 0x20}) D:/Program Files (x86)/Go/src/runtime/panic.go:1031 +0x29 sync.(*RWMutex).Unlock(0x19f96d0) D:/Program Files (x86)/Go/src/sync/rwmutex.go:209 +0x57 go-study/models.sendMsg(0x0, {0x135fe0f0, 0x15, 0x15}) D:/go/go-study/models/Message.go:193 +0x70 go-study/models.Chat({0x12fe4500, 0x13bec360}, 0x130d0380) D:/go/go-study/models/Message.go:82 +0x3a0 go-study/service.SendUserMsg(0x13bec360) D:/go/go-study/service/userBasicService.go:237 +0x54 github.com/gin-gonic/gin.(*Context).Next(...) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/context.go:174 github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1(0x13bec360) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:102 +0x89 github.com/gin-gonic/gin.(*Context).Next(...) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/context.go:174 github.com/gin-gonic/gin.LoggerWithConfig.func1(0x13bec360) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/logger.go:240 +0xa7 github.com/gin-gonic/gin.(*Context).Next(...) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/context.go:174 github.com/gin-gonic/gin.(*Engine).handleHTTPRequest(0x13be80e0, 0x13bec360) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:620 +0x51b github.com/gin-gonic/gin.(*Engine).ServeHTTP(0x13be80e0, {0xd04140, 0x13c060a0}, 0x130d0380) D:/Program Files (x86)/Go/bin/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:576 +0x1c9 net/http.serverHandler.ServeHTTP({0x13d46000}, {0xd04140, 0x13c060a0}, 0x130d0380) D:/Program Files (x86)/Go/src/net/http/server.go:2947 +0x285 net/http.(*conn).serve(0x132d8360, {0xd048a0, 0x132f2738}) D:/Program Files (x86)/Go/src/net/http/server.go:1991 +0x67d created by net/http.(*Server).Serve D:/Program Files (x86)/Go/src/net/http/server.go:3102 +0x498
最新发布
06-02

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值