fa
Feedback
Секреты Java

Секреты Java

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

Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. Владелец: @Alexey_Morl Реклама на бирже: https://telega.in/c/java_secrets

نمایش بیشتر
7 991
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
#test
#test

✅Виды Scope в Spring: понимание и применение Spring предоставляет мощный механизм управления жизненным циклом объектов, извес
Виды Scope в Spring: понимание и применение Spring предоставляет мощный механизм управления жизненным циклом объектов, известный как scope. Scope определяет, когда создается, как долго живет и где используется экземпляр бина. Виды scope в Spring: ▫️Singleton: Это наиболее распространенный и используемый по умолчанию scope. Экземпляр бина создается один раз на весь жизненный цикл контекста Spring. Все запросы на этот бин возвращают ссылку на один и тот же объект. ▫️Prototype: Каждый запрос на бин создает новый экземпляр. В этом случае Spring не отвечает за жизненный цикл бина: бин будет удален, как только перестанет быть используемым. Этот scope подходит для случаев, когда вам нужен stateful компонент для независимого использования в разных частях приложения. ▫️Request: Каждый HTTP-запрос создает новый экземпляр бина. Этот бин остается активным только в течение одного HTTP-запроса и уничтожается после его завершения. ▫️Session: Каждая HTTP-сессия создает новый экземпляр бина. Этот scope особенно полезен, когда вам нужно сохранить состояние bean-компонента на протяжении всего взаимодействия пользователя с вашим приложением в течение сеанса. Хорошим примером может быть корзина в интернет-магазине. ▫️Application: Этот scope используется, чтобы создать один бин на ServletContext. Похож на Singleton, но имеет два важных отличия: создается в одном экземпляре на ServletContext, а не на ApplicationContext (Spring IoC контейнер). У вас может использоваться несколько IoC контейнеров в одном ServletContext, поэтому вы можете иметь несколько singleton бинов одного и того же типа, но только один бин каждого типа при application scope. И второе - бин виден как атрибут ServletContext. ▫️WebSocket: Экземпляр бина создается для каждого WebSocket-соединения. Этот бин остается активным только в течение WebSocket сеанса и уничтожается при его завершении. 🫡 Секреты Java #spring #scope

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

📖 Java books - огромная библиотека Java книг, актуальных на 2024 год. 🚀 Java Jobs - вакансии и проекты для Java разработчиков. 📱 Android - мобильная разработка на Java это высокие зарплаты и возможность реального развития. 🔝 Маст-хэв папка Java разработчиков: https://t.me/addlist/ZM3J6oFNAnRlNWU6

✅ Поиск дубликатов в списке в Java: различные способы Дубликаты в списках могут быть проблемой при обработке данных в Java. Р
Поиск дубликатов в списке в Java: различные способы Дубликаты в списках могут быть проблемой при обработке данных в Java. Рассмотрим несколько способов, как можно найти дубликаты c использованием стандартных решений Java. ▫️Использование Set Один из простых способов найти дубликаты.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 2, 3);
Set<Integer> set = new HashSet<>();
List<Integer> duplicates = new ArrayList<>();

for (Integer element : list) {
    if (!set.add(element)) {
        duplicates.add(element);
    }
}

System.out.println("Дубликаты: " + duplicates);
▫️Использование Map Считаем количество встреч каждого элемента и затем ищем элементы с количеством больше 1.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 2, 3);
Map<Integer, Integer> countMap = new HashMap<>();
List<Integer> duplicates = new ArrayList<>();

for (Integer element : list) {
    countMap.put(element, countMap.getOrDefault(element, 0) + 1);
}

for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
    if (entry.getValue() > 1) {
        duplicates.add(entry.getKey());
    }
}

System.out.println("Дубликаты: " + duplicates);
▫️Использование Stream API:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 2, 3);
List<Integer> duplicates = list.stream()
        .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
        .entrySet().stream()
        .filter(entry -> entry.getValue() > 1)
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());

System.out.println("Дубликаты: " + duplicates);
▫️Использование Collections.frequency:
Copy code
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 2, 3);
List<Integer> duplicates = list.stream()
        .filter(i -> Collections.frequency(list, i) > 1)
        .distinct()
        .collect(Collectors.toList());

System.out.println("Дубликаты: " + duplicates);
Эти методы предоставляют различные способы найти дубликаты в списке в Java. Выбирайте на здоровье! 🫡 Секреты Java #lists

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

Это база с 1700 вопросами с собеседований на Java разработчика. Фишка в том, что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏

✅ Варианты конфигурации контекста Spring приложения. Рассмотрим какие есть варианты на примере Spring Boot приложения. ▫️XML-
Варианты конфигурации контекста Spring приложения. Рассмотрим какие есть варианты на примере Spring Boot приложения. ▫️XML-конфигурация: Мы имеем файл конфигурации в classpath, допустим beans.xml:
<beans <!-- some schema data--->>
       
    <bean id="userService" class="com.example.UserService">
        <property name="userRepository" ref="userRepository"/>
    </bean>
    
    <bean id="userRepository" class="com.example.UserRepository"/>
</beans>
Для поднятия контекста на xml добавляем аннотацию @ImportResource("classpath:beans.xml") к нашему классу помеченному @SpringBootApplication (либо @Configuration). Но стоит отметить, что XML-конфигурация почти изжила себя и мало используется. ▫️Annotation-based конфигурация: При помощи аннотаций @Component, @Service, @Repository, @Controller мы можем указывать Spring'у какие бины нужно создавать в контексте, а связь между ними задать через @Autowired:
@Repository
public class UserRepository {
    //...
}

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    //...
}
▫️Java-based конфигурация: Позволяет определять бины и их зависимости непосредственно в Java-коде с использованием аннотаций @Configuration и @Bean:
@Configuration
public class AppConfig {

    @Bean
    public UserService userService(UserRepository userRepository) {
        return new UserService(userRepository);
    }

    @Bean
    public UserRepository userRepository() {
        return new UserRepository();
    }
}
В каждом примере мы определили два бина - UserService и UserRepository, а так же связь между ними (инжект userRepository в userService). Выбор способа конфигурации зависит от ваших предпочтений и требований вашего проекта. Справедливости ради - есть еще groovy конфигурация, но в своей практике я ее не встречал. Напишите в комментах, если работали с groovy и в каких кейсах это было полезно. 🫡 Секреты Java #spring

Познакомьтесь с основами востребованного языка программирования Java на бесплатном мини-курсе Skillbox! Узнайте, как Java-раз
Познакомьтесь с основами востребованного языка программирования Java на бесплатном мини-курсе Skillbox! Узнайте, как Java-разработчики работают в офисе, на фрилансе, удалёнке и что нужно для старта карьеры. Бессрочный доступ за пару кликов: 👉 https://epic.st/EfUVh?erid=2VtzqwJwzVA Сразу после регистрации пришлём гайд по профессии Java-разработчика 😉 Что вас ждёт: ✔️ Полезная теория За 4 занятия изучите основы профессии и языка Java по видеоматериалам. Узнаете о перспективах языка и получите советы для старта карьеры. ✔️ Интересная практика Напишете первые проекты: Telegram-бота, программу для обработки файлов и чат на Spring. Опыт и знания в IT не нужны для их выполнения — будут подробные инструкции от спикера. ✔️ Живой эфир с экспертом по Java В финале в прямом эфире пообщаетесь с Даниилом Пилипенко, который более 19 лет работает в сфере Java и веб-разработки. Он ответит на вопросы о профессии, пройденном материале и практических работах. 🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год. До встречи на мини-курсе. Старт после регистрации! Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Совершенство в разработке достигается не тогда, когда нечего добавить, а тогда когда нечего убрать. Если ваш код становится одновременно и лучше и проще, вы поступаете правильно.
© Эрик С. Рэймонд 🫡 Секреты Java #quotes

Java Developer — мастхев для любого джависта За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми слов
Java Developer — мастхев для любого джависта За ручку проведём тебя к первому офферу, расскажем о сложных вещах простыми словами и научим смеяться с айтишных мемов. 👉🏻 Подписывайся и прокачивай свои навыки

❓Что выведет код на изображении выше?
Anonymous voting

#test
#test

♨️ Прокачивай свои навыки вместе с Java | Фишки и трюки Ежедневные порции Java-фишек, полезные советы и трюки от опытных разр
♨️ Прокачивай свои навыки вместе с Java | Фишки и трюки Ежедневные порции Java-фишек, полезные советы и трюки от опытных разработчиков. 👉🏼 Присоединиться

✅ Использование JOIN FETCH для решения проблемы N+1 запроса в Hibernate Одним из решений проблемы N+1 запроса в Hibernate явл
✅ Использование JOIN FETCH для решения проблемы N+1 запроса в Hibernate Одним из решений проблемы N+1 запроса в Hibernate является использование оператора JOIN FETCH в запросе HQL (Hibernate Query Language). Этот оператор позволяет загрузить связанные сущности вместе с основными сущностями в одном запросе, уменьшая избыточное количество запросов к базе данных. Использование JOIN FETCH на примере из поста про проблему N+1 запроса:
List<Author> authors = entityManager.createQuery(
        "SELECT a FROM Author a JOIN FETCH a.books", 
        Author.class)
    .getResultList();

for (Author author : authors) {
    List<Book> books = author.getBooks();
}
Причем независимо от типа FetchType в аннотации @OneToMany в классе Author, будет выполнен один запрос:
select a1_0.id,b1_0.author_id,b1_0.id,b1_0.title,a1_0.name from authors a1_0 join books b1_0 on a1_0.id=b1_0.author_id
В этом примере используется оператор JOIN FETCH для загрузки списка книг для каждого автора в одном запросе. Это позволяет избежать дополнительных запросов к базе данных и улучшить производительность выполнения Hibernate-запросов. 🫡 Секреты Java #hibernate #jpa #nplus1

Совет на 2024 год: углубитесь в изучение Java. Тот, кто разбирается в тонкостях Java   — сможет что угодно и сорвёт куш. А если вы не хотите терять последние недели лета на бесполезные материалы и гайды — читайте канал: @javatg Там просто и доступно объясняют какие готовые скрипты заставят ваш код летать, почему следует избегать исключений с потоками, какие фишки Java Serialization API не знают 90% разработчиков. Ещё мы собрали маст-хэв мл-папку для Java  разработчиков: https://t.me/addlist/ZM3J6oFNAnRlNWU6 Подписывайтесь, потом сами себе спасибо скажете: @javatg