Java | Фишки и трюки
Відкрити в Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg
Показати більше6 820
Підписники
+724 години
-97 днів
-6030 день
Архів дописів
6 820
Никогда не используй CascadeType.ALL вместе с
@ManyToMany
На StackOverflow не всегда первый (и даже отмеченный как правильный) ответ является верным. Например, столкнувшись с org.hibernate.TransientObjectException и обратившись за решением на StackOverflow, вы можете найти ответ, который приведет к потере данных.
Часто советуют использовать CascadeType.ALL. Однако, применив этот совет для ассоциации @ManyToMany, вы рискуете потерять множество записей в базе данных без вашего согласия.
О том, почему нельзя использовать CascadeType.ALL с @ManyToMany рассказали в новом видео от Amplicode.
Хочешь больше подобного контента? Подписывайся на канал Amplicode на YouTube!
Реклама. ООО "ХОУЛМОНТ". ИНН 63161343936 820
⌨️ Полезные стримы. Сортировка
Отсортировать список с помощью стрима можно используя метод
sorted():
var list = List.of(10, 5, 7, 3);
var sortedList = list.stream()
.sorted()
.toList();
sortedList.forEach(System.out::println);
// 3 5 7 10
Можно передать Comparator:
var list = List.of(10, 5, 7, 3);
var sortedList = list.stream()
.sorted(Comparator.reverseOrder())
.toList();
sortedList.forEach(System.out::println);
// 10 7 5 3
#java #stream #sorted6 820
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:
1. Frontend / JavaScript
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
6 820
⌨️ Несколько способов для избежания NullPointerException:
✔️ Используйте
Optional из пакета java.util.
✔️ При сравнении константы с переменной пришедшей из вне, нужно вызывать equals() на константе.
✔️ А при сравнении двух переменных используйте java.util.Objects#equals.
✔️ Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.
✔️ Вызывайте методы equals() и equalsIgnoreCase() на известных объектах.
✔️ Применяйте valueOf() вместо toString().
✔️ Воспользуйтесь аннотациями @NotNull и @Nullable на основе IDE.
✔️ При возврате из метода коллекций, не стоит возвращать null, лучше пустую коллекцию (java.util.Collections#emptyList).
#java #NullPointerException #Optional6 820
«Код Ход Шоу» от Т-Банка для тех, кто работает на Java или только вкатывается:
— Необычный формат крестиков-ноликов. Участникам задают вопросы на знание Java, и если они отвечают правильно — могут поставить знак.
— Команды разработчиков из бигтеха (Т-Банк, Яндекс, Вертикаль, X5 Tech, Сбер, Samokat. tech и другие).
— Победитель проходит дальше, а в финале встретятся две лучшие команды.
Смотрите ютуб-шоу и подписывайтесь на телеграм-канал с анонсами новых выпусков и другими полезными материалами по Java.
erid:2VtzqvgzshZ
Реклама. АО "Тинькофф Банк", ИНН 7710140679, лицензия ЦБ РФ № 2673
6 820
public class Quest {
public static void main(String[] args) {
String str1 = "Hello World";
String str2 = new String("Hello World");
Set<String> set = new HashSet<>();
set.add(str1);
set.add(str2);
for (String str : set) {
if (str == str1) {
System.out.print("origin ");
}
if (str == str2) {
System.out.print("replace ");
}
}
}
}6 820
Прокачай скиллы, чтобы получить заветный оффер
Ребята из команды FAANG School собрали в одном месте гайды, шпаргалки, мануалы и чек-листы, в общем всё, что поможет стать сильными профессионалами.
Основные концепции Docker, наборы команд в JetBrains, пошаговая RoadMap по Java и множество других полезных материалов будут всегда под рукой, помогут быстро справиться со сложными вопросами и тем самым приблизят вас к высокой зп.
Библиотечный каталог постоянно пополняется, а значит, будет еще больше ценного контента. Бесплатно и навсегда!
Переходи, заглядывай в библиотеку и сохраняй полезности, если хочешь увеличить шансы устроиться в Яндекс, Amazon, Google и другие.
Попасть в библиотеку JAVA JUNIOR
6 820
⌨️ Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?
Не совсем. Примитивное поле экземпляра класса хранится не в стеке, а в куче. Любой объект (всё, что явно или неявно создаётся при помощи оператора new) хранится в куче.
#java #heap #stack #question
6 820
⌨️ Что такое Heap и Stack память в Java? Какая разница между ними?
Heap (куча) используется Java Runtime для выделения памяти под объекты и классы. Создание нового объекта также происходит в куче. Это же является областью работы сборщика мусора. Любой объект, созданный в куче, имеет глобальный доступ и на него могут ссылаться из любой части приложения.
Stack (стек) это область хранения данных также находящееся в общей оперативной памяти (RAM). Всякий раз, когда вызывается метод, в памяти стека создается новый блок, который содержит примитивы и ссылки на другие объекты в методе. Как только метод заканчивает работу, блок также перестает использоваться, тем самым предоставляя доступ для следующего метода. Размер стековой памяти намного меньше объема памяти в куче. Стек в Java работает по схеме LIFO (Последний-зашел-Первый-вышел)
Различия между Heap и Stack памятью:
✔️ Куча используется всеми частями приложения, в то время как стек используется только одним потоком исполнения программы.
✔️ Всякий раз, когда создается объект, он всегда хранится в куче, а в памяти стека содержится лишь ссылка на него. Память стека содержит только локальные переменные примитивных типов и ссылки на объекты в куче.
✔️ Объекты в куче доступны с любой точки программы, в то время как стековая память не может быть доступна для других потоков.
✔️ Стековая память существует лишь какое-то время работы программы, а память в куче живет с самого начала до конца работы программы.
✔️ Если память стека полностью занята, то Java Runtime бросает исключение java.lang.StackOverflowError. Если заполнена память кучи, то бросается исключение java.lang.OutOfMemoryError: Java Heap Space.
✔️ Размер памяти стека намного меньше памяти в куче.
✔️ Из-за простоты распределения памяти, стековая память работает намного быстрее кучи.
Для определения начального и максимального размера памяти в куче используются -Xms и -Xmx опции JVM. Для стека определить размер памяти можно с помощью опции -Xss.
#java #heap #stack #memory
6 820
Как разработчику увеличить доход минимум в два раза?
Освоить навыки по Kubernetes – самому востребованному направлению в 2024 году.
Что это за зверь такой, с чем его едят и как быстро его понять, рассказывает SRE Lead в MTS Digital и преподаватель курсов Слёрма Кирилл Борисов в своём канале.
Переходите и узнайте, как «кубы» могут пригодиться в работе, какие возможности открывают и прокачайте текущие скиллы.
Для всех новых подписчиков подготовили гайд «Как работает etcd с Kubernetes и без него»
Подписывайтесь, забирайте, изучайте и применяйте. Потом спасибо скажете 👉 @Kubernetes_Borisov
Реклама. ИП Аердинов Никита Вадимович ИНН 638103515932 erid: LjN8K7zVy
6 820
public class Quest {
public static void main(String[] args) {
int i=0;
label1: System.out.print(i++);
if (i < 2) {
goto label1;
}
}
}
#java #quest6 820
⌨️ Проброс исключений
Иногда возникает необходимость передать исключение дальше по стеку вызовов, чтобы оно было обработано на более высоком уровне. Для этого можно использовать ключевое слово
throws в сигнатуре метода и не перехватывать исключение в блоке catch, либо пробросить исключение дальше внутри блока catch.
public void someMethod() throws IOException {
try {
// код, который может выбросить IOException
} catch (IOException e) {
// возможно, выполнить какую-то обработку
throw e; // проброс исключения дальше
}
}
#java #throw #throws6 820
Внимание, разработчики! Приглашаем вас на открытый вебинар по алгоритмам и структурам данных от опытного практикующего эксперта💯
Ждём вас на уроке «Визуальное сравнение 1-2-3 алгоритмов сортировок» от OTUS, где мы:
- подробно рассмотрим три алгоритма сортировок: Пузырьком, Вставкой и Шелла;
- сравним их по различным критериям: сложность и количество обменов, стабильность и адаптивность;
- напишем алгоритмы и сравним их быстродействие;
- продемонстрируем их работу на игральных картах🂱️
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
Встречаемся 1 июля в 20:00 мск в преддверии старта курса «Алгоритмы и структуры данных».
🔴 Регистрируйтесь на урок и подписывайтесь на бота, чтобы ознакомиться с программой курса и забронировать спецскидку 10% (акция до 30 июня): https://otus.pw/1fZY/?erid=LjN8Jszu4
6 820
⌨️ DateTimeFormatter — это класс в Java, который используется для форматирования и парсинга дат и времени. Он предоставляет различные методы для преобразования объектов даты и времени в строку и наоборот. Этот класс является частью пакета
java.time.format и был введен в Java 8 в рамках новой Date and Time API.
DateTimeFormatter содержит предопределенные форматы, такие как ISO_LOCAL_DATE, ISO_LOCAL_TIME, ISO_LOCAL_DATE_TIME, BASIC_ISO_DATE и другие. Так же, DateTimeFormatter поддерживает создание пользовательских форматов с использованием шаблонов.
Форматирование даты и времени:
LocalDateTime now = LocalDateTime.now();
// Использование предопределенного формата
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
String formattedDate = now.format(formatter);
System.out.println("ISO_LOCAL_DATE_TIME: " + formattedDate);
// ISO_LOCAL_DATE_TIME: 2024-06-20T21:46:43.584659
// Использование пользовательского формата
DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String customFormattedDate = now.format(customFormatter);
System.out.println("Custom format: " + customFormattedDate);
// Custom format: 20-06-2024 21:46:43
Парсинг строки в дату и время:
String dateStr = "2024-06-20T15:30:00";
// Использование предопределенного формата
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
System.out.println("Parsed date (ISO_LOCAL_DATE_TIME): " + dateTime);
// Parsed date (ISO_LOCAL_DATE_TIME): 2024-06-20T15:30
// Использование пользовательского формата
String customDateStr = "20.06.2024 15:30:00";
DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
LocalDateTime customDateTime = LocalDateTime.parse(customDateStr, customFormatter);
System.out.println("Parsed date (custom format): " + customDateTime);
// Parsed date (custom format): 2024-06-20T15:30
#java #DateTimeFormatter6 820
🖥 Java - самый крупный обучающий ресурс в Telegram, посвященный изучению Java !
По контенту:
1. Собрали для вас лучшие бесплатные курсы по Java 2024 года.
2. 2250 вопросов с собесов с разбором от Senior разработчика.
3. Пишем пет-проекты на JAVA - лучшая практика.
4. А здесь я собрал лучшие ресурсы Java разработчика, тут и бесплтаные книги по Java и вакансии лдя джунов, много полезного.
Подписывайтесь, такие знания в 2024-м году на вес золота: @javatg
6 820
public class Quest {
public static void main(String[] args) {
System.out.print(condition1() && condition2());
}
private static boolean condition1() {
System.out.print(1);
return false;
}
private static boolean condition2() {
System.out.print(2);
return true;
}
}