Что выведет код?
Anonymous Quiz
15%
0
41%
100
16%
вывалится с ошибкой OutOfMemoryError
27%
ошибка компиляции
👍6👎3🔥1😁1🎉1
Quartz - это мощный планировщик задач для языка программирования Java, который позволяет создавать и управлять задачами, выполняемыми по определенному расписанию. Quartz позволяет создавать различные типы задач, такие как одноразовые, повторяющиеся, параллельные и многие другие.
Основные методы библиотеки Quartz:
1. SchedulerFactory - фабрика создания планировщика задач.
Пример кода:
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
2. Job - интерфейс, представляющий выполняемую задачу.
Пример кода:
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) {
System.out.println("Hello, Quartz!");
}
}
3. JobDetail - содержит информацию о задаче, такую как класс задачи, идентификатор задачи и другие свойства.
Пример кода:
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build();
4. Trigger - позволяет указать расписание выполнения задачи, такое как время запуска, повторяемость и другие параметры.
Пример кода:
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
5. Scheduler - основной класс для управления планированием задач.
Пример кода:
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1👏1
В Java статическая инициализация класса происходит во время загрузки класса в JVM (Java Virtual Machine), которая происходит перед созданием объектов этого класса или вызовом статических методов или статических полей этого класса.
Статическая инициализация выполняется при помощи статических блоков кода или статических переменных класса.
Статическая инициализация выполняется единожды при загрузке класса в JVM, вне зависимости от того, сколько раз этот класс будет использоваться в программе.
public class MyClass {
static {
// Код статической инициализации
System.out.println("Статическая инициализация MyClass");
}
public MyClass() {
System.out.println("Конструктор MyClass");
}
}
public class Start {
public static void main(String[] args) {
System.out.println("start");
new MyClass();
System.out.println("stop");
}
}
Вывод в консоль:
start
Статическая инициализация MyClass
Конструктор MyClass
stop
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1🔥1
public class ShadesOfGray {
public static void main(String[] args) {
System.out.println(X.Y.Z);
}
}
class X {
static class Y {
static String Z = "BLACK";
}
static C Y = new C();
}
class C {
String Z = "WHITE";
}😱5🎉1🤩1
Pattern и Matcher - это классы, предоставляемые Java для работы с регулярными выражениями. Pattern используется для компиляции регулярного выражения, а Matcher используется для сравнения этого выражения с определенной последовательностью символов.
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "The cat in the hat";
// Компилируем регулярное выражение
Pattern pattern = Pattern.compile("\\bcat\\b");
// Создаем Matcher, сравниваем его с текстом и выводим результат
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("Найдено совпадение!");
} else {
System.out.println("Совпадений не найдено");
}
}
}
🔹В данном примере мы создаем регулярное выражение, которое ищет слово "cat" как отдельное слово. Затем мы создаем Matcher, который сравнивает это выражение с текстом "The cat in the hat". Результатом выполнения программы будет сообщение "Найдено совпадение!", так как слово "cat" есть в тексте.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1👏1
JavaFX - это библиотека для создания графических пользовательских интерфейсов (GUI) на языке программирования Java. Она предоставляет инструменты для создания различных элементов интерфейса, анимаций, эффектов и многих других возможностей.
Пример кода на JavaFX:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Hello World");
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
JavaFX также полностью интегрируется с языком Java, что позволяет программистам легко работать с различными Java библиотеками и функциональными возможностями.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3👏2👨💻2
final String pig = "length: 10";
final String dog = "length: " + pig.length();
System.out.println(pig == dog);
👍6🎉2🔥1👏1
Java Cryptography Architecture (JCA) - это набор классов и интерфейсов, который обеспечивает безопасные функции шифрования, подписи и генерации ключей в Java. JCA предоставляет программистам удобный способ использования криптографических алгоритмов в своих Java приложениях.
Ниже приведен пример использования JCA для шифрования и дешифрования данных с использованием алгоритма AES:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class JCAExample {
public static void main(String[] args) throws Exception {
// Генерируем секретный ключ
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
// Шифруем данные
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal("Hello, World!".getBytes());
// Дешифруем данные
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println("Original data: " + new String(decryptedData));
}
}
В этом примере мы сначала генерируем секретный ключ для алгоритма AES, затем шифруем строку "Hello, World!" и дешифруем ее обратно. Это простой пример использования JCA для криптографии.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥1
SonarQube – это инструмент статического анализа кода, который помогает программистам выявлять и исправлять ошибки, обнаруживать потенциальные уязвимости и улучшать качество кода. Он поддерживает множество языков программирования, включая Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2❤1👏1
В примере переменная
x объявлена с ключевым словом final, поэтому ее значение не может быть изменено. Переменная y не объявлена как final, но внутри метода она не изменяется после инициализации, поэтому она считается "effectively final" и может быть использована в анонимных классах и лямбда-выражениях.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏3❤1🔥1
public class Counter {
public static void main(String[] args) {
int counter = 0;
counter = counter++;
System.out.println(counter);
}
}🗿10🎉2👎1🤩1😍1
Применение шаблонов проектирования позволяет повысить читаемость, расширяемость и поддерживаемость кода, а также уменьшить количество дублирующегося кода и повысить его стабильность. Одним из распространенных шаблонов проектирования является "Singleton", который гарантирует, что у класса есть только один экземпляр, и обеспечивает глобальную точку доступа к этому экземпляру.
Пример кода для реализации шаблона Singleton:
public class SingletonExample {
private static SingletonExample instance;
private SingletonExample() {
// Приватный конструктор
}
public static SingletonExample getInstance() {
if (instance == null) {
instance = new SingletonExample();
}
return instance;
}
}
Объяснение:
- Приватный конструктор предотвращает создание экземпляров класса извне.
- Статическое поле "instance" хранит единственный экземпляр класса.
- Метод "getInstance()" проверяет, существует ли уже экземпляр класса, и возвращает его. Если экземпляр не создан, то он создается и затем возвращается.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4🔥2👏1
Java | Фишки и трюки
Чистый код: создание, анализ и рефакторинг Автор: Роберт Мартин Эту книгу должен прочитать каждый разработчик. А затем перечитывать каждый год! 😁 Плюс для джавистов в том что в книге все примеры написаны на Java. "Чистый код" Роберта Мартина – это практическое…
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2❤1👏1
Когда метод помечается аннотацией
@Transactional, Spring создает транзакцию перед выполнением метода, и завершает ее после выполнения метода. Если метод выполняется успешно, транзакция фиксируется (commit). Если возникает исключение, транзакция откатывается (rollback), и изменения, сделанные в рамках транзакции, отменяются.Пример использования
@Transactional в Spring:
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Transactional
public void updateUser(User user) {
// Логика обновления пользователя в базе данных
userRepository.save(user);
}
@Transactional(readOnly = true)
public User getUserById(Long userId) {
// Логика получения пользователя из базы данных
return userRepository.findById(userId).orElse(null);
}
}
В этом примере метод
updateUser() помечен как @Transactional, поэтому все операции базы данных, выполняемые внутри этого метода, будут выполнены в рамках одной транзакции. То же самое относится и к методу getUserById(), который также помечен аннотацией @Transactional, но с параметром readOnly = true, что указывает, что этот метод только читает данные из базы данных и не делает изменений.Использование
@Transactional позволяет управлять транзакциями на уровне методов, что делает код более чистым и поддерживаемым, а также обеспечивает надежность взаимодействия с базой данных.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤3👎1🔥1👏1👨💻1