Java: fill the gaps
Привет! Меня зовут Диана, и я занимаюсь разработкой с 2013. Здесь пишу просто и понятно про джава бэк 🔥Тот самый курс по многопочке🔥 https://fillthegaps.ru/mt Комплименты, вопросы, предложения: @utki_letyat
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Java: fill the gaps
تُعد قناة Java: fill the gaps (@java_fillthegaps) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 12 549 مشتركاً، محتلاً المرتبة 10 120 في فئة التكنولوجيات والتطبيقات والمرتبة 52 841 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 12 549 مشتركاً.
بحسب آخر البيانات بتاريخ 07 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -46، وفي آخر 24 ساعة بمقدار 0، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 34.72%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً N/A% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 0 مشاهدة. وخلال اليوم الأول يجمع عادةً 0 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 0.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل redis, hashmap, linkedhashmap, индекс, фича.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Привет! Меня зовут Диана, и я занимаюсь разработкой с 2013. Здесь пишу просто и понятно про джава бэк
🔥Тот самый курс по многопочке🔥
https://fillthegaps.ru/mt
Комплименты, вопросы, предложения: @utki_letyat”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 08 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
class IOException extends ExceptionЯвно указываются в сигнатуре методов:
void write(int c) throws IOExceptionИсключение обрабатывается в блоке try-catch. Иначе программа не скомпилируется. На практике checked используется, когда метод знает, что делать с ошибкой: попробовать ещё раз, выполнить другой код или вернуть значение по умолчанию. 1️⃣ Работа с внешними ресурсами — файлы, БД, другие сервисы. Повторить попытку или переоткрыть соединение 2️⃣ Ожидаемая ошибка Например, данные в легаси системе хранятся в двух форматах. Если не удалось прочитать одним способом, попробуем другим. 🔸Unchecked исключения — наследники класса RuntimeException:
class NullPointerException extends RuntimeExceptionО них не пишут в сигнатуре методов. Их редко ловят в блоке try-catch. Компилятор не предупредит о возможных ошибках, но иногда о них предупреждает IDE. Единственная техническая разница между checked и unchecked - за checked исключениями и их обработкой следит компилятор. На уровне JVM разницы нет - производительность обоих типов одинакова. На практике unchecked используются для ошибок, которые никто не ждал и что с ними делать во время работы программы - непонятно. ⭐️Правильный ответ на вопрос 1: обработка checked исключений обязательна и проверяется на этапе компиляции 🔸А что делать с ошибками бизнес-логики? Не найден пользователь, не хватает прав , превышен лимит снятия денег со счёта. Какие это исключения: checked или unchecked? В старых статьях по java и на курсах для новичков ответ однозначен. Все исключение должны быть checked, чтобы пользователь не увидел ошибку. Энтерпрайз - другое дело. Тысячи методов, тысячи проверок и ошибок. Если checked исключений много, код становится запутанным и сложным. Плюс исключения часто обрабатываются одинаково: записать в лог и отправить пользователю стандартное сообщение. В Spring и похожих фреймворках есть обработчики, который перехватывает все исключения. В таких системах бизнесовые ошибки часто делают unchecked, чтобы упростить код. Во многих проектах даже переводят checked исключения в unchecked:
catch (SQLException e)
{throw new IllegalStateException(e);}
⭐️Правильный ответ на вопрос 2:
На практике чаще встречается
extends RuntimeExceptionно вариант
extends Exception тоже ок
#coreif (obj instanceof String str)можно сразу использовать str как переменную. 2️⃣ Новое API: ▪️Алгоритм цифровой подписи EdDSA появился в пакете security. ▪️Foreign-Memory Access API: доступ к памяти за пределами Heap. ▪️Скрытые классы: Большинство фреймворков работают так: помечаете классы аннотациями, фреймворк их находит и создаёт класс-обёртку с дополнительными функциями.
MethodHandles.lookup() .defineHiddenClass(…)Создаст класс, который недоступен коду основного приложения. 3️⃣ Обновились классы DatagramSocket и MulticastSocket. 4️⃣ В финальную стадию вошли 2 сборщика мусора: ZGC и Shenandoah. Оба сборщика подойдут для приложений с RAM до 4 ТБ, в которых нежелательны долгие паузы на сборку мусора. В новых GC задержка не превысит 2 мс, но среднее время работы чуть увеличится. 5️⃣ Некоторые фичи стали недоступны: Nashorn JS Engine, Biased Locking, Solaris and SPARC Ports, RMI Activation for Removal Ответ на вопрос перед постом Как посчитать, когда версия java будет равна вашему возрасту: Пусть Age – возраст в 2020 x – количество лет, через которое версия = возраст.
Age + x = 15 + 2*x
x = Age - 15Ctrl + F12Есть функция частичного поиска, просто начните набирать часть имени метода. Список отфильтруется. 2️⃣ Найти класс или файл:
Shift-ShiftУниверсальный шорткат для поиска любых файлов в проекте. 3️⃣ Перейти к определению:
Ctrl + BДля переменных — где она была объявлена, для методов — к их реализации. 4️⃣ В предыдущий класс:
Ctrl + Alt + ⬅️ Ctrl + Alt + ➡️IDEA следит за перемещениями между файлами, и по истории можно быстро перемещаться. 5️⃣ Перейти на строку по номеру:
Ctrl + G"Проверь условие в строке 850". Можно не проматывать огромный класс, а быстро перейти на нужную строку. #IDEA
record Point(int x,int y){}
record Time(int hours,int min){}
❌ Point p = new Time(1,1);
Записи по факту одинаковые — два целых числа. Но имена разные, поэтому типы между собой несовместимы. У номинальных типов проверки часто происходят на этапе компиляции.
2️⃣ По данным внутри объекта. Тогда это структурный тип.
Для них возможна запись:
✅ Point p = new Time(1,1);
Структурные типы используются в функциональных языках и java script. Они добавляют больше гибкости, но менее управляемы.
В java структурных типов нет и скорее всего не будет. В 2013 году обсуждалось, чтобы ввести в язык первый структурный тип под названием arrow type. Выглядел бы он так:
(String) → IntegerИдею отвергли из-за сложностей реализации и адаптации к существующим библиотекам. Альтернативное решение — лямбда-выражения, представляют похожую функциональность, но с чётко определённым типом:
Function<String,Integer> f = str → str.length();Все структуры в java номинальные. Записи - не исключение. Номинальность была в требованиях для реализации, а в анонсе records называют nominal tuples — номинальные кортежи.
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
