Я работаю над некоторыми java-пакетами, которые должны принимать данные, разделять их и распространять на многих серверах онлайн. В соответствии с кодом пользователя (человека, использующего мои пакеты), я буду знать, какой вид буфера использовать. Я видел проект The Netty Project, в котором есть несколько интересных концепций, и другие решения, предложенные здесь на сайте, но это не совсем то, что я ищу. Думаю, я смогу реализовать свои требования, но мне больше нравится повторное использование.
Отделите реализацию от интерфейса. Изменение между двумя реализациями.
Фиксированный размер:
Растущий размер
Обновление 1: Решил выбрать библиотеку проекта Netty из-за множества других преимуществ.
Я хотел бы рассказать немного подробностей о своей системе. Мне нужно распределять большие объемы данных по сети серверов. У меня очень мало знаний относительно размера буферов. Иногда они могут быть фиксированного размера, иногда могут быть в режиме неизвестного размера. Я хочу иметь возможность разработать механизм, который бы пользовался преимуществами обоих миров. У меня есть определенное событие, когда я получаю конечный буфер для проверки.
Я понимаю, что буферы могут работать лучше, когда они непосредственно отображаются в память. Netty предоставляет мне такую возможность, но я не могу заставить этот буфер расти. У меня есть динамический буфер, который может расти - Netty обеспечивает и это.
Пара вопросов:
должен ли я скопировать буфер из динамического в прямой, если он будет изменен? Есть ли способ переключать режимы?
Что вы думаете о реализации класса, который хранит массив ChannleBuffers и предоставляет тот же интерфейс, что и ChannleBuffer, но при этом содержит "внутри" массив буферов, выделяя новую прямую память по мере необходимости.
Есть ли у вас другие решения на примете?