Easy Java
رفتن به کانال در Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
نمایش بیشتر5 035
مشترکین
-624 ساعت
-237 روز
-7830 روز
آرشیو پست ها
5 035
❓ Вопрос с собеса
Почему важно переопределять
equals() вместе с hashCode() в Java?
Пример🔽
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
class User {
String name;
User(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User user)) return false;
return Objects.equals(name, user.name);
}
// hashCode не переопределён!
}
public class Main {
public static void main(String[] args) {
Set<User> users = new HashSet<>();
users.add(new User("Alice"));
System.out.println(users.contains(new User("Alice"))); // ➔ false
}
}
Ответ🔽
Если переопределить equals() без hashCode(), коллекции вроде HashSet, HashMap будут работать некорректно, потому что объект может попасть в неправильный "бакет". Даже если equals() вернёт true, hashCode() может быть разным — и объект не найдётся. 📌 Контракт: если два объекта равны по equals(), они обязаны иметь одинаковый hashCode().➡️ Easy Java | #Собес
5 035
Не уверены, что у вас на сервере Postgres установлен правильный набор расширений?
Удивляетесь, что сервер ваших коллег умеет больше, чем ваш?
Присоединяйтесь к нашему вебинару «Особенности реализации запросов в PostgreSQL» и узнайте, как сделать все правильно!
✅ Практика: Создание собственных решений на основании самых полезных расширений Postgres, которые ставятся на большинство производственных серверов
📌Регистрируйтесь на урок, чтобы сделать ваш сервер Postgres лучше!
https://tglink.io/e744fc8720d7?erid=2W5zFHXPBUk
#реклама
О рекламодателе
5 035
Зарплата 207.000р у Middle-разработчика в Яндекс
Основной язык: Java
«В день уходит несколько часов на созвоны, в остальное время закрываю задачки из спринта, редко перерабатываю. У компании топовый офис, но с коллективом как-то не заладилось. Радуюсь классному ДМС и стабильной зарплате» - middle разработчик из Яндекса.
Бигтех по-русски - канал с реальными зарплатами и историями IT-специалистов российского БигТеха. Там уже опубликованы рассказы программистов Альфа-банка, Сбера и Тинькофф 🤯
Читайте: @bigtech_russia
5 035
👩💻 Что такое ThreadLocal в Java и зачем он нужен?
ThreadLocal — это специальный механизм, позволяющий хранить данные отдельно для каждого потока. Каждый поток получает свою копию значения, даже если переменная одна и та же.
Это удобно, когда нужно избежать синхронизации, но при этом обеспечить потокобезопасность — например, при работе с форматированием дат, сессиями или кэшами в потоках.• У каждого потока своё значение • Избавляет от использования synchronized • Удобен в многопоточном программировании и фреймворках ⚡️ Пример:
public class Main {
private static final ThreadLocal<Integer> threadId = ThreadLocal.withInitial(() -> (int) (Math.random() * 1000));
public static void main(String[] args) {
Runnable task = () -> System.out.println("ID потока: " + threadId.get());
new Thread(task).start();
new Thread(task).start();
new Thread(task).start();
}
}
👀 ThreadLocal особенно полезен в веб-приложениях, логгерах, и при реализации механизма хранения "контекста" внутри каждого потока — например, RequestContext, SecurityContext, TransactionContext.➡️ Easy Java | #Теория
5 035
😈Переиграли и уничтожили
SkillBox’y привет, всем остальным соболезную. Залили новые курсы, забирайте ниже:
➖Python (64гб курсов)
➖C# (27гб курсов)
➖Java (45гб курсов)
➖PHP (34гб курсов)
➖Go (23гб курсов)
➖Rust (37гб курсов)
➖SQL (41гб курсов)
➖MySQL (21гб курсов)
➖Другое (114гб курсов)
Не видео на ютуб, а реальный СЛИВ огромных баз. Проверь сам!🚨
5 035
❓ Вопрос с собеса
Что означает ключевое слово
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 035
👩💻 Что такое ключевое слово 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 035
Встретились как-то разработчики, аналитики, инженеры данных и DevOps-инженеры…
⚡️Что может их объединять? Главная цель — понять концепцию и архитектуру взаимодействия с Kafka. И нет, это не шутка, это всё курс «Apache Kafka для разработчиков и аналитиков».
⚡️Уже 30 июня старт углублённого курса на платформе Docker+Postgres. На курсе вы вы изучите архитектуру и поймете логику работы с Kafka на примере бизнес-кейсов, среди которых:
🌐 Финтех
🌐 Репликация таблиц из MySQL в Oracle
🌐Сайт оператора связи с возможностью онлайн-продаж услуг Интернет и ТВ
🌐 Защита от DDoS при обработке API
Занимайте место на курсе прямо сейчас ❗️на 15 000₽ дешевле обычной стоимости, чтобы точно не пропустить старт и стать ещё конкурентоспособнее на рынке IT.
👉🏻Смотреть программу курса
