- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在考虑使用 gob ("encoding/gob") 在网络协议(protocol)中序列化数据,我一直在四处寻找,似乎找不到解决这些问题的方法:
消息框架 - gob 文档给人的印象是您可以简单地将 TCP 连接包装在 gob 解码器中并读取。但是,如果您只收到半条消息会怎样? gob 能否以某种方式处理这个问题,或者我是否被迫添加消息帧并将消息数据复制到缓冲区中以供 gob 反序列化?
不同类型的消息——协议(protocol)有不同类型的消息,gob 如何最好地处理这个问题?通过在每个 gob blob 之前有一个标识符来指示数据类型?通过将所有消息放入包含所有不同消息字段的“主”消息(将其减少为仅一种类型的消息)?我尝试了后者(更简单),它似乎有巨大的开销(>650 字节)。
最佳答案
The gob documentation gives the impression that you can simply wrap your TCP connection in a gob decoder and read away.
正确。该包旨在在编码器和解码器之间流式传输多个值。
But what happens if you only received half a message?
解码器调用底层的io.Reader获取数据。如果读取器无法返回数据,则读取器将返回错误。解码器将此错误返回给应用程序。
如果 io.Reader 返回错误,则无法恢复解码流。
Different types of messages
您可以对消息对进行编码,其中第一个消息告诉应用程序期望第二个消息的类型。
您还可以按照您的描述创建“主”类型。您看到的开销是每个流产生一次,而不是每个值一次。
关于越过电线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117999/
在 Facebook 上,他们似乎有一个阻止您加载他们网站的 iframe 的 block 。 当您这样做时,他们会锁定其网站的全部功能 example . 我只是想知道是否有人知道如何绕过它? 最佳
我只想在已经具有顶部和底部边框(1px 纯灰色)的 div 上添加一个左边框(5px 纯蓝色)。我希望 border-left 位于 border-top 和 border-bottom 之上,但浏览
我看到了这个效果here .滚动页面时,页面的主要内容部分会移动到 div 之上。 我尝试使用视差效果重新创建此效果,但徒劳无功。问题是使用视差,我只能更改同一 div 中的 2 个对象的速度。除此之
我正在为 iOS7 优化网站。我发现,在 safari mobile 上将方向更改为横向时,网站会全屏显示,但浏览器会阻止 View 顶部和底部的一些高度和宽度像素。该区域中的任何触摸或点击事件都不会
我有一个使用 devise 进行身份验证的应用程序。 ruby 1.9.2 上的 Rails 3,passenger 位于 nginx 之上。 这是我的问题:我注意到有时我的 session 会交叉。
我是一名优秀的程序员,十分优秀!