Easy Java
Ir al canal en Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Mostrar más5 220
Suscriptores
-124 horas
-237 días
-8730 días
Archivo de publicaciones
5 220
😈Переиграли и уничтожили
SkillBox’y привет, всем остальным соболезную. Залили новые курсы, забирайте ниже:
➖Python (64гб курсов)
➖C# (27гб курсов)
➖Java (45гб курсов)
➖PHP (34гб курсов)
➖Go (23гб курсов)
➖Rust (37гб курсов)
➖SQL (41гб курсов)
➖MySQL (21гб курсов)
➖Другое (114гб курсов)
Не видео на ютуб, а реальный СЛИВ огромных баз. Проверь сам!🚨
5 220
❓ Вопрос с собеса
Что означает ключевое слово
final для переменных и параметров в Java?
Пример🔽
public class Main {
public static void main(String[] args) {
final int x = 10;
// x = 20; // Ошибка компиляции
printName("Alice");
}
static void printName(final String name) {
// name = "Bob"; // Ошибка: нельзя переназначить final-параметр
System.out.println("Имя: " + name);
}
}
Ответ🔽
final означает, что переменная не может быть переназначена после инициализации. Это касается локальных переменных, параметров метода и полей класса. 📌 final не делает объект неизменяемым, а лишь защищает ссылку от повторного присваивания. Сам объект по-прежнему может меняться, если он мутируемый➡️ Easy Java | #Собес
5 220
👩💻 Что такое ключевое слово volatile в Java и зачем оно нужно?
volatile — это модификатор для переменных, который сообщает JVM, что значение этой переменной может изменяться в разных потоках. Он запрещает потокам кэшировать значение и гарантирует видимость изменений.
Это важно при разработке многопоточных программ, особенно для флагов остановки или синхронизации состояния без использования synchronized.• Обеспечивает видимость изменений между потоками • Упрощает синхронизацию для простых случаев • Избегает лишних блокировок ⚡️ Пример:
public class Main {
private static volatile boolean running = true;
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (running) {
// Выполняем работу, пока running == true
}
System.out.println("Поток завершён");
});
worker.start();
Thread.sleep(1000);
running = false; // другой поток увидит это изменение
}
}
👀 volatile особенно полезен для сигналов завершения, управления флагами и других случаев, где нужна простая синхронизация без полной блокировки.➡️ Easy Java | #Теория
5 220
Встретились как-то разработчики, аналитики, инженеры данных и DevOps-инженеры…
⚡️Что может их объединять? Главная цель — понять концепцию и архитектуру взаимодействия с Kafka. И нет, это не шутка, это всё курс «Apache Kafka для разработчиков и аналитиков».
⚡️Уже 30 июня старт углублённого курса на платформе Docker+Postgres. На курсе вы вы изучите архитектуру и поймете логику работы с Kafka на примере бизнес-кейсов, среди которых:
🌐 Финтех
🌐 Репликация таблиц из MySQL в Oracle
🌐Сайт оператора связи с возможностью онлайн-продаж услуг Интернет и ТВ
🌐 Защита от DDoS при обработке API
Занимайте место на курсе прямо сейчас ❗️на 15 000₽ дешевле обычной стоимости, чтобы точно не пропустить старт и стать ещё конкурентоспособнее на рынке IT.
👉🏻Смотреть программу курса
5 220
❓ Вопрос с собеса
Зачем в Java используется ключевое слово
volatile?
Пример🔽
public class Main {
private static volatile boolean running = true;
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (running) {
// бесконечный цикл, пока running == true
}
System.out.println("Поток завершён");
});
worker.start();
Thread.sleep(1000);
running = false;
}
}
Ответ🔽
volatile говорит JVM, что переменная может изменяться в других потоках, и запрещает кэшировать её значение. Без volatile поток может "застрять", не заметив изменения переменной. 📌 volatile не делает операции атомарными, но гарантирует видимость изменений между потоками. Используется для флагов, сигналов остановки и простейшей синхронизации➡️ Easy Java | #Собес
5 220
👩💻 Что такое ключевое слово
transient в Java и зачем оно нужно?
transient — это модификатор, который используется для исключения поля из сериализации. Если объект сериализуется (например, в файл или по сети), поля с transient не будут сохранены.
Это полезно для чувствительных данных (например, паролей), временных кэшей или зависимостей, которые не нужно сохранять и восстанавливать.• Исключает поле из сериализации • Помогает защитить конфиденциальные данные • Уменьшает размер сериализованных объектов ⚡️ Пример:
import java.io.*;
class User implements Serializable {
String name;
transient String password;
User(String name, String password) {
this.name = name;
this.password = password;
}
}
public class Main {
public static void main(String[] args) throws Exception {
User user = new User("admin", "12345");
// Сериализация
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("user.ser"))) {
out.writeObject(user);
}
// Десериализация
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("user.ser"))) {
User loaded = (User) in.readObject();
System.out.println("Name: " + loaded.name); // ➔ admin
System.out.println("Password: " + loaded.password); // ➔ null
}
}
}
👀 transient особенно полезен в ситуациях, когда часть данных не должна сохраняться между сессиями — будь то безопасность, производительность или структура бизнес-логики.➡️ Easy Java | #Теория
5 220
🐱 3782 приватных репо GitHub выложили в Telegram
⏺Лучшие опенсорсные проекты
⏺Сотни курсов по всем ЯП
⏺Аналоги платного софта
⏺Самые понятные гайды
⏺Подробные планы обучения
⏺Скрипты для всех языков
⏺Многое-многое другое...
Вход открыт ровно на 48 часов 🕔
5 220
👩💻 JPQL: как писать запросы, которые не сломают Hibernate
Узнайте, как писать JPQL-запросы, которые ускорят Hibernate в 5 раз, избегая критических ошибок, тормозящих 80% проектов!
Приглашаем на открытый урок
🗓 19 июня в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
✅- JPQL vs SQL: почему ваши запросы ломают Hibernate и как их переписать так, чтобы БД не «умирала» под нагрузкой.
✅- Тайные ловушки: антипаттерны JPQL, генерирующие N+1 SELECT и тормозящие приложение, и методы их поиска в коде.
✅- Оптимизация на максимум: как использовать JOIN FETCH, подзапросы и кэширование в JPQL для мгновенного ускорения Hibernate.
👥 Кому будет интересно:
Java-разработчикам, использующим Hibernate, системным архитекторам и инженерам по оптимизации производительности.
💡В результате урока вы:
Научитесь писать эффективные JPQL-запросы, избегать распространённых ошибок и значительно ускорять работу Hibernate-приложений.
🎁 Дарим промокод, который дает скидку на обучение - JAVA_06
🔗 Регистрация на вебинар: https://otus.pw/x9BZ/
#реклама
О рекламодателе
5 220
❓ Вопрос с собеса
Что произойдёт, если в catch-блоке снова выбросить исключение?
Пример🔽
public class Main {
public static void main(String[] args) {
try {
risky();
} catch (Exception e) {
System.out.println("Обработка в main: " + e.getMessage());
}
}
static void risky() {
try {
throw new RuntimeException("Ошибка в try");
} catch (RuntimeException e) {
System.out.println("Поймано: " + e.getMessage());
throw new IllegalStateException("Повторно выброшено");
}
}
}
Ответ🔽
Если в блоке catch выбросить новое исключение, предыдущее "теряется", и наружу выйдет только то, что выбросили повторно. 📌 Чтобы сохранить оригинальное исключение, его можно передать как cause: throw new IllegalStateException("...", e); Это важно для правильной диагностики и трассировки ошибок в продакшене➡️ Easy Java | #Собес
5 220
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
Айтишники поймут
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
