Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
Больше📈 Аналитический обзор Telegram-канала Java Portal | Программирование
Канал Java Portal | Программирование (@java_iibrary) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 109 подписчиков, занимая 10 407 место в категории Технологии и приложения и 54 513 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 109 подписчиков.
Согласно последним данным от 09 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -147, а за последние 24 часа — -12, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 11.15%. В первые 24 часа после публикации контент обычно набирает 6.42% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 351 просмотров. В течение первых суток публикация набирает 778 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как boot, string, void, архитектура, resttemplate.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
Благодаря высокой частоте обновлений (последние данные получены 10 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
@OneToMany и @ManyToOne помогают определить связи между сущностями в базе данных
Пример:
Пользователь может иметь много заказов →
@OneToMany(mappedBy = "user")
private List<Order> orders;
Каждый заказ принадлежит одному пользователю →
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
👉 Java Portal1. Authentication Manager > Authentication Manager отвечает за обработку запросов на аутентификацию. Он делегирует процесс проверки различным провайдерам, которые можно настроить для поддержки разных способов аутентификации (например, логин/пароль, OAuth, LDAP). 2. Security Filter Chain > Security Filter Chain — это набор фильтров, перехватывающих HTTP-запросы. Каждый фильтр выполняет свою задачу, например, проверку аутентификации, контроль доступа или управление сессией. Фильтры выполняются в определённой последовательности, обеспечивая многоуровневую защиту. 3. UserDetailsService > Интерфейс UserDetailsService используется для загрузки пользовательских данных, необходимых для процессов аутентификации и авторизации. Разработчики могут реализовать его, чтобы подключаться к внешним источникам данных, таким как базы данных или сторонние сервисы. 4. GrantedAuthority > GrantedAuthority представляет собой полномочие, предоставляемое объекту Authentication. Обычно используется для определения ролей или разрешений пользователя в приложении, обеспечивая тонкую настройку доступа. 5. Security Context > Security Context хранит информацию о текущем пользователе — его данные аутентификации и полномочия. Эта информация размещается в потоко-безопасной переменной и доступна на протяжении всей сессии пользователя.Spring Security можно настраивать через XML или на Java. В современных приложениях предпочтение отдают Java-конфигурации за счёт её простоты и типобезопасности. На фото базовый пример настройки на Java 🤪 👉 Java Portal
java.lang.ClassCircularityError в Java
JVM выбрасывает java.lang.ClassCircularityError, если при загрузке классов обнаруживает циклическую зависимость, например:
class A extends B {}
class B extends A {}
Такую ошибку можно спровоцировать, если скомпилировать классы в два этапа или сгенерировать их во время выполнения.
Пример через компиляцию:
Создаем три файла:
// A.java
public class A extends B {}
class B {}
// B.java
public class B extends A {}
class A {}
// Run.java
void main() {
new A();
}
Выполняем команды:
mkdir step{1..3}
javac -d step1 A.java
javac -d step2 B.java
cp step1/A.class step3/
cp step2/B.class step3/
rm A.java B.java
java --enable-preview -cp step3/ Run.java
На этапе запуска получите ошибку:
Exception in thread "main" java.lang.ClassCircularityError: A
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
...
at Run.main(Run.java:2)
👉 Java PortalDatabaseConnection conn = new DatabaseConnection();
И всё круто.
Но потом разные части приложения начинают плодить свои собственные соединения. Это дорого (память, сеть) и приводит к багам вроде гонок данных и грязных чтений.
Теперь вы застряли в дебаггинге странных ошибок, причина которых в том, что у вас несколько экземпляров объекта, который должен был быть только один
Проблемы:
⏩Много экземпляров вместо одного общего.
⏩Трата ресурсов.
⏩Нестабильное поведение.
⏩Отладка превращается в ад.
Как Singleton спасает ситуацию
⏩Создаём экземпляр один раз
⏩Переиспользуем везде
⏩Контролируем доступ через одну глобальную точку
class DatabaseConnection {
private static DatabaseConnection instance;
private DatabaseConnection() {
System.out.println("Connecting to database...");
}
public static synchronized DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
}
return instance;
}
public void query(String sql) {
System.out.println("Running query: " + sql);
}
}
Когда использовать:
— Когда нужен только один объект (БД, логгер, менеджер потоков)
— Когда нужен глобальный доступ
— Когда важно беречь ресурсы
Java Portal@Override
public final String toString() {
return "Annotations are just modifiers";
}
Но на самом деле все эти варианты работают одинаково:
public @Override final String toString() ...
public final @Override String toString() ...
Все три записи синтаксически корректны и эквивалентны, компилятору всё равно, где стоит аннотация, он воспринимает её как модификатор 😉
Java Portal try не скомпилируется
Контекстные ключевые слова, напротив, можно использовать в качестве идентификаторов в большинстве случае
Начиная с Java 24, контекстные ключевые слова включают следующие:
exports opens requires uses yield
module permits sealed var
non-sealed provides to when
open record transitive with
Их можно использовать почти везде, где допустимо имя идентификатора
👉 Java PortalCompletableFuture, но где-то по ходу выполнения возникает исключение. Как с ним справиться? 😬
CompletableFuture предоставляет 3 способа обработки исключений
1. exceptionally() — этот метод принимает функцию обработки ошибки, которая выполняется, когда происходит исключение. Здесь у нас есть доступ только к ошибке, но не к данным, возвращённым с предыдущего этапа.
2. handle() — этот метод принимает результат и исключение и выполняется всегда после завершения предыдущего этапа. Это может быть как в случае успешного выполнения, так и при возникновении исключений.
3. whenComplete() — метод похож на handle(), но не изменяет результат. Он возвращает CompletableFuture и может быть использован в цепочке. Используется для выполнения побочных действий после завершения, вне зависимости от результата
👉 Java Portal
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
