栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Goalng开发坑总结

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Goalng开发坑总结

文章目录
      • 1、gorm相关问题
        • (1)gorm`0或nil的值不会被更新`![在这里插入图片描述](https://img-blog.csdnimg.cn/86d7c5cfe28942e0975e0fda47b1e195.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP55S35a2pdG9t,size_20,color_FFFFFF,t_70,g_se,x_16)
      • 2、`dial tcp 10.**.**.**38:8090: connect: cannot assign requested address`
      • 3、[panic: assignment to entry in nil map](https://blog.csdn.net/weixin_44435110/article/details/122318015)
      • 4、在接口开发过程中,切片不使用make初始话,程序崩溃
      • 5、HTTP连接请求阻塞
      • 6、字符string串转time.Time

1、gorm相关问题 (1)gorm0或nil的值不会被更新 2、dial tcp 10.**.**.**38:8090: connect: cannot assign requested address

参考博文:https://blog.csdn.net/wenshuangzhu/article/details/44060901
原因:由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。是客户端的问题不是服务器端的问题。通过netstat,的确看到很多TIME_WAIT状态的连接。
查看链接超时的数量:netstat -ant|grep -i time_wait |wc -l
查看
查看链接超时:netstat -a|grep TIME_WAIT

修改参数:
$ vi /etc/sysctl.conf

# 添加或者修改
net.ipv4.tcp_timestamps=1 # 开启对TCP时间戳的支持
net.ipv4.ip_local_port_range = 10000     65000      -----意味着10000~65000端口可用
net.ipv4.tcp_fin_timeout=30 # 调低端口释放后的等待时间,默认为60s,修改为15~30s
net.ipv4.tcp_tw_reuse = 1 # 重新使用处于 TIME_WAIT 状态的套接字来进行新的连接,它通常比 tcp_tw_recycle 更安全
#net.ipv4.tcp_tw_recycle=1 # 快速回收socket资源,默认为0,修改为1;会导致主机状态(负载平衡和故障转移)出现一些问题,应谨慎使用。

改完后,执行命令“sysctl -p”使参数生效,不需要reboot。

参考:不要在linux上启用net.ipv4.tcp_tw_recycle参数

3、panic: assignment to entry in nil map

定义一个新的map,然后在map中添加键值对,却报了错误
assignment to entry in nil map

var dataMa map[int]int
dataMap[3]=7

golang中map是引用类型,应用类型的变量未初始化时默认的zero value是nil。直接向nil map写入键值数据会导致运行时错误panic: assignment to entry in nil map

因为在声明dataMap后并未初始化它,所以它的值是nil, 不指向任何内存地址。需要通过make方法分配确定的内存地址。程序修改后即可正常运行:

dataMap:=make(map[int]int)
dataMap[3]=7
4、在接口开发过程中,切片不使用make初始话,程序崩溃

虽然可以赋值,但是初始值为nil,会导致前端漏判,程序崩溃
原理同上个问题

5、HTTP连接请求阻塞

参考:go net/http Client使用

6、字符string串转time.Time

参考:解决golang时间字符串转time.Time的坑

timeFormatT, _ := time.ParseInLocation("2006-01-02", "你的日期字符串", time.Local)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号