Мне поручили распараллелить GZip в Java 7, и я не уверен, что это возможно.
Задание такое:
Распараллелить gzip, используя заданное количество потоков
Каждый поток занимает блок размером 1024 КиБ, используя последний блок размером 32 КиБ из
Предыдущий блок как словарь. Существует возможность использовать
словарь
Чтение со стандартного ввода и вывода
Что я пробовал:
Я пробовал использовать GZIPOutputStream, но, похоже, не существует
способа изолировать и распараллелить deflate(), и я не могу получить доступ к
дефлятору для изменения словаря. Я попытался расширить GZIPOutputStream, но, похоже, он действовал не так, как мне хотелось, поскольку я все еще не мог изолировать сжатие/выкачивание.
Я пробовал использовать Deflater с включенной оберткой и FilterOutputStream
для вывода сжатых байтов, но мне не удалось заставить его правильно сжиматься
в формате GZip. Я сделал так, чтобы у каждого потока был компрессор, который записывал в массив байтов, а затем записывал в OutputStream.
Я не уверен, неправильно ли я использовал свои подходы или полностью использовал неправильные подходы. Может ли кто-нибудь указать мне правильное направление, какие классы использовать для этого проекта?
Мне поручили распараллелить GZip в Java 7, и я не уверен, что это возможно.
Задание такое: [list] [*]Распараллелить gzip, используя заданное количество потоков [*]Каждый поток занимает блок размером 1024 КиБ, используя последний блок размером 32 КиБ из Предыдущий блок как словарь. Существует возможность использовать словарь [*]Чтение со стандартного ввода и вывода [/list]
Что я пробовал:
[list] [*]Я пробовал использовать GZIPOutputStream, но, похоже, не существует способа изолировать и распараллелить deflate(), и я не могу получить доступ к дефлятору для изменения словаря. Я попытался расширить GZIPOutputStream, но, похоже, он действовал не так, как мне хотелось, поскольку я все еще не мог изолировать сжатие/выкачивание. [*]Я пробовал использовать Deflater с включенной оберткой и FilterOutputStream для вывода сжатых байтов, но мне не удалось заставить его правильно сжиматься в формате GZip. Я сделал так, чтобы у каждого потока был компрессор, который записывал в массив байтов, а затем записывал в OutputStream. [/list]
Я не уверен, неправильно ли я использовал свои подходы или полностью использовал неправильные подходы. Может ли кто-нибудь указать мне правильное направление, какие классы использовать для этого проекта?