Golang 线上常见问题记录

本文探讨Golang编程中常见的问题,包括避免使用ReadString、处理channel挂起、读写锁正确使用、命名管道注意事项及设定HTTP超时,提供实用的编程建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Golang程序常见的问题这里激励一下, 这些都是比较常见的问题。

尽量避免用ReadString

默认是从reader 六里面读取一个字符串, 知道读取到‘\n’为止, 这里, 最大能够读取的数据量是64K, 超过了64K就会出现错误。

hang住问题处理

channel的使用

常见的问题就是, 一个channel的一段负责向channel里面添加数据, 另一端负责从管道里面消费数据, 但是有可能消费端一直没有来得及消费掉数据, 导致队列里面的数据一直是旧的数据。
另一方面, 在读channel的时候, 要先检查channel是否已经被关闭了, 否则可能导致程序异常。

读写锁问题

常见问题是,一个线程加了所, 但是没有解锁, 其他线程一直等待所。比较好的做法是成对的使用lock和unlock函数, 确保锁定的过程集中在一个函数里面, 并且无论如何, 锁定以后解锁都不会丢失。

命名管道

通常在golang下面, 我们都会使用os/exec下面的command的Stderr, 需要注意的是, 我们在运行的程序中, 不能把各种info或者warning都写入到cerr或者stderr中, 不然导致程序输出端, 获得大量的信息。

使用http尽量是定超时时间

在调用很频繁的程序中, 就像监控数据采集或者节点存活检查, 需要在HTTP不同机器之间调用的时候, 设定timeout, 否则的话, 如果有一个调用异常, 就会导致后面的调用收到影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值