👍12🔥8❤6
Автозамена слов в файле!
Иногда нужно массово заменить слово во всём файле. Java позволяет прочитать файл, сделать замену и записать его обратно.
Указываем входной файл и что меняем:
Читаем весь текст из файла в строку:
Делаем замену и получаем обновлённый текст:
Сохраняем результат в новый файл:
В итоге появляется output.txt с уже заменёнными словами.
👉 Java Ready | #практика
Иногда нужно массово заменить слово во всём файле. Java позволяет прочитать файл, сделать замену и записать его обратно.
Указываем входной файл и что меняем:
var in = java.nio.file.Path.of("input.txt");
var from = "password";
var to = "********";Читаем весь текст из файла в строку:
var text = java.nio.file.Files.readString(in);
Делаем замену и получаем обновлённый текст:
var updated = text.replace(from, to);
Сохраняем результат в новый файл:
var out = java.nio.file.Path.of("output.txt");
java.nio.file.Files.writeString(out, updated);В итоге появляется output.txt с уже заменёнными словами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥4👎2
Безопасность это обязательная часть продакшена. На картинке собраны ключевые практики для защиты Spring Boot-приложений.
Сохрани, чтобы не забывать про безопасность!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥3
TAR — популярный формат в Linux и серверной среде. В Java с ним удобно работать потоково, читать архив поэлементно, извлекать файлы и обрабатывать данные без загрузки всего архива в память.В этом посте:
• Подключаем Commons Compress;
• Читаем TAR-архив через поток;
• Извлекаем файлы.
Такой подход подходит для бэкапов и любых задач, где важна производительность и контроль памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤5👍4🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой, но очень полезный материал по основам Java. Разбираются примитивные типы, ссылочные типы, строки, классы-оболочки и перечисления, всё с примерами кода и пояснениями.
Хороший вариант, если нужно быстро повторить базу или закрыть пробелы перед дальнейшим изучением языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍8❤5🤝1
Сериализация настроек!
Чтобы настройки приложения не терялись после перезапуска их удобно сохранять в файл и загружать обратно при старте.
Создаём класс настроек:
Сохраняем настройки в файл:
Загружаем настройки при запуске:
🔥 Теперь изменения сохраняются между перезапусками приложения.
👉 Java Ready | #совет
Чтобы настройки приложения не терялись после перезапуска их удобно сохранять в файл и загружать обратно при старте.
Создаём класс настроек:
class Settings implements Serializable {
String theme;
int fontSize;
}Сохраняем настройки в файл:
ObjectOutputStream out =
new ObjectOutputStream(new FileOutputStream("settings.dat"));
out.writeObject(settings);
out.close();
Загружаем настройки при запуске:
ObjectInputStream in =
new ObjectInputStream(new FileInputStream("settings.dat"));
Settings loaded = (Settings) in.readObject();
in.close();
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
FlowchartAI — это бесплатный AI-генератор блок-схем, который из текста или кода автоматически строит диаграмму. Он анализирует твой ввод (описание процесса/алгоритма или код) и превращает его в визуальную блок-схему, которую можно смотреть прямо в браузере без регистрации.
📌 Оставляю ссылочку: flowchartai.org
👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤6👍5
Собственный HTTP-сервер на чистой Java!
Сделаем сервер, который отвечает JSON и принимает простой запрос.
Задаём порт и создаём HTTP-сервер:
Добавляем эндпоинт
Добавляем эндпоинт
Запускаем сервер и задаём пул потоков:
🔥 В итоге получаем работающий HTTP-сервер с JSON-эндпоинтами без фреймворков.
👉 Java Ready | #практика
Сделаем сервер, который отвечает JSON и принимает простой запрос.
Задаём порт и создаём HTTP-сервер:
int port = 8080;
var server = com.sun.net.httpserver.HttpServer.create(
new java.net.InetSocketAddress(port), 0
);
Добавляем эндпоинт
/health, который отдаёт JSON:server.createContext("/health", ex -> {
var json = "{\"status\":\"ok\"}";
ex.getResponseHeaders().add("Content-Type", "application/json; charset=utf-8");
ex.sendResponseHeaders(200, json.getBytes().length);
ex.getResponseBody().write(json.getBytes());
ex.close();
});Добавляем эндпоинт
/echo:server.createContext("/echo", ex -> {
var q = ex.getRequestURI().getQuery(); // msg=hello
var msg = (q != null && q.startsWith("msg=")) ? q.substring(4) : "empty";
var json = "{\"msg\":\"" + msg + "\"}";
ex.getResponseHeaders().add("Content-Type", "application/json; charset=utf-8");
ex.sendResponseHeaders(200, json.getBytes().length);
ex.getResponseBody().write(json.getBytes());
ex.close();
});Запускаем сервер и задаём пул потоков:
server.setExecutor(java.util.concurrent.Executors.newFixedThreadPool(4));
server.start();
System.out.println("Server started on http://localhost:" + port);
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍6❤4
Каждый объект имеет идентичность, состояние и поведение. Методы сравнения и представления определяют, как объекты ведут себя в коллекциях, логировании и бизнес-логике. Ошибки в equals или hashCode могут привести к трудноуловимым багам.
Разобравшись в различии между ссылкой и содержимым, а также в механизме строкового представления, разработчик начинает лучше понимать модель памяти и принципы объектно-ориентированного подхода. Это база, на которой строится корректный и предсказуемый код.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🤝9❤7👍3
Обработка больших файлов!
Когда файл весит сотни мегабайт, читать его целиком в память опасно. Правильный подход обрабатывать кусками.
Открываем файл через буфер:
Читаем кусками:
Крутим цикл, пока есть данные:
Закрываем ресурс:
🔥 Так можно считать размер, хеш, статистику, искать сигнатуры не загружая файл целиком.
👉 Java Ready | #совет
Когда файл весит сотни мегабайт, читать его целиком в память опасно. Правильный подход обрабатывать кусками.
Открываем файл через буфер:
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();
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5🔥4
Виртуальные потоки позволяют запускать огромное количество задач параллельно с минимальными накладными расходами по сравнению с обычными потоками ОС.
На картинке — принцип работы: виртуальные потоки создаются в программе, JVM планирует их выполнение поверх нескольких platform-потоков (carrier threads), а уже они выполняются операционной системой.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥6🤝2