fa
Feedback
Java | Фишки и трюки

Java | Фишки и трюки

رفتن به کانال در Telegram

Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg

نمایش بیشتر
6 826
مشترکین
+824 ساعت
+27 روز
-5030 روز
آرشیو پست ها
🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Sci
🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. С/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift

⌨️ Что такое «статический класс»? Это вложенный класс, объявленный с использованием ключевого слова static. К классам верхнего уровня модификатор static неприменим. Это означает, что он связан с внешним классом, но при этом не имеет доступа к нестатическим членам внешнего класса, если только они не предоставляются явно. Экземпляр статического вложенного класса создается без необходимости создания экземпляра внешнего класса. Это отличается от обычных вложенных (внутренних) классов, которые требуют создания экземпляра внешнего класса.

public class Outer {
    private static String staticMember = "Static Member";
    private String instanceMember = "Instance Member";

    // Статический вложенный класс
    public static class StaticNested {
        public void display() {
            // Доступ к статическому члену внешнего класса
            System.out.println(staticMember);

            // Нельзя напрямую обращаться к нестатическому члену внешнего класса
            // System.out.println(instanceMember); // Ошибка компиляции
        }
    }

    public static void main(String[] args) {
        // Создание экземпляра статического вложенного класса
        Outer.StaticNested nestedObject = new Outer.StaticNested();
        nestedObject.display();
    }
}
#java #static #class

Java — один из самых популярных языков программирования, который используют разработчики для создания игр и приложений. Если
Java — один из самых популярных языков программирования, который используют разработчики для создания игр и приложений. Если вы давно мечтаете попробовать себя в этой сфере, скорее записывайтесь на мини-курс по Java-разработке. Подойдёт новичкам разного возраста, а ещё это полностью бесплатно! Регистрируйтесь: https://epic.st/c4I-e?erid=2VtzqvfFdqG 🎉 И получите первый подарок — гайд по профессии Java-разработчика. Что будем делать на мини-курсе: 🔹 Обсудим, почему Java — один из самых востребованных языков 🔹 Познакомимся с кодом Java и рассмотрим ключевые элементы приложений на этом языке 🔹 Сравним Java и Python 🔹 Сделаем Java-приложения по инструкции Формат мини-курса отлично подойдёт для обучения из любой точки мира: смотрите видео в удобное время и закрепляйте навыки на практике. Успейте записаться бесплатно! Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Что выведет код?
Anonymous voting

class Base {
    public String className = "Base";
}

class Derived extends Base {
    private String className = "Derived";
}

public class Quest {
    public static void main(String[] args) {
        System.out.println(new Derived().className);
    }
}

📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к са
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление: 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

⌨️ Вложенные классы. Когда применяются Класс называется вложенным (Nested class), если он определен внутри другого класса. Вложенный класс должен создаваться только для того, чтобы обслуживать обрамляющий его класс. Если вложенный класс оказывается полезен в каком-либо ином контексте, он должен стать классом верхнего уровня. Вложенные классы имеют доступ ко всем (в том числе приватным) полям и методам внешнего класса, но не наоборот. Из-за этого разрешения использование вложенных классов приводит к некоторому нарушению инкапсуляции. Существуют четыре категории вложенных классов: 1️⃣ Static nested class (Статический вложенный класс); 2️⃣ Member inner class (Простой внутренний класс); 3️⃣ Local inner class (Локальный класс); 4️⃣ Anonymous inner class (Анонимный класс). Такие категории классов, за исключением первого, также называют внутренними (Inner class). Внутренние классы ассоциируются не с внешним классом, а с экземпляром внешнего. Каждая из категорий имеет рекомендации по своему применению. Если вложенный класс должен быть виден за пределами одного метода или он слишком длинный для того, чтобы его можно было удобно разместить в границах одного метода и если каждому экземпляру такого класса необходима ссылка на включающий его экземпляр, то используется нестатический внутренний класс. В случае, если ссылка на обрамляющий класс не требуется - лучше сделать такой класс статическим. Если класс необходим только внутри какого-то метода и требуется создавать экземпляры этого класса только в этом методе, то используется локальный класс. А, если к тому же применение класса сводится к использованию лишь в одном месте и уже существует тип, характеризующий этот класс, то рекомендуется делать его анонимным классом.

Cамый простой способ изучить Java — залезть в голову профи Один из лучших айтишников России учит базе кодинга в Telegram. Даже гуманитарий поймёт, как создавать приложения, сайты, игры и чат-боты. Достаточно подписаться на «Секреты Java», где каждый день появляются гайды, готовые примеры кода и лучших практик. И всё это бесплатно — вместо сотен тысяч рублей за курсы. Стартовать в прибыльной профессии с нуля вы сможете гораздо проще! Теперь обучиться Java может каждый: @java_secrets

🖥 Оптимистичная и пессимистичная блокировка в базах данных Оптимистичная блокировка предполагает, что конфликтов при параллельном доступе к данным будет мало. Изменения данных происходят без блокировки, но при попытке сохранения изменений проверяется, что данные не изменились с момента последнего чтения. Алгоритм: 1️⃣ Чтение данных. 2️⃣ Обновление данных в памяти. 3️⃣ Попытка записи изменений с проверкой версии или временной метки. 4️⃣ Если данные были изменены другим процессом, транзакция откатывается и повторяется. Например, можно использовать поле version в таблице. При чтении данных запоминаем значения этого поля, а записываем данные с условием что поле version не изменилось. SQL-запрос может быть примерно таким:

update table set field1='data1', field2='data2', version=<version>+1 where id=<id> and version=<version>
После выполнения запроса нужно проверить сколько записей обновилось, если ни одной, то значит другой процесс изменил запись, и нужно начать с начала. Пессимистичная блокировка предполагает, что конфликты будут частыми. Данные блокируются при чтении, чтобы предотвратить их изменение другими транзакциями до завершения текущей транзакции. Алгоритм: 1️⃣ Чтение данных с блокировкой. 2️⃣ Обновление данных. 3️⃣ Запись изменений. 4️⃣ Снятие блокировки после завершения транзакции. Как пример, может быть использован запрос SELECT ... FOR UPDATE для блокировки строк при чтении. #java #database #optimistic #pessimistic #locking

Изучи алгоритмы, чтобы работать в Яндекс или Google Приходи на бесплатное обучение от FAANG School. Там ты узнаешь: – Как исп
Изучи алгоритмы, чтобы работать в Яндекс или Google Приходи на бесплатное обучение от FAANG School. Там ты узнаешь: – Как использовать разные структуры данных при решении задач – Какие 20% усилий дают 80% результата при подготовке к алгоритмам – Prefix Sum и Sliding Window. 2 подхода, которые закрывают задачи на 200к$ во время собесов в Google – Как научиться решать алгоритмы без матана Спикер – Разработчик из BigTech. За 7 лет решил 500 задач на LeetCode, прошел 30 собеседований в компаниях уровня Google и Meta, а сейчас работает в одной из крупных IT-гигантов в мире. Переходи и жми на кнопку «Принять участие», чтобы начать обучение.

⌨️ Где разрешена инициализация статических/нестатических полей? ✔️ Статические поля можно инициализировать при объявлении, в статическом или нестатическом блоке инициализации. ✔️ Нестатические поля можно инициализировать при объявлении, в нестатическом блоке инициализации или в конструкторе. #java #initialization #static #nonstatic

Когда код наконец-то заработал, но не совсем так, как хотелось бы

⌨️ Функциональный интерфейс Supplier является частью пакета java.util.function и предназначен для представления поставщика результатов. Этот интерфейс используется для работы с функциями, которые не принимают никаких аргументов и возвращают результат. Supplier часто используется в ленивой инициализации, генерации данных и других сценариях, где требуется получение значения без ввода. Интерфейс Supplier аннотирован @FunctionalInterface, что означает, что он предназначен для использования с лямбда-выражениями и содержит ровно один абстрактный метод:

T get();
Возвращает результат типа T. Пример:

Supplier<String> supplier = () -> "Hello, World!";
String message = supplier.get();
System.out.println(message); // Hello, World!
Еще один:

Supplier<Double> randomSupplier = Math::random;
        
Stream.generate(randomSupplier)
        .limit(5)
        .forEach(System.out::println);
// 5 дробных чисел от 0 до 1
#java #supplier

Хочется попиарить один небольшой, но довольно активный и самое важное полезный телеграм канал Algorithmics. Канал сравнительно молодой, однако авторы не сбавляют темп своего повествования, а качество материала держится на достойном уровне от поста к посту. На канале вы найдете множество материалов с решениями задач с Leetcode на Go и TypeScript и все то, что будет полезным для подготовки к собеседованиям, в частности, к алгосекции.

⌨️ В чем разница между членом экземпляра класса и статическим членом класса? Модификатор static говорит о том, что данный метод или поле принадлежат самому классу и доступ к ним возможен даже без создания экземпляра класса. Поля, помеченные static инициализируются при инициализации класса. На методы, объявленные как static, накладывается ряд ограничений: ✔️ Они могут вызывать только другие статические методы. ✔️ Они должны осуществлять доступ только к статическим переменным. ✔️ Они не могут ссылаться на члены типа this или super. В отличии от статических, поля экземпляра класса принадлежат конкретному объекту и могут иметь разные значения для каждого. Вызов метода экземпляра возможен только после предварительного создания объекта класса. Пример:

public class MainClass {
    public static void main(String args[]) {
        System.out.println(TestClass.v);
        new TestClass().a();
        System.out.println(TestClass.v);
    }
}

public class TestClass {

 public static String v = "Initial val";

 {
  System.out.println("!!! Non-static initializer");
  v = "Val from non-static";
 }

 static {
  System.out.println("!!! Static initializer");
  v = "Some val";
 }

 public void a() {
  System.out.println("!!! a() called");
 }

}
Результат:
!!! Static initializer
Some val
!!! Non-static initializer
!!! a() called
Val from non-static
#java #static

🚀 Готовься к переменам в мире IT с нашим практическим курсом по Domain Driven Design! 😰 Устал от запутанной инфраструктуры,
🚀 Готовься к переменам в мире IT с нашим практическим курсом по Domain Driven Design! 😰 Устал от запутанной инфраструктуры, вперемешку с бизнес логикой? Мы знаем, как это тяжело. Писать тесты становится неприятно и больно, приходится много мокать, тесты получаются огромными, хрупкими.. Но есть решение! Присоединяйся к нашему курсу, где мы разложим все по полочкам за 10 вебинаров, начиная с 17 июня. 🔝 Прими вызов и стань частью передовой волны технологического прогресса. Успей зарегистрироваться сейчас https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqwL1BZQ&utm_campaign=11 🎓 На нашем курсе ты изучишь: ✅ Основы Domain-Driven Design и его важность для разработчиков. ✅ Создание эффективных и масштабируемых сервисов с использованием DDD. ✅ Применение шаблонов проектирования и принципов DDD для оптимизации кода и повышения производительности. 💡 Зачем тебе этот курс? 🌟 Плюс, ты получишь: — Новые подходы к разработке, в том числе и использование подходов ядра и слоев в онион-архитектуре. — Шанс быть первым внедрившим новые методы в отделе. — Стань Senior Developer или Team Lead. — Пиши код как профессионал, а не как в учебниках. — Получи признание в компании и увеличь свою заработную плату. 🌟 Присоединяйся к нам прямо сейчас и стань экспертом в разработке успешных проектов: https://microarch.ru/courses/hexagonal-architecture?utm_source=posev&utm_medium=erid:2VtzqwL1BZQ&utm_campaign=11 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzqwL1BZQ

photo content

⌨️ Полезные стримы. Метод distinct() Если у вас есть поток, который может содержать повторяющиеся элементы, используйте операцию distinct(), чтобы удалить их.

var list = Arrays.asList(1, 2, 3, 3, 4, 5, 5);
var distinctList = list.stream()
                       .distinct()
                       .collect(Collectors.toList());
// distinctList: [1, 2, 3, 4, 5]
#java #stream #distinct

Секрет IT-шников из Сбербанка Видели эти требования в вакансиях? 30 лет опыта, диплом и еще куча опций, который совместит в с
Секрет IT-шников из Сбербанка Видели эти требования в вакансиях? 30 лет опыта, диплом и еще куча опций, который совместит в себе только киборг-убийца. На самом деле HR не ищут идеального биоробота и даже новичок сможет получить оффер в Сбер или Яндекс. Однако начинающие часто сомневаются: – Да, важно знать Java, ООП, структуры данных… А вместо стандартных пет-проектов создать что-то более масштабное, использовать микросервисы и сложные фичи, но как именно это сделать? – Как понять свой уровень знаний и готовность к работе? – Как иметь уверенность, что со всем справитесь? Чтобы помочь, в IT-школе FAANG School подготовили тест, где после ответов на 5 вопросов на бесплатной карьерной сессии вы узнаете, как именно вам получить позицию Java Junior в лучших IT-компаниях. Для всех, кто пройдет его в течение 24 часов ребята дают бонус – гайд по поиску работы в IT. Спойлер: с помощью знаний FAANG School 12 человек уже начали работу в штате Сбера, не считая других позиций и компаний 😏. Переходи, ты следующий.

⌨️ Функциональный интерфейс Function является частью пакета java.util.function и предназначен для представления функций, принимающих один аргумент и возвращающих результат. Этот интерфейс широко используется в функциональном программировании и особенно полезен при работе с лямбда-выражениями и методами, которые принимают функции в качестве параметров. Интерфейс Function аннотирован @FunctionalInterface, что означает, что он предназначен для использования с лямбда-выражениями и содержит ровно один абстрактный метод:

R apply(T t);
Принимает один аргумент типа T и возвращает результат типа R. Пример:

Function<String, Integer> stringLength = String::length;
Integer length = stringLength.apply("Hello, World!");
System.out.println(length);  // 13
Еще один:

Function<Double, Double> areaOfCircle = r -> Math.PI * r * r;
System.out.println(areaOfCircle.apply(5.0));
// 78.53981633974483
#java #function