ru
Feedback
Java Geek

Java Geek

Открыть в Telegram

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter

Больше
2 416
Подписчики
Нет данных24 часа
-67 дней
-2330 день
Привлечение подписчиков
июль '26
июль '26
+5
в 0 каналах
июнь '26
+6
в 0 каналах
Get PRO
май '26
+23
в 0 каналах
Get PRO
апрель '26
+12
в 0 каналах
Get PRO
март '26
+18
в 0 каналах
Get PRO
февраль '26
+21
в 0 каналах
Get PRO
январь '26
+16
в 0 каналах
Get PRO
декабрь '25
+11
в 0 каналах
Get PRO
ноябрь '25
+43
в 32 каналах
Get PRO
октябрь '25
+31
в 0 каналах
Get PRO
сентябрь '25
+55
в 37 каналах
Get PRO
август '25
+40
в 0 каналах
Get PRO
июль '25
+60
в 28 каналах
Get PRO
июнь '25
+61
в 20 каналах
Get PRO
май '25
+71
в 45 каналах
Get PRO
апрель '25
+102
в 37 каналах
Get PRO
март '25
+96
в 38 каналах
Get PRO
февраль '25
+81
в 32 каналах
Get PRO
январь '25
+98
в 34 каналах
Get PRO
декабрь '24
+86
в 35 каналах
Get PRO
ноябрь '24
+75
в 33 каналах
Get PRO
октябрь '24
+89
в 30 каналах
Get PRO
сентябрь '24
+121
в 29 каналах
Get PRO
август '24
+49
в 18 каналах
Get PRO
июль '24
+45
в 0 каналах
Get PRO
июнь '24
+68
в 24 каналах
Get PRO
май '24
+65
в 19 каналах
Get PRO
апрель '24
+48
в 0 каналах
Get PRO
март '24
+78
в 21 каналах
Get PRO
февраль '24
+85
в 18 каналах
Get PRO
январь '24
+154
в 24 каналах
Get PRO
декабрь '23
+111
в 24 каналах
Get PRO
ноябрь '23
+92
в 17 каналах
Get PRO
октябрь '23
+111
в 18 каналах
Get PRO
сентябрь '23
+108
в 0 каналах
Get PRO
август '23
+73
в 0 каналах
Get PRO
июль '23
+99
в 0 каналах
Get PRO
июнь '23
+95
в 0 каналах
Get PRO
май '23
+115
в 0 каналах
Get PRO
апрель '23
+114
в 0 каналах
Get PRO
март '23
+29
в 0 каналах
Get PRO
февраль '23
+67
в 0 каналах
Get PRO
январь '23
+124
в 0 каналах
Get PRO
декабрь '22
+161
в 0 каналах
Get PRO
ноябрь '22
+107
в 0 каналах
Get PRO
октябрь '22
+277
в 0 каналах
Get PRO
сентябрь '22
+1 189
в 0 каналах
Дата
Привлечение подписчиков
Упоминания
Каналы
14 июля0
13 июля0
12 июля0
11 июля0
10 июля0
09 июля0
08 июля0
07 июля0
06 июля+3
05 июля0
04 июля0
03 июля0
02 июля0
01 июля+2
Посты канала
Расскажите о различиях вложенных классов: простых и статических? Простые вложенные классы используются для тесной связи с внешним классом, а статические — когда нужно логически сгруппировать некоторый функционал. Основные различия: - Простой вложенный класс имеет доступ к членам внешнего класса, статический - нет. - Для создания экземпляра простого вложенного класса нужен экземпляр внешнего класса, для статического - нет. - Простой вложенный класс зависит от экземпляра внешнего класса, статический - нет. 👉 @java_geek

2
Почему метод clone объявлен как protected? Метод clone() по умолчанию объявлен как protected, чтобы ограничить возможность клонирования объектов. Если бы метод был public, то любой код мог бы клонировать объекты класса. А это не всегда желательно по соображениям безопасности и корректности программы. С protected доступом клонирование разрешено только внутри класса и его наследников. Таким образом разработчик класса может сам решить, будет ли класс поддерживать клонирование и как именно оно будет реализовано в методе clone(). Делая клонирование protected по умолчанию, Java принуждает разработчика сознательно разрешить клонирование класса путем переопределения метода clone() как public в самом классе. Это позволяет более гибко контролировать возможности клонирования в каждом конкретном классе. 👉 @java_geek
180
3
👩‍💻 Стоит ли учить Java в 2026: куда движется язык и где работают джависты Приглашаем на открытый урок. 🗓 16 июля в 20:00
👩‍💻 Стоит ли учить Java в 2026: куда движется язык и где работают джависты Приглашаем на открытый урок. 🗓 16 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик». Программа урока: ✔️ Развенчиваем главный миф новичка: правда ли, что «Java умерла» и всем надо идти в Python или Go ✔️ Где Java реально работает в 2026: банки, финтех, маркетплейсы, стриминги с миллионами пользователей, логистика ✔️ Big Data на JVM: почему Kafka, Spark и Hadoop написаны на Java и зачем это знать даже питонисту ✔️ Куда движется язык: релизы каждые полгода, борьба с многословностью, нативная компиляция (GraalVM), связка с AI ✔️ Карьера джависта: зарплаты, стабильность и почему этот язык — фундамент для долгого пути в IT 🔗 Ссылка на регистрацию: https://vk.cc/cZlozX Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
266
4
Что такое каскадность? Как она используется в Hibernate? Каскадность в Hibernate — это функция, которая позволяет автоматически распространять состояние сущности на связанные с ней сущности. Это означает, что когда мы выполняем определенное действие над целевой сущностью, то же самое действие будет применено к связанным с ней сущностям. Например, если у нас есть отношение между сущностями Person и Address, и без сущности Person сущность Address не имеет смысла. Когда мы удаляем сущность Person, наша сущность Address также должна быть удалена. Каскадность — это способ достижения этого. В JPA/Hibernate имеются различные типы каскадности, которые определяют, какие операции должны распространяться на связанные сущности. Например, CascadeType.ALL распространяет все операции от родительской сущности на дочернюю. 👉 @java_geek
230
5
Что вернет выражение 1.0/0.0? Приведет ли оно к генерации исключения или ошибке при компиляции? Еще один каверзный вопрос насчет класса Double. Хотя разработчики Java знают о существовании простого типа данных double и класса Double, при выполнении операций с плавающей точкой они не уделяют достаточного внимания Double.INFINITY, NaN, -0.0 и правилам, которым подчиняются связанные с ними арифметические вычисления. Ответ на этот вопрос прост: генерации исключения ArithmeticException не произойдет, будет возвращено значение Double.INFINITY. 👉 @java_geek
301
6
🔴 Завтра тестовое собеседование с Java-разработчиком 1 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседов
🔴 Завтра тестовое собеседование с Java-разработчиком 1 июля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Виктору Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.
308
7
Можно ли перегрузить static метод? Перегрузка методов позволяет создать несколько методов с одинаковым именем, но разными списками параметров. Это работает как для обычных, так и для статических методов класса. Например, можно создать статический метод sum, который будет складывать числа. Метод можно перегрузить, создав одну версию для сложения целых чисел (int), а другую — для сложения чисел с плавающей точкой (double). При вызове метода компилятор будет выбирать нужную версию на основе типа аргументов. Это делает класс с перегруженными методами более гибким и удобным для использования. 👉 @java_geek
246
8
Что будет, если в static блоке кода возникнет исключение? Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса. Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс. Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям. Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса. 👉 @java_geek
270
9
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
242
10
Pattern.asPredicate() Pattern.asPredicate() превращает регулярное выражение в Predicate, который можно использовать п
Pattern.asPredicate() Pattern.asPredicate() превращает регулярное выражение в Predicate<String>, который можно использовать прямо в потоках (Stream). Это полезно для фильтрации строк без явного вызова .matches(). 👉 @java_geek
249
11
Как определить, содержит ли массив определенное значение в Java с помощью потоков? Чтобы проверить, содержит ли массив значен
Как определить, содержит ли массив определенное значение в Java с помощью потоков? Чтобы проверить, содержит ли массив значений int, double или long значение, используйте IntStream, DoubleStream или LongStream соответственно. 👉 @java_geek
310
12
👩‍💻 Алгоритмическая сложность коллекций в Java Приглашаем на открытый урок. 🗓 01 июля в 20:00 МСК 🆓 Бесплатно. Урок в рам
👩‍💻 Алгоритмическая сложность коллекций в Java Приглашаем на открытый урок. 🗓 01 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик». Программа урока: ✔️Основы алгоритмической сложности и принцип работы о-нотации; ✔️Влияние сложности операций на выбор подходящих коллекций; ✔️Сравнение популярных коллекций Java по эффективности выполнения различных операций; ✔️Практическая демонстрация, в которой будет показано, как эффективно использовать коллекции; ✔️Рекомендации по выбору коллекций для решения задач разного уровня сложности. 🔗 Ссылка на регистрацию: https://vk.cc/cYZxl9 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
295
13
Дайте краткую характеристику Enum в Java Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется
Дайте краткую характеристику Enum в Java Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum. Вот пример с enum — допустимые роли в некоторой школе (см картинку). Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new. Использование перечислений заметно упрощает жизнь, так как они помогают избежать ошибок и путаницы в наименованиях (так как может быть только определенный перечень значений). 👉 @java_geek
295
14
Что такое «fail-fast поведение»? fail-fast поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени. В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают ConcurrentModificationException, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора. Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count): • при изменении коллекции счетчик модификаций так же изменяется; • при создании итератора ему передается текущее значение счетчика; • при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение. 👉 @java_geek
356
15
👩‍💻 Как работает @Transactional в Spring: границы транзакций и типовые ошибки Приглашаем на открытый урок. 🗓 29 июня в 20:
👩‍💻 Как работает @Transactional в Spring: границы транзакций и типовые ошибки Приглашаем на открытый урок. 🗓 29 июня в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». На занятии мы разберем: ✔️Что реально делает @Transactional в Spring ✔️Почему важны proxy и вызов метода через Spring Bean ✔️Как работают propagation-режимы на примере REQUIRED и REQUIRES_NEW ✔️Когда происходит rollback и почему checked exceptions не всегда откатывают транзакцию ✔️Типовые ошибки при работе с транзакциями в сервисном слое Урок будет полезен Java/Kotlin-разработчикам, которые уже пишут приложения на Spring или начинают использовать Spring в реальных backend-проектах и хотят лучше понимать поведение транзакций. 🔗 Ссылка на регистрацию: https://vk.cc/cYRHlf Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
322
16
Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java? Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие: Serializable используется для явного указания того, что этот класс может быть сериализован; Cloneable позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException); Remote используется в RMI для указания интерфейса, методы которого можно вызывать удаленно. 👉 @java_geek
293
17
Сколько различных типов конструкторов существует в Java? В Java есть 2 типа конструкторов: 1) Конструктор по умолчанию — не принимает никаких параметров. 2) Параметризованный конструктор — принимает как минимум один параметр. 👉 @java_geek
314
18
Многопоточность в Java В Java многопоточность реализована через класс Thread и интерфейс Runnable. Вот основные моменты, которые могут быть полезны при работе с многопоточностью: 🔵1. Создание и запуск потока - Поток может быть создан двумя способами: - Наследование от класса Thread: class MyThread extends Thread { public void run() { // Код, выполняемый в потоке } } MyThread t = new MyThread(); t.start(); - Реализация интерфейса Runnable: class MyRunnable implements Runnable { public void run() { // Код, выполняемый в потоке } } Thread t = new Thread(new MyRunnable()); t.start(); 🔵2. Основные методы класса Thread - start() — запуск потока. - sleep(long millis) — приостановка потока на определенное время. - join() — ожидание завершения потока. - interrupt() — прерывание потока. - isAlive() — проверка, работает ли поток. 🔵3. Синхронизация - Чтобы избежать проблем с конкурентным доступом к данным, используется синхронизация: synchronized (this) { // Критическая секция } Это гарантирует, что только один поток может выполнить код внутри синхронизированного блока. 🔵4. Пул потоков - Для управления большим количеством потоков используется пул потоков, который управляется через ExecutorService. Пример: ExecutorService executor = Executors.newFixedThreadPool(10); executor.submit(() -> { // Задача для потока }); executor.shutdown(); 🔵5. Состояния потока Потоки могут находиться в разных состояниях: - NEW: Поток создан, но не запущен. - RUNNABLE: Поток готов к выполнению. - WAITING: Поток ожидает другого потока. - TIMED_WAITING: Поток ожидает в течение определенного времени. - TERMINATED: Поток завершен. 🔵6. Проблемы многопоточности - Состояние гонки (Race condition) — ситуация, когда несколько потоков одновременно пытаются изменить данные, что может привести к некорректным результатам. - Блокировки — проблемы с мертвыми блокировками (deadlocks), когда потоки навсегда блокируются, ожидая друг друга. 🔵7. Современные подходы и классы - ForkJoinPool — используется для параллельного выполнения задач с разделением на подзадачи. - CountDownLatch, CyclicBarrier, Semaphore — различные утилиты для синхронизации между потоками. 🔵8. Параллельное выполнение коллекций - Коллекции в Java также могут работать с потоками через parallelStream(): List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.parallelStream().forEach(System.out::println); Многопоточность — мощный инструмент для улучшения производительности приложений, но требует внимательности при реализации, чтобы избежать ошибок, таких как мертвые блокировки или некорректный доступ к данным. 👉 @java_geek
352
19
Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако сущес
Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс TypedSort, который дает нам возможность передавать функцию в качестве параметра для сортировки. Это повышает безопасность типов в нашем коде. 👉 @java_geek
363
20
Можно ли указывать конструктор внутри Enum? Да, конечно. Именно через конструктор и задаются значения внутренних переменных e
Можно ли указывать конструктор внутри Enum? Да, конечно. Именно через конструктор и задаются значения внутренних переменных enum. В качестве примера добавим два поля - ageFrom и ageTo - чтобы обозначить возрастные рамки для каждой роли. 👉 @java_geek
365