因此,我在Go中构建了一个网络应用程序,我看到它Conn.Read
读入了我创建时使用的有限字节数组,make([]byte, 2048)
现在的
问题 是我不知道内容的确切长度,因此它可能是太多或不足。
我的问题是我如何才能读取准确的数据量。我认为我必须使用bufio
,但不确定。
这在很大程度上取决于您要执行的操作以及所期望的数据类型,例如,如果您只想读到EOF,则可以使用以下内容:
func main() {
conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
fmt.Println("dial error:", err)
return
}
defer conn.Close()
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
buf := make([]byte, 0, 4096) // big buffer
tmp := make([]byte, 256) // using small tmo buffer for demonstrating
for {
n, err := conn.Read(tmp)
if err != nil {
if err != io.EOF {
fmt.Println("read error:", err)
}
break
}
//fmt.Println("got", n, "bytes.")
buf = append(buf, tmp[:n]...)
}
fmt.Println("total size:", len(buf))
//fmt.Println(string(buf))
}
// edit:出于完整性考虑,@ fabrizioM提出了很棒的建议,这完全让我无视:
func main() {
conn, err := net.Dial("tcp", "google.com:80")
if err != nil {
fmt.Println("dial error:", err)
return
}
defer conn.Close()
fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
var buf bytes.Buffer
io.Copy(&buf, conn)
fmt.Println("total size:", buf.Len())
}
问题内容: 我有一个关于代码优化的问题(可以运行,但是太慢了……)。我正在阅读形式的输入 其中Xi,Yi是整数。我用于读取行,然后用于处理这些数字,如下所示: 问题在于,这种方法在处理大型数据集时似乎效率低下。您能否建议我做一些简单的改进(我听说可以使用一些整数分析int或regex)来提高性能?谢谢你的提示 编辑:也许我判断错了,必须在代码的其他地方进行一些改进… 问题答案: (更新的答案) 我
最好的方法是什么?
本文向大家介绍java遍历读取整个redis数据库实例,包括了java遍历读取整个redis数据库实例的使用技巧和注意事项,需要的朋友参考一下 redis提供了灵活的数据查询方式,最牛的就是key的搜索支持正则表达式。 jedis.keys(“*”);表示搜索所有key jedis.keys(“abc*”)表示搜索开头为abc的key数据 遍历了key就能遍历到value。 其实就是一个set r
问题内容: 是否有比以下方法更好的方法来将整个html文件读取为单个字符串变量: 问题答案: 有来自Apache Commons 的实用程序。 如果您使用的还有和。
问题内容: 如何使用Go中的函数从标准输入获取整数输入? 如果使用无法完成此操作,那么读取单个整数的最佳方法是什么? 问题答案: http://golang.org/pkg/fmt/#Scanf Go中包含的所有库都有充分的文档记录。 话虽如此,我相信 绝招