@hirthwork

hirthwork

Меня зовут Пить
hirthwork

Всего лишь бабочка, которой снится, что она программист

Славный отзывчивый парень © https://t.me/point_im/161357

32 я читаю 94 меня читают
5371 постов
45492 комментариев
hirthwork
12 Oct 2018

Здравствуй, дорогой дневничок. Я заебался. Я себе сломал мозг об java.nio.ByteBuffer.
Чтобы не ломать каждый раз, сделал себе удобную пикчу, чтобы сразу было видно, что делает каждая операция.
Попробуйте и вы: https://tinystash.undef.im/...JZCFRvasdjVH7ze5.svg

12 Oct 2018

а нафига flip?
никогда не испытывал проблем с подобными штуками

12 Oct 2018

а нафига flip?

Эмммм. А что ты обычно делаешь с буфером после channel.read(bb)?

#mxeae/2 в ответ на /1
12 Oct 2018
  1. Вот был у тебя пустой буфер. [pos=0 lim=15 cap=15]
  2. Ты прочёл из канала 4 байта. У тебя стало [pos = 4, lim=15, cap=15]
  3. Если ты сделаешь compact(), то прочитанные 4 байта просто перетрутся байтиками с 5го по 15й
#mxeae/4 в ответ на /3
12 Oct 2018

ну да. прочитал, можно удолить прочитанное, чтобы писать в конец буфера

#mxeae/5 в ответ на /4
12 Oct 2018

Прежде чем прочитанное удалять, нужно с ним что-то сделать. А то получается, что зря читал.

#mxeae/6 в ответ на /5
12 Oct 2018

да, прочитал, десериализовал(в моём случае), отдал на обработку объект
а flip-то тут при чём?

#mxeae/7 в ответ на /6
12 Oct 2018

Каким образом ты десериализуешь данные из ByteBuffer после channel.read(bb)?

#mxeae/8 в ответ на /7
12 Oct 2018

поточно. например, через протобуф.
после этого остаётся буфер со сдвинутым указателем. с этого места будет прочитан следующий объект, если он влез в буфер

#mxeae/9 в ответ на /8
12 Oct 2018

КАК ТЫ БЛЯДЬ ДО ПРОЧИТАННЫХ ДАННЫХ ДОСТУКИВАЕШЬСЯ?

#mxeae/10 в ответ на /9
12 Oct 2018

Ты намеренно ускользаешь от ответа при помощи какой функции получаешь прочитанные данные из ByteBuffer?

#mxeae/11 в ответ на /9
12 Oct 2018

не, это ж поточная обработка. там сначала делают getFloat, потом getInt и так далее.
до прочитанных данных добираюсь с помощью get* или readчтототам.
ты мне лучше про флип расскажи

#mxeae/12 в ответ на /11
13 Oct 2018

Перед getFloat ты должен сделать flip, чтобы читать с pos = 0, иначе ты будешь читать из той позиции, которая идёт сразу после прочитанных данных

#mxeae/13 в ответ на /12
13 Oct 2018

понятно
меня-то устраивает читать с последней позиции. как начитаюсь, так можно перематывать

#mxeae/14 в ответ на /13

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.