TGViewer
Channel Public Channel
Java Ready | Программирование

Java Ready | Программирование

@java_ready

Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c
Subscribers
9.25K
Photos
1.4K
Videos
77
Links
759

Showing posts older than #1780 · Back to latest

Older Posts 12 shown
Post #1779 1.98K
☕️ Java Cheatsheet — компактный справочник по ключевым концепциям!

Репозиторий представляет собой структурированную шпаргалку по фундаментальным темам языка: ООП, полиморфизм, коллекции, исключения, сериализация, ключевые слова, типы данных и распространённые особенности поведения Java. Материал ориентирован на быстрое повторение теории.

Оставляю ссылочку: GitHub 📱


👉 Java Ready | #ресурс
  • 👍 10
  • 🔥 8
  • 🤝 7
  • ❤ 2
Post #1778 1.85K
Кеширование данных в памяти

Если одни и те же данные запрашиваются часто, каждый раз обращаться к БД, API или делать тяжёлые вычисления это потеря времени.

Создаём простое хранилище кеша:
Map<String, String> cache = new HashMap<>();


Метод получения данных с кешированием:
String getData(String key) {
if (cache.containsKey(key)) {
System.out.println("Найдено в кеше");
return cache.get(key);
}

System.out.println("Данных нет — выполняю долгую операцию...");
String value = slowOperation(key);
cache.put(key, value);
return value;
}


Имитация тяжёлой операции:
String slowOperation(String key) {
try { Thread.sleep(2000); } catch (InterruptedException ignored) {}
return "Data for " + key;
}


Первый вызов медленный, второй быстрый:
System.out.println(getData("user:42"));
System.out.println(getData("user:42"));


Такой подход используют для: результатов запросов к БД, API-ответов, вычислений, конфигов.

👉 Java Ready | #совет
  • ❤ 8
  • 👍 4
  • 🔥 4
Post #1772 1.76K
👩‍💻 Создаём архиватор ZIP!

Нужно быстро упаковать папку в один файл? Пишем архиватор, рекурсивно обходим директорию, создаём ZipEntry для каждого файла и сохраняем структуру.

В этой задаче:
• Открываем ZipOutputStream;

• Обходим папку;

• Добавляем файлы в ZIP.


Потоковая запись снижает потребление памяти и позволяет упаковывать даже очень крупные наборы файлов.

👉 Java Ready | #задача
  • 🔥 9
  • ❤ 5
  • 👍 5
  • 🤝 1
Post #1771 1.84K
Определение языка текста!

Иногда нужно понять язык сообщения. В Java можно использовать библиотеку определения языка без сложной логики.

Добавляем зависимость в Gradle:
implementation "org.apache.tika:tika-core:2.9.2"


Создаём детектор языка:
var detector = new org.apache.tika.language.detect.LanguageDetector();
detector.loadModels();


Передаём текст на определение языка:
var result = detector.detect("Bonjour tout le monde");
System.out.println("Язык: " + result.getLanguage());


Пробуем несколько примеров:
System.out.println(detector.detect("Hello world").getLanguage());
System.out.println(detector.detect("Привет мир").getLanguage());
System.out.println(detector.detect("Hola amigo").getLanguage());


В итоге получаем автоматическое определение языка строки.
Подходит для чатов, анализа текста и мультиязычных приложений.

👉 Java Ready | #практика
  • ❤ 10
  • 👍 8
  • 🔥 4
Post #1769 1.73K
📂 Напоминалка по HTTP и сетевым протоколам!

Например, HTTP/1.1 использует постоянные соединения, HTTP/2 умеет мультиплексировать запросы в одном TCP-канале, а HTTP/3 работает поверх QUIC и UDP.

На картинке — наглядная эволюция HTTP от первых версий до современных стандартов.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
  • 🔥 9
  • 🤝 7
  • ❤ 6
Post #1768 1.74K
Планировщик задач!

Когда нужно запускать код по расписанию, не надо городить циклы и sleep. В Java для этого есть планировщик.

Создаём планировщик:
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();


Запуск задачи с задержкой:
scheduler.schedule(() -> System.out.println("Задача выполнена"),
5, TimeUnit.SECONDS);


Запуск задачи каждые N секунд:
scheduler.scheduleAtFixedRate(() -> System.out.println("Тик"),
0, 3, TimeUnit.SECONDS);


Остановка планировщика:
scheduler.shutdown();


🔥
Идеально для фоновых задач: автоочистка, пинги, бэкапы, обновления.

👉 Java Ready | #совет
  • 👍 8
  • 🔥 8
  • ❤ 5
Post #1762 1.92K
💅 Ultimate Java Resources — масштабная база знаний по Java в одном репозитории!

Здесь собраны сотни примеров и материалов по ключевым направлениям: структуры данных, алгоритмы, ООП, многопоточность, сетевое программирование, безопасность, Android-разработка и даже основы машинного обучения. Репозиторий охватывает путь от базового синтаксиса до прикладных проектов и задач уровня собеседований.

Оставляю ссылочку: GitHub 📱

👉 Java Ready | #репозиторий
  • 🔥 11
  • ❤ 7
  • 👍 6
Post #1757 1.87K
👩‍💻 Работа с датами — один из самых нужных вещей!

Создание, сравнение, форматирование и изменение дат выполняются ежедневно: отчёты, фильтрация данных, дедлайны, подписки и логирование. Современный API java.time делает эти операции читаемыми и избавляет от ошибок, связанных со старыми классами.

Понимание принципов неизменяемости и методов изменения дат позволяет писать предсказуемый код без неожиданных побочных эффектов.


👉 Java Ready | #шпора
  • 👍 8
  • 🔥 8
  • 🤝 6
  • ❤ 5
Post #1755 1.81K
📂 Напоминалка: как работает Java!

Например, пишешь код в .java файле, компилятор превращает его в байткод .class, а затем JVM загружает классы, проверяет их и выполняет — интерпретируя или компилируя в нативный код через JIT.

На картинке упрощенная схема — путь Java-программы от исходников до запуска.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
  • 👍 10
  • ❤ 9
  • 🔥 8
Post #1754 1.82K
Генерация API-документации из аннотаций!

Когда API растёт, документация быстро устаревает. Решение простое, хранить описание рядом с методами в аннотациях и генерировать доку автоматически.

Создаём аннотацию для эндпоинтов:
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(java.lang.annotation.ElementType.METHOD)
@interface ApiRoute {
String method();
String path();
String desc() default "";
}


Помечаем методы аннотацией:
@ApiRoute(method = "GET", path = "/health", desc = "Проверка статуса сервиса")
void health() {}

@ApiRoute(method = "POST", path = "/login", desc = "Логин по паролю")
void login() {}


Сканируем методы через reflection и собираем Markdown:
var sb = new StringBuilder("# API\n\n");
for (var m : MyApi.class.getDeclaredMethods()) {
var a = m.getAnnotation(ApiRoute.class);
if (a == null) continue;
sb.append("- **").append(a.method()).append(" ").append(a.path()).append("**\n")
.append(" ").append(a.desc()).append("\n\n");
}


Сохраняем документацию в файл:
java.nio.file.Files.writeString(
java.nio.file.Path.of("API.md"),
sb.toString()
);


В итоге API,md генерится из кода и всегда соответствует реальным эндпоинтам.

👉 Java Ready | #практика
  • 👍 9
  • ❤ 5
  • 🔥 4
Post #1753 1.69K
📂 Напоминалка по Java Virtual Threads!

Виртуальные потоки позволяют запускать огромное количество задач параллельно с минимальными накладными расходами по сравнению с обычными потоками ОС.

На картинке — принцип работы: виртуальные потоки создаются в программе, JVM планирует их выполнение поверх нескольких platform-потоков (carrier threads), а уже они выполняются операционной системой.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
  • ❤ 11
  • 👍 8
  • 🔥 6
  • 🤝 2
Post #1752 1.67K
Обработка больших файлов!

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

Открываем файл через буфер:
BufferedInputStream in =
new BufferedInputStream(new FileInputStream("big.bin"));


Читаем кусками:
byte[] buffer = new byte[64 * 1024];
int read = in.read(buffer);


Крутим цикл, пока есть данные:
while ((read = in.read(buffer)) != -1) {
total += read;
}


Закрываем ресурс:
in.close();


🔥 Так можно считать размер, хеш, статистику, искать сигнатуры не загружая файл целиком.

👉 Java Ready | #совет
  • 👍 7
  • ❤ 5
  • 🔥 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →