☕ 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
В свежем релизе — важные улучшения, о которых стоит знать каждому 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
❤6👍5🎉2
💡 Полезный совет по Java
В Java часто нужно работать с датами и временем. Вместо устаревших Date и Calendar лучше использовать современное API java.time, появившееся в Java 8. Оно более удобное, безопасное и читаемое.
Например, если нужно добавить дни к текущей дате:
✅ Код становится проще и понятнее.
📌 Совет: всегда отдавайте предпочтение java.time вместо старых классов.
@javatg
В Java часто нужно работать с датами и временем. Вместо устаревших Date и Calendar лучше использовать современное API java.time, появившееся в Java 8. Оно более удобное, безопасное и читаемое.
Например, если нужно добавить дни к текущей дате:
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate nextWeek = today.plusDays(7);
System.out.println("Сегодня: " + today);
System.out.println("Через неделю: " + nextWeek);
}
}
✅ Код становится проще и понятнее.
📌 Совет: всегда отдавайте предпочтение java.time вместо старых классов.
@javatg
🔥13👍4🥰1
🚀 Linux Pro совет
Хотите быстро найти, какой процесс держит порт и мешает вашему сервису запуститься?
Вместо хаотичных перезапусков используйте:
💡 Отличный способ понять, почему приложение не стартует:
сразу видно PID процесса, который занял порт.
Дальше можно решить — убить процесс, изменить конфиг или переназначить порт.
@javatg
Хотите быстро найти, какой процесс держит порт и мешает вашему сервису запуститься?
Вместо хаотичных перезапусков используйте:
# Проверка, кто слушает на порту 8080
lsof -i :8080
# Или
fuser 8080/tcp
💡 Отличный способ понять, почему приложение не стартует:
сразу видно PID процесса, который занял порт.
Дальше можно решить — убить процесс, изменить конфиг или переназначить порт.
@javatg
🔥9👍6❤3
🔥 Успех в IT = скорость + знания + окружение
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tg-me.com/ai_machinelearning_big_data
Python: www.tg-me.com/pythonl
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/devops_teleg
Хакинг: 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
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: www.tg-me.com/ai_machinelearning_big_data
Python: www.tg-me.com/pythonl
Linux: www.tg-me.com/linuxacademiya
Собеседования DS: www.tg-me.com/machinelearning_interview
C++ www.tg-me.com/cpluspluc
Docker: www.tg-me.com/devops_teleg
Хакинг: 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
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
⚡ Java полезный совет
При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать
Лучше сразу применять
Пример
📌 Итог:
- Для поиска в коллекции всегда используйте Set, если не нужен порядок.
- HashSet → быстрый доступ за O(1).
- TreeSet → доступ за O(log n), но с сортировкой элементов.
@javatg
При работе с коллекциями часто нужно проверить элемент на наличие в списке.
Если использовать
List.contains()
, то поиск будет O(n) — медленно на больших данных. Лучше сразу применять
Set
(например, `HashSet`) для поиска за O(1). Пример
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "grape");
// Медленно — O(n)
boolean slowCheck = list.contains("orange");
// Быстро — O(1)
Set<String> set = new HashSet<>(list);
boolean fastCheck = set.contains("orange");
System.out.println("List check: " + slowCheck);
System.out.println("Set check: " + fastCheck);
}
}
📌 Итог:
- Для поиска в коллекции всегда используйте Set, если не нужен порядок.
- HashSet → быстрый доступ за O(1).
- TreeSet → доступ за O(log n), но с сортировкой элементов.
@javatg
❤13👍10🥰2😁1🤬1
💡 SQL: поиск дубликатов с помощью GROUP BY и HAVING
Хотите найти строки, которые повторяются?
Используйте
🔎 Такой запрос покажет все email, которые встречаются более одного раза.
Можно добавлять дополнительные поля в GROUP BY, чтобы находить дубли по нескольким колонкам.
@javatg
Хотите найти строки, которые повторяются?
Используйте
GROUP BY
и фильтруйте через HAVING COUNT() > 1
.
SELECT
email,
COUNT(*) AS cnt
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
🔎 Такой запрос покажет все email, которые встречаются более одного раза.
Можно добавлять дополнительные поля в GROUP BY, чтобы находить дубли по нескольким колонкам.
@javatg
👍19❤7🥰2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📚🎮 SQL + Покемоны = Querymon!
Энтузиасты сделали игру, которая превращает изучение баз данных в настоящее приключение.
✨ С нуля — начнёте с простых таблиц и базовых запросов, сложность растёт постепенно.
🔎 Освоите SELECT, FROM, WHERE, фильтры LIKE, BETWEEN, IN и функции sum(), count(), avg().
🎯 Геймплей — сотни миссий, где, чтобы пройти дальше, нужно правильно писать SQL-запросы.
SQL ещё никогда не был таким весёлым: учиться теперь так же увлекательно, как ловить покемонов.
И самое приятное — игра полностью бесплатная.
👉 Попробовать можно здесь.
Энтузиасты сделали игру, которая превращает изучение баз данных в настоящее приключение.
✨ С нуля — начнёте с простых таблиц и базовых запросов, сложность растёт постепенно.
🔎 Освоите SELECT, FROM, WHERE, фильтры LIKE, BETWEEN, IN и функции sum(), count(), avg().
🎯 Геймплей — сотни миссий, где, чтобы пройти дальше, нужно правильно писать SQL-запросы.
SQL ещё никогда не был таким весёлым: учиться теперь так же увлекательно, как ловить покемонов.
И самое приятное — игра полностью бесплатная.
👉 Попробовать можно здесь.
❤6🔥6👍3👏1🤬1
🚀 Продвинутый совет по Spring Boot 🚀
Используй ApplicationPidFileWriter, чтобы при старте приложения записывать его PID в файл.
Это удобно для ops-скриптов, health-checks в контейнерах и мониторинга процессов. 🔥
👉 Документация: https://docs.spring.io/spring-boot/api/java/org/springframework/boot/context/ApplicationPidFileWriter.html
#SpringBoot #Java #DevOps
Используй ApplicationPidFileWriter, чтобы при старте приложения записывать его PID в файл.
Это удобно для ops-скриптов, health-checks в контейнерах и мониторинга процессов. 🔥
👉 Документация: https://docs.spring.io/spring-boot/api/java/org/springframework/boot/context/ApplicationPidFileWriter.html
#SpringBoot #Java #DevOps
❤9👍4🔥4
Знали ли вы, что у SQLite есть векторное расширение? 🧮
SQLite — самая используемая база данных в мире, работает практически на любом устройстве.
Теперь можно легко строить AI-приложения с помощью SQLite-vec и новой Embedding Gemma прямо на устройстве, без интернета.
Ниже — простой пример с Python + SQLite и Ollama. SQLite-vec совместим с WASM и запускается где угодно. Пример можно адаптировать почти под любой язык: Swift, Kotlin, Java, JavaScript…
🟢 Script: https://github.com/philschmid/gemini-samples/blob/main/scripts/embeddinggemma-sqlite-ollama.py
🟢 Sqlite-vec: https://alexgarcia.xyz/sqlite-vec/
🟢 EmbeddingGemma: https://developers.googleblog.com/en/introducing-embeddinggemma/
@javatg
SQLite — самая используемая база данных в мире, работает практически на любом устройстве.
Теперь можно легко строить AI-приложения с помощью SQLite-vec и новой Embedding Gemma прямо на устройстве, без интернета.
Ниже — простой пример с Python + SQLite и Ollama. SQLite-vec совместим с WASM и запускается где угодно. Пример можно адаптировать почти под любой язык: Swift, Kotlin, Java, JavaScript…
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥3
Учим Git играючи.
Крутое десктопное приложение (Mac, Windows, Linux), которое учит работать с гитом без сухих лекций. Только практика и живой результат:
— Каждое задание выполняется в реальном Git и GitHub, а не в песочнице;
— В процессе вы собираете готовые репозитории у себя в аккаунте;
— Поддержка разных языков.
https://github.com/jlord/git-it-electron
Крутое десктопное приложение (Mac, Windows, Linux), которое учит работать с гитом без сухих лекций. Только практика и живой результат:
— Каждое задание выполняется в реальном Git и GitHub, а не в песочнице;
— В процессе вы собираете готовые репозитории у себя в аккаунте;
— Поддержка разных языков.
https://github.com/jlord/git-it-electron
👍19🥰2❤1
Что в нём нового:
- более 2600 исправлений и улучшений,
- 18 JEP-ов, включая долгожданные Module Import Declarations (теперь это постоянная конструкция),
- компактные исходные файлы и возможность писать main() как instance-метод — меньше шаблонного кода, проще создавать утилиты и скрипты,
- удалён порт x86 32-бит, улучшена работа JVM и расширены API для структурной конкуренции.
Java 25 делает разработку чище и удобнее, а компании получают стабильную платформу на годы вперёд.
@java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤5👍5
⚡ Полезный приём в Java: record + sealed interface для удобных и безопасных доменных моделей.
С помощью
Пример 👇
Теперь можно использовать switch с исчерпывающей проверкой:
✅ Преимущества:
- меньше if/instanceof;
- компилятор гарантирует, что рассмотрены все варианты;
- код становится выразительным и легко расширяемым.
🔥 Такой подход отлично подходит для бизнес-логики: платежи, статусы заказов, события системы.
@javatg
С помощью
sealed
можно чётко ограничить набор допустимых типов, а record
делает код компактным и иммутабельным. Пример 👇
sealed interface Payment permits CardPayment, CashPayment, CryptoPayment {}
record CardPayment(String cardNumber, double amount) implements Payment {}
record CashPayment(double amount) implements Payment {}
record CryptoPayment(String wallet, double amount) implements Payment {}
Теперь можно использовать switch с исчерпывающей проверкой:
static String process(Payment p) {
return switch (p) {
case CardPayment c -> "Оплата картой: " + c.amount();
case CashPayment c -> "Оплата наличными: " + c.amount();
case CryptoPayment c -> "Крипта из кошелька: " + c.wallet();
};
}
✅ Преимущества:
- меньше if/instanceof;
- компилятор гарантирует, что рассмотрены все варианты;
- код становится выразительным и легко расширяемым.
🔥 Такой подход отлично подходит для бизнес-логики: платежи, статусы заказов, события системы.
@javatg
👍17🔥6❤3
🚀 BlazingMQ — очередь сообщений от Bloomberg с упором на скорость
BlazingMQ — это open-source система для обмена сообщениями, которую Bloomberg использует в продакшене уже больше 8 лет. Она справляется с миллиардами сообщений в день и при этом держит низкую задержку.
⚡ Что умеет:
- Скорость — сотни тысяч сообщений в секунду с задержкой всего ~1–2 мс.
- Надёжность — хранение и репликация данных, защита от «битых» сообщений.
- Гибкость — поддержка разных сценариев: очереди задач, приоритеты, fan-out, broadcast.
- Эффективность — multi-hop архитектура снижает нагрузку на сеть при массовой рассылке.
- Технологии под капотом — написана на C++ с нуля, использует Raft для репликации и оптимизирована под высокую производительность.
🛠 Есть SDK для C++, Java и Python.
👉 Для чего подходит: системы реального времени, финтех, распределённые сервисы с высокими требованиями к скорости и отказоустойчивости.
🔗 Репозиторий: https://github.com/bloomberg/blazingmq
#BlazingMQ #Messaging #Bloomberg #DistributedSystems
BlazingMQ — это open-source система для обмена сообщениями, которую Bloomberg использует в продакшене уже больше 8 лет. Она справляется с миллиардами сообщений в день и при этом держит низкую задержку.
⚡ Что умеет:
- Скорость — сотни тысяч сообщений в секунду с задержкой всего ~1–2 мс.
- Надёжность — хранение и репликация данных, защита от «битых» сообщений.
- Гибкость — поддержка разных сценариев: очереди задач, приоритеты, fan-out, broadcast.
- Эффективность — multi-hop архитектура снижает нагрузку на сеть при массовой рассылке.
- Технологии под капотом — написана на C++ с нуля, использует Raft для репликации и оптимизирована под высокую производительность.
🛠 Есть SDK для C++, Java и Python.
👉 Для чего подходит: системы реального времени, финтех, распределённые сервисы с высокими требованиями к скорости и отказоустойчивости.
🔗 Репозиторий: https://github.com/bloomberg/blazingmq
#BlazingMQ #Messaging #Bloomberg #DistributedSystems
🔥7👍4❤2🎉1
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 no-code база данных, которая сама превращает SQL в Airtable-стиль интерфейс
Что умеет:
- Подключается к MySQL, Postgres, SQLite, MSSQL и сразу показывает данные в виде удобных таблиц
- Делает представления: таблицы, календари, канбан, формы, Гантт
- Генерирует готовые REST и GraphQL API прямо поверх базы
- Делится видами: публично или под паролем, поддерживает загрузку файлов и картинок
- Настраивает роли и доступ до уровня отдельного столбца
Плюс интеграции со Slack, Discord, мессенджерами, почтой и десятками сервисов.
По сути — Airtable, но напрямую поверх твоей базы.
https://github.com/nocodb/nocodb
Что умеет:
- Подключается к MySQL, Postgres, SQLite, MSSQL и сразу показывает данные в виде удобных таблиц
- Делает представления: таблицы, календари, канбан, формы, Гантт
- Генерирует готовые REST и GraphQL API прямо поверх базы
- Делится видами: публично или под паролем, поддерживает загрузку файлов и картинок
- Настраивает роли и доступ до уровня отдельного столбца
Плюс интеграции со Slack, Discord, мессенджерами, почтой и десятками сервисов.
По сути — Airtable, но напрямую поверх твоей базы.
https://github.com/nocodb/nocodb
👍8🔥5❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍4❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Продуктивная пятница для тех кто в теме Java и ML – приходите на VK JT Meetup!
3 октября VK проводит VK JT Meetup в Нижнем — офлайн-встречу ML-инженеров и Java-разработчиков.
Лиды VK расскажут про вызовы перед бэкендером, которые возникают в процессе создания B2B-продукта. А также поделятся пошаговым гайдом по выпуску RAG в прод и процессом создания единой инфраструктуры поисковой платформы.
А после докладов вас ждут командные кейс-батлы и нетворкинг.
Приходите посоревноваться за призы в кейс-батле и пообщаться с экспертами в нетворкинг-зоне.
📍 Нижний Новгород, только офлайн
📅 3 октября, сбор с 18:00
🎟 Вход по регистрации
Реклама: ООО «ВК» ИНН 7743001840
3 октября VK проводит VK JT Meetup в Нижнем — офлайн-встречу ML-инженеров и Java-разработчиков.
Лиды VK расскажут про вызовы перед бэкендером, которые возникают в процессе создания B2B-продукта. А также поделятся пошаговым гайдом по выпуску RAG в прод и процессом создания единой инфраструктуры поисковой платформы.
А после докладов вас ждут командные кейс-батлы и нетворкинг.
Приходите посоревноваться за призы в кейс-батле и пообщаться с экспертами в нетворкинг-зоне.
📍 Нижний Новгород, только офлайн
📅 3 октября, сбор с 18:00
🎟 Вход по регистрации
Реклама: ООО «ВК» ИНН 7743001840
❤2🔥1
Парсим как про — представляем сборник из библиотек, сервисов и локальных тулзов для сбора информации.
• Тянет всё: картинки, видео, метаданные, аудио, документы, теги, SEO-данные, метрики сайтов, посещаемость и многое другое.
• В основе — Python, PHP, JS и Go, самые актуальные языки для парсинга.
• Сервисы имитируют поведение живого пользователя и обходят любые ограничения: от капчи до сложных защит.
• К каждому инструменту есть подробная инструкция — разберётся даже школьник.
• Всё регулярно обновляется и поддерживается разработчиками.
https://github.com/lorien/awesome-web-scraping
• Тянет всё: картинки, видео, метаданные, аудио, документы, теги, SEO-данные, метрики сайтов, посещаемость и многое другое.
• В основе — Python, PHP, JS и Go, самые актуальные языки для парсинга.
• Сервисы имитируют поведение живого пользователя и обходят любые ограничения: от капчи до сложных защит.
• К каждому инструменту есть подробная инструкция — разберётся даже школьник.
• Всё регулярно обновляется и поддерживается разработчиками.
https://github.com/lorien/awesome-web-scraping
❤4🤔2
🧩 SQL хитрый трюк
Хотите быстро найти дубликаты в таблице — но не просто значения, а ещё и сразу оставить только уникальные строки?
Вместо сложных подзапросов используйте `ROW_NUMBER()` с
📌 Что происходит:
-
-
-
💡 Так можно элегантно чистить таблицы от дублей без лишних вложенных запросов.
@javatg
Хотите быстро найти дубликаты в таблице — но не просто значения, а ещё и сразу оставить только уникальные строки?
Вместо сложных подзапросов используйте `ROW_NUMBER()` с
PARTITION BY
:
WITH numbered AS (
SELECT
id,
email,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
SELECT id, email
FROM numbered
WHERE rn = 1;
📌 Что происходит:
-
PARTITION BY email
группирует строки по email -
ROW_NUMBER()
нумерует их внутри группы -
WHERE rn = 1
оставляет только первую запись (а все дубликаты убираются)💡 Так можно элегантно чистить таблицы от дублей без лишних вложенных запросов.
@javatg
👍21🤔4❤2
Убираем боль при работе с Kubernetes: на GitHub появился визуальный редактор для деплоев, который превращает ад с YAML в понятный drag-and-drop.
Идея простая: меньше возни с синтаксисом — больше живого кластера.
— Тянем объекты мышкой, вместо ручного шаманства в конфиге
— Схемы всегда актуальны, обновляются каждый день из официальной репы
— Визуально видно зависимости и апдейты в реальном времени
— Экспорт готовых YAML’ов или даже прямой хостинг для GitOps
— Готовые шаблоны и переиспользуемые спеки, чтобы не изобретать велосипед заново
Теперь Kubernetes становится куда понятнее и быстрее в работе. Наслаждайтесь.
https://github.com/kubenote/KubeForge
Идея простая: меньше возни с синтаксисом — больше живого кластера.
— Тянем объекты мышкой, вместо ручного шаманства в конфиге
— Схемы всегда актуальны, обновляются каждый день из официальной репы
— Визуально видно зависимости и апдейты в реальном времени
— Экспорт готовых YAML’ов или даже прямой хостинг для GitOps
— Готовые шаблоны и переиспользуемые спеки, чтобы не изобретать велосипед заново
Теперь Kubernetes становится куда понятнее и быстрее в работе. Наслаждайтесь.
https://github.com/kubenote/KubeForge
🔥9👍5❤2