This media is not supported in your browser
VIEW IN TELEGRAM
Это тот сайт, который Google должен ставить на первое место по каждому поиску разработчиков.
Он называется IT Tools: https://it-tools.tech/
Бесплатный open-source сайт с 100+ утилитами для разработчиков, которые полностью работают локально в браузере.
JSON formatter
Regex tester
JWT decoder
UUID generator
Cron parser
Timestamp converter
Hash generators
Docker helpers
Color tools
Markdown editor
Всё загружается мгновенно. Нет логинов. Нет трекинга. Нет AI-сгенерированного SEO-мусора.
Когда ищешь один простой конвертер на других сайтах, получаешь:
- всплывающий спам
- трекеры
- фейковые кнопки
- автозапуск видео
- 40 скриптов аналитики
А поскольку сайт полностью open-source, вы можете сами его хостить.
Одна закладка заменила для меня 30+ случайных сайтов.
👉 Java Portal
Он называется IT Tools: https://it-tools.tech/
Бесплатный open-source сайт с 100+ утилитами для разработчиков, которые полностью работают локально в браузере.
JSON formatter
Regex tester
JWT decoder
UUID generator
Cron parser
Timestamp converter
Hash generators
Docker helpers
Color tools
Markdown editor
Всё загружается мгновенно. Нет логинов. Нет трекинга. Нет AI-сгенерированного SEO-мусора.
Когда ищешь один простой конвертер на других сайтах, получаешь:
- всплывающий спам
- трекеры
- фейковые кнопки
- автозапуск видео
- 40 скриптов аналитики
А поскольку сайт полностью open-source, вы можете сами его хостить.
Одна закладка заменила для меня 30+ случайных сайтов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Как выбрать шаблон проектирования?
Выбор подходящего шаблона проектирования в программной инженерии — ключ к эффективному решению задач. Этот гайд упрощает процесс выбора, помогая принимать обоснованные решения в зависимости от конкретных потребностей.
В нём даны краткие описания и практические случаи использования каждого шаблона, что облегчает их понимание и применение в реальных проектах.
Чтобы выбрать шаблон, сначала необходимо определить тип проблемы:
> Создание объектов? → Порождающие шаблоны
> Компоновка объектов? → Структурные шаблоны
> Взаимодействие объектов? → Поведенческие шаблоны
Приступим.
1. Порождающие шаблоны
> Singleton — используется, когда нужен единственный экземпляр класса. Примеры: логгирование, подключения к базе данных.
> Factory Method — отделяет создание объекта от его использования. Пример: создание разных типов подключений к БД на основе конфигурации.
> Abstract Factory — создаёт семейства связанных объектов. Пример: парсеры для разных форматов файлов.
> Builder — пошаговое создание сложных объектов. Пример: построение сложного объекта доменной модели.
> Prototype — создание копий объектов и повторное использование закэшированных экземпляров для снижения количества запросов к БД.
2. Структурные шаблоны
> Adapter — делает несовместимые интерфейсы совместимыми. Пример: подключение новой библиотеки логгирования к системе с другим интерфейсом.
> Composite — представление иерархий "часть-целое". Пример: графические объекты в редакторе, объединяемые в группы.
> Proxy — управление доступом к объекту. Пример: ленивое подключение изображения высокого разрешения.
> Decorator — динамическое добавление/удаление поведения. Пример: добавление сжатия или шифрования для потоков файлов.
> Bridge — разделение абстракции и реализации. Пример: изоляция платформозависимого кода от основной логики.
3. Поведенческие шаблоны
> Strategy — определяет семейство алгоритмов. Пример: выбор между различными алгоритмами сортировки или сжатия.
> Observer — оповещение об изменениях состояния. Пример: уведомление подписчиков о событиях в системе сообщений.
> Command — инкапсулирует запрос как объект. Пример: реализация undo/redo в текстовом или графическом редакторе.
> State — инкапсулирует поведение в зависимости от состояния. Пример: разные состояния UI-элемента (вкл., выкл., выделен).
> Template Method — задаёт скелет алгоритма, позволяя подклассам реализовать отдельные шаги. Пример: базовый класс для юнит-тестов с переопределяемыми шагами подготовки и очистки.
В итоге мы подбираем тот шаблон, который наилучшим образом решает конкретную задачу
👉 Java Portal
Выбор подходящего шаблона проектирования в программной инженерии — ключ к эффективному решению задач. Этот гайд упрощает процесс выбора, помогая принимать обоснованные решения в зависимости от конкретных потребностей.
В нём даны краткие описания и практические случаи использования каждого шаблона, что облегчает их понимание и применение в реальных проектах.
Чтобы выбрать шаблон, сначала необходимо определить тип проблемы:
> Создание объектов? → Порождающие шаблоны
> Компоновка объектов? → Структурные шаблоны
> Взаимодействие объектов? → Поведенческие шаблоны
Приступим.
1. Порождающие шаблоны
> Singleton — используется, когда нужен единственный экземпляр класса. Примеры: логгирование, подключения к базе данных.
> Factory Method — отделяет создание объекта от его использования. Пример: создание разных типов подключений к БД на основе конфигурации.
> Abstract Factory — создаёт семейства связанных объектов. Пример: парсеры для разных форматов файлов.
> Builder — пошаговое создание сложных объектов. Пример: построение сложного объекта доменной модели.
> Prototype — создание копий объектов и повторное использование закэшированных экземпляров для снижения количества запросов к БД.
2. Структурные шаблоны
> Adapter — делает несовместимые интерфейсы совместимыми. Пример: подключение новой библиотеки логгирования к системе с другим интерфейсом.
> Composite — представление иерархий "часть-целое". Пример: графические объекты в редакторе, объединяемые в группы.
> Proxy — управление доступом к объекту. Пример: ленивое подключение изображения высокого разрешения.
> Decorator — динамическое добавление/удаление поведения. Пример: добавление сжатия или шифрования для потоков файлов.
> Bridge — разделение абстракции и реализации. Пример: изоляция платформозависимого кода от основной логики.
3. Поведенческие шаблоны
> Strategy — определяет семейство алгоритмов. Пример: выбор между различными алгоритмами сортировки или сжатия.
> Observer — оповещение об изменениях состояния. Пример: уведомление подписчиков о событиях в системе сообщений.
> Command — инкапсулирует запрос как объект. Пример: реализация undo/redo в текстовом или графическом редакторе.
> State — инкапсулирует поведение в зависимости от состояния. Пример: разные состояния UI-элемента (вкл., выкл., выделен).
> Template Method — задаёт скелет алгоритма, позволяя подклассам реализовать отдельные шаги. Пример: базовый класс для юнит-тестов с переопределяемыми шагами подготовки и очистки.
В итоге мы подбираем тот шаблон, который наилучшим образом решает конкретную задачу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4
Совет по Java API
Используйте
Она помогает не допустить случайного добавления второго абстрактного метода в интерфейс, который должен быть функциональным.
Если вы попытаетесь добавить ещё один абстрактный метод в такой интерфейс, компилятор выдаст ошибку☕️
👉 Java Portal
Используйте
@FunctionalInterface как защиту на уровне компиляцииОна помогает не допустить случайного добавления второго абстрактного метода в интерфейс, который должен быть функциональным.
Если вы попытаетесь добавить ещё один абстрактный метод в такой интерфейс, компилятор выдаст ошибку
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Spring Boot: Добавление ID трассировки запросов важно для отладки API
#SpringBoot #JavaDev
👉 Java Portal
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
В нем есть все: от клонирования репозиториев до работы с переменными и Pack-файлами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Важная Java-библиотека: Jackson
Джексон — высоконастраиваемый, быстрый, поддерживает стриминг и является процессором JSON с биндингом данных. Если работаешь с JSON, эту библиотеку нужно знать.
Какие основные модули у Джексона?
jackson-core — низкоуровневый стриминговый API (JsonParser, JsonGenerator) для эффективного чтения и записи JSON
jackson-databind — содержит ObjectMapper, основной API для конвертации между Java-объектами и JSON
jackson-annotations — аннотации (@JsonProperty, @JsonIgnore и др.), управляющие сериализацией/десериализацией
jackson-dataformat-* — расширения для форматов XML, CSV, YAML, CBOR и др.
jackson-datatype-* — поддержка типов Java 8 Date/Time (LocalDate, Instant), Guava, JodaTime и др.
jackson-module-* — модули-расширения под конкретные языки и оптимизации производительности (например, Kotlin, Afterburner)
👉 Java Portal
Джексон — высоконастраиваемый, быстрый, поддерживает стриминг и является процессором JSON с биндингом данных. Если работаешь с JSON, эту библиотеку нужно знать.
Какие основные модули у Джексона?
jackson-core — низкоуровневый стриминговый API (JsonParser, JsonGenerator) для эффективного чтения и записи JSON
jackson-databind — содержит ObjectMapper, основной API для конвертации между Java-объектами и JSON
jackson-annotations — аннотации (@JsonProperty, @JsonIgnore и др.), управляющие сериализацией/десериализацией
jackson-dataformat-* — расширения для форматов XML, CSV, YAML, CBOR и др.
jackson-datatype-* — поддержка типов Java 8 Date/Time (LocalDate, Instant), Guava, JodaTime и др.
jackson-module-* — модули-расширения под конкретные языки и оптимизации производительности (например, Kotlin, Afterburner)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Backend interview task:
Разработчик выполнил:
После этого запаниковал — команда удалила коммит
с 3 часами работы.
Можно ли восстановить изменения?
A) Нет — hard reset навсегда удаляет коммиты
B) Да — git reflog хранит недавние позиции HEAD, оттуда можно восстановиться
C) Да — но только если коммит был запушен в remote
D) Нет — только при наличии локального бэкапа
Правильный ответ: B
Восстановление:
Git покажет историю перемещений HEAD:
Дальше можно вернуть состояние:
или создать новую ветку:
Пока не сработал garbage collector и объекты не были очищены, коммит восстанавливается без проблем.
👉 Java Portal
Разработчик выполнил:
git reset --hard HEAD~1
После этого запаниковал — команда удалила коммит
с 3 часами работы.
Можно ли восстановить изменения?
A) Нет — hard reset навсегда удаляет коммиты
B) Да — git reflog хранит недавние позиции HEAD, оттуда можно восстановиться
C) Да — но только если коммит был запушен в remote
D) Нет — только при наличии локального бэкапа
Правильный ответ: B
git reset --hard удаляет ссылку на коммит из текущей ветки, но сам объект коммита обычно ещё остаётся в локальном репозитории.Восстановление:
git reflog
Git покажет историю перемещений HEAD:
abc1234 HEAD@{1}: commit: add payment retry logic
def5678 HEAD@{0}: reset: moving to HEAD~1Дальше можно вернуть состояние:
git reset --hard abc1234
или создать новую ветку:
git checkout -b recovery abc1234
Пока не сработал garbage collector и объекты не были очищены, коммит восстанавливается без проблем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Совет по Java: ловите ошибки ещё на этапе компиляции — помечайте переопределённые методы аннотацией
Если сигнатура метода не совпадёт с методом родительского класса или интерфейса, компилятор сразу выдаст ошибку вместо тихого создания нового метода.
#Java #Annotations
👉 Java Portal
@Override.@Override
public void process() {
// logic
}
Если сигнатура метода не совпадёт с методом родительского класса или интерфейса, компилятор сразу выдаст ошибку вместо тихого создания нового метода.
#Java #Annotations
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3