- 1、gorm相关问题
- (1)gorm`0或nil的值不会被更新`
- 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
参考博文: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]=74、在接口开发过程中,切片不使用make初始话,程序崩溃
虽然可以赋值,但是初始值为nil,会导致前端漏判,程序崩溃
原理同上个问题
参考:go net/http Client使用
6、字符string串转time.Time参考:解决golang时间字符串转time.Time的坑
timeFormatT, _ := time.ParseInLocation("2006-01-02", "你的日期字符串", time.Local)



