Java Portal | Программирование
前往频道在 Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
显示更多📈 Telegram 频道 Java Portal | Программирование 的分析概览
频道 Java Portal | Программирование (@java_iibrary) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 130 名订阅者,在 技术与应用 类别中位列第 10 402,并在 俄罗斯 地区排名第 54 525 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 12 130 名订阅者。
根据 07 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -138,过去 24 小时变化为 2,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 11.37%。内容发布后 24 小时内通常能获得 6.26% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 379 次浏览,首日通常累积 760 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 4。
- 主题关注点: 内容集中在 boot, string, void, архитектура, resttemplate 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
凭借高频更新(最新数据采集于 08 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
12 130
订阅者
+224 小时
-287 天
-13830 天
帖子存档
Java-совет : избегай преждевременной оптимизации.
Сначала сосредоточься на чистом, рабочем коде.
Пиши код, который корректно работает, и в первую очередь закрывает функциональные требования.
// Простейший пример
String helloThere = "Hello " + "there" + "!";
System.out.println(helloThere);
// Эта строка кода читаемая и работает как задумано
// Позже можно подумать об оптимизации через StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello ");
sb.append("there");
sb.append("!");
System.out.println(sb.toString());
👉 Java PortalУ платформенных потоков в Java есть 6 состояний. У виртуальных потоков их около 20, но они скрыты от нас.
Держите свежий выпуск, где автор показывает, как с помощью глубокой рефлексии можно разобраться, как это вообще устроено:
Узнаем здесь! 🤭
👉 Java Portal
Принцип открытости/закрытости (OCP): это принцип из SOLID, который говорит, что классы должны быть открыты для расширения, но закрыты для модификации.
Вместо правки существующей реализации стоит добавлять новое поведение через интерфейсы и наследование в Java, не трогая уже написанный код.
// Плохой способ реализовать генератор отчётов
class ReportGenerator {
public void generateReport(String type) {
if (type.equals("PDF")) {
System.out.println("Generating PDF Report...");
} else if (type.equals("CSV")) {
System.out.println("Generating CSV Report...");
} else if (type.equals("EXCEL")) {
System.out.println("Generating Excel Report...");
}
}
}
// Более правильный вариант
// Определяем интерфейс
interface Report {
void generate();
}
// Реализации
class PdfReport implements Report {
public void generate() {
System.out.println("Generating PDF Report...");
}
}
class CsvReport implements Report {
public void generate() {
System.out.println("Generating CSV Report...");
}
}
// Используем конкретную реализацию
public class ReportApp {
public static void main(String[] args) {
Report report = new PdfReport();
report.generate();
}
}
👉 Java PortalSpring Boot Istio 1.2.0 вышел
Что подтянули в обновлении:
🍃авто-генерация fault-ов
🍃 авто-создание и инжект gateway
🍃 авто-генерация HTTP matches
Детали тут : https://github.com/piomin/spring-boot-istio
👉 Java Portal
Spring Boot: дорогие по времени API-вызовы можно кешировать через
@Cacheable и Redis.
Первый запрос с конкретным ключом идет в реальный API.
Все повторные — из Redis за миллисекунды.
<!-- Добавляем зависимости -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-b
# Базовая настройка в application.yml
spring:
redis:
host: localhost
port: 6379
cache:
type: redis
server:
port: 8080
// Конфигурация Redis (TTL 10 минут)
@Bean
public RedisCacheConfiguration cacheConfig() {
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(10))
.disableCachingNullValues();
}
// Кэшируем метод сервиса
@Cacheable("users")
public User getUserById(Long id) {
return userService.fetchUserFromRemoteApi(id);
}
Вот ссылка на демо-проект на Spring Boot (для работы нужен запущенный Redis на порту 6379)
👉 Java PortalПодсказка по Spring Boot: если нужно, чтобы DTO спокойно игнорировали лишние поля в JSON от клиента и не ломали API, можно повесить
@JsonIgnoreProperties(ignoreUnknown = true)
Дано DTO:
public class UserDTO {
private String name;
private int age;
// геттеры и сеттеры
}
Если с клиента прилетает такой JSON:
{
"name": "Alice",
"age": 25,
"extraField": "not expected"
}
Получим ошибку:
UnrecognizedPropertyException: Unrecognized field "extraField"Эту ситуацию решаем через аннотацию
@JsonIgnoreProperties:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
...
}
👉 Java PortalLATENCY VS THROUGHPUT
Когда пользователи говорят что приложение «тормозит», причина может быть в двух плоскостях:
* проблема latency (каждый запрос обрабатывается медленно)
* проблема throughput (система забита и не тянет нагрузку)
Иногда это вообще смесь обоих.
Latency — время, которое сервер тратит на выполнение одного запроса от начала до ответа.
Throughput — сколько запросов сервер способен обработать за единицу времени.
Представим, что ты инженер в сервисе доставки пиццы.
Сценарий 1:
Пользователь нажимает «Отправить заказ» и ответ долго крутится — значит высокий latency. Для пользователя это воспринимается как «всё лагает».
Низкий latency = быстрый отклик для каждого конкретного запроса.
Сценарий 2:
Ответы идут примерно по 100 мс — вроде норм. Но если система способна держать только 10 запросов в секунду, а одновременно приходит тысяча, всё разваливается. Это низкий throughput.
Высокий throughput = возможность обслуживать много пользователей одновременно.
Обе метрики критичны, особенно когда система растёт по нагрузке.
* Ответы быстрые, но при всплеске трафика сыпятся таймауты — проблема в throughput.
* Каждый запрос тормозит даже при маленьком трафике — проблема в latency.
» Как чинят проблемы с latency (ускоряем отдельные запросы)
Причины: медленные SQL-запросы, тяжёлые внешние API, прожорливая логика, геолокация сервера и так далее.
Обычно помогают индексы в БД, кэширование, оптимизация кода, CDN, профилирование узких мест.
» Как фиксят проблемы с throughput (увеличиваем пропускную способность)
Обычно упирается в ресурсы. Масштабирование: больше серверов, балансировка нагрузки, кэширование, горизонтальное расширение и т. п.
P.S. Для пользовательских API чаще гонятся за низким latency, а для фоновых задач типа batch-процессинга чаще важнее throughput, чем скорость каждого отдельного задания.
Всё упирается в то, под что именно ты оптимизируешься.
👉 Java Portal
Spring Boot совет
В тестах на Spring Boot можно без лишних настроек использовать
RestTestClient через аннотацию @AutoConfigureRestTestClient
Для TestRestTemplate есть аналогичная аннотация — @AutoConfigureTestRestTemplate
@SpringBootTest
@AutoConfigureRestTestClient
public class PersonControllerTests {
private static final String API_PATH = "/persons";
@Test
void add(@Autowired RestTestClient restTestClient) {
restTestClient.post().uri(API_PATH)
.body(Instancio.create(Person.class))
.exchange()
.expectStatus().is2xxSuccessful()
.expectBody(Person.class)
.value(person -> assertNotNull(person.getId()));
}
}
👉 Java PortalHidden классы в Java. Что скрывают Lambda выражения
С переходом Java на более безопасные и стандартизированные подходы к динамической генерации классов, скрытые (hidden) классы стали ключевым механизмом замены устаревшего
Unsafe::defineAnonymousClass
Они решают проблемы доступности, управления жизненным циклом и контроля доступа, особенно актуальные для разработчиков фреймворков и языков на JVM. Хотя скрытые классы пока не полностью заменяют функциональность Unsafe, они лежат в основе ряда важных механизмов, такие как, например, реализация лямбд в JDK.
Подробнее
👉 Java PortalНа Stepik вышел курс по Linux
Внутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой)
Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами.
После прохождения вы получите сертификат, который можно добавить в резюме.
Есть бесплатные демо-уроки для ознакомления. В ближайшие 48ч курс доступен со скидкой 25% по промокоду «
HNY_LINUX»: открыть курс на Stepik
P.S. Курс можно купить в подарок на Новый годGit worktree — отличный способ поднять песочницу, куда можно запустить агентов искать решение, пока ты спокойно продолжаешь работу на master или другой ветке. На фото баш-скрипт, который : создаёт новый worktree/ветку под задачку с префиксом ga fix (типа fizzy--fix), а потом gd можно снести всё к чертям, когда закончил.
Если хочешь потыкать у себя — есть удобный gist для копипасты.
👉 Java Portal
Понимание Git worktree. Отличная фича Git, особенно актуальная в эпоху агентных ИИ.
Подробнее
👉 Java Portal
Java-лайфхак: record — это не только про данные. В них можно добавить свои конструкторы или методы для валидации.
// Конструкторы, статические методы и методы экземпляра:
public record Email(String address) {
// Конструктор с валидацией
public Email {
if (address == null || !address.matches("^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$")) {
throw new IllegalArgumentException("Некорректный email: " + address);
}
}
// Метод экземпляра
public String domain() {
return address.substring(address.indexOf('@') + 1);
}
// Статический метод
public static Email from(String raw) {
return new Email(raw.trim().toLowerCase());
}
}
👉 Java PortalМожет пригодится: самохостящаяся система uptime-мониторинга, которую можно развернуть у себя и следить за тем, работают ли твои HTTP/S сервисы. Приложение показывает статус, считает аптайм, умеет проверять SSL, есть публичные статус-страницы, уведомления и прочее.
Забираем здесь
👉 Java Portal
Java совет: по возможности не возвращай из методов изменяемые внутренние коллекции. Это дает плюсы:
1. Не светишь внутреннее состояние, меньше рисков и утечек
2. Можно спокойно менять реализацию под капотом, не ломая остальной код
Если всё же нужно возвращать коллекции напрямую, можно сделать так:
- Вернуть глубокие копии коллекций (сложнее в реализации)
- Вернуть только read-only представление, например:
Collections.unmodifiableList(items)
👉 Java PortalКакие фичи C++ реально стоят того, чтобы ими пользоваться каждый день — а какие живут только в докладах и спорах на форумах?
Во втором выпуске «АйТир Листа» встретились два практикующих разработчика —
Данил Черепанов (МойОфис) и Антон Полухин (Яндекс) — и разобрали любимые и спорные возможности C++. Где-то всё было однозначно, а местами мнения разошлись кардинально 🙂
👉 Выпуск ЗДЕСЬ
Реклама
ООО "НОВЫЕ ОБЛАЧНЫЕ ТЕХНОЛОГИИ"
ИНН: 7703807270
erid: 2W5zFJaQXLt
Spring Boot: аккуратно задавайте границы
@ComponentScan, чтобы случайно не просканировать целиком весь пакет.
Предположим, вы пишете что-то вроде @ComponentScan("com.mycompany"), хотя на самом деле нужно сканировать только часть подпакетов com.mycompany:
- Увеличивается время сканирования classpath
- Замедляется старт приложения
- Подтягиваются классы, которые вообще не должны регистрироваться как Spring-бины
Лучшие практики:
Полагайтесь на дефолты:
@SpringBootApplication
public class MyApplication { }
По умолчанию Spring сканирует только подпакеты пакета, в котором лежит MyApplication.
Сканируйте конкретные подпакеты:
@ComponentScan({
"com.mycompany.myapp.product",
"com.mycompany.myapp.order"
})
👉 Java Portal⭐️ Road To Highload: Крупноблочная архитектура
В видеопроекте Road to Highload Сергей Трегуб, руководитель бэкенд‑разработки продуктовых сервисов Яндекс 360, рассказывает, как крупноблочная архитектура упрощает коммуникацию между разными командами разработки и помогает быстро принимать решения: в каком компоненте разместить новую бизнес‑логику и какие дополнительные блоки потребуются для её поддержки.
Road to Highload — это цикл видеоматериалов от Яндекс 360 о том, как строятся системы, которыми ежедневно пользуются миллионы людей и тысячи компаний. Здесь обсуждаются high‑load и отказоустойчивость не по учебникам, а на основе многолетнего практического опыта.Смотрите проект, чтобы узнать, как создаются одни из крупнейших облачных сервисов в России: ➕ Сайт проекта ➕ VK Видео ➕ Ютуб
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
