Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
Show more📈 Analytical overview of Telegram channel Java Portal | Программирование
Channel Java Portal | Программирование (@java_iibrary) in the Russian language segment is an active participant. Currently, the community unites 11 775 subscribers, ranking 10 273 in the Technologies & Applications category and 54 502 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 775 subscribers.
According to the latest data from 26 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -154 over the last 30 days and by -2 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 10.27%. Within the first 24 hours after publication, content typically collects 5.76% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 209 views. Within the first day, a publication typically gains 678 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
- Thematic interests: Content is focused on key topics such as boot, string, void, архитектура, resttemplate.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
Thanks to the high frequency of updates (latest data received on 27 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
alg, которое указывает свой же алгоритм подписи. Вы можете установить его в "none", и некоторые библиотеки пропустят проверку.
Или взять публичный RSA-ключ, использовать его как HMAC-секрет, подписать через HS256 — и сервер, доверяющий заголовку, примет поддельный токен.
Это атака RS256→HS256 confusion, и она до сих пор ломает реальные системы.
2. PASETO привязывает криптографию к версии
Токен PASETO имеет формат version.purpose.payload. Версия фиксирует набор шифров — нечего согласовывать.
v4.public — всегда Ed25519. v4.local — всегда XChaCha20 с BLAKE2b. Нет заголовка alg — нет атаки alg:none и confusion-атак.
3. Вы выбираете назначение, а не алгоритм
Локальный токен (local) зашифрован симметричным ключом. Публичный токен (public) подписан так, что любой с публичным ключом может его проверить.
Стандартный JWT только подписан — payload читается как обычный base64, и секреты утекают, когда люди забывают об этом.
4. Для сессий не нужно ни то, ни другое
JWT безопасны только как короткоживущие токены — минуты, а не недели, на которые тянется сессия. Google делает именно так: JWT используется только для передачи логина между хостами, а сессия в браузере остаётся кукой.
PASETO — лучший выбор для короткоживущего подписанного токена: SSO-переходы, межсервисные вызовы, одноразовое использование.
Для сессий проще кука, подкреплённая Postgres или Redis, а отзыв одной сессии — это удаление одной строки.
Большинство логинов хватаются за токен там, где подошла бы сессия.
https://gist.github.com/samsch/0d1f3d3b4745d778f78b230cf6061452
👉 Java Portalgit init
создаёт папку, за которой Git начинает следить
git add
говоришь Git: «эти изменения пойдут в сохранение»
git commit
фиксирует снимок состояния проекта в этот момент
git push
отправляет эти снимки в облако (обычно GitHub)
git pull
забирает снимки, которые отправили другие
git branch
создаёт отдельную линию разработки, где можно работать изолированно
git merge
объединяет эту ветку обратно в основную
👉 Java Portalrecord для коротких неизменяемых объектов-носителей данных.
✅ короче обычных POJO
✅ автоматически есть equals(), hashCode(), toString()
✅ объекты неизменяемые по умолчанию
👉 Java Portalapplication.properties в каждый сервис.
Используйте Spring Cloud Config для централизованного управления конфигурацией, а не копируйте application.properties повсюду.
// — 1) Config Server: одно место, которое обслуживает конфигурацию всех сервисов —
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
public static void main(String[] args) {
new SpringApplicationBuilder(ConfigServerApp.class).run(args);
}
}
// — 2) application.yml сервера (раздаёт файлы из classpath) —
// spring.profiles.active: native # локальные файлы, Git не нужен
// spring.cloud.config.server.native.search-locations: classpath:/config
// server.port: 8888
// — 3) /config/client-service.yml (конфигурация для "client-service") —
// myproperty: value
// — 4) Клиент: загружает конфигурацию с сервера при запуске —
// spring.application.name: client-service
// spring.config.import: optional:configserver:http://localhost:8888
@Component
public class GreetingClient {
@Value("${myproperty}") // значение получено с Config Server
private String myProperty;
}
#SpringBoot #JavaDev
👉 Java Portaluser → address → city — классическая ловушка для NullPointerException. Вложенные проверки if (x != null) быстро разрастаются, и легко пропустить один из уровней.
✅Optional:
findByEmail(email)
.map(User::getAddress)
.map(Address::getCity)
.orElse("unknown");
Если Optional в API нет, достаточно одной проверки:
if (user == null || user.getAddress() == null)
Такой подход читается лучше, чем множество разбросанных null-проверок, из-за которых сложно понять, какое именно значение может отсутствовать.
#Java #NullSafety
👉 Java Portaljava.time вместо Date и Calendar.
API из java.time неизменяемые (immutable), потокобезопасные (thread-safe) и намного понятнее в использовании.
Преимущества:
LocalDate.of(2026, 5, 31) — май действительно означает май.
Нет изменяемых объектов, которые легко случайно испортить.
Форматтеры из DateTimeFormatter потокобезопасны.
Удобная работа с часовыми поясами через ZonedDateTime.
Более читаемый и предсказуемый код.
Вместо:
Date Calendar SimpleDateFormatИспользуйте:
LocalDate LocalDateTime ZonedDateTime Instant DateTimeFormatterКод становится проще, а количество ошибок с датами и временем заметно уменьшается. 👉 Java Portal
createUser(firstName, lastName, street, city, zip, country);
✅ Лучше сгруппировать связанные данные в отдельный объект:
createUser(firstName, lastName,
new Address(street, city, zip, country));
Такой подход:
• делает сигнатуры методов компактнее
• упрощает расширение модели данных
• снижает вероятность ошибок при вызове
• делает код более понятным и самодокументируемым
Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record.
#Java #Refactoring #CleanCode
👉 Java Portal