Вопрос

Я отправляю идентификаторы объектов взад и вперед от клиента на сервер через механизм RPC GWT. Идентификаторы выходят из хранилища данных как длительные (8 байтов). Я думаю, что все мои удостоверения личности нуждаются только 4 байта, но что-то случайное мог случается, что дает мне 5 байт (или что-то еще) значение.

GWT будет умным о упаковке этих значений в некоторой кодировке переменной длины, которая сохранит пространство в среднем? Могу ли я указать, что это делают так где-то? Или я должен написать свой собственный код, чтобы скопировать подлет для INT и следить за теми исключительными ситуациями?

Спасибо ~

Это было полезно?

Решение

Как указано в GWT Документация.

длинная: JavaScript не имеет 64-битного интегрального типа, поэтому долгое потребность особого рассмотрения. Перед GWT 1.5 длинный тип был просто сопоставлен с интегральным диапазоном 64-битного плавающего значения JavaScript, давая длинные переменные фактический диапазон меньше, чем полные 64 бита. Начиная с GWT 1.5, длинные примитивы эмулируются как пара 32-битных целых чисел и надежно работают над всей 64-битным диапазоном. Переполнение эмулировано для соответствия ожидаемому поведению. Есть пара оговорки. Тяжелое использование длительных операций будет иметь влияние на производительность благодаря основному эмуляции. Кроме того, длинные примитивы не могут быть использованы в коде JSNI, потому что они не являются собственным цифровым типом JavaScript.

Если ваши идентификаторы могут вписаться в целое число, вы можете быть лучше с этим. В противном случае, если вы используете DTO, сделайте IDS двойным, что на самом деле существует в JavaScript.

Другие советы

GWT использует сжатие GZIP для ответов с полезной нагрузкой 256 байт или больше. Это должно хорошо работать, если у вас есть много нулевых байтов в вашем ответе.

От RemoteServiceServlet.shouldCompressResponse:

Определяет, следует ли ответ на заданный запрос сервлета или не должен быть сжатым GZIP. Этот метод вызывается только в случаях, когда запросность принимает кодировку GZIP.

Эта реализация в настоящее время возвращает True, если оценочная длина байта строки ответа длиннее 256 байтов. Подклассы могут переопределить эту логику.

Итак, сервер сначала проверяет, принимает ли запросность (браузер, обычно) GZIP кодировки. Внутренне, java.util.zip.GZIPOutputStream используется - см. RPCServerUtils. Отказ На стороне клиента, это работа браузера для Декомпресс погасную полезную нагрузку - Поскольку это делается в родном коде, это должно быть довольно быстро.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top