Давайте видеть наш прогресс каждый день. Лао Ван предлагает вам составить наиболее полный список интервью по Java и серьезно заняться одним делом.
Эта статья является предыдущей статьей«Наиболее 200 самых распространенных вопросов на собеседовании по Java»Второй дополнительный модуль, первый модуль:«Java 200+ Вопросы для интервью дополняют модуль ThreadLocal».
1. Что такое Нетти?
Netty — это инфраструктура сетевого взаимодействия, разработанная на основе NIO (неблокирующий ввод-вывод, неблокирующий ввод-вывод).По сравнению с BIO (блокирующий ввод-вывод, блокирующий ввод-вывод) его производительность параллелизма значительно улучшена. Что похвально, так это то, что преимущества ремонтопригодности и производительности не теряются при обеспечении скорости и простоты использования.
2. Каковы характеристики Нетти?
- Высокий уровень параллелизма: Netty — это инфраструктура сетевой связи, разработанная на основе NIO (неблокирующий ввод-вывод, неблокирующий ввод-вывод).По сравнению с BIO (блокирующий ввод-вывод, блокирующий ввод-вывод) производительность параллелизма значительно улучшена.
- Быстрая передача: передача Netty основана на функции нулевого копирования, чтобы свести к минимуму ненужные копии памяти и добиться более эффективной передачи.
- Хорошая инкапсуляция: Netty инкапсулирует многие детали операций NIO и предоставляет простой в использовании интерфейс вызова.
3. Что такое Zero Copy в Netty?
Нулевая копия Netty в основном включает три аспекта:
- Получение и отправка ByteBuffer Netty использует DIRECT BUFFERS и использует прямую память вне кучи для чтения и записи Socket без необходимости во второй копии байтового буфера. Если традиционная память кучи (HEAP BUFFERS) используется для чтения и записи сокета, JVM скопирует буфер кучи памяти в прямую память, а затем запишет его в сокет. По сравнению с прямой памятью вне кучи, сообщение имеет дополнительную копию памяти буфера во время процесса отправки.
- Netty предоставляет комбинированный объект Buffer, который может объединять несколько объектов ByteBuffer.Пользователи могут работать с комбинированным буфером так же легко, как и с буфером, избегая традиционного способа объединения нескольких небольших буферов в один большой буфер путем копирования памяти.
- Передача файлов Netty использует метод transferTo, который может напрямую отправлять данные файлового буфера на целевой канал, избегая проблемы копирования памяти, вызванной традиционным методом циклической записи.
4. Каковы преимущества Netty?
- Простой в использовании: он инкапсулирует многие детали NIO и проще в использовании.
- Мощные функции: предустановленные различные функции кодека, поддержка различных основных протоколов.
- Широкие возможности настройки: коммуникационная структура может быть гибко расширена с помощью ChannelHandler.
- Высокая производительность: по сравнению с другими основными инфраструктурами NIO в отрасли, Netty имеет лучшую общую производительность.
- Стабильный: Netty исправляет все обнаруженные ошибки NIO, позволяя разработчикам сосредоточиться на самом бизнесе.
- Активное сообщество: Netty — это активный проект с открытым исходным кодом с коротким циклом итерации версий и быстрыми исправлениями ошибок.
5. Каковы сценарии применения Netty?
Типичными приложениями являются: платформа распределенных служб Ali Dubbo, которая по умолчанию использует Netty в качестве основного компонента связи, а RocketMQ также использует Netty в качестве основы для связи.
6. Каковы высокие показатели Netty?
- Модель потоков ввода-вывода: синхронная неблокирующая, позволяющая делать больше с наименьшими ресурсами.
- Нулевое копирование памяти: сведите к минимуму ненужные копии памяти и повысьте эффективность передачи.
- Структура пула памяти: запрошенная память может быть повторно использована, в основном это относится к прямой памяти. Внутренняя реализация использует двоичное дерево поиска для управления выделением памяти.
- Сериализация операций чтения и записи. Избегайте снижения производительности при использовании блокировок.
- Высокопроизводительный протокол сериализации: поддерживает высокопроизводительные протоколы сериализации, такие как protobuf.
7. В чем разница между Netty и Tomcat?
- Роли различаются: Tomcat — это контейнер сервлетов, и его можно рассматривать как веб-сервер, тогда как Netty — это асинхронная среда сетевых приложений, управляемая событиями, и инструменты, используемые для упрощения сетевого программирования, такие как серверы сокетов TCP и UDP.
- Различные протоколы: Tomcat — это веб-сервер, основанный на протоколе http, в то время как Netty может настраивать различные протоколы с помощью программирования, поскольку сама Netty может кодировать/декодировать потоки байтов, все, что может реализовать Netty, HTTP-сервер, FTP-сервер, UDP-сервер, RPC-сервер, Сервер WebSocket, прокси-сервер для Redis, прокси-сервер для MySQL и т. д.
8. Какие важные компоненты есть в Netty?
- Канал: абстрактный класс сетевых операций Netty, он включает в себя основные операции ввода-вывода, такие как привязка, подключение, чтение, запись и т. д.
- EventLoop: в основном сотрудничает с Channel для обработки операций ввода-вывода, чтобы обрабатывать то, что происходит в жизненном цикле соединения.
- ChannelFuture: все операции ввода-вывода в инфраструктуре Netty являются асинхронными, поэтому нам нужен addListener() ChannelFuture, чтобы зарегистрировать ChannelFutureListener для прослушивания событий.Когда операция завершается успешно или не удается, прослушиватель автоматически активирует возвращаемый результат.
- ChannelHandler: действует как логический контейнер для обработки всех входящих и исходящих данных. ChannelHandler в основном используется для обработки различных событий, событий здесь очень много, таких как соединение, прием данных, исключение, преобразование данных и т.д.
- ChannelPipeline: предоставляет контейнер для цепочки ChannelHandler. При создании канала он автоматически назначается своему выделенному ChannelPipeline. Эта ассоциация является постоянной.
9. Сколькими способами Нетти отправляет сообщения?
У Нетти есть два способа отправки сообщений:
- Пишите прямо в Channel, и сообщение начинает двигаться из хвоста ChannelPipeline;
- Запишите в ChannelHandlerContext, привязанный к ChannelHandler, и сообщение перемещается из следующего ChannelHandler в ChannelPipeline.
10. Сколько потоков Netty запускает по умолчанию? Когда это начинается?
Netty по умолчанию использует удвоенное количество процессоров ЦП и запускается после связывания.
11. Какие настройки типа сердцебиения поддерживает Netty?
- readerIdleTime: время ожидания чтения (то есть тестовая сторона не получает сообщения от тестируемой стороны в течение определенного периода времени).
- WriterIdleTime: время тайм-аута записи (то есть тестовая сторона отправляет сообщение тестируемой стороне в течение определенного периода времени).
- allIdleTime: все типы тайм-аутов.
Наконец
- Если вы хотите узнать больше о Netty, я рекомендую всем очень хороший буклет Nuggets (отсканируйте QR-код, чтобы получить скидку 20%).
- Посмотреть все вопросы интервью:«Наиболее 200 самых распространенных вопросов на собеседовании по Java»
Справочная документация
blog.CSDN.net/Колледж Чена/искусство…
Woohoo.краткое описание.com/afraid/ah 199 руб 28 о...
Рекомендуемые статьи в прошлом
200+ самых распространенных вопросов на собеседовании по Java
Эксклюзивная коллекция изысканных резюме программиста - вторая пуля