Java | Фишки и трюки
رفتن به کانال در Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna
نمایش بیشتر6 951
مشترکین
-324 ساعت
-127 روز
+1230 روز
آرشیو پست ها
6 951
public class Quest {
public static void main(String[] args) {
System.out.println(5 + true);
}
}6 951
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;
}
}
}6 951
☕️Использование 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 запросов, что улучшает производительность и поддерживаемость кода. Каждый из перечисленных фреймворков имеет свои особенности и преимущества, поэтому выбор зависит от конкретных потребностей проекта.6 951
⌨️ Рассказываем о Java простыми словами.
Рассматриваем и обсуждаем примеры кода, лучшие практики и свежие тенденции в программировании на Java.
Присоединяйся, если любишь Java как и мы - https://t.me/java_secrets 📲
6 951
🌱 Аннотация @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 позволяет управлять транзакциями на уровне методов, что делает код более чистым и поддерживаемым, а также обеспечивает надежность взаимодействия с базой данных.6 951
Из джуна в мидла вместе с Холдингом Т1🚀 Приглашаем java-разработчиков в Открытые школы Т1!
🎓 Открытые школы Т1 — это новая карьерная программа для IТ-специалистов, объединяющая обучение без отрыва от работы и offer weeks.
👨💻 Для участия необходим опыт работы java-разработчиком от 1 года, а также желание присоединиться к команде Т1.
Т1 занимает 2 место среди крупнейших ИКТ-компаний по версии RAEX 2023 и является партнёром ключевых производителей и разработчиков в сфере ИТ.
В программу входит: spring framework; docker; синхронное и асинхронное взаимодействие, брокеры сообщений; паттерны, SOLID
⏰ Длительность 1 месяц.
💻 Формат: онлайн по вечерам (от 8 часов в неделю на вебинары и практику).
Лучшим назначим интервью и направим оффер!
📌 Подробнее о программе — в карточках внутри поста.
Принимаем заявки до 22 апреля! 🚀
Реклама. ООО "Т1". ИНН 7720484492.
6 951
⌨️📚 Чистый код. Классы
✅ Классы должны быть компактными.
✅ Классы должны быть еще компактнее.
✅ Имя класса должно описывать его ответственности. Отсюда можно и вычислить размер класса.
✅ Функционал класса должен четко соответствовать и вписываться в название класса.
✅ Разделяй связанность на маленькие классы. Жесткой и обильной связанности не должно быть — это усложняет поддержку и развитие проекта.
✅ Помни о Single Responsibility. Сущность должна иметь одну и только одну причину для изменения.
✅ Соблюдай инкапсуляцию. Ослабление инкапсуляции всегда должно быть последней мерой.
✅ Обычно мы объявляем переменные и вспомогательные функции приватными, но иногда их нужно объявлять protected и иметь возможность обратиться к ней из теста.
✅ Если группа функций относится к определенному функционалу, то эту группу функций можно и нужно выделить в отдельный класс и использовать его экземпляр.
6 951
Machine Learning не для меня? Все об ML простыми словами
Бесплатный практикум от Karpov.Courses
Этапы развития проектов в области машинного обучения
Что вас ждет на вебинаре:
» Разберетесь на практике, из каких стадий состоит проект по ML
» Поймете, что в реальности нужно уметь делать, кроме обучения модели
» Узнаете, почему важна каждая стадия в машинном обучении
С помощью машинного обучения можно:
» автоматизировать задачи для экономии времени и средств
» принимать более рациональные решения на основе данных
» персонализировать опыт клиентов
» быстрее внедрять инновации
Спикер: Эмиль Каюмов, Techlead платформы экспериментов в Яндекс Еде
Начало вебинара 17 апреля в 19:00 по мск
Подарок за регистрацию!
Зарегистрироваться
#реклама 16+
karpov.courses
О рекламодателе
6 951
☕️Использование прикладных шаблонов проектирования - для улучшения качества кода
Применение шаблонов проектирования позволяет повысить читаемость, расширяемость и поддерживаемость кода, а также уменьшить количество дублирующегося кода и повысить его стабильность. Одним из распространенных шаблонов проектирования является "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 в данном случае обеспечивает гарантированный единственный экземпляр класса в рамках приложения, что является полезным для создания объектов, представляющих синглтоны, такие как логгеры или конфигурационные объекты.6 951
🔥 Пройди тест по Java и проверь свои знания.
Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
🔝 Обновленная, расширенная программа
👉 ПРОЙТИ ТЕСТ: https://otus.pw/9FJV/?erid=LjN8KJqTu
6 951
public class Counter {
public static void main(String[] args) {
int counter = 0;
counter = counter++;
System.out.println(counter);
}
}6 951
Курс по Java-разработке с гарантией трудоустройства
Стань Java-разработчиком за 9 месяцев.
В финале курса гарантированное трудоустройство с зарплатой от 100 тыс. рублей. Все условия будут закреплены в твоем договоре с Kata Academy
Главное про курс по Java:
— обучение до уровня junior+ или middle
— оплата курса после трудоустройства из фактической зарплаты — трудоустройство в Москве или Санкт-Петербурге
— в программе курса: теория, практика, групповой проект, подготовка к трудоустройству
— поддержка менторов, HR-консультантов, комьюнити
— выпускник получает минимум три оффера на работу
— минимальная зарплата сразу после курса — 100 тыс. рублей, средняя зарплата выпускников через год после курса — 221 тыс. рублей
Для поступления нужно сделать тестовое задание. Оставь заявку по ссылке!
Узнать больше
#реклама 16+
kata.academy
О рекламодателе
6 951
⌨️ Effectively final - это термин, который используется для описания переменной в Java, которая фактически ведет себя как final, хотя она не объявлена с ключевым словом final. То есть, хотя вы можете изменять значение этой переменной, вы это не делаете. Компилятор Java позволяет использовать такие переменные в лямбда-выражениях и анонимных классах, даже если они не объявлены как final.
В примере переменная
x объявлена с ключевым словом final, поэтому ее значение не может быть изменено. Переменная y не объявлена как final, но внутри метода она не изменяется после инициализации, поэтому она считается "effectively final" и может быть использована в анонимных классах и лямбда-выражениях.6 951
🧑💻Ты 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
6 951
☕️Использование SonarQube
SonarQube – это инструмент статического анализа кода, который помогает программистам выявлять и исправлять ошибки, обнаруживать потенциальные уязвимости и улучшать качество кода. Он поддерживает множество языков программирования, включая Java.
🔔Один из основных методов SonarQube для анализа кода - это использование правил (rules). Правила определяют набор проверок, которые применяются к коду для выявления потенциальных проблем. SonarQube поставляется с большим количеством предустановленных правил, которые можно настраивать и расширять под конкретные нужды проекта.
➡️Еще один важный метод SonarQube - это использование метрик (metrics) для измерения качества кода. Метрики позволяют оценить различные аспекты кода, такие как сложность, размер, покрытие тестами и др. SonarQube предоставляет отчеты на основе метрик, которые помогают программистам понять, где можно улучшить свой код.
🔖В целом, SonarQube является мощным инструментом для улучшения качества и безопасности вашего кода на Java. Правильное использование его методов поможет вам избежать многих ошибок и повысить производительность вашего проекта.
6 951
⚡️ Пройди хардкорный тест по Java и проверь свои знания.
Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса🎁 .
👉 ПРОЙТИ ТЕСТ:
https://otus.pw/XzRH/?erid=LjN8JuNoG
🎫 А ещё, сейчас действуют скидка на курс до 21.04. Возможна оплата в рассрочку! Предложение ограничено.
6 951
☕️Использование 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 помогает программистам обеспечить безопасность и конфиденциальность данных в их приложениях.
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
