Проверяй наличие токенов, получай их, считай количество и даже задавай разделитель вручную. Хоть сегодня чаще используют split(), но StringTokenizer всё ещё полезен для простых сценариев.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤5👍4
В задаче нужно определить, закрыты ли все скобки. Порядок вложенности не проверяется, только равенство количества.
Сегодня в посте:
• Зададим строку;
• Посчитаем количество для каждого вида скобок;
• Проверим, что все счётчики равны нулю.
Такой способ подходит для простых проверок строк, где важен сам факт закрытия скобок, а не порядок.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25🤝7❤4👍2
Автоматическое логирование через SLF4J + Logback
Заменяем
Добавляем зависимость:
Теперь определим простой конфиг
Используем в коде вместо
🔥 В итоге мы получаем удобное и красивое логирование, которое легко расширяется.
👉 Java Ready | #практика
Заменяем
System.out.println на нормальные логи с уровнями и форматами.Добавляем зависимость:
implementation "ch.qos.logback:logback-classic:1.5.6"
Теперь определим простой конфиг
logback.xml, который задаёт формат и уровень логирования:<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5level %logger{12} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
Используем в коде вместо
System.out.println:var log = org.slf4j.LoggerFactory.getLogger("app");
log.info("Сервис запущен");
log.error("Ошибка", new RuntimeException("broken"));🔥 В итоге мы получаем удобное и красивое логирование, которое легко расширяется.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥4👍3
Он гарантирует, что запись переменной одним потоком сразу станет видна другим. Это решает типичную проблему с залипающими флагами в циклах.
В этом посте:
• Покажем, как поток может не увидеть изменение;
• Исправим это, объявив;
• Объясним ограничение.
Применяйте
volatile для флагов и статусов, а для счётчиков и составных операций используйте атомики или синхронизацию.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤5👍4
Java позволяет архивировать файлы без сторонних библиотек. Можно легко собрать несколько документов или папку в
.zip. Это удобно для резервных копий, логов или экспорта данных.Открываем поток для архива:
var zip = new java.util.zip.ZipOutputStream(
java.nio.file.Files.newOutputStream(java.nio.file.Path.of("archive.zip"))
);
Добавляем файл в архив:
var file = java.nio.file.Path.of("data.txt");
zip.putNextEntry(new java.util.zip.ZipEntry(file.getFileName().toString()));
java.nio.file.Files.copy(file, zip);
zip.closeEntry();Закрываем архив:
zip.close();
System.out.println("Архив создан!");
🔥 Всё работает без зависимостей только стандартная библиотека. Этот подход простой, быстрый и кроссплатформенный.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5🔥4
Парси строки, проверяй спецзначения, сравнивай, суммируй и легко конвертируй между строками и числами. Удобный инструмент поверх примитива double.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥10👍4🤝3