Java | Фишки и трюки
Открыть в Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg
Больше6 811
Подписчики
Нет данных24 часа
-137 дней
-6630 день
Архив постов
6 810
⌨️ Pattern Matching для instanceof
Начиная с Java 16, проверка типов с помощью
instanceof стала гораздо удобнее благодаря Pattern Matching. Раньше, после проверки объекта на принадлежность к определённому классу, нужно было выполнять явное приведение типа. Теперь это можно сделать в одной строке.
Пример до Java 16:
if (obj instanceof String) {
String str = (String) obj;
System.out.println(str.length());
}
Пример с Pattern Matching:
if (obj instanceof String str) {
System.out.println(str.length());
}
Теперь после instanceof можно сразу же использовать объект нужного типа в коде, что делает программу более читабельной и компактной.
#java #PatternMatching #instanceof6 810
Забирай пошаговую roadmap по JAVA
FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить доступ:
– Redis - 5 улучшений для твоего пет-проекта
– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков
Из свежих пополнений – Инструкция по работе с Git (ключевой навык для любого разработчика!)
Библиотека знаний пополняется постоянно, но бесплатный доступ длится всего сутки. Чтобы получить полезные материалы, переходи по ссылке и жми на оранжевую кнопку.
6 810
⌨️ Ещё одна мощная фишка Java — это try-with-resources, которая значительно упрощает работу с ресурсами (например, файлами или сетевыми соединениями) и автоматически закрывает их после использования.
Обычно ресурсы, такие как файлы или потоки, нужно явно закрывать, чтобы избежать утечек. Но с помощью конструкции try-with-resources Java автоматически закроет ресурсы, когда они больше не нужны, даже если возникнет исключение.
Пример работы с файлом:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
В этом коде BufferedReader автоматически закроется после выполнения блока try, что исключает риск утечки ресурсов. Эта конструкция делает код более чистым и безопасным.
#java #tryWithResources6 810
⌨️ Optional это полезная фишка языка, которая помогает работать с возможными
null значениями, избегая проблем с NullPointerException.
Optional оборачивает значение, которое может быть либо пустым, либо присутствующим, и предоставляет методы для работы с этим значением безопасным способом.
Пример использования:
Optional<String> name = Optional.ofNullable(getUserName());
name.ifPresent(n -> System.out.println("Имя пользователя: " + n));
Если значение есть, оно выводится на экран. Если значение null, программа просто пропустит это место, и не возникнет исключения. Также можно задать значение по умолчанию:
String defaultName = name.orElse("Гость");
System.out.println(defaultName);
Это делает код более устойчивым к ошибкам и улучшает его читаемость.
#java #Optional6 810
Хочешь практиковать Java на реальных задачах? В поисках оригинального контента, а не копипаста из других источников?
👉 Заходи на новый канал 👈
Топовые задачи:
— Много вопросов по concurrency и jvm
— Разбираем стандартные ошибки и их решения
— Оптимизируем код
— Best practices
— Задачи с реальных собеседований
— Разный уровень сложности
— Подробный разбор каждого решения
Достойный материал для подготовки к собеседованиям, а также сложные и интересные задачи из реальной практики.
Автор канала – Java-эксперт, более 10 лет в разработке. Опытный Lead dev и тимлид.
👉 Подписывайся и попробуй решить последнюю задачу! https://t.me/java_interview_tasks
6 810
public class Quest {
private final String name;
Quest(String name) {
this.name = name;
}
private String name() {
return name;
}
private void reproduce() {
new Quest("reproduce") {
void printName() {
System.out.println(name());
}
}.printName();
}
public static void main(String[] args) {
new Quest("main").reproduce();
}
}
#java #quest6 810
public class Quest {
public static void main(String[] args) {
System.out.println(isEqual(1, 1));
}
private static boolean isEqual(int i, int j) {
return (i == j) ? null : false;
}
}
#java #quest6 810
Делюсь самой топовой 🔝 подборкой каналов, которые ведут профи своего дела и раскрывают важные темы в сфере: Разработки и Аналитики ⬇️
Не нужно больше искать тематические каналы и тратит на это кучу времени — уже всё тут
Нажимай на ссылку ниже:
💻 https://t.me/addlist/d23m2d_lHE42MjAy
и следи за каналами, чтобы держать руку на пульсе и первым получать самую актуальную информацию ✔️
Понравилось и хочешь в подборку?
6 810
⌨️ Пакетное выполнение запросов — это техника, которая позволяет выполнять несколько SQL-запросов в одной транзакции, что помогает оптимизировать производительность и уменьшить накладные расходы на соединение с базой данных. Основные методы для работы с пакетами запросов — это
addBatch() и executeBatch(), которые являются частью интерфейса Statement (а также PreparedStatement и CallableStatement).
Метод addBatch() добавляет SQL-запрос (или его параметризованную версию в случае с PreparedStatement) в пакет запросов для последующего выполнения. Каждый вызов этого метода добавляет один SQL-запрос в очередь пакета.
Метод executeBatch() выполняет все запросы, добавленные в пакет.
Пример:
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "username", "password");
Statement s = con.createStatement();
String sql1 = "CREATE TABLE STUDENT(STUDENTID VARCHAR2(10) PRIMARY KEY,NAME VARCHAR2(20),DEPARTMENT VARCHAR2(10))";
String sql2 = "INSERT INTO STUDENT VALUES('S101','JEAN','CSE')";
String sql3 = "INSERT INTO STUDENT VALUES('S102','ANA','CSE')";
String sql4 = "INSERT INTO STUDENT VALUES('S103','ROBERT','ECE')";
s.addBatch(sql1);
s.addBatch(sql2);
s.addBatch(sql3);
s.addBatch(sql4);
s.executeBatch();
con.commit();
con.close();
#java #addBatch #executeBatch6 810
Бесплатное IT-образование в 2024
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
👩💻 Java: @Java_Iibrary
👩💻 Моб. разработка: @MobDev
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
⚙️ Backend: @BackendPortal
👩💻 Frontend: @FrontendPortal
👩💻 Python: @PythonPortal
👩💻 C#: @KodBlog
👩💻 С/С++: @Cpportal
🖥 Базы Данных & SQL: @SQL
👩💻 Golang: @juniorGolang
👩💻 PHP: @PHPortal
👩💻 Разработка игр: @GameDevgx
👩💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign
➡️ Сохраняйте себе, чтобы не потерять
6 810
⌨️ Выполнение команды в командной строке с выводом результата
public class CommandLine {
public static void main(String[] args) throws IOException {
Runtime rt = Runtime.getRuntime();
String[] commands = {"ping", "-c 5", "google.com"};
Process proc = rt.exec(commands);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// Read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// Read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
}
}
Метод Runtime.getRuntime() возвращает объект, представляющий текущую среду выполнения Java. Этот объект позволяет запускать команды системы.
Метод exec() запускает системную команду и возвращает объект Process, который представляет запущенный процесс. Команда, которую нужно выполнить, передается как массив строк.
Далее получаем поток для чтения данных из стандартного вывода процесса, который был запущен и выводим на консоль. Так же поступаем и с потоком вывода ошибок.
Вывод:
Here is the standard output of the command: PING google.com (173.194.222.138): 56 data bytes 64 bytes from 173.194.222.138: icmp_seq=0 ttl=60 time=39.479 ms 64 bytes from 173.194.222.138: icmp_seq=1 ttl=60 time=39.753 ms 64 bytes from 173.194.222.138: icmp_seq=2 ttl=60 time=47.982 ms 64 bytes from 173.194.222.138: icmp_seq=3 ttl=60 time=39.569 ms 64 bytes from 173.194.222.138: icmp_seq=4 ttl=60 time=39.850 ms --- google.com ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 39.479/41.327/47.982/3.330 ms Here is the standard error of the command (if any):#java #Runtime #exec
6 810
Правда или Миф?
Чистая правда.
🔸IT-специалисты - группа
риска. 🤯 Постоянная умственная нагрузка, переработки и дедлайны, стрессы, тревожность, бессонница, выгорание - это не просто слова, а реальность для многих.
Результат? 😔 Хроническая усталость и упадок сил, проблемы с концентрацией и низкая производительность на работе, не хватает энергии на любимые дела...
Звучит знакомо?
Есть решение! 💪 Uwio - платформа терапии тревожных расстройств, депрессии и выгорания.
Что отличает ☺️☺️ ?
1️⃣ Комплексный подход. Не отдельные консультации, а продуманное комплексное решение: сессии с психотерапевтом + глубокая оптимизация сна, коррекция рациона + развитие навыков самоанализа и эмоциональной устойчивости.
2️⃣Контроль прогресса в системе аналитики. Глубокий анализ клинических показателей поможет вам прозрачно видеть изменения
3️⃣Терапия, основанная на данных. Система активного контроля прогресса - это инновационная разработка, которая существует только на платформе Uwio. Психотерапевт между сессиями анализирует ваше состояние и вносит необходимые корректировки в терапию.
4️⃣ Изменения за 8 недель. Программа имеет четкие временные рамки и поможет выйти на стабильный результат не затягивая терапию на месяцы и годы
5️⃣Проверенные специалисты. Психологи Uwio проходят строгий отбор и имеют большой опыт работы с тревожными расстройствами, депрессией и выгоранием.
6️⃣Оплата долями. Оплатить программу можно по частям и начать терапию уже сегодня
🔸 Пройдите анкетирование и получите индивидуальную программу в бот-приложении в Telegram
Не ждите, пока проблемы станут невыносимыми! 😌 Заботьтесь о своем ментальном и физическом здоровье!
Реклама.
ООО "ЮВИО"
ИНН:5906175087
Erid:2VSb5zHTXTv
6 810
public class Quest {
public static void main(String[] args) {
final String pig = "length: 10";
final String dog = "length: " + pig.length();
System.out.println("Animals are equal: " + pig == dog);
}
}
#java #quest6 810
⌨️ Как добавить элемент в середину массива?
Есть несколько способов добавить элемент в середину массива. Однако, поскольку массивы имеют фиксированную длину, напрямую добавить элемент в существующий массив нельзя — нужно создавать новый массив с увеличенной длиной и копировать данные. Рассмотрим несколько способов:
1️⃣ Копирование вручную
Суть в том что бы создать новый массив на 1 элемент больше оригинального и перенести элементы из старого, не забыв при этом вставить новый элемент.
int[] array = {1, 2, 4, 5};
int index = 2; // индекс, куда вставить новый элемент
int newElement = 3;
// Создаем новый массив на 1 больше
int[] newArray = new int[array.length + 1];
// Копируем элементы до позиции вставки
for (int i = 0; i < index; i++) {
newArray[i] = array[i];
}
// Вставляем новый элемент
newArray[index] = newElement;
// Копируем оставшиеся элементы
for (int i = index + 1; i < newArray.length; i++) {
newArray[i] = array[i - 1];
}
// Печатаем новый массив
System.out.println(Arrays.toString(newArray)); // [1, 2, 3, 4, 5]
2️⃣ Использование коллекций (например, ArrayList)
ArrayList динамический по размеру, и можно легко вставить элемент в любое место с помощью метода add(index, element).
Integer[] array = {1, 2, 4, 5};
int index = 2; // индекс, куда вставить новый элемент
int newElement = 3;
List<Integer> list = new ArrayList<>(Arrays.asList(array));
// Вставляем элемент
list.add(index, newElement);
// Создаем новый массив на 1 больше
Integer[] newArray = list.toArray(array);
// Печатаем новый массив
System.out.println(Arrays.toString(newArray)); // [1, 2, 3, 4, 5]
3️⃣ Использование метода System.arraycopy
Метод System.arraycopy позволяет эффективно копировать части массива.
int[] array = {1, 2, 4, 5};
int index = 2; // индекс, куда вставить новый элемент
int newElement = 3;
// Создаем новый массив на 1 больше
int[] newArray = new int[array.length + 1];
// Копируем элементы до позиции вставки
System.arraycopy(array, 0, newArray, 0, index);
// Вставляем новый элемент
newArray[index] = newElement;
// Копируем оставшиеся элементы
System.arraycopy(array, index, newArray, index + 1, array.length - index);
// Печатаем новый массив
System.out.println(Arrays.toString(newArray)); // [1, 2, 3, 4, 5]
#java #array6 810
Научим проверять не только руками, но и писать автотесты на курсе «Автоматизатор тестирования на Java».
Что в программе:
✔ основы программирования на Java;
✔ фреймворк Pytest;
✔ инструменты Selenium;
✔ паттерн проектирования Page Object Model;
✔ автоматизация с помощью Postman и Swagger;
✔ архитектура ПО.
Приходите на бесплатную консультацию, чтобы задать вопросы об обучении и карьерных перспективах.
6 810
⌨️ Jasypt (Java Simplified Encryption) — это библиотека для шифрования и защиты конфиденциальных данных в Java-приложениях. Она упрощает процесс шифрования и дешифрования данных, обеспечивая простой и интуитивно понятный API. Jasypt особенно полезен для шифрования конфигурационных файлов (например, паролей для баз данных), чувствительной информации в базах данных и других данных, требующих защиты.
Подключение зависимости:
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt</artifactId>
<version>1.9.3</version>
</dependency>
Пример использования:
String myEncryptionPassword = "mySuperSecretPassword";
String secretData = "secret data";
AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
textEncryptor.setPassword(myEncryptionPassword);
String myEncryptedText = textEncryptor.encrypt(secretData);
System.out.println(myEncryptedText);
// DpMHE0Yy+6Ctlyx5lchU8j50Y2TRlGSOjHwIqAroxvmgq0VMijs/y8GkR9vcF1Pg
String plainText = textEncryptor.decrypt(myEncryptedText);
System.out.println(plainText); // secret data
Применение в Spring Boot
Для интеграции с Spring Boot Jasypt позволяет зашифровать чувствительные параметры конфигурации. Например, конфигурация для базы данных может быть записана так:
spring:
datasource:
url: ENC(encrypted-url)
username: ENC(encrypted-username)
password: ENC(encrypted-password)
Затем Jasypt автоматически расшифровывает эти значения при запуске приложения.
#java #Jasypt #cryptography