GWT 是否有效地序列化 java.lang.Longs?
我通过 GWT RPC 机制在客户端和服务器之间来回发送对象 ID。 id 以长整型(8 字节)形式从数据存储区中出来。我认为我所有的 id 都只需要 4 个字节,但是可能发生一些随机的事情,给我一个 5 字节(或其他)值。
GWT 是否会聪明地将这些值打包在某种可变长度编码中,从而平均节省空间?我可以指定它在某个地方这样做吗?或者我应该编写自己的代码将长整型复制为整数并注意那些特殊情况?
谢谢~
I'm sending object IDs back and forth from client to server through the GWT RPC mechanism. The ids are coming out of the datastore as Longs (8 bytes). I think all of my ids will only need 4 bytes, but something random could happen that gives me a 5-byte (or whatever) value.
Is GWT going to be smart about packing these values in some variable-length encoding that will save space on average? Can I specify that it do so somewhere? Or should I write my own code to copy the Longs to ints and watch out for those exceptional situations?
Thanks~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如 GWT 文档中所述。
如果你的 id 可以容纳在一个整数中,那么你的情况可能会更好。否则,如果您使用 DTO,请将 ids 设为双精度,这实际上存在于 Javascript 中。
As stated in the GWT documentation.
If your ids can fit in an Integer, you could be better off with that. Otherwise, if you're using a DTO, make the ids a double, which actually exists in Javascript.
GWT 对负载为 256 字节或更大的响应使用 gzip 压缩。如果您的响应中有很多零字节,那么这应该很有效。
来自
RemoteServiceServlet.shouldCompressResponse
:因此,服务器首先检查请求者(通常是浏览器)是否接受 GZIP 编码。在内部,
java.util。使用 zip.GZIPOutputStream
- 请参阅RPCServerUtils
。在客户端,浏览器的工作是解压缩 gzip 压缩的有效负载 - 因为这是在本机代码中完成的,应该相当快。GWT uses gzip compression for responses with a payload of 256 bytes or greater. That should work well if you have a lot of zero bytes in your response.
From
RemoteServiceServlet.shouldCompressResponse
:So, the server first checks if the requester (the browser, usually) accepts GZIP encoding. Internally,
java.util.zip.GZIPOutputStream
is used - seeRPCServerUtils
. On the client side, it's the browser's job to decompress the gzipped payload - since this is done in native code, it should be fairly quick.