Вместо того чтобы ждать завершения каждой операции, приложение может выполнять задачи параллельно: считать, загружать данные или обрабатывать ввод, не останавливая основной поток. Это особенно важно для приложений, где скорость реакции имеет значение.
Java позволяет управлять асинхронностью постепенно: от простых потоков до пулов задач с контролируемым жизненным циклом.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍6🤝6❤4
Например, brute force и dictionary attack используются для перебора паролей, credential stuffing и password spraying — для атак с украденными учетными данными.
На изображении — основные типы атак на пароли и способы кражи учетных данных.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🤝7👍6🔥2
Добавляем водяной знак в PDF
Расскажу как можно добавить на ваш PDF-файл водяной знак для защиты его от копирования.
Открываем PDF:
Берём страницу и начинаем рисовать поверх:
Добавляем текст водяного знака:
Сохраняем результат:
Водяной знак помогает: защитить документы, помечать файлы и отслеживать утечки
👉 Java Ready | #совет
Расскажу как можно добавить на ваш PDF-файл водяной знак для защиты его от копирования.
Открываем PDF:
PDDocument doc = PDDocument.load(new File("input.pdf"));Берём страницу и начинаем рисовать поверх:
PDPage page = doc.getPage(0);
PDPageContentStream cs =
new PDPageContentStream(doc, page, AppendMode.APPEND, true);
Добавляем текст водяного знака:
cs.beginText();
cs.setFont(PDType1Font.HELVETICA_BOLD, 48);
cs.setNonStrokingColor(200, 200, 200);
cs.setTextMatrix(Matrix.getRotateInstance(
Math.toRadians(45), 150, 300));
cs.showText("CONFIDENTIAL");
cs.endText();
Сохраняем результат:
cs.close();
doc.save("output.pdf");
doc.close();
Водяной знак помогает: защитить документы, помечать файлы и отслеживать утечки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥5
❤14👍6🔥5
Создаём метрики — считаем события, время и текущее состояние!
Метрики нужны, чтобы понимать, что происходит внутри приложения.
Создаём счётчик событий:
Увеличиваем счётчик при событии:
Создаём текущее значение:
int gauge = 5;
System.out.println("Текущее значение: " + gauge);
Замеряем время выполнения операции:
Выполняем операцию и считаем длительность:
🔥 В итоге у нас получилась базовая система метрик: счётчики, текущие значения и тайминги.
👉 Java Ready | #практика
Метрики нужны, чтобы понимать, что происходит внутри приложения.
Создаём счётчик событий:
int counter = 0;
Увеличиваем счётчик при событии:
counter++;
System.out.println("Событий: " + counter);
Создаём текущее значение:
int gauge = 5;
System.out.println("Текущее значение: " + gauge);
Обновляем gauge при изменении состояния:
```java
gauge -= 2;
System.out.println("Обновлённое значение: " + gauge);
Замеряем время выполнения операции:
long start = System.currentTimeMillis();
Выполняем операцию и считаем длительность:
Thread.sleep(120);
long duration = System.currentTimeMillis() - start;
System.out.println("Время выполнения: " + duration + " мс");
🔥 В итоге у нас получилась базовая система метрик: счётчики, текущие значения и тайминги.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
В этом репозитории собраны реализации алгоритмов и структур данных: сортировки, графы, деревья, динамическое программирование, поиски и многое другое. Код, который можно запускать, читать, тестировать, изменять и использовать как референс при решении задач или подготовке к собеседованиям.
Оставляю ссылочку: GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤8🔥7
Локализация приложения!
Когда приложение используют люди из разных стран, жёстко зашитый текст в коде быстро становится проблемой.
Создаём файлы локализации:
Пример содержимого:
Выбираем локаль:
Загружаем переводы:
Используем текст в коде:
🔥 Так приложение легко переключается между языками
без переписывания кода и перекомпиляции.
👉 Java Ready | #совет
Когда приложение используют люди из разных стран, жёстко зашитый текст в коде быстро становится проблемой.
Создаём файлы локализации:
messages_en.properties
messages_ru.properties
Пример содержимого:
app.start=Приложение запущено
app.exit=Выход из программы
Выбираем локаль:
Locale locale = new Locale("ru");Загружаем переводы:
ResourceBundle bundle =
ResourceBundle.getBundle("messages", locale);
Используем текст в коде:
System.out.println(bundle.getString("app.start"));без переписывания кода и перекомпиляции.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6🔥4
Если только начинаешь или хочешь освежить базу, на картинке собраны все основы Java: переменные, операторы, типы, ввод, строки, массивы, условия, циклы и
try-catch.Сохрани, пригодится для повторения!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤4👍4
Генерация диаграммы!
Сделаем простую столбчатую диаграмму из массива чисел.
Задаём данные для визуализации:
Определяем символ для построения столбцов:
Проходим по значениям и строим диаграмму:
Рисуем нужное количество символов для каждого значения:
Пример результата в консоли:
👉 Java Ready | #практика
Сделаем простую столбчатую диаграмму из массива чисел.
Задаём данные для визуализации:
int[] values = {3, 7, 2, 5, 9};Определяем символ для построения столбцов:
char bar = '█';
Проходим по значениям и строим диаграмму:
for (int v : values) {
System.out.printf("%2d | ", v);Рисуем нужное количество символов для каждого значения:
for (int i = 0; i < v; i++) {
System.out.print(bar);
}
System.out.println();
}Пример результата в консоли:
3 | ███
7 | ███████
2 | ██
5 | █████
9 | █████████
В итоге получаем наглядную диаграмму прямо в терминале.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6🔥5
Когда данные нужны лишь на время обработки, нет смысла хранить их в постоянных директориях. Временные файлы позволяют сохранять промежуточные результаты, не думая о структуре проекта и очистке после выполнения программы.
Java берёт на себя управление такими файлами: создаёт их в системной директории, даёт удобные методы чтения и записи и позволяет автоматически удалять их при завершении приложения.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤5👍5
👍12🔥8❤6