Автономные (консольные) приложения Java и аплеты могут создавать окна на базе класса Frame. Если эти окна используются для интерактивного взаимодействия с пользователем, вы должны организовать в соответствующих классах обработку событий, переопределив методы handleEvent, mouseDown, mouseMove и аналогичные.
При обработке событий в аплетах мы переопределяли перечисленные выше методы в главном классе аплета, который наследуется от класса Applet. Что же касается окон Frame, то они создаются на базе классов, произведенных от класса Frame. Именно там вы и должны переопределять методы, предназначенные для обработки событий.
В остальном события обрабатываются таким же образом, что и в аплетах.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1
Самый популярный Java-репозиторий на GitHub – коллекция паттернов проектирования всех видов и мастей.
Паттерны – это лучшие практики организации проектов, которые упрощают и ускоряют процесс разработки. Они представляют собой хорошо продуманные и протестированные решения самых распространенных задач программирования. Паттерны учитывают много мелочей, о которых вы легко можете забыть, и спасают от распространенных и глупых ошибок.
Каждый паттерн в репозитории, будь он моно или нет, содержит подробное описание и примеры реализации на Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - iluwatar/java-design-patterns: Design patterns implemented in Java
Design patterns implemented in Java. Contribute to iluwatar/java-design-patterns development by creating an account on GitHub.
👍11❤3🔥1😢1
Одинарные и двойные кавычки
Что ты ожидаешь в результате выполнения кода с картинки?
Казалось бы, строка должна возвращать «
Двойные кавычки обрабатывают символы как строки, но одинарные кавычки ведут себя иначе. Они преобразуют символьные операнды (
@javatg
Что ты ожидаешь в результате выполнения кода с картинки?
Казалось бы, строка должна возвращать «
HaHa
», но на самом деле это будет «Ha169
».Двойные кавычки обрабатывают символы как строки, но одинарные кавычки ведут себя иначе. Они преобразуют символьные операнды (
'H' и 'a'
) в целые значения посредством расширения примитивных типов — получается 169
.@javatg
👍22❤1👎1🥰1
java8-tutorial
Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.
https://github.com/winterbe/java8-tutorial
@javatg
Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.
https://github.com/winterbe/java8-tutorial
@javatg
GitHub
GitHub - winterbe/java8-tutorial: Modern Java - A Guide to Java 8
Modern Java - A Guide to Java 8. Contribute to winterbe/java8-tutorial development by creating an account on GitHub.
👍10🔥3❤2
☕️ @Controller — для классов-контроллеров в проекте Spring MVC.
☕️ @RequestMapping — для настройки сопоставления URI в методах-обработчиках контроллера. Это очень важная аннотация.
☕️ @ResponseBody — для отправки Object в качестве ответа, обычно для отправки данных XML или JSON в качестве ответа.
☕️ @PathVariable — для отображения динамических значений из URI в аргументы метода обработчика.
☕️ @Autowired — для автоматического связывания зависимостей в бинах Spring.
☕️ @Qualifier — с аннотацией @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа bean-компонента.
☕️ @Service — для классов сервисного слоя.
☕️ @Scope — для настройки области действия Spring bean.
☕️ @Configuration, @ComponentScan и @Bean — для конфигураций на основе Java.
Аннотации AspectJ для настройки аспектов и советов, @Aspect, @Before, @After, @Around, @Pointcut и т. д.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤4🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
XPrivacyLua – менеджер по конфиденциальности приложений для Android
Отзыв разрешений у Android приложений часто приводит к ограничениям в функционале или сбоям в работе приложений. XPrivacyLua передаёт приложениям поддельные данные вместо реальных, что позволяет сохранить функционал и конфиденциальность одновременно
#Java #Privacy #Android #Useful
@github_code
Отзыв разрешений у Android приложений часто приводит к ограничениям в функционале или сбоям в работе приложений. XPrivacyLua передаёт приложениям поддельные данные вместо реальных, что позволяет сохранить функционал и конфиденциальность одновременно
#Java #Privacy #Android #Useful
@github_code
GitHub
GitHub - M66B/XPrivacyLua: Really simple to use privacy manager for Android 6.0 Marshmallow and later
Really simple to use privacy manager for Android 6.0 Marshmallow and later - M66B/XPrivacyLua
👍4❤1🔥1
Сегодня решил рассказать о своем опыте, как при помощи docker-compose и bash скрипта настроил развертывание бекенд приложения с базой данных.
Какая была идея? Хотелось при помощи одной команды в терминале разворачивать Java приложение с базой данных так, чтобы можно было передать все необходимые переменные в момент запуска и нигде не хранить их.
Так, чтобы можно было развернуть новую версию приложения даже с телефона, просто заранее заготовив необходимую команду.
Статья носит характер руководства по использованию, поэтому все желающие могут сами своими руками создать и воспроизвести весь путь, что я прошел и локально запустить у себя развертывание.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1🔥1
Проекты , которые рреально помогут в разработке и помогут прокачать навыки программирования.
Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Стоит также отметить, что проводник предоставляет множество синтаксических анализаторов кода: начиная от esformatter и esprima для JavaScript, заканчивая java-parser для, собственно, Java.
#web #java
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🔥1
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