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, 否则的话, 如果有一个调用异常, 就会导致后面的调用收到影响。