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

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

前往频道在 Telegram

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

显示更多
6 951
订阅者
-324 小时
-127
+1230
帖子存档
public class Quest {
    public static void main(String[] args) {
        System.out.println(5 + true);
    }
}

Два джуна померджили свои ветки
Два джуна померджили свои ветки

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

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

    static int calc() {
        try {
            if (1 == 1)
                throw new RuntimeException();
            return 1;
        } catch (Exception e) {
            return 2;
        } finally {
            return 3;
        }
    }
}

☕️Использование ORM фреймворков ORM (Object-Relational Mapping) фреймворки в Java позволяют программистам работать с базами данных, представляя данные в виде объектов, что упрощает процесс взаимодействия с БД. Несколько популярных технологий: 1. JPA (Java Persistence API): Стандартная спецификация для работы с объектно-реляционным отображением в Java. Пример использования JPA с Hibernate провайдером:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("myPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Employee employee = new Employee("Jane", "Smith", 1200);
em.persist(employee);
em.getTransaction().commit();
em.close();
2. Hibernate: Один из наиболее широко используемых ORM-фреймворков в Java. Пример кода для сохранения объекта в базе данных с использованием Hibernate:

Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Employee employee = new Employee("John", "Doe", 1000);
session.save(employee);
session.getTransaction().commit();
session.close();
3. Spring Data JPA: Часть Spring Data, облегчающая работу с JPA. Пример использования Spring Data JPA для поиска сущности по идентификатору:

Employee employee = employeeRepository.findById(1L).orElse(null);
4. MyBatis: Фреймворк, который предоставляет более SQL-центричный подход к ORM. Пример маппинга объекта на SQL запрос с помощью MyBatis:

<select id="selectEmployeeById" resultType="Employee">
    SELECT * FROM employees WHERE id = #{id}
</select>
ORM фреймворки упрощают работу с базами данных в Java, позволяя разработчикам оперировать объектами вместо SQL запросов, что улучшает производительность и поддерживаемость кода. Каждый из перечисленных фреймворков имеет свои особенности и преимущества, поэтому выбор зависит от конкретных потребностей проекта.

⌨️ Рассказываем о Java простыми словами. Рассматриваем и обсуждаем примеры кода, лучшие практики и свежие тенденции в програм
⌨️ Рассказываем о Java простыми словами. Рассматриваем и обсуждаем примеры кода, лучшие практики и свежие тенденции в программировании на Java. Присоединяйся, если любишь Java как и мы - https://t.me/java_secrets 📲

🌱 Аннотация @Transactional в Spring Framework используется для указания, что метод должен быть выполнен в рамках транзакции базы данных. Транзакция - это логическая единица работы с базой данных, которая обеспечивает атомарность, согласованность, изолированность и устойчивость (ACID) операций. Когда метод помечается аннотацией @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 позволяет управлять транзакциями на уровне методов, что делает код более чистым и поддерживаемым, а также обеспечивает надежность взаимодействия с базой данных.

Из джуна в мидла вместе с Холдингом Т1🚀 Приглашаем java-разработчиков в Открытые школы Т1! 🎓 Открытые школы Т1 — это новая
+5
Из джуна в мидла вместе с Холдингом Т1🚀 Приглашаем java-разработчиков в Открытые школы Т1! 🎓 Открытые школы Т1 — это новая карьерная программа для IТ-специалистов, объединяющая обучение без отрыва от работы и offer weeks. 👨‍💻 Для участия необходим опыт работы java-разработчиком от 1 года, а также желание присоединиться к команде Т1. Т1 занимает 2 место среди крупнейших ИКТ-компаний по версии RAEX 2023 и является партнёром ключевых производителей и разработчиков в сфере ИТ. В программу входит: spring framework; docker; синхронное и асинхронное взаимодействие, брокеры сообщений; паттерны, SOLID ⏰ Длительность 1 месяц. 💻 Формат: онлайн по вечерам (от 8 часов в неделю на вебинары и практику). Лучшим назначим интервью и направим оффер! 📌 Подробнее о программе — в карточках внутри поста. Принимаем заявки до 22 апреля! 🚀 Реклама. ООО "Т1". ИНН 7720484492.

⌨️📚 Чистый код. Классы ✅ Классы должны быть компактными. ✅ Классы должны быть еще компактнее. ✅ Имя класса должно описывать его ответственности. Отсюда можно и вычислить размер класса. ✅ Функционал класса должен четко соответствовать и вписываться в название класса. ✅ Разделяй связанность на маленькие классы. Жесткой и обильной связанности не должно быть — это усложняет поддержку и развитие проекта. ✅ Помни о Single Responsibility. Сущность должна иметь одну и только одну причину для изменения. ✅ Соблюдай инкапсуляцию. Ослабление инкапсуляции всегда должно быть последней мерой. ✅ Обычно мы объявляем переменные и вспомогательные функции приватными, но иногда их нужно объявлять protected и иметь возможность обратиться к ней из теста. ✅ Если группа функций относится к определенному функционалу, то эту группу функций можно и нужно выделить в отдельный класс и использовать его экземпляр.

Machine Learning не для меня? Все об ML простыми словами Бесплатный практикум от Karpov.Courses Этапы развития проектов в обл
Machine Learning не для меня? Все об ML простыми словами Бесплатный практикум от Karpov.Courses Этапы развития проектов в области машинного обучения Что вас ждет на вебинаре: » Разберетесь на практике, из каких стадий состоит проект по ML » Поймете, что в реальности нужно уметь делать, кроме обучения модели » Узнаете, почему важна каждая стадия в машинном обучении С помощью машинного обучения можно: » автоматизировать задачи для экономии времени и средств » принимать более рациональные решения на основе данных » персонализировать опыт клиентов » быстрее внедрять инновации Спикер: Эмиль Каюмов, Techlead платформы экспериментов в Яндекс Еде Начало вебинара 17 апреля в 19:00 по мск Подарок за регистрацию! Зарегистрироваться #реклама 16+ karpov.courses О рекламодателе

☕️Использование прикладных шаблонов проектирования - для улучшения качества кода Применение шаблонов проектирования позволяет повысить читаемость, расширяемость и поддерживаемость кода, а также уменьшить количество дублирующегося кода и повысить его стабильность. Одним из распространенных шаблонов проектирования является "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()" проверяет, существует ли уже экземпляр класса, и возвращает его. Если экземпляр не создан, то он создается и затем возвращается. ⚙️Использование шаблона Singleton в данном случае обеспечивает гарантированный единственный экземпляр класса в рамках приложения, что является полезным для создания объектов, представляющих синглтоны, такие как логгеры или конфигурационные объекты.

🔥 Пройди тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса 🔝 Обновленная, расширенная программа 👉  ПРОЙТИ ТЕСТ: https://otus.pw/9FJV/?erid=LjN8KJqTu

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

public class Counter {

    public static void main(String[] args) {
        int counter = 0;
        counter = counter++;
        System.out.println(counter);
    }

}

Курс по Java-разработке с гарантией трудоустройства Стань Java-разработчиком за 9 месяцев. В финале курса гарантированное тру
Курс по Java-разработке с гарантией трудоустройства Стань Java-разработчиком за 9 месяцев. В финале курса гарантированное трудоустройство с зарплатой от 100 тыс. рублей. Все условия будут закреплены в твоем договоре с Kata Academy Главное про курс по Java: — обучение до уровня junior+ или middle — оплата курса после трудоустройства из фактической зарплаты — трудоустройство в Москве или Санкт-Петербурге — в программе курса: теория, практика, групповой проект, подготовка к трудоустройству — поддержка менторов, HR-консультантов, комьюнити — выпускник получает минимум три оффера на работу — минимальная зарплата сразу после курса — 100 тыс. рублей, средняя зарплата выпускников через год после курса — 221 тыс. рублей Для поступления нужно сделать тестовое задание. Оставь заявку по ссылке! Узнать больше #реклама 16+ kata.academy О рекламодателе

⌨️ Effectively final - это термин, который используется для описания переменной в Java, которая фактически ведет себя как fin
⌨️ Effectively final - это термин, который используется для описания переменной в Java, которая фактически ведет себя как final, хотя она не объявлена с ключевым словом final. То есть, хотя вы можете изменять значение этой переменной, вы это не делаете. Компилятор Java позволяет использовать такие переменные в лямбда-выражениях и анонимных классах, даже если они не объявлены как final. В примере переменная x объявлена с ключевым словом final, поэтому ее значение не может быть изменено. Переменная y не объявлена как final, но внутри метода она не изменяется после инициализации, поэтому она считается "effectively final" и может быть использована в анонимных классах и лямбда-выражениях.

🧑‍💻Ты Java-разработчик? Присоединяйся к IT_One CAREER HACKATHON 2024! 💚 Приглашаем Java-разработчиков, ИТ-специалистов уро
🧑‍💻Ты Java-разработчик? Присоединяйся к IT_One CAREER HACKATHON 2024! 💚 Приглашаем Java-разработчиков, ИТ-специалистов уровня junior, middle и senior, провести 3 дня за решением кейса от IT_One. 🚀Рассказываем подробнее: - Кейс, который предстоит решить: Разработка приложения для управления финансами - Формат: мероприятие пройдёт онлайн - Даты хакатона: 17 - 19 мая 2024 - Дедлайн регистрации: до 13.05.2024, 23:59 МСК 🔥Что тебя ждёт? - Новый кейс в портфолио - Мерч для победителей и сертификаты всем участникам - Призовой фонд – 500.000 рублей - Встречи с экспертами и питчи - Командная работа  Проведи выходные с максимальной пользой, участвуй в хакатоне и решай задачу под руководством специалистов на хакатоне от IT_One! 💚 Регистрация уже доступна по ссылке: https://tglink.io/b060f6dd317b

☕️Использование SonarQube SonarQube – это инструмент статического анализа кода, который помогает программистам выявлять и исправлять ошибки, обнаруживать потенциальные уязвимости и улучшать качество кода. Он поддерживает множество языков программирования, включая Java. 🔔Один из основных методов SonarQube для анализа кода - это использование правил (rules). Правила определяют набор проверок, которые применяются к коду для выявления потенциальных проблем. SonarQube поставляется с большим количеством предустановленных правил, которые можно настраивать и расширять под конкретные нужды проекта. ➡️Еще один важный метод SonarQube - это использование метрик (metrics) для измерения качества кода. Метрики позволяют оценить различные аспекты кода, такие как сложность, размер, покрытие тестами и др. SonarQube предоставляет отчеты на основе метрик, которые помогают программистам понять, где можно улучшить свой код. 🔖В целом, SonarQube является мощным инструментом для улучшения качества и безопасности вашего кода на Java. Правильное использование его методов поможет вам избежать многих ошибок и повысить производительность вашего проекта.

⚡️ Пройди хардкорный тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс «Java Developer. Professiona
⚡️   Пройди хардкорный тест по Java и проверь свои знания. Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 . 👉  ПРОЙТИ ТЕСТ:  https://otus.pw/XzRH/?erid=LjN8JuNoG 🎫  А ещё, сейчас действуют скидка на курс до 21.04. Возможна оплата в рассрочку! Предложение ограничено.

☕️Использование Java Cryptography Architecture (JCA) Java Cryptography Architecture (JCA) - это набор классов и интерфейсов, который обеспечивает безопасные функции шифрования, подписи и генерации ключей в Java. JCA предоставляет программистам удобный способ использования криптографических алгоритмов в своих Java приложениях. ➡️Одной из ключевых особенностей JCA является возможность подключения различных провайдеров криптографических служб (Cryptography Service Providers - CSP), которые реализуют алгоритмы шифрования и хэширования. Это позволяет программистам легко заменять или дополнять стандартные алгоритмы криптографии. Ниже приведен пример использования 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 для криптографии. ⚙️Java Cryptography Architecture предоставляет широкий выбор криптографических алгоритмов и возможность использования криптографии в безопасных Java приложениях. Использование JCA помогает программистам обеспечить безопасность и конфиденциальность данных в их приложениях.