Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Что такое IdentityHashMap?
Что такое IdentityHashMap?
Anonymous Quiz
9%
Отсортированный список
29%
Коллекция уникальных элементов
63%
Коллекция, использующая сравнение ссылок (==) для ключей
0%
Класс для работы с датами
Jackson
Tree Model и Streaming API в Jackson: когда нужна гибкость и производительность
Jackson предлагает не только стандартную POJO-сериализацию, но и более гибкие модели работы с JSON. Среди них — Tree Model и Streaming API.
Tree Model даёт полную свободу при работе с JSON-структурой, а Streaming API — максимальную производительность при чтении/записи больших файлов.
Tree Model (JsonNode): работа с JSON как с деревом
Иногда структура JSON заранее неизвестна или слишком сложна, чтобы описывать её через Java-классы. В таких случаях удобно использовать дерево узлов — JsonNode.
Пример: чтение JSON как дерева
Tree Model позволяет легко:
— обходить структуру вручную
— проверять наличие полей
— работать с вложенностью и массивами
— модифицировать JSON "на лету"
Когда использовать Tree Model
Когда структура JSON может меняться
Когда нужно читать только часть данных
При разработке универсальных парсеров
Когда сложно заранее описать модель через классы
Streaming API (JsonParser/JsonGenerator)
Для огромных JSON-файлов (например, логов, экспорта из БД) загрузка всего файла в память может быть невозможной. Здесь пригодится стриминговый API — он читает JSON по частям, как поток.
Пример: чтение JSON через JsonParser
Когда использовать Streaming API
Работа с большими JSON-файлами, которые нельзя загрузить полностью
Требуется максимальная производительность
Необходимо читать JSON "по частям"
Парсинг в системах с ограниченной памятью (например, embedded)
Сравнение подходов
POJO-модель — просто, типобезопасно, но требует классов
Tree Model — гибко, удобно для анализа/модификации
Streaming API — быстро и экономно, но требует ручного контроля
#Java #Training #Medium #Jackson #Tree_Model #Streaming_API
Tree Model и Streaming API в Jackson: когда нужна гибкость и производительность
Jackson предлагает не только стандартную POJO-сериализацию, но и более гибкие модели работы с JSON. Среди них — Tree Model и Streaming API.
Tree Model даёт полную свободу при работе с JSON-структурой, а Streaming API — максимальную производительность при чтении/записи больших файлов.
Tree Model (JsonNode): работа с JSON как с деревом
Иногда структура JSON заранее неизвестна или слишком сложна, чтобы описывать её через Java-классы. В таких случаях удобно использовать дерево узлов — JsonNode.
Пример: чтение JSON как дерева
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
String json = "{ \"user\": { \"name\": \"Alice\", \"age\": 30 } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(json);
String name = rootNode.path("user").path("name").asText();
int age = rootNode.path("user").path("age").asInt();
System.out.println("Имя: " + name + ", Возраст: " + age);
Tree Model позволяет легко:
— обходить структуру вручную
— проверять наличие полей
— работать с вложенностью и массивами
— модифицировать JSON "на лету"
Когда использовать Tree Model
Когда структура JSON может меняться
Когда нужно читать только часть данных
При разработке универсальных парсеров
Когда сложно заранее описать модель через классы
Streaming API (JsonParser/JsonGenerator)
Для огромных JSON-файлов (например, логов, экспорта из БД) загрузка всего файла в память может быть невозможной. Здесь пригодится стриминговый API — он читает JSON по частям, как поток.
Пример: чтение JSON через JsonParser
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(new File("data.json"));
while (!parser.isClosed()) {
JsonToken token = parser.nextToken();
if (JsonToken.FIELD_NAME.equals(token) && "name".equals(parser.getCurrentName())) {
parser.nextToken();
System.out.println("Имя: " + parser.getValueAsString());
}
}
parser.close();
Когда использовать Streaming API
Работа с большими JSON-файлами, которые нельзя загрузить полностью
Требуется максимальная производительность
Необходимо читать JSON "по частям"
Парсинг в системах с ограниченной памятью (например, embedded)
Сравнение подходов
POJO-модель — просто, типобезопасно, но требует классов
Tree Model — гибко, удобно для анализа/модификации
Streaming API — быстро и экономно, но требует ручного контроля
#Java #Training #Medium #Jackson #Tree_Model #Streaming_API
Всем привет 😊
Сегодня не будет обучающих постов или постов с мемами.
В этот день мы, как и все адекватные жители планеты, чтим память миллионов человек отдавших свою жизнь в борьбе с фашистской Германией.
Чтим тех, кто сегодня как и тогда, воюет за свободу и независимость нашей Родины.
На фоне современной геополитической борьбы, попыток принизить и уничтожить память о героизме народов СССР, просто непозволительно игнорировать такой день.
И пусть всегда будут несогласные люди и страны, пусть говорят те, кому личная выгода и безопасность важнее абстрактной Отчизны, но наверно, почти у каждого дома хранятся фотографии дедов с медалями, воспоминания и рассказы о том, как они победили...
С Днем Победы!⭐️
Сегодня не будет обучающих постов или постов с мемами.
В этот день мы, как и все адекватные жители планеты, чтим память миллионов человек отдавших свою жизнь в борьбе с фашистской Германией.
Чтим тех, кто сегодня как и тогда, воюет за свободу и независимость нашей Родины.
На фоне современной геополитической борьбы, попыток принизить и уничтожить память о героизме народов СССР, просто непозволительно игнорировать такой день.
И пусть всегда будут несогласные люди и страны, пусть говорят те, кому личная выгода и безопасность важнее абстрактной Отчизны, но наверно, почти у каждого дома хранятся фотографии дедов с медалями, воспоминания и рассказы о том, как они победили...
С Днем Победы!
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем субботний, солнечный привет! ✌️
Целую неделю я думал над итогами опроса о канале.
На основные вопросы - почему новые подписчики приходят и потом уходят, почему имеющиеся поставили канал на заглушку и не читают его - напрашиваются вполне очевидные выводы:
- Не смотря на то, что канал называется Java для новичков, рассматриваемые темы давно ушли за мидловский предел.
- Нет внятного оглавления для поиска интересующей информации для разных грейдов.
- Объемные и подробные посты, неудобно читать к примеру с телефона.
- Сухость и формализм обучающих постов, полезны, но не интересны для новичков.
- Количество ежедневных постов, большинство скорее отталкивает, чем привлекает.
Основываясь на этих проблемах, с которыми Вы возможно согласны, я решил:
- Пересмотреть объем и частоту обучающих постов. Теперь когда в нашем оглавлении, есть практически весь Java Core, можно сконцентрироваться на изучении более точечных и новых технологий новых версий Java, библиотек и фреймворков.
- Ежедневно возвращаться и более обстоятельно рассматривать темы для новичков, но в более популярном формате.
- Полностью переработать оглавление, чтобы человеку любого грейда было легко найти интересующую тему, которая рассматривалась в канале.
- Добавить немного авторского мнения и разбора некоторых моментов в разработке.
- Дать возможность новичкам выбирать темы для разбора - путем выбора и голосования.
Что скажете на такие предложения?🤓
Целую неделю я думал над итогами опроса о канале.
На основные вопросы - почему новые подписчики приходят и потом уходят, почему имеющиеся поставили канал на заглушку и не читают его - напрашиваются вполне очевидные выводы:
- Не смотря на то, что канал называется Java для новичков, рассматриваемые темы давно ушли за мидловский предел.
- Нет внятного оглавления для поиска интересующей информации для разных грейдов.
- Объемные и подробные посты, неудобно читать к примеру с телефона.
- Сухость и формализм обучающих постов, полезны, но не интересны для новичков.
- Количество ежедневных постов, большинство скорее отталкивает, чем привлекает.
Основываясь на этих проблемах, с которыми Вы возможно согласны, я решил:
- Пересмотреть объем и частоту обучающих постов. Теперь когда в нашем оглавлении, есть практически весь Java Core, можно сконцентрироваться на изучении более точечных и новых технологий новых версий Java, библиотек и фреймворков.
- Ежедневно возвращаться и более обстоятельно рассматривать темы для новичков, но в более популярном формате.
- Полностью переработать оглавление, чтобы человеку любого грейда было легко найти интересующую тему, которая рассматривалась в канале.
- Добавить немного авторского мнения и разбора некоторых моментов в разработке.
- Дать возможность новичкам выбирать темы для разбора - путем выбора и голосования.
Что скажете на такие предложения?
Please open Telegram to view this post
VIEW IN TELEGRAM
А нужны ли вообще обучающие посты? Ведь можно делиться ссылками на страницы в интернете, там все есть😕
Anonymous Poll
71%
Нужны! Мне нравится текущая подача и подробность материала.
3%
Нужны, но в еще более развернутом варианте
19%
Нужны, но в минималистичном стиле, возможно с ссылками на развернутые материалы
0%
Не нужны. Давай ссылки и все, дальше сами разберемся
6%
Мне без разницы
Анонсирую новую рубрику!
Теперь по субботам я буду публиковать ссылки на материалы которые Вы, возможно пропустили за неделю!
Итак:
С 05.05 по 09.05
Jackson: Ключевые аннотации для сериализации
Jackson: Аннотации Jackson для десериализации и изменения структуры JSON
Jackson: работа со списками, картами и вложенными объектами
Jackson: кастомные десериализаторы
Jackson: глобальная настройка ObjectMapper: как управлять сериализацией и десериализацией
Использование модулей в Jackson: JavaTimeModule и работа с Java 8 датами
Jackson: частичная сериализация с помощью @JsonView
Jackson: Tree Model и Streaming API в Jackson: когда нужна гибкость и производительность
Полезная статья: Программирование без условных операторов
Как и всегда, задачи можно найти под тегом - #Tasks, мемы - #Mems
#memory
Теперь по субботам я буду публиковать ссылки на материалы которые Вы, возможно пропустили за неделю!
Итак:
С 05.05 по 09.05
Jackson: Ключевые аннотации для сериализации
Jackson: Аннотации Jackson для десериализации и изменения структуры JSON
Jackson: работа со списками, картами и вложенными объектами
Jackson: кастомные десериализаторы
Jackson: глобальная настройка ObjectMapper: как управлять сериализацией и десериализацией
Использование модулей в Jackson: JavaTimeModule и работа с Java 8 датами
Jackson: частичная сериализация с помощью @JsonView
Jackson: Tree Model и Streaming API в Jackson: когда нужна гибкость и производительность
Полезная статья: Программирование без условных операторов
Как и всегда, задачи можно найти под тегом - #Tasks, мемы - #Mems
#memory
Нужны ли нам посты для полных новичков в Java, по типу: Как запустить IDEA, как создать первый класс и так далее?
Anonymous Poll
20%
Да, несомненно! 👍
15%
Да, наверно.. 🤷♀️
43%
Не знаю. Мне точно не нужны ☺️
22%
Нет не нужны, в интернете много информации, пусть учатся гуглить 🖕