Сериализуемый Java, ObjectInputstream, не блокируя ввод-вывод

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

, Как только это сделано, modprobe только принимает имя модуля, поэтому бросьте путь и ".ko" расширение.

7
задан Mike 26 September 2009 в 16:58
поделиться

3 ответа

Оберните сериализованные экземпляры в протокол, который сообщает длину полезной нагрузки, а полезная нагрузка - это рассматриваемый экземпляр. Затем, как только вы узнаете, что у вас есть сегмент, представляющий полный экземпляр, вы можете безопасно использовать ObjectInputStream, зная, что он не будет блокироваться.

Такой протокол Первые 32 бита: длина полезной нагрузки Биты длины полезной нагрузки: сериализованные данные

Иногда я поражаюсь даже самого себя.

4
ответ дан 7 December 2019 в 20:37
поделиться

Вам нужно будет реализовать (или найти реализацию) InputStream , который читает из буфера, который вы можете добавить из другого потока.

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

-1
ответ дан 7 December 2019 в 20:37
поделиться

Это классика - как вы можете .read (), если читать нечего? NIO явно требует высокой производительности и посвящен достижению неблокирующего io. Попробуйте выполнить nio в Socket.read () - вы все равно получите либо операцию блокировки, либо провалете время ожидания ... никакие фантазии не приведут к появлению данных в «порту», ​​если вы не сгенерируете какие-то данные ...

final SecureRandom dataGenerator = SecureRandom.getInstance("SHA1PRNG");

final Integer range = new Integer( 'z' - 'a' );

for ( big loop ) 
{
   buffer.append( dataGenerator.nextInt ( range.intValue() + (int) 'a' ) );

// ............

do.something( buffer.toString() ); 

Теперь ваши навыки разработки меняются, даже если они находятся в ледяном темпе, но они двигаются.

try {
    // Create a read/writeable file channel
    File file = new File("filename");
    FileChannel channel = new RandomAccessFile(file, "rw").getChannel();

    // Create an output stream on the channel
    OutputStream os = Channels.newOutputStream(channel);

    // Create an inputstream on the channel
    InputStream is = Channels.newInputStream(channel);

    // Close the channel
    is.close();
} catch (IOException e) {
}

Message edit : Я понимаю ваш критический ответ, подождите, пока ваши двенадцать тысяч строк в CORBA попытаются реализовать readObjectNoData () (полезно для инициализации правильно десериализовал объекты, несмотря на «враждебный» или неполный исходный поток)

Ожидалось, что мой одноразовый псевдокод предоставит какой-то поток данных для декодирования, перезагрузки или чего-то еще - я перечитал ваш пост;

-2
ответ дан 7 December 2019 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: