Секреты Java
رفتن به کانال در Telegram
Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. Владелец: @Alexey_Morl Реклама на бирже: https://telega.in/c/java_secrets
نمایش بیشتر7 991
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
7 991
Java-разработчики, встречаемся 4 июля в Рязани! 📆
Эксперты Сбера из разных команд и городов расскажут о технологиях и инструментах, которые позволяют увеличивать эффективность работы разработчика и всей команды.
Спикеры и темы:
✔️ Егор Курилов, Head of PerfTesting, и Назар Грехов, HT Lead, «Решение проблем производительности Java-приложений»
✔️ Павел Кислов, Senior Java-разработчик, «Spring Security: повседневное и неочевидное»
✔️ Глеб Борисов и Валерия Тихонова, Middle Java-разработчики, «Использование машины конечных состояний в Сбербанк Онлайн».
Место встречи: Рязань, лофт-пространство «Свобода», Соборная площадь, д. 21.
Регистрируйтесь и приходите 4 июля в 17:30👌
7 991
Промпт-инженеринг — новый хайп или перспективная профессия? 🤔
Рассказываем про направление с большим потенциалом и маленькой конкуренцией на рынке на нашей бесплатной лекции.
По итогам эфира вы узнаете:
— Кто такой промт-инженер и чем он занимается;
— Как интегрировать скиллы промт-инжинеринга в работу, если вы работаете в IT;
— Кому в действительности нужны его услуги и какие результаты это даст;
— Сколько платят промт-инженеру в России и мире;
— Кто может стать промт-инженером и какой порог входа;
Кликай на ссылку и забирай подробную информацию вместе с классными бонусами 👈🏼
erid: LjN8KVXTL
ООО Зерокодер, ИНН 9715401631
7 991
✅ Имя класса
В Java у Class существует несколько методов, которые возвращают имя класса, но в разных формах и служат разным целям - это
getSimpleName(), getCanonicalName(), getTypeName() и getName().
Часто они вызывают путаницу и в этом посте мы попытаемся с ними разобраться.
Допустим у нас есть класс:
package com.example;
public class Outer {
public class Inner {
}
}
Вызов метода:
▫️getSimpleName() - возвращает просто название класса без учета пакета и вложенных классов.
Outer.class.getSimpleName();
Inner.class.getSimpleName();
Код в строках выше вернет 'Outer' и 'Inner' соответственно. Метод может быть полезен, например, для логирования, но возвращаемое значение не гарантирует уникальность.
▫️getName() - возвращает полное имя класса, включая пакет, а вложенные классы отделяются символом "$". В рамках определенного ClassLoader этот метод возвращает уникальные имена и эти имена мы можем использовать для динамической загрузки классов через Class.forName().
Outer.class.getName();
Inner.class.getName();
Вернут 'com.example.Outer' и 'com.example.Outer$Inner'.
▫️getCanonicalName() - возвращает каноническое имя, как определено в JLS. Включает пакет и вложенные класса, отделенные точкой. Каноническое имя используется оператором import.
Outer.class.getCanonicalName();
Inner.class.getCanonicalName();
Вернут 'com.example.Outer' и 'com.example.Outer.Inner'.
▫️getTypeName() - возвращает "an informative string for the name of this type" - информативную строку для имени этого типа. Это имя только информативно и не имеет никакой контрактной значимости.
Outer.class.getTypeName();
Inner.class.getTypeName();
Вернут то же, что и getName();
🫡 Секреты Java
#java #class7 991
Секрет IT-шников из Сбербанка
Видели эти требования в вакансиях? 30 лет опыта, диплом и еще куча опций, который совместит в себе только киборг-убийца.
На самом деле HR не ищут идеального биоробота и даже новичок сможет получить оффер в Сбер или Яндекс. Но начинающие часто сомневаются:
– Да, важно знать Java, ООП, структуры данных… А вместо стандартных пет-проектов создать что-то более масштабное, использовать микросервисы и сложные фичи, но как именно это сделать?
– Как понять свой уровень знаний и готовность к настоящей работе?
– Как иметь уверенность, что со всем справитесь?
Чтобы помочь, в IT-школе FAANG School подготовили тест, где после ответов на 5 вопросов на бесплатной карьерной сессии вы узнаете, как именно вам получить позицию Java Junior в лучших IT-компаниях.
Для всех, кто пройдет его в течение 24 часов ребята дают бонус – гайд по поиску работы в IT.
Спойлер: с помощью знаний FAANG School 12 человек уже начали работу в штате Сбербанка и это если не считать другие позиции и компании 😏. Жми
7 991
7 991
✅ Как получить текущий stack trace?
Stack trace представляет собой последовательность методов, от последнего к первому, которые были вызваны выполняемой программой (потоком). С помощью него можно отследить где было выброшено исключение или через какую цепочку методов программа дошла до какой-либо места в коде. Удобно для дебага.
Чтобы получить текущий stack trace можно использовать вызов метода
getStackTrace() у настоящего потока, например:
public class StackTraceExample {
public static void main(String[] args) {
method1();
}
public static void method1() {
method2();
}
public static void method2() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for (StackTraceElement element : stackTrace) {
System.out.println(element.getMethodName());
}
}
}
В данном примере метод method2 выводит все вызванные методы в стеке вызовов. Результат выполнения программы будет следующим:
getStackTrace
method2
method1
main
Объекты класса StackTraceElement представляют элементы стек стрейса:) Можно узнать различную информацию у данного элемента, такую как имя метода в данном месте стека (getMethodName()), имя класса (getClassName()) и другую.
Для получения stack trace с использованием Throwable можно вызвать метод getStackTrace(), который также возвращает массив StackTraceElement.
Пример использования Throwable для получения stack trace:
try {
// some code that may throw an exception
throw new Exception("Error occurred");
} catch (Exception e) {
StackTraceElement[] stackTrace = e.getStackTrace();
for (StackTraceElement element : stackTrace) {
System.out.println(element.toString());
}
}
Оба эти способа позволяют получить информацию о стеке вызовов для отслеживания ошибок и исключений в Java.
🫡 Секреты Java
#java #stacktrace7 991
СЕНЛА — это международная компания полного цикла разработки программного обеспечения.
Мы запускаем бесплатный интенсивный курс Java SE.
Для кого: для тех, кто может справиться с Getters и Setters, умеет проходить в цикле по массиву, понимает, чем ссылочные типы отличаются от примитивов.
Города участники: Тула, Калуга, Орел и Владимир.
Как попасть: выполнить Небольшое тестовое задание. Регистрация до 23 июня.
Длительность обучения: 4 месяца.
Как проходит обучение:
• Групповой формат.
• Онлайн вебинары и разборы практических заданий.
• Изучение материала и практика под руководством ментора — практикующего специалиста компании.
И главное – возьмем на работу тех, кто пройдет курсы и справится с финальным заданием!
Реклама. ООО "СЕНЛА". ИНН 5751061648.
7 991
7 991
✅ Thread wait() vs. sleep()
Оба метода в Java имеют схожую функциональность, но имеют разные принципы работы.
Метод
wait() вызывается на объекте, причем на любом, т.к. он определен в классе Object.
Метод должен быть вызван внутри блока synchronized и на объекте на котором получен lock, в противном случае мы получим исключение
java.lang.IllegalMonitorStateException:
current thread is not owner
Метод wait() заставляет текущий поток остановиться и ждать, пока не будет освобожден. После этого поток снова становится активным.
Пример использования метода wait():
Object lock = new Object();
synchronized(lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
После вызова wait() поток будет ожидать пока его не освободит другой поток вызовом метода notify() на этом же объекте.
Thread.sleep() - статический метод и в отличие от wait(), просто останавливает поток на указанное время (если не был прерван). Он может быть вызван из любого места и не требует блока synchronized для исполнения.
Пример использования метода sleep():
try {
Thread.sleep(1000);
// Поток засыпает на 1 секунду
} catch (InterruptedException e) {
e.printStackTrace();
}
Пробуждение потока
Когда мы используем метод sleep(), поток запускается через указанное время, если он не прерывается до этого.
Для wait() процесс пробуждения немного сложнее. Мы можем разбудить поток, вызвав другим потоком методы notify()/notifyAll() на том же объекте, которые тоже должны быть вызваны в блоке synchronized. Либо можно вызвать метод wait() с указанием таймаута.
Таким образом, основное различие между методами wait() и sleep() заключается в том, что wait() используется для синхронизации между потоками, в то время как sleep() просто приостанавливает выполнение текущего потока на определенное время.
🫡 Секреты Java
#java #multithreading7 991
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:
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
7 991
+1
erid: LjN8KBAWf
Исследуем тайну багов, оперируем строки, вычисляем уязвимости. Мы - и химики, и детективы, и археологи в ваших Java-проектах.
Привет! Мы разрабатываем инструмент для поиска ошибок и уязвимостей в коде С, С++, С# и Java. Приглашаем в наш Telegram-канал с уникальным контентом для Java разработчика 💪
Переходи на наши последние Java посты:
- регулярная рубрика: Найди Ошибку в Java коде
- статья "Ловушки volatile, DCL и синхронизации в Java"
- подборка статей о Java от наших разработчиков
Ждём тебя в рядах борцов за чистый код 😉
7 991
+1
erid: LjN8KBAWf
Исследуем тайну багов, оперируем строки, вычисляем уязвимости. Мы - и химики, и детективы, и археологи в ваших Java-проектах.
Привет! Мы разрабатываем инструмент для поиска ошибок и уязвимостей в коде С, С++, С# и Java. Приглашаем в наш Telegram-канал с уникальным контентом для Java разработчика 💪
Переходи на наши последние Java посты:
- регулярная рубрика: Найди Ошибку в Java коде
- статья "Ловушки volatile, DCL и синхронизации в Java"
- подборка статей о Java от наших разработчиков
Ждём тебя в рядах борцов за чистый код 😉
