Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Java Portal | Программирование
تُعد قناة Java Portal | Программирование (@java_iibrary) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 11 775 مشتركاً، محتلاً المرتبة 10 273 في فئة التكنولوجيات والتطبيقات والمرتبة 54 502 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 11 775 مشتركاً.
بحسب آخر البيانات بتاريخ 26 أغسطس, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -154، وفي آخر 24 ساعة بمقدار -2، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 10.27%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 5.76% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 209 مشاهدة. وخلال اليوم الأول يجمع عادةً 678 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل boot, string, void, архитектура, resttemplate.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 27 أغسطس, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
RuntimeException для случаев вроде "not found" / "invalid input" / "unauthorized" — компилятор заставляет обработать каждый возможный результат.
Преимущества в реальном коде:
- Ноль неожиданных исключений во время выполнения
- Понятно, что может произойти, просто посмотрев на сигнатуру метода
- Значительно проще тестировать и рефакторить
- Читается почти как Result в Rust или Result в Kotlin
👉 Java PortalHttpClient — добавляет опциональную поддержку HTTP/3 (QUIC), более умную работу с тайм-аутами, загрузку файлов через file-channel, усиленный контроль TLS, а также заголовки и cookies, приведённые в соответствие с RFC.
Подробнее: https://social.ora.cl/6019B6HWIN
👉 Java PortalGET /%61ctuator/health → HTTP 200 (5122B) ← 'a' закодирована GET /a%63tuator/health → HTTP 200 (5123B) ← 'c' закодирована GET /ac%74uator/health → HTTP 200 (5122B) ← 't' закодирована GET /act%75ator/health → HTTP 200 (5123B) ← 'u' закодирована GET /actu%61tor/health → HTTP 200 (5123B) ← 'a' закодирована GET /actua%74or/health → HTTP 200 (5123B) ← 't' закодирована GET /actuat%6For/health → HTTP 200 (5123B) ← 'o' закодирована GET /actuato%72/health → HTTP 200 (5123B) ← 'r' закодирована GET /a%63%74uator/health → HTTP 200 (5123B) ← двойное кодирование GET /%61ctua%74or/health → HTTP 200 (5123B) ← двойное кодирование GET /%61%63%74%75%61%74%6F%72/health → HTTP 200 (5122B) ← полностью закодировано👉 Java Portal
Files.walk() для рекурсивной обработки файлов в директории.
👉 Java PortalA --- B --- C (origin/main) \ D --- E (ваша ветка)После rebase:
A --- B --- C --- D --- E👉 Java Portal
spring.mvc.publish-request-params=true только в dev-среде. Это опасно в production.
В production логирование деталей запроса может привести к раскрытию чувствительной информации.
Когда вы настраиваете свойства Spring-приложения в dev со следующими параметрами:
# Включить публикацию параметров
spring.mvc.publish-request-params=true
# Установить уровни логирования, чтобы видеть вывод
logging.level.org.springframework.web=DEBUG
logging.level.org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor=DEBUG
и конфигурацию фильтра примерно такую:
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true); // 2) Query-параметры
filter.setIncludeHeaders(true); // 1) Заголовки запроса
filter.setIncludePayload(true); // 3) Данные формы
filter.setMaxPayloadLength(1000);
filter.setAfterMessagePrefix("COMPLETE REQUEST: ");
return filter;
}
вы включаете логирование:
1. заголовков запроса (Request headers)
2. query-параметров (Query parameters)
3. данных формы (Form data)
Без этого Spring маскирует или опускает многие из этих деталей, чтобы избежать утечки информации.
Не используйте это в production, иначе вы раскроете чувствительную информацию, например пароли:
POST /login
Body: {"username":"john","password":"mypassword"}
👉 Java Portal// Old way:
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "Winter";
break;
case 3:
case 4:
case 5:
season = "Spring";
break;
default:
season = "Invalid";
}
// New switch expression:
String season = switch (month) {
case 12, 1, 2 -> "Winter";
case 3, 4, 5 -> "Spring";
default -> "Invalid";
};new; может содержать абстрактные методы.
3. Final Class (финальный класс) — не может быть унаследован.
4. Static Class (вложенный статический класс) — статический внутренний класс внутри другого класса.
5. Inner Class (внутренний класс) — нестатический класс, объявленный внутри другого класса.
6. Local Class (локальный класс) — класс, определённый внутри метода.
7. Anonymous Class (анонимный класс) — класс без имени, обычно используется для кратковременных реализаций.
8. Singleton Class (синглтон-класс) — гарантирует существование только одного экземпляра класса.
9. POJO (Plain Old Java Object) — простой Java-класс без специальных ограничений или требований.
10. Record Class (Java 14+) — компактный класс для представления неизменяемых данных.
11. Enum Class (класс-перечисление) — определяет фиксированный набор констант.
👉 Java PortalList.reversed() возвращает неизменяемое (unmodifiable) представление исходного списка в обратном порядке.
👉 Java PortalПримечание: JS/TS для этого гайда я бы не рекомендовал.Базовое понимание программирования и OOP. Текстовый редактор и, возможно, много кофе. Как пойдет. 🤭 👉 Java Portal
Spring Bean Scope определяет жизненный цикл и область видимости бина в контейнере.
Основные типы:
- singleton (по умолчанию) — один экземпляр на весь контейнер.
- prototype — новый экземпляр для каждого запроса.
- request — бин живет в рамках одного HTTP-запроса.
- session — бин живет в рамках одной HTTP-сессии.
- application — бин живет в рамках всего веб-приложения.
- websocket — бин живет на протяжении сессии WebSocket.
👉 Java PortalThreadLocal.withInitial(...), чтобы у каждого потока было свое безопасное значение по умолчанию.
Значение создается лениво
👉 Java PortalELSE 0 вместе с COUNT и CASE
Использование ELSE 0 - очень частая ошибка у новичков, когда они комбинируют функцию COUNT с выражением CASE. Обычно это происходит из-за непонимания того, как именно COUNT работает при применении к столбцу.
Когда используется COUNT(column), функция считает все значения, которые не равны NULL, включая нули. Это значит, что если в выражении CASE указан ELSE 0, каждая строка, не попавшая под условие, превращается в значение 0. В результате такие строки тоже попадают в подсчёт.
Вот наивный пример:
sql id="g4suvd"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
ELSE 0
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;
В этом запросе каждая строка, которая не удовлетворяет условию, превращается в 0, а это валидное значение, поэтому оно тоже учитывается в COUNT. Из-за этого результат может получиться вводящим в заблуждение.
Лучше всего вообще убрать ELSE. Когда ветка ELSE опущена, выражение CASE возвращает NULL для строк, которые не соответствуют условию. А так как COUNT() игнорирует NULL, будут посчитаны только строки, которые действительно удовлетворяют условию. Вот правильный вариант:
sql id="vxa5np"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;
В этой версии строки, не подходящие под условие, возвращают NULL, и COUNT() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.
👉 Java Portal