Telegram Web Link
Оживи робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Tech Champ 2025.

True Tech Champ 2025 — это третий всероссийский чемпионат по программированию от МТС с онлайн-этапами отбора и грандиозным шоу-финалом в Москве.

Тебя ждут два трека — выбирай:

I. Алгоритмический [призовой фонд 2 750 000 рублей].

Если классический олимпиадный формат — твоя стихия, этот трек для тебя. Блесни математическими навыками, покажи скилы в работе со структурами данных и написании алгоритмов — и окажись выше соперников в турнирной таблице.

II. Программирование роботов [призовой фонд 7 500 000 рублей].

Запрограммируй робота на скоростное прохождение лабиринта в симуляторе и пройди в финал. На финале участники встретятся офлайн и сразятся на четырех уровнях с полосой препятствий, вспышками света, лазерами и другими препятствиями.

Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.

Подробности на сайте. Регистрация открыта до 20 октября.
2
🧩 Задача

Напиши класс RateLimiter, который ограничивает количество вызовов метода acquire() до N раз в секунду.

Условия:

Несколько потоков могут одновременно вызывать acquire()

Если лимит превышен, вызов должен блокироваться, пока не освободится слот

Нужно учесть корректную работу в многопоточном окружении

📌 Пример использования:


RateLimiter limiter = new RateLimiter(5); // 5 запросов в секунду

for (int i = 0; i < 10; i++) {
new Thread(() -> {
limiter.acquire();
System.out.println(Thread.currentThread().getName() + " got permit");
}).start();
}


🔑 Подсказка:

Можно использовать ReentrantLock + Condition, или очередь с таймстемпами

Оптимально кольцевой буфер последних вызовов с расчётом временных интервалов

Бонус: попробуй реализовать неблокирующую версию через Semaphore + ScheduledExecutorService
10👍3🔥2
Как вы решаете вопрос с покрытием?
Почти в каждом проекте висит задача: поднять покрытие до 70%.
И почти в каждой команде никто не хочет этим заниматься.

Explyt – AI-плагин для Java и Kotlin разработчиков, который снимает эту боль.
Он генерирует юнит-тесты прямо в IDE: по коду, по runtime-трассам, по спекам. И делает это так, как будто реально вник в проект.

📌 Что умеет:
- создаёт осмысленные тесты для Java и Kotlin-кода
- поддерживает JUnit 4/5, TestNG, кастомные фреймворки
- превращает execution trace в автотесты
- предлагает фиксы, если сгенерированный тест падает
- есть режим агента, где AI сам меняет код, запускает тесты и ищет ошибки

📦 Плагин доступен:
- через JetBrains Marketplace
- или напрямую с сайта разработчика

🎁 30 дней бесплатного доступа – просто пользуйтесь.
👉 Попробовать на своём проекте
1👍1🔥1
🚀 Java Streams: Основные методы для чистого и эффективного кода!

Java Streams предлагают множество методов для упрощения манипуляций с данными и повышения читаемости кода.
Вот краткое руководство с примерами:

Освойте эти методы, чтобы писать более чистый и эффективный код на Java! 💡
👍91🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Говорят, что в VK есть код, который не падает даже в понедельник утром. Хотите узнать, как разработчики из VK этого добиваются?

Подписывайтесь на канал Backend VK Hub: тут кухня высоких нагрузок, новые подходы и честные разговоры с инженерами.
14👍5😁3🤯2🔥1🤬1
✔️ Математика в машинном обучении» - бесплатный курс, который предназначен для тех, кто хочет углубить свои знания в области математики, необходимой для понимания и применения методов машинного обучения и искусственного интеллекта.

Этот курс охватывает ключевые математические концепции, лежащие в основе современных алгоритмов машинного обучения, таких как линейная алгебра, теория вероятностей, статистика и оптимизация.

Курс
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1🔥1
JEP 511 расширяет язык программирования Java, добавляя возможность кратко импортировать все пакеты, экспортируемые модулем — это упрощает повторное использование модульных библиотек, но при этом не требует, чтобы код, осуществляющий импорт, сам находился в модуле.

➡️Подробнее: https://openjdk.org/jeps/511
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🔥2
🔥 Успех в IT = скорость + знания + окружение

Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: https://www.tg-me.com/+EPEFXp67QfIyMjMy
Python: https://www.tg-me.com/+cq7O4sOHldY1ZTIy
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/DevopsDocker
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/DevOPSitsec
Data Science: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/csharp_1001_notes
Java: www.tg-me.com/java_library
Базы данных: www.tg-me.com/sqlhub
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
ИИ: www.tg-me.com/vistehno
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
Разработка игр: https://www.tg-me.com/gamedev
Haskell: www.tg-me.com/haskell_tg
Физика: www.tg-me.com/fizmat

💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
🤬1
👩‍💻 Интеграция брокеров сообщений в Spring Boot с AI

Поработать с Kafka или RabbitMQ, но нет времени вникать в тонкости конфигурации и шаблонного кода? AI справится с этим за секунды — с учётом лучших практик и особенностей выбранного брокера.

📝 Промпт:
Generate a Spring Boot service that integrates with [Kafka/RabbitMQ] to handle asynchronous message processing for [описание бизнес-задачи].
Include configuration, producer, and consumer code.
Ensure reliability with retry mechanisms, message acknowledgment, and error handling.
Use Spring Cloud Stream or native client APIs. Explain architectural choices and trade-offs.
💡 Дополнительные возможности:

— Добавьте Dead Letter Queue (DLQ) для обработки неуспешных сообщений
— Настройте observability (Micrometer + Prometheus/Grafana) для мониторинга очередей
Please open Telegram to view this post
VIEW IN TELEGRAM
😢6🔥5😁4👍21😱1
🖥 Эта статья объясняет ключевую роль методов hashCode() и equals() в Java, особенно в контексте работы с хэш-коллекциями, такими как HashMap, HashSet и Hashtable!

🔍 Основные моменты статьи:

🌟 Метод hashCode(): описывается, как он используется для вычисления хэш-кода объектов, что позволяет эффективно распределять объекты по корзинам в хэш-коллекциях. Статья объясняет, как создание правильного hashCode() помогает в улучшении производительности коллекций.

🌟 Метод equals(): объясняется, как он помогает сравнивать объекты на эквивалентность, особенно в хэш-коллекциях, где важно, чтобы два разных объекта с одинаковыми значениями считались одинаковыми при работе с коллекциями.

🌟 Зависимость между hashCode() и equals(): делается акцент на том, что эти два метода должны быть согласованы, чтобы избежать неожиданных ошибок при использовании объектов в хэш-коллекциях.

🔗 Ссылка: *клик*

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍21
Media is too big
VIEW IN TELEGRAM
МТС приглашает всех, кто пишет на С++, Go, Python, JS, Java, C# и других языках, на True Tech Champ — всероссийский чемпионат по программированию. Соревнование будет проходить в двух треках.

Трек 1. Алгоритмический. Индивидуальный зачет [призовой фонд 2 750 000 рублей]

Реши задачи, которые помогут прокачаться в работе с алгоритмами и структурами данных. Похожие задания встречаются на собеседованиях в МТС и других крупных компаниях. До 240 лучших участников попадут в финал и сразятся в лайв-кодинге.

Трек 2. Программирование роботов. Командный формат [призовой фонд 7 500 000 рублей]

Проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.

🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.

📍 Зрелищный шоу-финал с ИИ-технологиями, кодерскими челленджами и выступлениями международных и российских спикеров пройдет 21 ноября в МТС Live Холл.

Стоит участвовать, чтобы:
— Освежить знания и прокачать новые навыки.
— Заявить о себе на всю страну, получить карьерный буст и шанс лично пообщаться с HR-специалистами МТС.

Регистрация участников до 20 октября на сайте.
🧠Принципы SOLID

📌 S — Single Responsibility Principle (SRP)

Класс должен иметь только одну причину для изменения.


// Плохо: один класс делает и валидацию, и сохранение
class UserService {
void register(User user) {
if (user.email().isBlank()) throw new IllegalArgumentException();
userRepository.save(user);
}
}

// Хорошо: разбили ответственности
class UserValidator {
void validate(User user) { /*...*/ }
}
class UserService {
void register(User user) {
validator.validate(user);
userRepository.save(user);
}
}



📌 O — Open/Closed Principle (OCP)

Классы открыты для расширения, но закрыты для изменения.


// Используем Strategy вместо if-else
interface DiscountStrategy {
BigDecimal apply(BigDecimal price);
}
class BlackFridayDiscount implements DiscountStrategy {
public BigDecimal apply(BigDecimal price) { return price.multiply(new BigDecimal("0.8")); }
}
class CheckoutService {
BigDecimal checkout(BigDecimal price, DiscountStrategy strategy) {
return strategy.apply(price);
}
}



📌 L — Liskov Substitution Principle (LSP)

Объекты подклассов должны заменять объекты суперклассов без ошибок.

⚠️ Нарушение LSP вызывает баги, когда подкласс меняет поведение базового класса.


class Bird {
void fly() { /*...*/ }
}
class Ostrich extends Bird {
void fly() { throw new UnsupportedOperationException(); } // нарушает LSP
}


Решение — выносить общее поведение в интерфейсы по возможностям, а не по наследованию.


📌 I — Interface Segregation Principle (ISP)

Лучше несколько маленьких интерфейсов, чем один жирный.


// Плохо: интерфейс заставляет имплементировать ненужное
interface Machine {
void print(); void scan(); void fax();
}

// Хорошо: разделение по возможностям
interface Printer { void print(); }
interface Scanner { void scan(); }



📌 D — Dependency Inversion Principle (DIP)

Модули верхнего уровня не должны зависеть от низкоуровневых. Зависимость — от абстракций.


// Вместо прямой зависимости от класса — интерфейс
interface NotificationSender {
void send(String message);
}
class EmailSender implements NotificationSender { /*...*/ }
class UserNotifier {
private final NotificationSender sender;
public UserNotifier(NotificationSender sender) {
this.sender = sender;
}
}


💡 Spring идеально подходит для соблюдения DIP — внедрение зависимостей через @Autowired или @Bean.


Если вы соблюдаете SOLID — ваш код легче тестировать, расширять и поддерживать. Но без фанатизма: балансируйте с принципами KISS и YAGNI.
👍154🔥2🥰1
🚀 Совет по Java API

Периоды дня в форматах java.time

Если вы хотите указать период дня, например «утром», «днем» или «ночью», используйте шаблон форматирования с символом B. 🔥
🤯8👍6🔥4🤔1
🔗 Удобный хаб для удаленных соединений и управления файлами

XPipe — это мощный инструмент для управления удаленными соединениями и файлами, который работает поверх ваших командных утилит. Он интегрируется с редакторами, терминалами и поддерживает множество протоколов, включая SSH и Docker. XPipe позволяет организовать доступ к вашей серверной инфраструктуре из одного места.

🚀Основные моменты:
- Удобное управление удаленными соединениями
- Интеграция с популярными инструментами и редакторами
- Мощные функции управления файлами и скриптами
- Безопасное хранение данных на локальном устройстве
- Поддержка множества виртуальных машин и контейнеров

📌 GitHub: https://github.com/xpipe-io/xpipe

@javatg
👍43🔥1
Поговорим про деньги в IT?

Приглашаем опытных IT-специалистов пройти небольшой опрос про зарплаты и бенефиты в технологических компаниях. Это займёт не более 7 минут — а ваше мнение поможет одному крупному российскому работодателю делать актуальные оферы.

Пройти опрос можно здесь
😁52
🖥 Короткий и полезный трюк на Java - ленивый lock-free инициализатор с VarHandle


import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;

public class LazyInit {
private static volatile Resource instance; // может быть null
private static final VarHandle VH;

static {
try {
VH = MethodHandles.lookup()
.findVarHandle(LazyInit.class, "instance", Resource.class);
} catch (ReflectiveOperationException e) {
throw new ExceptionInInitializerError(e);
}
}

public static Resource get() {
Resource r = instance;
if (r == null) {
Resource created = new Resource(); // дорогостоящая инициализация
// попытка поставить созданный объект, только если instance всё ещё null
if (VH.compareAndSet(null, created)) {
return created; // мы выиграли - вернём только что созданный
} else {
return instance; // кто-то другой успел поставить - используем его
}
}
return r;
}

static class Resource {
// тяжёлая инициализация
}
}


🟠Что происходит в коде - читаем instance без синхронизации; если null - создаём объект и пытаемся атомарно установить его через
VarHandle.compareAndSet. Если другой поток успел раньше - используем уже установленный.

🟠Это lock-free паттерн для ленивой инициализации с минимальной синхронизацией и без synchronized / двойной проверки со сложностями памяти.

🟠Когда полезно - дорогостоящая ленивя инициализация в горячих кодовых путях, где хочется избегать блокировок и лишних потерь на конкурентность.

🟠Риски - при очень затратой инициализации возможны несколько параллельных созданий объектов (но только один станет видимым). Учесть побочные эффекты конструктора и память - объект должен быть корректно инициализируемым многократно (или использовать внешний пул/фабрику).

🟠Коротко - VarHandle.compareAndSet даёт простой, быстрый, неблокирующий способ сделать ленивую инициализацию.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🤬3👍2🔥2
🔍Тестовое собеседование с Java-разработчиком из Мегафон уже завтра

15 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Мария Пивоварова, старший разработчик в Мегафон, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Мария будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Марии

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Java: Короткая задача

Задача:
Что выведет программа и почему?


public class Tricky {
public static void main(String[] args) {
System.out.println(getValue());
}

static int getValue() {
try {
return 1;
} finally {
return 2;
}
}
}


Разбор:

Блок finally всегда выполняется, даже если есть return в try.

Когда JVM встречает return 1;, она сохраняет значение для возврата.

Затем выполняет finally.

В finally есть новый return 2; — он перезаписывает сохранённый результат.

👉 Поэтому вернётся 2, а не 1.


Полезно знать:
Такое поведение часто ломает логику при работе с ресурсами - finally может изменить или "затереть" возвращаемое значение.
Лучше не использовать return внутри finally вообще.
👍36🔥74
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Java spring exception handling | обработка исключений за 5 минут

В этом видео речь пойдет об обработке исключений на уровне контроллера на языке Java. Покажу, какие инструменты есть у Spring.

00:23 - try catch, ResponseEntity
00:47 - наследование ResponseStatusException
01:10 - настройки отображения сообщения, названия ошибки и стек трейс в ответе
01:47 - бросаем ResponseStatusException
02:04 - аннотация @ ExceptionHandler
03:05 - аннотация @ RestControllerAdvice
03:40 - кастомный объект вместо ResponseEntity
04:02 - аннотация @ ResponseStatus

Код можно посмотреть тут: https://github.com/dispikerton/exceptionHandling

⚡️ источник

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍51
🖥 Гайд по PostgreSQL для продвинутых разработчиков

PostgreSQL – одна из самых мощных СУБД с открытым исходным кодом. Этот гайд подробно охватывает ключевые аспекты PostgreSQL: от внутренней архитектуры до приёмов оптимизации. Мы рассмотрим администрирование, производительность, расширения, инструменты, а также сравним популярные ORM для Python и Go. В конце приведён список продвинутых вопросов, часто встречающихся на собеседованиях.

🟠Гайд

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥1
2025/10/19 01:15:41
Back to Top
HTML Embed Code: