README
¶
gitee.com/fierce_wolf/go-web-crawler
go编译器的安装
ubuntu20自带的版本,比较旧,go的编译器版本,至少使用1.22以及以上版本,所以下载go官网的版本
wget https://dl.google.com/go/go1.22.0.linux-arm64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-arm64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
source ~/.profile
IDEA的调试
在IDEA中,可以通过安装go的插件,进行安装调试。但是,IDEA插件市场上的dlv调试器,最高只支持到1.18版本。
所以,它调试新版本的GO,将出现可能调试错误的信息:WARNING: undefined behavior - version of Delve is too old for Go version 1.22 (maximum supported version 1.18)
这时候,可以通过下列命令,使用你安装的GO,编译出一个当前GO版本的调试器dlv.exe
go install github.com/go-delve/delve/cmd/dlv@latest
然后,你将GO目录下的dlv.exe复制出来,把IDEA目录下的dlv.exe替换掉,这时候调试工具的版本就匹配了。
IDEA的远程调试
在远程的LINUX环境中,安装delve
#在服务器上使用dlv引导你的程序,其中2345是IDEA上配置的远程debug端口,下面的前面的引导头,后面接你自己的代码程序命令
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec
然后在IDEA中选择Go Remote来远程debug
组件库的引用
go默认的GOPROXY是https://proxy.golang.org非常的缓慢,可以切换为国内的镜像goproxy.cn来解决
#go默认的GOPROXY是https://proxy.golang.org非常的缓慢,可以切换为国内的镜像goproxy.cn来解决
go env -w GOPROXY=https://goproxy.cn,direct
#查询最新可用版本
go list -m -versions gitee.com/fierce_wolf/go-fox-edge-common
#下载云端的git库和第三方的git库
go mod tidy
#可以本地测试自己的go工程代码
go run main.go
#也可以windows本地编译
go build -o main.exe
版本依赖问题
go的mod版本管理,并不完善,它的go mod tidy命令虽然会自动生成mod文件中的依赖包, 但是,它会自作主张的升级为mod中相关包的最新版本,这就导致了各个包之间的版本兼容性问题
解决办法就是在go mod tidy之后,直接go get具体的版本,进行版本降级
#例如执行go mod tidy后
go mod tidy
#golang.org/x/crypto v0.23.0,被go mod tidy自动升级为v0.26.0
#此时v0.26.0跟其他部件要求的go最小版本是不兼容的
#会提示这个错误:note: module requires Go 1.20
#在命令行进行可以使用指明v0.23.0版本的命令,进行版本降级到v0.23.0
go get golang.org/x/crypto@v0.23.0
#此时可能会产生新的依赖关系,缺失github.com/gabriel-vasile/mimetype/internal/charset@v1.4.3
#那么进行go get这个缺失的版本
go get github.com/gabriel-vasile/mimetype/internal/charset@v1.4.3
SQLite3引入后的GCC问题
SQLite3是基于C语言开发的第三方数据库,在引用github.com/mattn/go-sqlite3组件的时候,这时候就不再是纯粹的GO语言程序了
此时,需要安装GCC环境,可以选择安装mingw64,推荐包x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0.7z
IDEA的命令行参数
redis.host=192.168.1.23 --env_dev=true --app_engine=native --app_type=kernel --app_name=manager-native --env_type=device --env_cpu_id= --env_database=sqlite3 --work_mode=local server.port=9101 redis.port=6379 redis.password=12345678 mysql.host=192.168.1.23 mysql.port=3306 mysql.username=fox-edge mysql.password=12345678 mysql.database=fox_edge param1=1234 param2=567
MQTT测试范例
发送:
topic:/fox/manager/c2e/BFEBFBFF000906A3/forward
{
"topic": "/fox/manager/c2e/F9509B1CE7B0F023/forward",
"uuid": "fe8a1b6e-8e54-4ccd-b646-31b108cd3228",
"resource": "/device/page",
"method": "post",
"body": {
"pageSize": 2,
"pageNum": 1
}
}
订阅:
topic:/fox/manager/e2c/forward/BFEBFBFF000906A3/#
{
"topic": "/fox/manager/c2e/BFEBFBFF000906A3/forward",
"uuid": "fe8a1b6e-8e54-4ccd-b646-31b108cd3228",
"method": "post",
"resource": "/device/page",
"body": {
"list": [{
"channelName": "channel-simulator",
"channelType": "simulator",
"createTime": 1732106118068,
"deviceName": "CE+T UPS设备-1000",
"deviceParam": {
"设备地址": 1
},
"deviceType": "CE+T UPS V3.0",
"extendParam": {},
"id": 1001,
"manufacturer": "深圳安圣电气有限公司",
"updateTime": 1732106142154
}, {
"channelName": "channel-simulator",
"channelType": "simulator",
"createTime": 1732106118068,
"deviceName": "CE+T UPS设备-999",
"deviceParam": {
"设备地址": 1
},
"deviceType": "CE+T UPS V3.0",
"extendParam": {},
"id": 1000,
"manufacturer": "深圳安圣电气有限公司",
"updateTime": 1732106142154
}],
"total": 1001
},
"msg": "",
"code": 200
}