Morse - утилита позволяет шифровать или расшифровать азбуку Морзе, вы можете создать секретный номер, научиться шифровать, изучать криптографию и многое другое!
Переведите текст в азбуку Морзе или расшифруйте азбуку Морзе, переведя их в текст!
#java
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
Conventional Commits — простое соглашение о том, как нужно писать коммиты в своих проектах
В нём описывается достаточно несложный набор правил для создания понятной истории коммитов. Также с его помощью куда проще разрабатывать инструменты автоматизации, основанные на commit-истории
По словам авторов проекта, Conventional Commits больше всего вдохновлялся Angular Commit Guidelines
Стоимость: #бесплатно
@javatg
В нём описывается достаточно несложный набор правил для создания понятной истории коммитов. Также с его помощью куда проще разрабатывать инструменты автоматизации, основанные на commit-истории
По словам авторов проекта, Conventional Commits больше всего вдохновлялся Angular Commit Guidelines
Стоимость: #бесплатно
@javatg
👍12❤2🔥2
Как выбрать лучшую IDE для разработки на Java
IDE — программа, состоящая из набора инструментов разработчика, упрощающих процесс написания приложений, со встроенным в нее пакетом полезных функций: от подсветки синтаксиса до навигатора по коду. За счет расширенной функциональности она здорово экономит время и повышает производительность труда, и современному программисту без нее просто никак. Однако, на сегодняшний день, в многообразии подобных программ можно запутаться и выбор лучшей IDE для разработки на Java может стать довольно сложной задачей, особенно если вы начинающий джавист. Поэтому «Библиотека программиста» решила помочь вам с этим делом и выделила из общего количества IDE наиболее приемлемые и проверенные варианты.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1
Версия Java 17 была выпущена не так уж давно. Отличие этого релиза в том, что это — новая TLS-версия (Long Term Support, с долговременной поддержкой) после Java 11.
В этой статье рассмотрим новые практические функции, которые были введены между 11-ой и 17-ой версиями.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤2
Один из наиболее распространенных способов настраивать конфигурацию базы данных Spring Boot — через свойства приложения. Для некоторых смена пароля к базе данных может быть редкостью, но лучше периодически его менять.
Традиционно изменение паролей к базам данных означает перезапуск сервиса после внесения изменений в свойства приложения (это также можно сделать с помощью переменных среды). Чем чаще это делается, тем выше вероятность сбоев в обслуживании пользователей.
К счастью, благодаря интеграции с AWS Secrets Manager нет необходимости перезапускать сервис каждый раз, когда пароль к базе данных меняется. Secrets Manager даже предоставляет возможность автоматически менять пароль через определенный период.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥1
Объект класса java.util.Scanner упрощает разбор строки из потока ввода. При вводе могут использоваться данные из консоли, файла, строки или любого другого источника, реализующего интерфейсы Readable или ReadableByteChannel.
Хотя Scanner и не является потоком, у него тоже обязательно вызывать метод close(), который закроет используемый основной источник.
Пример 1. Использование класса Scanner
public class ScannerExample {
private static String fileName = "scan.txt";
public static void scanFile() {
try (FileReader fileReader = new FileReader(fileName);
Scanner scanner = new Scanner(fileReader)) {
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
System.out.println(scanner.nextInt() + " :int");
} else if (scanner.hasNextDouble()) {
System.out.println(scanner.nextDouble() + " :double");
} else if (scanner.hasNextBoolean()) {
System.out.println(scanner.nextBoolean() + " :boolean");
} else {
System.out.println(scanner.next() + " :String");
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void makeFile() {
try (FileWriter fileWriter = new FileWriter(fileName)) {
fileWriter.write("2 Java 1,5 true 1.6 ");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
ScannerExample.makeFile();
ScannerExample.scanFile();
}
}
Пример 2. Использование класса Scanner для работы со строкой
public class ScannerDelimiterExample {
public static void main(String[] args) {
double sum = 0.0, number;
Scanner scanner = new Scanner("1,3;2,0; 8,5; 4,8; 9,0; 1; 10; abc");
scanner.useDelimiter(";\\s*");
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
number = scanner.nextDouble();
System.out.println("Число:" + number);
sum += number;
} else {
System.out.println("Строка: " + scanner.next());
}
}
System.out.println("Сумма чисел = " + sum);
}
}
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2🔥1
Мы решили написать небольшую статью, которая будет интересна неравнодушным к Java. Хотим поделиться на первый взгляд простыми особенностями поведения библиотек Spring Security, Spring Web, которые могут сбить с толку разработчиков, которые никогда не сталкивались с такими ситуациями.
Рассмотрим проблему, проведём анализ, тесты, проверяющие наши гипотезы, сделаем выводы и, конечно, оставим ссылку на код, чтобы можно было самостоятельно поиграться.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🥰1
Ответ
HashSet
использует HashMap для хранения элементов. При добавлении элемента в HashMap вычисляется хэш код, по которому определяется позиция в массиве, куда будет вставлен новый элемент. У всех экземпляров класса Point хэш код будет одинаковым для всех объектов с одинаковым x, что приведёт к вырождению хэш таблицы в список.При возникновении коллизии в HashMap осуществляется проверка на наличие элемента в списке: e.hash == hash && ((k = e.key) == key || key.equals(k)). Если элемент найден, то его значение перезаписывается. В нашем случае для разных объектов метод equals() будет возвращать false. Соответственно новый элемент будет успешно добавлен в HashSet. Извлечение элемента также будет осуществляться успешно. Но производительность такого кода будет невысокой и преимущества хэш таблиц использоваться не будут.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1🔥1
📓"Классические задачи Computer Science на языке Java"
Столкнулись с «неразрешимой» проблемой при разработке программного обеспечения? Скорее всего, кто-то уже справился с этой задачей, и вы можете не ломать голову. Дэвид Копец собрал наиболее полезные готовые решения, принципы и алгоритмы. «Классические задачи Computer Science на языке Java» — это мастер-класс по программированию, содержащий 55 практических примеров, затрагивающих самые актуальные темы: базовые алгоритмы, ограничения, искусственный интеллект и многое другое.
➡️ Книга
@javatg
Столкнулись с «неразрешимой» проблемой при разработке программного обеспечения? Скорее всего, кто-то уже справился с этой задачей, и вы можете не ломать голову. Дэвид Копец собрал наиболее полезные готовые решения, принципы и алгоритмы. «Классические задачи Computer Science на языке Java» — это мастер-класс по программированию, содержащий 55 практических примеров, затрагивающих самые актуальные темы: базовые алгоритмы, ограничения, искусственный интеллект и многое другое.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤1👎1🔥1🤔1
☕🧵 Введение в многопоточность в Java. Часть 1. Преимущества и недостатки многопоточности
Независимо от того, какой язык вы используете для написания своих программ, по умолчанию все они являются последовательными. То есть все инструкции, которые мы пишем, последовательно выполняются операционной системой. Следующая строка кода не может начать свое выполнение до завершения текущей и ждет, пока текущая строка не завершит свое выполнение. Если в программе есть вызов API к удаленному серверу, то программа блокируется до тех пор, пока не получит ответ к запросу. Если выполнение вызова занимает несколько минут, то нам придётся также ждать ответа программы. Программа в таком случае просто блокируется и не будет отвечать на дальнейшие команды.
Давайте рассмотрим другие распространенные сценарии. Например, вы используете какую-то социальную сеть, где скачиваете видео или изображения и одновременно общаетесь там со своими друзьями. Вы выполняете две разные задачи одновременно, и ваша программа не блокируется, пока она не завершит одну из своих задач. Как? Здесь в игру вступает многопоточность.
➡️ Читать дальше
@javatg
Независимо от того, какой язык вы используете для написания своих программ, по умолчанию все они являются последовательными. То есть все инструкции, которые мы пишем, последовательно выполняются операционной системой. Следующая строка кода не может начать свое выполнение до завершения текущей и ждет, пока текущая строка не завершит свое выполнение. Если в программе есть вызов API к удаленному серверу, то программа блокируется до тех пор, пока не получит ответ к запросу. Если выполнение вызова занимает несколько минут, то нам придётся также ждать ответа программы. Программа в таком случае просто блокируется и не будет отвечать на дальнейшие команды.
Давайте рассмотрим другие распространенные сценарии. Например, вы используете какую-то социальную сеть, где скачиваете видео или изображения и одновременно общаетесь там со своими друзьями. Вы выполняете две разные задачи одновременно, и ваша программа не блокируется, пока она не завершит одну из своих задач. Как? Здесь в игру вступает многопоточность.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
#algorithms #java
В этом репозитории представлен список самых популярных алгоритмов, реализованных на языке программирования Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤7🔥2
Пользовательский интерфейс администратора для администрирования приложений spring boot
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3❤1
Xposed — это фреймворк для модулей, которые могут изменить поведение системы и приложений, не затрагивая никаких APK. Это полезно, потому что это означает, что модули могут работать для разных версий и даже ПЗУ без каких-либо изменений (при условии, что исходный код не был слишком сильно изменен).
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Spring поддерживает проверки на основе аннотаций JSR-303, а также предоставляет интерфейс валидатора, который мы можем реализовать для создания нашего собственного настраиваемого валидатора. Для использования проверки на основе JSR-303 нам необходимо аннотировать переменные компонента с необходимыми проверками.
Для кастомной реализации валидатора нам нужно настроить его в классе контроллера. Полный пример см. в статье.
#вопросы_с_собеседований
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Digitalocean
Spring Validation Example - Spring MVC Form Validator | DigitalOcean
Technical tutorials, Q&A, events — This is an inclusive place where developers can find or lend support and discover new ways to contribute to the community.
👍7❤3🔥2
Если вы подумываете начать карьеру программиста с Java-разработки в сфере бэкенда, то в этой статье вы найдёте чек-лист знаний, которые точно пригодятся на старте.
Вместе с Семёном Кирековым, Java Team Lead в MTS Big Data и Java-деканом курса «Java-разработчик» в МТС.Тета, собрали набор базовых навыков и инструментов, необходимых для того, чтобы ориентироваться в профессии backend-разработчика на Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥1
Высокопроизводительная библиотека кэширования для Java. Caffeine обеспечивает кеширование в памяти с использованием API, наподобие Google Guava.
📃 Документация
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤1🤯1
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
stringList.add("one");
stringList.add("one and a half");
stringList.add("two");
stringList.add("two and a half");
stringList.add("three and a half");
System.out.println("Before " + stringList);
Iterator<String> stringIterator = stringList.iterator();
while (stringIterator.hasNext()) {
String next = stringIterator.next();
if (next.equals("two and a half")) {
stringList.add("three");
}
}
System.out.println("After " + stringList);
}
Ответ
Exception in thread "main" java.util.ConcurrentModificationException
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥4👎2❤1