Библиотека джависта | Java, Spring, Maven, Hibernate
24.8K subscribers
1.88K photos
38 videos
42 files
2.66K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Очередной #дайджест по Java:

Анализ дампа кучи Java: разбираем на примерах
В этой статье автор пробует объяснить, как взять и проанализировать дамп кучи – разбор на примерах.

Не придумывайте данные для интеграционных тестов — генерируйте их
Testcontainers "по щелчку пальцев" запускают базы данных, но для того, чтобы тесты начали проходить, нужно кое-что ещё: начальные данные внутри базы. Их необходимо подготовить перед запуском тестов, а по мере того, как схема растёт и усложняется, делать это становится всё труднее.

Репликация между SQL- и NoSQL-базами данных: туда и обратно
Часто при построении высоконагруженных проектов задействуют несколько хранилищ. При этом нередко одновременно используют как SQL-, так и NoSQL-базы данных. Такая реализация оправдана, но для её корректной работы надо правильно настроить репликацию данных в одну из сторон.

Spring Security и архитектура наследования ролей в не плоской модели
Когда речь заходит об авторизации, роли вступают в игру.
Хотите ли вы изучить vim или он вам не нужен?
#интерактив
Java и IBM Watson

IBM Watson предоставляет мощный инструмент для анализа изображений — Visual Recognition. Этот инструмент позволяет классифицировать изображения, обнаруживать объекты на изображениях и даже обучать свои собственные модели на основе пользовательских данных.

Java SDK для IBM Watson предоставляет простой и удобный интерфейс для работы с Visual Recognition API. Это позволяет Java-разработчикам легко интегрировать функции распознавания изображений в свои приложения.

В примере мы классифицируем изображение по URL с использованием Visual Recognition API. Результатом будет объект ClassifiedImages, который содержит информацию о классах, к которым относится изображение, и уровне уверенности для каждого класса.

Java и IBM Watson предоставляют мощные инструменты для анализа изображений. С помощью Java SDK для Watson разработчики могут легко интегрировать эти функции в свои приложения и использовать их для решения сложных задач.
#код
Какова иерархия коллекций?

В Java есть два основных интерфейса для коллекций — Collection и Map.

Interface Collection находится на верху иерархии и определяет общие методы для работы с коллекциями, такие как add(), remove(), size() и другие. От него наследуются конкретные реализации коллекций.

Наиболее часто используемые реализации Collection — это List, Set и Queue.

Map интерфейс реализует отдельную структуру данных. Он представляет отображение ключ-значение. Основные реализации — HashMap и TreeMap.
#вопросы_с_собеседований
Объекты как параметры методов

В Java объекты могут использоваться как параметры методов, что позволяет передавать данные и взаимодействовать с ними внутри методов. Это один из основных способов работы с данными в ООП.

Параметры методов представляют собой значения, которые передаются методу при его вызове. Они объявляются в заголовке метода и позволяют методу получать информацию, необходимую для выполнения своей задачи.
#код
Шпаргалка по структурам данных в Java

К каждому собеседованию важно готовиться и проще всего это делать, когда перед глазами есть готовый материал. В данной публикации я хочу поделиться с вами своей шпаргалкой, которую использую перед собеседованиями для повторения структур данных в Java.

Смотреть статью
Сколько вы тратите времени в день на работу по факту?
#интерактив
Адаптер

Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.

Паттерн Адаптер включает в себя два вида адаптеров:

Классовый адаптер: использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
Объектный адаптер: использует композицию, чтобы включить объект исходного класса в адаптер и реализует целевой интерфейс.
#код
Micronaut

Micronaut — это относительно новый фреймворк для разработки микросервисов на Java.
Основные преимущества — высокая производительность, низкое потребление памяти, интеграция с популярными технологиями микросервисов.
Фреймворк активно развивается и используется в продакшене несколькими крупными компаниями.

Области применения:
— Разработка высокопроизводительных микросервисов. Micronaut оптимизирован для создания легковесных микросервисов с минимальным использованием ресурсов.
— Построение serverless-приложений. Благодаря низким накладным расходам при старте фреймворк хорошо подходит для бессерверных архитектур на основе функций.
— Быстрая разработка микросервисов. Фреймворк содержит много готовой инфраструктуры для разработки, позволяя быстрее создавать сервисы.
— Интеграция с GraalVM. Micronaut оптимизирован для работы со средой исполнения GraalVM, что дает дополнительное ускорение.
#код
Упрощаем работу с Excel с помошью Apache POI: готовый шаблонный код

Пошаговое практическое руководство c преобразованием шаблона poiTemplate.xlsx в Excel документ с возможностью программной модификации страниц. Также код может послужить образцом применения паттерна стратегия.

Читать статью
ServletConfig

ServletConfig используется для настройки сервлетов при их инициализации.

Основные моменты, которые следует знать о ServletConfig:

— ServletConfig предоставляет сервлету доступ к инициализационным параметрам. Эти параметры определяются в дескрипторе развертывания (например, web.xml).

— Для получения экземпляра ServletConfig используется метод getServletConfig(), вызываемый в методе инициализации сервлета init().

— Через ServletConfig можно получить доступ к контексту сервлета с помощью метода getServletContext().

— Можно получить значение инициализационного параметра по имени с помощью метода getInitParameter().

— Можно перечислить все инициализационные параметры методом getInitParameterNames().
#код
Какие коллекции синхронизированы?

Vector — синхронизированный аналог ArrayList.
Hashtable — синхронизированный аналог HashMap.
Stack — синхронизированный стек на основе Vector.
Collections.synchronizedList() — возвращает синхронизированный список на основе переданного в нее списка.
Collections.synchronizedSet() — то же самое для множества.
Collections.synchronizedMap() — для отображения.

Синхронизация в этих коллекциях реализована с помощью внутренних блокировок, которые упорядочивает доступ к коллекции из разных потоков.

Обычно предпочтительнее использовать несинхронизированные коллекции и синхронизировать доступ к ним самостоятельно при необходимости, чтобы не терять производительность.
Это можно сделать с помощью методов synchronizedCollection(), synchronizedList(), synchronizedSet(), synchronizedMap().
#вопросы_с_собеседований
SQLException

SQLException — это класс исключений, используемый для обработки ошибок, связанных с работой с базами данных.

Обычно он возникает при выполнении запросов к БД через JDBC и сигнализирует об ошибках соединения с БД, синтаксических ошибках в SQL запросе, проблемах с транзакциями и т.д.

Здесь мы подключаемся к БД, выполняем запрос INSERT и отлавливаем возможную ошибку через блок catch по SQLException.

Если запрос выполнится успешно, ничего не будет выведено в консоль.
Если произойдет ошибка, например, из-за неправильного SQL синтаксиса, будет выведена информация об исключении.
Может ли Java быть быстрой? Сравнение производительности Helidon Níma и Spring

Java долгое время была и остается фаворитом в enterprise решениях, но все чаще в высоконагруженных проектах предпочтение отдается более "производительным" языкам, таким как Go, а порой даже C++. Но вдруг Java тоже может быть быстрой?

Читать статью
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
🗺️ Дорожная карта: что это, как ее составить и почему она обязательно нужна разработчику

Откройте для себя секретное оружие успешного программиста — дорожную карту, которая поможет составить пошаговый план действий на ближайшие несколько лет. В данной статье разберемся, зачем она нужна, как правильно ее составить и где «подглядеть» роадмап для айтишников всех направлений 🤫

📌 Примеры дорожных карт и полезные материалы по теме:

🤩 Подборка дорожных карт для разработчиков
👉 Дорожная карта Frontend-разработчика в 2022 году
🏃 8 шагов от новичка до профессионала: дорожная карта разработчика на C#
👨‍💻 Как стать фрилансером и где найти первый заказ: дорожная карта
🍏 Карьерный гид от новичка до профи: дорожная карта iOS-разработчика
Дорожная карта Java-разработчика в 2023 году
🧔 Повышение до тимлида: дорожная карта
🐍 Дорожная карта Python-разработчика
🤝 5 soft skills, которые помогут тебе дорасти до Senior-разработчика
Очередной #дайджест по Java:

Автоматизация разработки с помощью подхода DB-first
Интеграция с БД — привычно сложная и хрупкая часть большинства кодобаз, постоянно отвлекающая внимание разработчиков и раздувающая сроки.

Java: что нужно знать новичку?
Необходимые знания одного из самых популярных языков.

Какую IDE для Java выбрать?
Какую IDE выбрать для начинающего Java-разработчика?

Особенности разработки автотестов различными инструментами, а также статистика по использованию
Однозначным плюсом внедрения автотестов на проекте является сокращение времени на тестирование и сокращение возможности ошибки при тестировании человеком.
Как часто вы обращаетесь к документации?
#интерактив
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Trie

Trie (дерево префиксов) — это структура данных в виде дерева, используемая для хранения ассоциативных данных, например словарей.
Она позволяет эффективно хранить и находить слова по их префиксам.

Trie состоит из узлов, каждый из которых может ссылаться на несколько дочерних узлов. Каждая ветвь от корня до листа представляет одно слово, а символы слова образуют путь от корня до узла-листа.
Узлы, которые являются концом слова, помечаются специальным флагом.

Поиск слова заключается в прохождении от корня по ветвям символов этого слова. Добавление нового слова — добавление отсутствующих узлов для его символов.

Trie оптимальна для хранения словарей и поиска по префиксам благодаря эффективности этих операций.
В Java для реализации Trie удобно использовать HashMap в узлах для связей с дочерними узлами.
#код