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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
😳 Если бы языки программирования были девушками

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

Мы заглянули в Тиндер разработчика и нашли там Java. Как вам? 😏

Еще больше прекрасных дам языков программирования — в нашем канале Библиотека программиста

Свайпайте и выбирайте свой мэтч ❤️
🛡 Что такое JWT?

JWT (JSON Web Token) — это компактный формат токенов для безопасной передачи данных между сторонами. Используется для аутентификации и авторизации, особенно в веб-приложениях.

🔹 JWT состоит из трёх частей, разделённых точками

1️⃣ Header — тип токена и алгоритм подписи (например, HMAC или RSA).
2️⃣ Payload — полезная нагрузка (данные, например userId, roles).
3️⃣ Signature — цифровая подпись для защиты от подделки.

⚙️ Как работает

Клиент аутентифицируется, сервер создаёт JWT и отдаёт его клиенту. Затем при каждом запросе клиент передаёт JWT в заголовке Authorization: Bearer <token>. Сервер проверяет подпись и, если токен валиден, разрешает доступ.

⚠️ JWT самодостаточен: сервер не хранит состояние токенов.

💬 Используете JWT в своих проектах?
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ В машинном обучении, как в любви: слишком идеальные предсказания – это подозрительно!

Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.

Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»

Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»

Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.

🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!

🔥 Спасибо всем, кто был с нами и участвовал!

💘 Как же это было?

Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
🤫 Заговор разработчиков против корпораций

Автор статьи рассказывает о тайной организации техно-анархистов, которая методично саботирует кодовые базы, превращая их в минные поля. От незаметных ловушек в виде плохого нейминга и классов на 100500 строк до изощренного использования AOP.

Предупрежден - значит вооружен.

P.s. никакого заговора нет, стилистика статьи шуточная. Но автор описывает реальные проблемы кодовых баз.

🔗 Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👨🏻‍💻 #дайджест #Javadevjob

Вакансии Java разработчиков уровня Junior

▪️ Java-разработчик
Гибрид (Москва), Банк ВТБ

▪️ Java Developer
Удалёнка, АВТОВЕТ

Вакансии Java разработчиков уровня Middle

▪️ Java-разработчик
Удалёнка, МИТРА СОФТ

▪️ Java-разработчик
Офис (Москва), НИИАС

Вакансии Java разработчиков уровня Senior

▪️ Java Developer
Гибрид (Москва) / Удалёнка, Банки.ру

▪️ Java Developer
Удалёнка, iFellow

Понравились вакансии?
❤️ — да
🤔 — нет
☄️ Ускоряем @Transactional

При использовании @Transactional Spring Data JPA по умолчанию отслеживает изменения загруженных сущностей для последующей фиксации. Но если вам нужно только чтение, добавьте:
@Transactional(readOnly = true)


Spring Data JPA переводит транзакцию в режим без грязных проверок (no dirty checking), что ускоряет выполнение, так как не отслеживает изменения в загруженных сущностях.

Также БД может оптимизировать запросы, зная, что изменений не будет, особенно СУБД с поддержкой уровня изоляции READ ONLY.

Почему это быстрее

В обычной транзакции Spring Data JPA сохраняет копию каждой загруженной сущности, чтобы сравнить её состояние при коммите и зафиксировать изменения. С readOnly=true эта дорогостоящая операция пропускается, что снижает нагрузку на память и CPU.

📌 Когда использовать

— Сервисы, где нет операций save/update/delete.
— REST-эндпоинты, отдающие справочные данные.
— Запросы к отчетам и аналитике.

⚠️ Если внутри @Transactional(readOnly = true) вызвать метод, изменяющий данные, Spring Data JPA молча проигнорирует изменения
Please open Telegram to view this post
VIEW IN TELEGRAM
📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта

Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.

👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
🔼 Растёт доверии к российским решениям в области Java-разработки

Axiom JDK и Libercat показали рост продаж на 80% в 2024 году. Количество клиентов и сотрудников удвоилось, а сервер приложений Libercat успешно заменил Oracle и IBM в крупных финкомпаниях.

Libercat Certified получил сертификат ФСТЭК, что открыло путь в критически важные системы. За год вышло 6 новых релизов, 4000+ фиксов и 200+ патчей безопасности.

🔗 Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Софт-скиллы, которые выведут карьеру в IT на новый уровень

Многие говорят о лидерстве, коммуникации и умении презентовать себя. Но будущее требует других навыков. Разбираем неочевидные soft skills, которые помогут прокачаться в IT и за рубежом.

➡️ Что внутри

▪️ Эмоциональный интеллект

▪️ Умение упрощать

▪️ Антихрупкость

▪️ Мультикультурность

▪️ Предпринимательское мышление


Эти навыки решают. Кто хочет оставаться в топе — развиваемся уже сейчас.

🔵 Подтяните свои знания о машинном обучении вместе с нашим курсом «Базовые модели ML и приложения»

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Live Templates в IntelliJ IDEA

Надоело писать одни и те же конструкции снова и снова? На помощь приходят Live Templates — инструмент, который позволит генерировать фрагменты кода по паре букв.

Live Templates — это заготовки кода, которые можно вставлять по сокращённым ключам. Например, вместо того чтобы каждый раз писать System.out.println(), достаточно написать sout и нажать Enter. IDEA сама развернёт код.

Live Templates поддерживают Java, Kotlin, JS, Groovy, SQL и XML/HTML.

📌 Полезные шаблоны по умолчанию

🔹 sout → System.out.println();
🔹 fori → for (int i=0; i< ; i++) {}
🔹 psvm → public static void main(String[] args) {...}
🔹 ifn → if (obj == null) {}
🔹 prsf → private static final

Полный список live templates: File → Settings→ Editor → Live Templates.

⚙️ Как создать свой шаблон

1️⃣ Открываем File → Settings→ Editor → Live Templates
2️⃣ Выбираем группу или создаём свою.
3️⃣ Нажимаем "+" и задаём аббревиатуру (триггер шаблона).
4️⃣ Пишем в поле Template text код с переменными ($VAR$).
5️⃣ Указываем Context, где шаблон будет работать (Java, SQL, XML и т. д.).
6️⃣ Применяем и тестируем.

Live Templates – это must-have инструмент для ускорения написания кода. Настройте под себя и забудьте про шаблонный код.

💬 Делитесь интересными кастомными шаблонами
Please open Telegram to view this post
VIEW IN TELEGRAM
Okko приглашает встретить весну вместе с ребятами из Ozon Tech и red_mad_robot 🙌

📅Когда: 6 марта в 18.30
📍Где: Санкт-Петербург, офис Okko, БЦ Атлантик Сити, улица Савушкина 126Б, 24 этаж

👀На повестке:
• От Вани Коньшина, вед. инженера Okko: «Как расширить MDC контекст в реактивных приложениях на Kotlin Coroutines?»
• От Ильи Трусова, разработчика red_mad_robot: «Кодогенерируемая микросервисная архитектура с использованием RAG и GenAI при помощи Meroving».
• От Лёши Круглика, вед. инженера Okko: «Обработка естественного языка (NLP). Асинхронная архитектура. Какие механизмы есть для этого в Java?»
• От Вовы Букина, рук-ля безопасности платформы, и Тимофея Черных, руководителя продуктовой безопасности, из Ozon Tech: «Как можно эксплуатировать шаренные раннеры GitLab'а при атаках на цепочку поставок и как команда автоматизировала их проверку на безопасность».

Регистрируйся тут: https://okkomeetup.timepad.ru/event/3231462?erid=2W5zFJqBarL
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍💻 StackQL: Интерактивное взаимодействие с API через SQL

StackQL предлагает унифицированную среду для управления облачными ресурсами с помощью знакомого SQL-синтаксиса.

Что это такое

StackQL — это открытый фреймворк на основе SQL, который позволяет пользователям выполнять запросы, провижининг и управление облачными и SaaS-ресурсами. Он поддерживает популярные облачные провайдеры, такие как Google Cloud, AWS, Microsoft Azure, Digital Ocean и другие.

Доступен для Windows, MacOS и Linux и поддерживает несколько режимов использования, включая интерактивную оболочку REPL, утилиту командной строки и выполнение запросов через файлы IQL.

Основные Возможности StackQL

Навигация по облачным API: используйте команды SHOW SERVICES и SHOW RESOURCES для ознакомления с доступными сервисами и ресурсами. Например:
SHOW SERVICES IN google LIKE '%compute%';SHOW RESOURCES IN google.compute LIKE '%instances%';


Операции CRUD: выполняйте создание, чтение, обновление и удаление ресурсов с помощью знакомых SQL-запросов.

Примеры:
Создание ресурса:
INSERT INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'stackql-demo', 'europe-north1-a', 'disk-1', 16;


Обновление ресурса:
UPDATE google.compute.disks
SET sizeGb = 32WHERE project = 'stackql-demo' AND zone = 'europe-north1-a' AND name = 'disk-1';


Удаление ресурса:
DELETE FROM google.compute.disks
WHERE disk = 'disk-1' AND project = 'stackql-demo' AND zone = 'europe-north1-a';


Управление состоянием ресурсов: используйте команды EXEC для управления состоянием ресурсов, такими как запуск и остановка виртуальных машин. Примеры:

Остановка инстанса:
EXEC google.compute.instances.stop  @instance = 'instance-1',
@project = 'stackql-demo', @zone = 'europe-north1-a';


Запуск инстанса:
EXEC google.compute.instances.start
@instance = 'instance-1', @project = 'stackql-demo',
@zone = 'europe-north1-a';


➡️ Подробнее про инструмент

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как JVM обрабатывает исключения

Интересно, как Java Virtual Machine обрабатывает исключения на уровне байт-кода? В статье подробно разбирается, что происходит «под капотом» при возникновении исключений в Java. Узнайте о структуре таблицы исключений, последовательности байт-код инструкций и о том, как JVM управляет потоком выполнения при возникновении ошибок.

🔗 Подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Виртуальная стажировка Java – твой путь в мир коммерческой разработки!

🚀 Хочешь научиться писать код, который работает в проде? Тогда тебе сюда! На этом курсе ты:
Под руководством опытного ментора реализуешь проект с нуля до продакшена
Освоишь современные технологии и библиотеки, используемые в реальной разработке
Разберешься в архитектуре, тестировании, развертывании и интеграции

🛠️ Какие технологии освоишь?

- Spring Boot, Gradle, JPA, Hibernate
- RabbitMQ, Docker, Liquibase
- JUnit, Mockito, Lombok, GitHub
- Design patterns, DDD, Clean Code
…и многое другое!

🎯 Главная цель – прокачать инженерное мышление. Не просто кодить, а решать реальные задачи бизнеса с помощью IT.

📌 В конце ты получишь не только кейсовый опыт коммерческой разработки, но и готовый проект в портфолио.

💬 Вопросы? Пиши ментору:
🔹 Telegram: @javagurulv
📩 Email: [email protected]

🖇 Присоединяйся к сообществу!
👉 Телеграм-группа стажировки
👉 Курс на Stepik
Что такое авторизация и аутентификация?

▪️ Аутентификация — процесс проверки подлинности субъекта (пользователя или системы) на основе предоставленных им учетных данных (например, пары логин/пароль, сертификата или токена). Она подтверждает, что субъект является тем, за кого себя выдаёт.

▪️Авторизация — процесс определения прав и привилегий аутентифицированного субъекта в рамках определённой системы или ресурса. Она определяет, какие действия или ресурсы доступны субъекту после успешной аутентификации.

Аутентификация устанавливает личность субъекта, а авторизация — его полномочия в системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет на 2025-й — будьте осторожнее с выбором работы.

IT-рынок штормит: массовые сокращения, заморозка найма, снижение зарплат. В такое время особенно важно отличать стоящие офферы от проходных.

Знакомо? Открываешь вакансию, а там: «Ищем middle-разработчика с опытом 10 лет, знанием 15 языков и готовностью работать за печеньки. Офис в Челябинске, релокация за ваш счет» 🤦‍♂️

Чтобы не тратить время на сотни сомнительных предложений, подпишитесь на IT Job Hub. Там мы отфильтровываем весь мусор и публикуем только избранные вакансии в стабильных компаниях:

— Зарплаты на уровне рынка, а не на уровне голодного студента
— Никаких «мы молодая и дружная семья» — только адекватные условия
— Проверенные работодатели, а не стартапы из сомнительных сфер

Вакансии удобно разбиты по тегам: #python #java #go #data #devops и по другим направлениям. Без воды и лишнего спама — только проверенные вакансии в знакомых компаниях.

Подписывайтесь, если не хотите упустить работу мечты → @proglib_jobs