Java Books
Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887
Show more📈 Analytical overview of Telegram channel Java Books
Channel Java Books (@java_library) is an active participant. Currently, the community unites 14 133 subscribers, ranking 9 050 in the Technologies & Applications category and 46 062 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 14 133 subscribers.
According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -88 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.38%. Within the first 24 hours after publication, content typically collects 3.46% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 184 views. Within the first day, a publication typically gains 489 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 2.
- Thematic interests: Content is focused on key topics such as docker, собеседование, sql, boot, string.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Java Библиотека
По всем вопросам- @notxxx1
@ai_machinelearning_big_data - machine learning
@pythonl - Python
@itchannels_telegram - 🔥 best it channels
@ArtificialIntelligencedl - AI
@pythonlbooks-📚
@programming_books_it -it 📚
№ 503272888...”
Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
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
Естественный порядок
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);
}@Flow и @Step, а их прогресс автоматически сохраняется. Если процесс падает, можно безопасно перезапустить его без повторного выполнения шагов.
• Идея не новая, но современная Java + SQLite позволяют сделать удивительно компактное и понятное решение без тяжёлой инфраструктуры.
Почему это полезно:
• Упрощает работу с долгоживущими процессами
• Избавляет от повторных вычислений и экономит ресурсы
• Подходит для прототипов, внутренних сервисов и задач средней сложности
Что учитывать:
• Это только прототип - для реальных больших систем нужно масштабирование, отказоустойчивость, параллелизм и дополнительные инструменты
• SQLite отлично подходит для простых сценариев, но не для высоконагруженных распределённых систем
🔗 Читаем тут: morling.dev/blog/building-durable-execution-engine-with-sqlite/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
*придется включить автоперевозчик в репо
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/STR.
- Сразу после него идёт точка . и строка-шаблон с выражениями внутри \{...}:
String name = "Duke";
String greeting = STR."My name is \{name}";
// -> "My name is Duke"
Встроенные выражения могут быть любыми Java-выражениями: арифметика, методы, поля:
int x = 10, y = 20;
String result = STR."\{x} + \{y} = \{x + y}";
- Поддержка многострочных шаблонов
Можно использовать текстовые блоки для JSON, SQL и других структур:
String json = STR."""
{
"user": "\{name}",
"temp": \{tempC}
}
""";
Технические детали
Шаблоны создают объект StringTemplate (runtime представление), содержащий массив литералов и значений выражений.
- Есть разные шаблонные процессоры:
- STR — стандартная интерполяция
- FMT — поддерживает форматирование и локаль
- RAW — необработанный шаблон, для кастомной обработки
Текущее состояние
- Java 21: функция доступна как preview (JEP 430)
- Java 22: вторая preview-итерация
- Java 23: удалена (даже как preview), дизайн требует доработки
Почему удалили?
- Жалобы на синтаксис — \{} вместо привычного ${}, processor.template вместо простого подхода
- Смешение capture (формирование шаблона) и processing нарушает удобство расширения
- Производительность можно обеспечить и без специального синтаксиса
- Дискуссия среди разработчиков: часть считает interpolation небезопасной/бесполезной, часть — нужной функцией качества жизни
Итог
Java 21 попыталась упростить работу со строками и структурными текстами с помощью string templates — но разработка приостановлена из-за критики синтаксиса и архитектуры. Пока функция нестабильна и требует пересмотра.
📌 ПодробнееПроблема поиска кратчайшего пути от одной вершины до всех остальных (SSSP) — одна из фундаментальных в теории графов, и её история тянется с 50-х годов прошлого века. Классический алгоритм Дейкстры, в связке с продвинутыми структурами данных, решает эту задачу за время, которое примерно пропорционально сумме числа рёбер и произведения числа вершин на логарифм от их же числа. Именно этот множитель - число вершин, умноженное на логарифм, долгое время считался теоретическим минимумом, так как в своей основе алгоритм Дейкстры побочно сортирует вершины по расстоянию от источника. Этот предел известен как «барьер сортировки» и казался непреодолимым.🟡Основная идея работы - гибрид из алгоритма Дейкстры и алгоритма Беллмана-Форда. Алгоритм Дейкстры на каждом шаге выбирает из "границы" - множества еще не обработанных вершин ту, что находится ближе всего к источнику. Это и создает узкое место, так как размер границы может достигать величины, сопоставимой с общим числом вершин в графе, и на каждом шаге требуется находить минимум. Алгоритм Беллмана-Форда, в свою очередь, не требует сортировки, но его сложность пропорциональна числу ребер, умноженному на количество шагов, что слишком долго. 🟡Новый подход использует рекурсию. Вместо того чтобы поддерживать полную отсортированную границу, алгоритм фокусируется на ее сокращении. А если граница слишком велика, то запускается несколько шагов алгоритма Беллмана-Форда из ее вершин. Это позволяет найти точное расстояние до некоторой части вершин, чьи кратчайшие пути коротки. Длинные же пути должны проходить через одну из "опорных" вершин, которых оказывается значительно меньше, чем вершин в исходной границе. Таким образом, сложная работа концентрируется только на этом небольшом наборе опорных точек. 🟡Принцип "разделяй и властвуй". Он рекурсивно разбивает задачу на несколько уровней. На каждом уровне применяется вышеописанная техника сокращения границы, что позволяет значительно уменьшить объем работы на каждую вершину, поскольку логарифмический множитель эффективно делится на другой, более медленно растущий логарифмический член. В итоге, путем подбора внутренних параметров алгоритма, которые являются специфическими функциями от логарифма числа вершин, и достигается итоговая временная сложность, пропорциональная числу ребер, умноженному на этот новый, более медленно растущий логарифмический множитель. ✔️ Зачем это нужно — Быстрее решаются задачи в навигации, графах дорог, сетях и планировании. — Доказано, что Дейкстра — не предел, и можно ещё ускорять поиск кратчайших путей. 🟡Arxiv @ai_machinelearning_big_data #AI #ML #Sorting #Graphs #Algorithm
