Java Books – Telegram
Java Books
14.2K subscribers
195 photos
12 videos
269 files
261 links
Java Библиотека

По всем вопросам- @notxxx1

@ai_machinelearning_big_data - machine learning

@pythonl - Python

@itchannels_telegram - 🔥 best it channels

@ArtificialIntelligencedl - AI

@pythonlbooks-📚

@programming_books_it -it 📚

№ 5032728887
Download Telegram
🔧 Как ускорить работу в Linux с помощью alias

В Linux есть удобный приём - alias. Это сокращённые команды, которые экономят время и избавляют от повторного ввода длинных конструкций.

📌 Проверить текущие alias


alias
Выведет список всех настроенных сокращений, например:
ll='ls -alF'


Временный alias (работает до закрытия терминала)


alias wr="cd /var/www/html"
Теперь wr перенесёт вас в /var/www/html.

Удалить можно так:


unalias wr


♻️ Постоянный alias (сохраняется после перезагрузки)
Нужно добавить его в конфиг вашей оболочки:


Bash → ~/.bashrc

Zsh → ~/.zshrc

Fish → ~/.config/fish/config.fish


Пример в ~/.bashrc:


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

📂 Отдельный файл ~/.bash_aliases
В Ubuntu/Debian часто alias выносят в ~/.bash_aliases, а в ~/.bashrc есть строка:


if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Это помогает держать настройки в порядке.

🚀 Полезные примеры alias

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 .."


👉 Итог: alias экономят время и делают работу комфортнее. Главное — придумать такие сокращения, которые легко запомнить.

https://www.tecmint.com/create-alias-in-linux/
10🔥6👍2
📌 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

*придется включить автоперевозчик в репо
8👍3🔥3
🚀 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
7👍4
🚀 Java API Tip

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

Документация:
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/StackWalker.html

#Java #JavaAPI
4🔥2💊1
🚀 В Spring Boot можно точечно отключать ненужную автоконфигурацию через аннотацию
**
@SpringBootApplication(exclude = …)**.

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

Так вы оставляете только нужные части автоконфигурации и избегаете скрытых конфликтов.

#SpringBoot #JavaDev
7👍6
Quick Java

📚 Book
7
🚀 Spring Batch совет

Хочешь контролировать, сколько раз может стартовать конкретный шаг в Spring Batch? Используй параметр startLimit — он задаёт максимальное число запусков для step'а.

Полезно для случаев с повторными попытками, защитой от бесконечного рестарта и строгим контролем бизнес-логики.
6
📌 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/
6👍4
Как создать эффективное REST API или оптимизировать его? Что сделать для ускорения Redis? Какие секреты скрываются под капотом Android? Что делать при конфликте стилей в микрофронтендах? Что поможет провести продуктивное кросс-ревью в команде?

Своим опытом в самых разных сферах делятся frontend-разработчики, системные аналитики, разработчики под Android и iOS из команды ПСБ.
Читайте в блоге ПСБ на Хабре, делитесь в комментариях своим мнением и опытом!
4
Forwarded from Kali Linux
🔥 Server Survival: Стройте облачную инфраструктуру!

Играйте в интерактивную 3D-симуляцию, где вы - облачный архитектор. Стройте и масштабируйте облачную инфраструктуру, защищаясь от DDoS-атак и управляя бюджетом. Цель — выжить как можно дольше, обрабатывая легитимный трафик и избегая потерь репутации.

🚀Основные моменты:
- Управление бюджетом и репутацией.
- Разные типы трафика: веб, API и мошеннический.
- Режимы игры: выживание и песочница для экспериментов.
- Улучшение сервисов для повышения производительности.
- Интуитивное управление и визуальная обратная связь.

📌 GitHub: https://github.com/pshenok/server-survival
8
💡 Java совет:

Начиная с Java 19, можно использовать *виртуальные потоки* - лёгкие потоки, которые управляются самой JVM, а не операционной системой.

Что это даёт:

- можно запускать тысячи и даже миллионы задач без нагрузки на ОС
- проще писать высоконагруженные приложения без сложной асинхронности
- более понятный и чистый код по сравнению с CompletableFuture и callback-подходами

Виртуальные потоки — главный шаг Java к масштабируемой конкурентности.

#Java #JavaDev
👍75🔥5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
🧠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);
}
👍83👎3
💡 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();
}


Почему это хороший подход:

- Рекурсивный обход «из коробки»
- Работает через Stream API
- Легко фильтровать, маппить и агрегировать
- Автоматически закрывает ресурсы (try-with-resources)

Полезно для:

- анализа исходников
- линтеров и кодогенерации
- поиска файлов по расширению
- утилит и dev-скриптов

#Java #IO
8👍7🔥2👎1
Spring Boot Tip: тестируем REST проще с `RestTestClient` 🚀

В Spring Boot можно легко писать интеграционные тесты для REST-эндпоинтов,
используя `RestTestClient` вместе с аннотацией:


@AutoConfigureRestTestClient


Это автоматически настраивает клиент и позволяет:
- отправлять запросы прямо из тестов
- проверять статус и тело ответа
- работать с объектами, а не “сырым” JSON

Пример

Копировать код
@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()));
}
}

👉 Для TestRestTemplate есть похожая аннотация:

@AutoConfigureTestRestTemplate

Тесты становятся чище, короче и ближе к реальному поведению API
🔥8👍53
🖥 На Stepik вышел курс, который учит работать с Docker на реальных проектах.

Владение Docker - навык, который отличает новичка от профи

Сегодня почти всё разворачивается в контейнерах.

Если ты не умеешь работать с Docker, ты медленнее, зависим от чужих настроек и постоянно ловишь баги «у меня локально работает».

Этот курс покажет:

• разобраны все возможные ошибки при работе c Docker
• как упаковывать проекты в контейнеры
• как поднимать целые системы за минуты
• как избегать типичных ошибок в продакшене
• как делать стабильные и повторяемые окружения

Только практика и реальные кейсы - с нуля до уверенного уровня.

🎁 40 процентов скидка действует 48 часов в честь нового года


👉 Записывайся и сделай Docker своим настоящим рабочим инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1
🖥 Java-совет, который часто экономит ресурсы

orElseGet() вместо orElse(), когда значение считать дорого

Многие пишут так:


User user = cache.find(id).orElse(createDefaultUser());


Проблема: createDefaultUser() выполнится всегда,
даже если пользователь нашёлся в кэше.

Правильнее так:

User user = cache.find(id).orElseGet(() -> createDefaultUser());


💡 В чём фишка

orElse() сначала вызывает аргумент, потом проверяет Optional

orElseGet() вызывает лямбду только если значение пустое

📌 Когда это особенно важно

- создание объектов «по умолчанию» дорогое
- требуется загрузка из БД/сети
- есть тяжёлая сериализация или вычисления
Please open Telegram to view this post
VIEW IN TELEGRAM
👍107🔥4
🖥 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();

Вот, как это работает:

- filter() — отбрасывает лишнее
- peek() — просто печатает, ничего не меняя
- map() — преобразует значения

Почему важно не класть туда «настоящую» логику:

- peek() могут удалить или отключить
- порядок выполнения потоков может меняться
- код становится хрупким и непредсказуемым

Коротко:
- нужен вывод - используй peek().
- нужна логика - используй map(), filter() и другие операторы.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2
🔥 Хочешь прокачаться в аналитике, но не просто читать теорию, а решать реальные задачи?

Мы запустили полностью бесплатный телеграм-тренажёр 👇

Тебя ждут сценарии, с которыми сталкиваются аналитики каждый день: от простых запросов до задач уровня собеседований.

Что внутри:

живые кейсы из реальной практики
удобный симулятор - как работа в компании, только бесплатно
разбор ошибок — понимаешь не только «как», но и «почему»
добавляем задачи с интервью и улучшаем бот вместе с сообществом

Начни тренироваться сегодня — и почувствуй уверенность в работе с данными.

t.me/Analitics_databot
7👍3🔥2