Java Portal | Программирование
前往频道在 Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
显示更多📈 Telegram 频道 Java Portal | Программирование 的分析概览
频道 Java Portal | Программирование (@java_iibrary) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 768 名订阅者,在 技术与应用 类别中位列第 10 256,并在 俄罗斯 地区排名第 54 543 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 11 768 名订阅者。
根据 29 八月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -144,过去 24 小时变化为 -1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 10.09%。内容发布后 24 小时内通常能获得 5.78% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 188 次浏览,首日通常累积 681 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 4。
- 主题关注点: 内容集中在 boot, string, void, архитектура, resttemplate 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
凭借高频更新(最新数据采集于 30 八月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
11 768
订阅者
-124 小时
-237 天
-14430 天
帖子存档
Внутренности Java switch
Как компилятор выбирает, какую инструкцию использовать?
Первое, что нужно знать: любой switch в Java компилируется в одну из двух JVM-инструкций:
>
tableswitch
> lookupswitch
Прежде чем разбирать, как работает каждая из них, давайте посмотрим, как компилятор решает, какую выбрать.
Следующий код сгенерирует tableswitch:
public String tableSwitch() {
return switch (value) {
case 1 -> "one";
case 2 -> "two";
case 4 -> "four";
default -> "other";
};
}
А вот этот код сгенерирует lookupswitch:
public String lookupSwitch() {
return switch (value) {
case 1 -> "one";
case 10 -> "ten";
case 100 -> "one hundred";
default -> "other";
};
}
Видишь разницу?
👍 — да. вижу
🔥 — нужно разбирать
👉 Java PortalУтечки памяти из-за загрузчика классов в Java
Java-приложения могут терять память из-за цепочек загрузчиков классов, когда статические ссылки мешают сборщику мусора удалить старые загрузчики.
Такое часто происходит при повторном деплое на серверах вроде Tomcat — и приводит к скрытым, трудноуловимым утечкам памяти 🍔
👉 Java Portal
Java с JMH для бенчмарков
Создай класс-бенчмарк, чтобы замерить производительность нужного кода 😈
👉 Java Portal
Как создавать многомодульные проекты в Spring Boot
🔜 Читать: клик
👉 Java Portal | #cтатья
Метод
FileSystems.newFileSystem(Path) появился ещё в JDK 13 (2019), но многие до сих пор о нём не знают
Он позволяет обращаться к содержимому файла, например ZIP-архива, как к файловой системе.
Пример Java-программы:
void main() {
Path src = Path.of("/opt/jdk-24/lib/src.zip");
try (FileSystem fs = FileSystems.newFileSystem(src)) {
for (Path root : fs.getRootDirectories()) {
try (Stream<Path> walk = Files.walk(root, 1)) {
walk.sorted().forEach(IO::println);
}
}
}
}
Результат выполнения:
/ /java.base /java.compiler /java.datatransfer /java.desktop /java.instrument /java.logging ... /jdk.unsupported /jdk.unsupported.desktop /jdk.xml.dom /jdk.zipfsДо появления этого метода нужно было использовать более сложный код с URI и явно указывать схему:
URI src = URI.create("jar:file:///opt/jdk-24/lib/src.zip");
try (FileSystem fs = FileSystems.newFileSystem(src, Map.of())) {
...
}
👉 Java PortalЧто такое
LinkedList (двусвязный список) в Java?
> Состоит из узлов, где каждый узел содержит данные и ссылки на следующий и предыдущий узлы
> Быстрые вставки и удаления — O(1), если есть ссылка на нужный узел
> Медленный доступ по индексу — O(n), т.к. нужно проходить список последовательно
🔧 Когда использовать:
> Частые вставки и удаления — особенно в начале или в середине списка
> Реализация очередей и деков — удобно добавлять в конец и забирать из начала
> Работа с большими объёмами данных, где перераспределение памяти (как в ArrayList) может быть дорогим. LinkedList не требует непрерывной памяти
> Undo/Redo-механизмы — например, в текстовых редакторах, где нужно быстро добавлять и удалять действия из истории
👉 Java PortalХочешь чистые REST API на Java?
Используй:
>
@RestController
> @RequestBody
> @PathVariable
> @ResponseStatus
Spring REST помогает писать код просто и понятно 🧑💻
👉 Java PortalУпростите свой бизнес-код на Java с помощью Flow DSL
🔜 Читать: клик
👉 Java Portal | #cтатья
👩💻 Всем программистам посвящается!
Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
📱 GitHub — t.me/github_ready 👩💻 Python — t.me/python_ready 👩💻 Java — t.me/java_ready 👩💻 Всё IT — t.me/it_ready 👩💻 C/C++ — https://t.me/cpp_ready 🖼️ DevOps — t.me/devops_ready 🤔 Хакинг & ИБ — t.me/hacking_ready 👩💻 C# & Unity — t.me/csharp_ready 👩💻 Linux — t.me/linux_ready 👩💻 Bash & Shell — t.me/bash_ready 👩💻 Нейросети — t.me/neuro_ready 📱 JavaScript — t.me/javascript_ready 👩💻 Frontend — t.me/frontend_ready 📖 IT Книги — t.me/books_ready 🖥 Базы Данных & SQL — t.me/sql_ready 👩💻 Backend — t.me/backend_ready 🖥 Design — t.me/design_ready📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
Этот Dockerfile для Spring Boot создаёт образ, который потребляет на 33% меньше памяти по сравнению с образом, собранным с помощью Buildpacks (рекомендуемый Spring способ сборки Docker-образов) 💪
👉 Java Portal
В чём разница между throw и throws в Java?
throw
> Используется для явного выбрасывания исключения.
> Синтаксис: throw new ExceptionType("сообщение");
> Применяется внутри метода или блока.
throws
> Объявляет возможные исключения, которые может выбросить метод.
> Указывается в сигнатуре метода.
> В основном используется для проверяемых исключений
👉 Java Portal
🔍Тестовое собеседование на Middle Java-разработчика завтра
14 мая(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Константин Лесняк, Java-разработчик с большим опытом проведения собесов, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Костя будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Косте
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvXmgo6
В Java можно ставить метку на выражение, которое уже промечено другой меткой. И так хоть до бесконечности.
Полезно? Вряд ли.
Стоит ли использовать? Точно нет.
Но как факт — это работает
Пример:
String question;
to: be: or: not: that: is: the: question = "What?";
out.println(question);
> Код компилируется
> Метки (to:, be:, or: и т.д.) игнорируются, если не используются в break или continue
Вывод:
What?
Иногда Java действительно говорит с нами стихами 🫢
👉 Java PortalСпособы сравнения строк в Java
1.
== → Сравнивает адреса в памяти
2. .equals() → Сравнивает содержимое строк
3. .compareTo() → Лексикографическое сравнение
4. .equalsIgnoreCase() → Сравнивает без учёта регистра
> Подробнее тут 😊
👉 Java PortalJDK 22 представил класс
java.text.ListFormat. Используйте его, когда нужно отформатировать список строк в удобочитаемый вид. Например, вот такая программа:
final List<String> days = List.of("Mon", "Wed", "Fri");
void main() {
print(Type.STANDARD);
print(Type.OR);
print(Type.UNIT);
}
private void print(Type type) {
print(type, Style.FULL);
print(type, Style.SHORT);
print(type, Style.NARROW);
}
private void print(Type type, Style style) {
var format = ListFormat.getInstance(Locale.US, type, style);
var result = format.format(days);
System.out.printf("%-8s + %-7s: %s%n", type, style, result);
}
Вывод:
STANDARD + FULL : Mon, Wed, and Fri
STANDARD + SHORT : Mon, Wed, & Fri
STANDARD + NARROW : Mon, Wed, Fri
OR + FULL : Mon, Wed, or Fri
OR + SHORT : Mon, Wed, or Fri
OR + NARROW : Mon, Wed, or Fri
UNIT + FULL : Mon, Wed, Fri
UNIT + SHORT : Mon, Wed, Fri
UNIT + NARROW : Mon Wed Fri
Также можно использовать ListFormat для разбора отформатированной строки обратно в список
Ставь лайк если полезно 🪑
👉 Java PortalОтличное руководство по безопасности Java-приложений
🔜 Читать: клик
👉 Java Portal | #cтатья
Используйте DTO для запросов и ответов
Никогда не передавайте сущности напрямую — всегда преобразовывайте их в DTO и обратно
🤍 — база
👉 Java Portal
+1
Вопросы для собеседования по микросервисам с ответами
1. Каковы ключевые характеристики микросервисов? Ответ: > Децентрализованное управление данными > Сервисы развёртываются независимо друг от друга > Проектирование на основе предметной области (DDD) > Лёгкое взаимодействие (например, REST, gRPC) > Изоляция сбоев > Удобны для непрерывной доставки 2. Чем микросервисы отличаются от монолитной архитектуры? Ответ: > Монолит: единая кодовая база, жёстко связанные компоненты, сложно масштабировать. > Микросервисы: множество сервисов, слабо связанные, развёртываются и масштабируются независимо. 3. Каковы основные преимущества использования микросервисов? Ответ: > Лучшая масштабируемость > Более быстрое выведение продукта на рынок > Независимые развёртывания > Лучшая устойчивость к сбоям > Возможность использовать разные языки и технологии 4. Какие есть сложности при работе с микросервисами? Ответ: > Сложность управления распределёнными системами > Задержки в сети и накладные расходы на коммуникацию > Согласованность данных > Отладка и мониторинг > Развёртывание и оркестрация 5. Как микросервисы обмениваются данными? Ответ: > Синхронно: через REST, gRPC > Асинхронно: через очереди сообщений (RabbitMQ, Kafka) 6. Что такое service discovery в микросервисах? Ответ: > Это механизм, с помощью которого сервисы находят друг друга в сети. > Применяются инструменты вроде Consul, Eureka, DNS Kubernetes. 7. Что такое API Gateway и зачем он нужен? Ответ: > API Gateway — это единая точка входа в систему. Он отвечает за маршрутизацию, безопасность, ограничение частоты запросов и агрегацию ответов от разных сервисов. > Примеры: Kong, Zuul, NGINX, Spring Cloud Gateway. 8. Как в микросервисах управляют данными? Ответ: > Каждый сервис использует свою отдельную базу данных (подход “одна база на сервис”). > Для согласованности применяются событийная архитектура или паттерн саги. 9. Что такое паттерн Saga? Ответ: > Saga — это последовательность локальных транзакций. > Если одна из них завершается с ошибкой, запускаются компенсирующие действия для отката изменений. 10. Какие инструменты используют для разработки микросервисов? Ответ: > Языки: Java (Spring Boot), Node.js, Go, Python > Сборка: Maven, Gradle > Контейнеризация: Docker > Оркестрация: Kubernetes👉 Java Portal
Вот хороший пример очень плохого использования метки в Java:
void main() {
do onlyOnce: {
IO.println("Один раз?");
break onlyOnce;
} while (true);
}
Компилируется без ошибок. При выполнении выводит:
Один раз?
Один раз?
Один раз?
Один раз?
Один раз?
...
Это приводит к бесконечному циклу 🙂
👉 Java PortalРазработчики, вот вам шпаргалка по техникам синхронизации потоков в Java 🧑💻
synchronized блок/метод -> использует встроенную блокировку объекта для обеспечения взаимного исключения.
ReentrantLock -> явная блокировка с более гибкими возможностями по сравнению с synchronized.
volatile- > гарантирует видимость изменений переменной между потоками.
Атомарные переменные (AtomicInteger и др.) -> обеспечивают атомарные операции без блокировок.
Semaphore -> управляет доступом к ресурсу с ограниченным числом разрешений.
CountDownLatch -> позволяет одному или нескольким потокам ожидать завершения операций в других потоках.
CyclicBarrier -> позволяет группе потоков дождаться друг друга до продолжения выполнения.
ReadWriteLock -> разрешает множественные параллельные чтения, но только одну запись.
👉 Java Portal
