14242
Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887
🔥 JAVA ПРОЕКТ ЗА 2 МИНУТЫ
Перед стартом делай правильно:
- Gradle/Maven сразу (без ручных jar)
- структура src/main/java + src/test/java
- JUnit + тесты с первого дня
- Checkstyle/Spotless чтобы код-стайл был единый
- .env / config для настроек (не хардкодь URL/ключи)
Так проект не развалится, когда станет больше 2 файлов.
Сохраняй себе это - и используй каждый раз, когда начинаешь новый Java-проект.
Читать полностью…
# Gradle проект с авто-структурой
mkdir my_java_app && cd my_java_app
gradle init --type java-application --dsl groovy --test-framework junit-jupiter
# быстрый запуск + тесты
./gradlew test
./gradlew run
🖥 Java: `Stream.peek()`- только для отладки
Есть простой принцип, который часто ломают.peek() — не для логики.
Его задача — подсмотреть, что проходит по конвейеру, и помочь отладке.
Пример — посмотреть, как меняются данные по шагам:
list.stream()
.filter(x -> x > 10)
.peek(x -> System.out.println("Filter: " + x))
.map(x -> x * 2)
.peek(x -> System.out.println("Map: " + x))
.toList();
🖥 На Stepik вышел курс, который учит работать с Docker на реальных проектах.
Владение Docker - навык, который отличает новичка от профи
Сегодня почти всё разворачивается в контейнерах.
Если ты не умеешь работать с Docker, ты медленнее, зависим от чужих настроек и постоянно ловишь баги «у меня локально работает».
Этот курс покажет:
• разобраны все возможные ошибки при работе c Docker
• как упаковывать проекты в контейнеры
• как поднимать целые системы за минуты
• как избегать типичных ошибок в продакшене
• как делать стабильные и повторяемые окружения
Только практика и реальные кейсы - с нуля до уверенного уровня.
🎁 40 процентов скидка действует 48 часов в честь нового года
👉 Записывайся и сделай Docker своим настоящим рабочим инструментом.
💡 Java совет: рекурсивная обработка файлов с Files.walk()
Если нужно пройтись по всем файлам в директории и её подкаталогах, не пиши рекурсию вручную — используй Files.walk().
Пример: найти все `.java`-файлы в проекте
Path startPath = Paths.get("src");
try (Stream<Path> paths = Files.walk(startPath)) {
paths
.filter(Files::isRegularFile)
.filter(path -> path.toString().endsWith(".java"))
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
💡 Java совет:
Начиная с Java 19, можно использовать *виртуальные потоки* - лёгкие потоки, которые управляются самой JVM, а не операционной системой.
Что это даёт:
- можно запускать тысячи и даже миллионы задач без нагрузки на ОС
- проще писать высоконагруженные приложения без сложной асинхронности
- более понятный и чистый код по сравнению с CompletableFuture и callback-подходами
Виртуальные потоки — главный шаг Java к масштабируемой конкурентности.
#Java #JavaDev
Как создать эффективное REST API или оптимизировать его? Что сделать для ускорения Redis? Какие секреты скрываются под капотом Android? Что делать при конфликте стилей в микрофронтендах? Что поможет провести продуктивное кросс-ревью в команде?
Своим опытом в самых разных сферах делятся frontend-разработчики, системные аналитики, разработчики под Android и iOS из команды ПСБ.
Читайте в блоге ПСБ на Хабре, делитесь в комментариях своим мнением и опытом!
🚀 Spring Batch совет
Хочешь контролировать, сколько раз может стартовать конкретный шаг в Spring Batch? Используй параметр startLimit — он задаёт максимальное число запусков для step'а.
Полезно для случаев с повторными попытками, защитой от бесконечного рестарта и строгим контролем бизнес-логики.
🚀 Java API Tip
StackWalker — удобный инструмент для обхода стек-фреймов и их интроспекции. Полезен для дебага, профилирования и анализа поведения кода на лету. Позволяет считывать текущий стек, фильтровать фреймы, смотреть классы и методы, откуда был вызван код.
Документация:
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/StackWalker.html
#Java #JavaAPI
🚀 Spring Boot Pro Tip: свой FailureAnalyzer
В Spring Boot можно перехватывать ошибки на этапе запуска и превращать их в понятные человеку сообщения. Для этого создан механизм FailureAnalyzer.
Зачем он нужен
- улучшает диагностику на старте приложения
- помогает быстро находить причины конфигурационных ошибок
- делает логирование чище и понятнее
Как работает
Вы создаёте свой класс, который анализирует исключение и возвращает читаемое описание проблемы и советы по исправлению.
Под капотом Spring Boot автоматически подцепит ваш анализатор и покажет дружелюбное сообщение вместо сырого stacktrace.
Документация:
https://docs.spring.io/spring-boot/how-to/application.html#howto.application.failure-analyzer
#SpringBoot #Java #FailureAnalyzer #Backend #DevTips
🔧 Как ускорить работу в Linux с помощью alias
В Linux есть удобный приём - alias. Это сокращённые команды, которые экономят время и избавляют от повторного ввода длинных конструкций.
📌 Проверить текущие alias
alias
Выведет список всех настроенных сокращений, например:
ll='ls -alF'
alias wr="cd /var/www/html"
Теперь wr перенесёт вас в /var/www/html.
unalias wr
Bash → ~/.bashrc
Zsh → ~/.zshrc
Fish → ~/.config/fish/config.fish
alias gs="git status"
alias update="sudo apt update && sudo apt upgrade -y"
alias serve="python3 -m http.server"
alias ..="cd .."
alias ...="cd ../.."
source ~/.bashrc
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
alias gs="git status"
alias gp="git pull"
alias update="sudo apt update && sudo apt upgrade -y"
alias serve="python3 -m http.server"
alias ..="cd .."
🖥 Java 21: String Templates (JEP 430) — Интерполяция строк как в JavaScript, но со своим подходом
Java 21 представила новый способ работы со строками — *string templates*. Это функция-превью (preview), которую нужно включать явно (`--enable-preview`) и использовать с JDK 21 или 22. В Java 23 от неё отказались, чтобы переработать дизайн.
Как это работает?
- Используется шаблонный процессор, например STR.
- Сразу после него идёт точка . и строка-шаблон с выражениями внутри \{...}:
String name = "Duke";
String greeting = STR."My name is \{name}";
// -> "My name is Duke"
int x = 10, y = 20;
String result = STR."\{x} + \{y} = \{x + y}";
String json = STR."""
{
"user": "\{name}",
"temp": \{tempC}
}
""";
🖥В тг добавили ChatGPT-5, который стал значительно умнее !
Новая версия лучше в:
- коде
- написание текстов
- распознании изображений
- стилизации ваших фоток
И не только
Попробуйте сами: t.me/Chatgpturbobot
🖥 ОГРОМНАЯ обучающая база по Java на русском языке — настоящая золотая жила для тех, кто хочет освоить один из самых востребованных языков в IT.
Это не просто курс — это полноценный путь от абсолютного нуля до уровня, пригодного для поиска работы.
Вы пройдёте всё: от основ языка и ООП до современных фреймворков, паттернов проектирования и реальных практик разработки.
🔹 Что внутри:
🟡 Полный путь обучения языку: синтаксис, концепции, архитектура, best practices
🟡 Ключевые алгоритмы и паттерны решения задач — с примерами и объяснениями
🟡 Множество видеоразборов сложных тем и реальных кейсов
🟡 Практика на каждом шагу: упражнения разного уровня сложности после каждой лекции
🟡 Проект живёт с 2018 года и постоянно обновляется — вместе с новыми версиями Java, Spring, инструментами и подходами
Здесь вы не просто выучите Java — вы станете настоящим базированным разработчиком.
🚀 Становимся гуру Java здесь
@javatg
🔍 Enumeration vs Iterator в Java — в чём разница и что выбрать?
В Java есть два интерфейса для перебора элементов коллекций: Enumeration и Iterator. Оба позволяют пройтись по элементам, но у них разный синтаксис, возможности и история.
📌 1. Enumeration (старый интерфейс, до Java 2)
Используется в таких классах, как Vector и Hashtable.
🧪 Пример:
Vector<String> vector = new Vector<>();
vector.add("A");
vector.add("B");
Enumeration<String> e = vector.elements();
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}
ArrayList<String> list = new ArrayList<>();
list.add("X");
list.add("Y");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// Лучше:
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String val = it.next();
if (val.equals("X")) it.remove();
}
for (String item : list) {
System.out.println(item);
}
list.stream().forEach(System.out::println);
🔥 Хочешь прокачаться в аналитике, но не просто читать теорию, а решать реальные задачи?
Мы запустили полностью бесплатный телеграм-тренажёр 👇
Тебя ждут сценарии, с которыми сталкиваются аналитики каждый день: от простых запросов до задач уровня собеседований.
Что внутри:
✔ живые кейсы из реальной практики
✔ удобный симулятор - как работа в компании, только бесплатно
✔ разбор ошибок — понимаешь не только «как», но и «почему»
✔ добавляем задачи с интервью и улучшаем бот вместе с сообществом
Начни тренироваться сегодня — и почувствуй уверенность в работе с данными.
t.me/Analitics_databot
🖥 Java-совет, который часто экономит ресурсыorElseGet() вместо orElse(), когда значение считать дорого
Многие пишут так:
User user = cache.find(id).orElse(createDefaultUser());
User user = cache.find(id).orElseGet(() -> createDefaultUser());
Spring Boot Tip: тестируем REST проще с `RestTestClient` 🚀
В Spring Boot можно легко писать интеграционные тесты для REST-эндпоинтов,
используя `RestTestClient` вместе с аннотацией:
@AutoConfigureRestTestClient
Копировать код
@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()));
}
}
@AutoConfigureTestRestTemplate
🧠JAVA ИСПОЛЬЗУЙ TREESET ПРАВИЛЬНО #java
Если в Java нужно убрать дубликаты из списка и отсортировать элементы - используй TreeSet. Он автоматически удаляет повторяющиеся значения и сортирует их либо по естественному порядку, либо по кастомному правилу через Comparator.
Читать полностью…
Естественный порядок
List<String> colors = Arrays.asList("red", "green", "red", "orange", "turquoise");
Set<String> colorsSet = new TreeSet<>(colors);
for (String color : colorsSet) {
System.out.println(color);
}
Сортировка по длине строки
Comparator<String> byLength = Comparator.comparingInt(String::length);
Set<String> sortedSet = new TreeSet<>(byLength);
sortedSet.addAll(colors);
for (String color : sortedSet) {
System.out.println(color);
}
🔥 Server Survival: Стройте облачную инфраструктуру!
Играйте в интерактивную 3D-симуляцию, где вы - облачный архитектор. Стройте и масштабируйте облачную инфраструктуру, защищаясь от DDoS-атак и управляя бюджетом. Цель — выжить как можно дольше, обрабатывая легитимный трафик и избегая потерь репутации.
🚀Основные моменты:
- Управление бюджетом и репутацией.
- Разные типы трафика: веб, API и мошеннический.
- Режимы игры: выживание и песочница для экспериментов.
- Улучшение сервисов для повышения производительности.
- Интуитивное управление и визуальная обратная связь.
📌 GitHub: https://github.com/pshenok/server-survival
📌 Durable Execution Engine на SQLite:
• Durable Execution (DE) - это подход, который позволяет выполнять длинные многошаговые процессы так, чтобы после сбоя можно было продолжить с последнего успешного шага, а не запускать всё заново.
• В статье показан простой Proof of Concept - Persistasaurus: лёгкий DE-движок на Java, который использует SQLite как хранилище состояния.
• Потоки (flows) пишутся как обычный Java-код: методы помечаются аннотациями @Flow и @Step, а их прогресс автоматически сохраняется. Если процесс падает, можно безопасно перезапустить его без повторного выполнения шагов.
• Идея не новая, но современная Java + SQLite позволяют сделать удивительно компактное и понятное решение без тяжёлой инфраструктуры.
Почему это полезно:
• Упрощает работу с долгоживущими процессами
• Избавляет от повторных вычислений и экономит ресурсы
• Подходит для прототипов, внутренних сервисов и задач средней сложности
Что учитывать:
• Это только прототип - для реальных больших систем нужно масштабирование, отказоустойчивость, параллелизм и дополнительные инструменты
• SQLite отлично подходит для простых сценариев, но не для высоконагруженных распределённых систем
🔗 Читаем тут: morling.dev/blog/building-durable-execution-engine-with-sqlite/
🔍 Завтра тестовое собеседование с Java-разработчиком
19 ноября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Сергею
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
🚀 В Spring Boot можно точечно отключать ненужную автоконфигурацию через аннотацию
**@SpringBootApplication(exclude = …)**.
Это удобно, когда в проекте есть своя кастомная конфигурация, которая конфликтует с дефолтной, или когда вы хотите убрать лишние автоматические настройки и контролировать поведение вручную.
Так вы оставляете только нужные части автоконфигурации и избегаете скрытых конфликтов.
#SpringBoot #JavaDev
Интенсив по очередям: Kafka & NATS
Асинхронное взаимодействие и очереди — невероятно широкая тема, и абсолютно обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.
🌐 В программе курса:
▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).
🥸 Кто мы: R&D-центр Devhands.io, наш канал. Автор курса — Владимир Перепелица, эксперт по большим проектам, очередям и Tarantool, Solution Architect в Exness, создатель S3 в VK Cloud, регулярный спикер и член ПК конференций Highload.
🗓 Старт курса 11 ноября. Изучить программу и записаться можно здесь.
Ждём вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqvfuGhD
📌 JoySafety — фреймворк безопасности для LLM от JD
JoySafety — это открытый фреймворк для обеспечения безопасности больших языковых моделей. Он уже используется внутри JD (京东) для AI-ассистентов, логистики и консультационных сервисов.
🔍 Возможности
- Фильтрация и защита: от злонамеренных промптов, нежелательного контента, атак на модель.
- Модульная архитектура: отдельные сервисы для BERT, FastText, ключевых слов, знаний и векторных проверок.
- Горячее обновление стратегий: можно менять полиси безопасности без перезапуска.
- Продакшн-масштаб: поддержка больших нагрузок, горизонтальное масштабирование, интеграция с MySQL/Redis и векторной БД.
- Примеры для Python, Java и Go в разделе *quickstart*.
🛠 Быстрый старт
1. Клонировать репозиторий:
git clone https://github.com/jd-opensource/JoySafety
2. Скачать модели через git-lfs или вручную (HuggingFace/ModelScope).
3. Настроить .env (переменная `SAFETY_MODEL_DIR`).
4. Запустить:
docker-compose --env-file .env up
5. Использовать API из примеров.
JoySafety даёт готовую инфраструктуру модерации и защиты вокруг LLM. Он предотвращает утечки, фильтрует опасный текст и позволяет настраивать собственные политики безопасности. Подходит для продакшн-сценариев, где важна защита пользователей и корректная работа модели.
👉 Репозиторий: https://github.com/jd-opensource/JoySafety
*придется включить автоперевозчик в репо
☕ Java25 уже на подходе!
В свежем релизе — важные улучшения, о которых стоит знать каждому Java-разработчику:
🔹 JEP 502: Stable Values — новый способ работы со значениями, который делает код надёжнее и эффективнее.
🔹 JEP 514/515: Project Leyden — фокус на время запуска приложений и оптимизацию старта JVM.
📖 Подробный разбор:
https://softwaremill.com/jep-502-stable-values-new-feature-of-java-25-explained/
#Java #JEP #Leyden #Programming
📌Новый прорыв в алгоритмах: найден способ считать кратчайшие пути быстрее Дейкстры
Метод преодоления "барьера сортировки" для задач кратчайшего пути в ориентированных графах.
Группа исследователей из университетов Синьхуа, Стенфорда и Института Макса Планика представили детерминированный алгоритм для решения задачи SSSP в ориентированных графах с неотрицательными вещественными весами, который работает за время, пропорциональное числу ребер, умноженному на логарифмический множитель, который растет медленнее, чем обычный логарифм.
Проблема поиска кратчайшего пути от одной вершины до всех остальных (SSSP) — одна из фундаментальных в теории графов, и её история тянется с 50-х годов прошлого века. Классический алгоритм Дейкстры, в связке с продвинутыми структурами данных, решает эту задачу за время, которое примерно пропорционально сумме числа рёбер и произведения числа вершин на логарифм от их же числа.
Именно этот множитель - число вершин, умноженное на логарифм, долгое время считался теоретическим минимумом, так как в своей основе алгоритм Дейкстры побочно сортирует вершины по расстоянию от источника. Этот предел известен как «барьер сортировки» и казался непреодолимым.
120 ключевых вопросов по SQL за 2025 год
Статья содержит 120 ключевых вопросов по SQL для собеседований, разделённых по темам и уровням сложности, с краткими пояснениями.
Основываясь на актуальных требованиях 2025 года, вопросы охватывают базу данных, оптимизацию, практические задачи и нюансы СУБД (MySQL, PostgreSQL, SQL Server).
🔜 Подробности
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: /channel/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
🐳 Учишься Docker? Вот идеальный интерактивный челлендж для новичков!
Docker 101: как запускать контейнеры в фоне, читать логи и переподключаться к ним
Челлендж от iximiuz Labs (Ivan Velichko) поможет разобраться с базовыми, но важными командами:
✅ docker run -d — запуск контейнера в фоне
✅ docker logs — просмотр логов
✅ docker attach — повторное подключение к контейнеру
Ничего не нужно устанавливать — всё прямо в браузере!
Попробовать можно здесь:
Если хочешь прокачать Docker на практике — начинай отсюда.
👉 https://labs.iximiuz.com/challenges/docker-101-container-run-in-background?x=2