ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

Библиотека Java разработчика

Библиотека Java разработчика

Открыть в Telegram

📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Больше
9 996
Подписчики
-724 часа
-127 дней
-6230 дней
Архив постов
🚀 В Java есть 4 уровня доступа: public, protected, package-private и private. В Java модификаторы доступа управляют видимостью классов, методов и полей. 1. public: - Видимость: Доступен из любого другого класса. - Использование: Когда класс, метод или поле объявлены как public, они доступны из любого класса в любом пакете. - Пример:

     public class MyClass {
         public int myField;
         public void myMethod() {
             // Реализация метода
         }
     }
     
Здесь myField и myMethod доступны из любого другого класса. 2. protected: - Видимость: Доступен внутри того же пакета и для подклассов (даже если они находятся в других пакетах). - Использование: Полезно, когда нужно разрешить доступ подклассам, но ограничить доступ для несвязанных классов вне пакета. - Пример:

     public class MyClass {
         protected int myField;
         protected void myMethod() {
             // Реализация метода
         }
     }
     
Здесь myField и myMethod доступны для любого подкласса MyClass, даже если он находится в другом пакете. 3. package-private (по умолчанию, без модификатора): - Видимость: Доступен только внутри того же пакета. - Использование: Если модификатор доступа не указан, класс, метод или поле считаются package-private. Это уровень доступа по умолчанию. - Пример:

     class MyClass {
         int myField;
         void myMethod() {
             // Реализация метода
         }
     }
     
Здесь myField и myMethod доступны только для классов внутри того же пакета. 4. private: - Видимость: Доступен только внутри того же класса. - Использование: Используется для инкапсуляции внутренних деталей класса, предотвращая доступ извне. - Пример:

     public class MyClass {
         private int myField;
         private void myMethod() {
             // Реализация метода
         }
     }
     
Здесь myField и myMethod доступны только внутри MyClass. 📌 Краткая таблица: | Модификатор доступа | Тот же класс | Тот же пакет | Подклассы | Другие пакеты | |---------------------|--------------|--------------|-----------|---------------| | public | Да | Да | Да | Да | | protected | Да | Да | Да | Нет | | package-private | Да | Да | Нет | Нет | | private | Да | Нет | Нет | Нет | 💡Основные моменты: - Используйте public для API и методов/полей, которые должны быть доступны всем. - Используйте protected для методов/полей, которые должны быть доступны подклассам, но не всем остальным. - Используйте package-private для внутренней реализации, которая не должна быть доступна вне пакета. - Используйте private для инкапсуляции, скрывая детали реализации внутри класса. 👉@BookJava

💪 Открытый урок «Альтернативные фреймворки Spring Framework» 💪 🗓 Дата: 27 января в 20:00 мск. На занятии мы разберем, поче
💪 Открытый урок «Альтернативные фреймворки Spring Framework» 💪 🗓 Дата: 27 января в 20:00 мск. На занятии мы разберем, почему Spring столь популярен, почему появились альтернативные решения, и познакомимся с такими фреймворками, как Quarkus, Micronaut и Helidon. Программа урока: ✔️ Почему Spring Framework занимает лидирующие позиции в разработке. ✔️ Причины появления альтернативных фреймворков. ✔️Обзор Quarkus: основные особенности и возможности. ✔️Обзор Micronaut: ключевые преимущества и использование. ✔️ Обзор Helidon: применение в современных проектах. 🔗 Регистрация на вебинар: https://vk.cc/cHw0MM Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🚀 В чем разница между HashMap и Hashtable в Java? Если вы работаете с Java, то наверняка сталкивались с HashMap и Hashtable. Оба используются для хранения пар "ключ-значение", но между ними есть важные различия. Давайте разберемся! 1. Синхронизация (Потокобезопасность) - `Hashtable`: - Синхронизирован (потокобезопасен). Все его методы синхронизированы, то есть только один поток может работать с ним одновременно. - Это делает Hashtable безопасным для многопоточных сред, но может снижать производительность в однопоточных сценариях. - `HashMap`: - Не синхронизирован (не потокобезопасен). Несколько потоков могут обращаться к нему одновременно, что может привести к проблемам в многопоточных средах. - Для потокобезопасности можно использовать Collections.synchronizedMap(new HashMap<>()) или ConcurrentHashMap. 2. Null-ключи и Null-значения - `Hashtable`: - Не позволяет использовать null в качестве ключа или значения. Попытка добавить null вызовет NullPointerException. - `HashMap`: - Разрешает один `null`-ключ и множество `null`-значений. 3. Производительность - `Hashtable`: - Медленнее из-за накладных расходов на синхронизацию. - `HashMap`: - Быстрее в однопоточных средах, так как не синхронизирован. 4. Наследие - `Hashtable`: - Считается устаревшим классом (появился в Java 1.0). Не является частью Java Collections Framework. - `HashMap`: - Часть Java Collections Framework (появился в Java 1.2). Более современный и широко используемый. 5. Итерация - `Hashtable`: - Использует Enumeration для перебора ключей и значений. - `HashMap`: - Использует Iterator, который более гибкий и позволяет удалять элементы во время перебора. 6. Наследование - `Hashtable`: - Наследуется от класса Dictionary (абстрактный класс, который сейчас считается устаревшим). - `HashMap`: - Наследуется от AbstractMap, который является частью Java Collections Framework. 7. Рекомендации по использованию - Используйте HashMap, если: - Работаете в однопоточной среде. - Нужна высокая производительность. - Требуется поддержка null-ключей или значений. - Используйте Hashtable, если: - Нужна потокобезопасность в многопоточной среде. - Однако в современной Java ConcurrentHashMap предпочтительнее, так как он обеспечивает лучшую производительность и масштабируемость. Пример кода Hashtable:

Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("one", 1);
hashtable.put("two", 2);
// hashtable.put(null, 3); // Выбросит NullPointerException
System.out.println(hashtable);
HashMap:

HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("one", 1);
hashMap.put("two", 2);
hashMap.put(null, 3); // Разрешено
System.out.println(hashMap);
Итоговая таблица | Особенность | Hashtable | HashMap | |-------------------------|---------------------------------|-------------------------------| | Синхронизация | Синхронизирован | Не синхронизирован | | Null-ключи/значения | Запрещены | Разрешены | | Производительность | Медленнее | Быстрее | | Наследие | Устаревший (Java 1.0) | Современный (Java 1.2) | | Итерация | Enumeration | Iterator | | Наследование | Наследует Dictionary | Наследует AbstractMap | 💡Совет: В современной разработке на Java HashMap используется чаще. Если нужна потокобезопасность, лучше выбрать ConcurrentHashMap, а не Hashtable. 👉@BookJava

Подборка Telegram каналов для программистов Системное администрирование 📌 https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/linux_odmin Linux: Системный администратор https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Rus Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов https://t.me/books_reserv Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/coddy_academy Полезные советы по программированию https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_1 Статьи из "Хакера" Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Английский 📌 https://t.me/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/tikon_1 Новости высоких технологий, науки и техники💡 https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

+9
Вопросы-ответы собеседования Можно ли создать экземпляр абстрактного класса? Что такое интерфейс? Как вызвать нестатический метод в статическом? Чем отличаются параметры от аргументов в методе? Что такое конструктор? Как его создать и вызвать? Что такое параметризованный конструктор? Что такое конструктор по умолчанию? Что такое приватный конструктор? Зачем он закрытый? Что такое статическая переменная? Как работает static поле? Что такое статический метод? Как вызвать static метод? источник 👉@BookJava

👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста. Пройди тест по Java и проверь свои знания, готов ли
👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста. Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе. Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cHnOVz Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Spring Boot Tutorial | Полный курс [2023] В этом учебном пособии по Spring Boot рассказывается о том, как начать работу с Spring Boot и Java. 00:00 Intro 01:00 Quick Word 02:12 Spring Boot Overview 03:44 Project Overview 04:28 Spring Initializr 08:05 IntelliJ 10:29 Starting The Server 14:03 Simple API with Spring Boot 18:06 Student Class 23:19 API Layer 26:38 Business Layer 29:08 Dependency Injection 32:47 Properties file 36:15 Creating and Connecting to Database 39:48 JPA and @ Entity 42:35 JPA in Action 45:52 Amigoscode Database Courses 47:35 JPA Repository 52:20 Saving Students 58:49 @ Transient 01:03:01 Post Mapping 01:08:00 Writing Business Logic 01:12:43 Testing Post Request 01:15:35 Deleting Students 01:21:33 Exercise 01:22:53 Solution 01:26:54 Testing 01:29:41 Packaging and Running Application 01:34:52 Next steps источник 👉@BookJava

Офер в Яндекс для опытных бэкендеров за два дня 15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер
Офер в Яндекс для опытных бэкендеров за два дня 15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секции 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться. Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать. Узнать подробности и зарегистрироваться.

Для чего нужно ключевое слово super? Как и многие другие ключевые слова, super имеет несколько разных значений в зависимости от контекста: 1. Задать нижнюю границу generic-типа: Consumer<? super Number> 2. Обратиться к члену класса-родителя, который перекрыт (shadowed) членами наследника или локальными переменными: int foo = super.foo 3. Вызвать в конструкторе конструктор родителя: SubClass() { super("subclass param"); } 4. В случае неопределенности, уточнить родительский тип interface A { default int foo() { return 1; } } interface B { default int foo() { return 2; } } class C implements A, B { @Override public int foo() { return B.super.foo() ; } } 👉@BookJava

👩‍💻 «OpenAPI + Spring». Приглашаем на открытый урок, где мы разберем: ✔️ Что такое OpenAPI и для чего она нужна.; ✔️ Генера
👩‍💻 «OpenAPI + Spring». Приглашаем на открытый урок, где мы разберем: ✔️ Что такое OpenAPI и для чего она нужна.; ✔️ Генерация спецификаций; ✔️Интеграция OpenAPI в Spring-приложения; ✔️Советы по масштабируемости и поддержке. 🗓 23 января в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» 🔗 Ссылка на регистрацию : https://vk.cc/cHlYk4 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🚀 Spring Boot с DevTools для Live Reload🚀 Ускорьте разработку с помощью DevTools! 🔥 https://docs.spring.io/spring-boot/ref
🚀 Spring Boot с DevTools для Live Reload🚀 Ускорьте разработку с помощью DevTools! 🔥 https://docs.spring.io/spring-boot/reference/using/devtools.html 👉@BookJava

Использование Map.computeIfAbsent для упрощённой инициализации Map: Метод computeIfAbsent помогает инициализировать и вычислять значения, если они отсутствуют.

Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("Apple");
map.computeIfAbsent("fruits", k -> new ArrayList<>()).add("Banana");
System.out.println(map); // Output: {fruits=[Apple, Banana]}
👉@BookJava

👩‍💻 Как сделать Java-приложения быстрее и эффективнее? Асинхронное программирование — must-have для современных приложений.
👩‍💻 Как сделать Java-приложения быстрее и эффективнее? Асинхронное программирование — must-have для современных приложений. Хотите узнать, как использовать NIO2 для максимальной производительности? 🗓 20 января в 20:00 мск — откроем двери в мир Java NIO2! Разберём основы, научим писать асинхронный код и раскроем секреты пропускной способности приложений. Успейте записаться, чтобы не упустить возможность освоить продвинутые инструменты Java. А еще участники вебинара получат скидку на обучение на курсе «Java Developer. Advanced». ➡️ Регистрация на вебинар: https://vk.cc/cHhlu7 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Использование StringBuilder для эффективной работы со строками: StringBuilder используется для операций с изменяемыми строками, что улучшает производительность.

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb.toString()); // Output: Hello World
👉@BookJava

Использование метода String.join: Метод String.join можно использовать для объединения строк с заданным разделителем.

List<String> items = Arrays.asList("Apple", "Banana", "Cherry");
String result = String.join(", ", items);
System.out.println(result); // Output: Apple, Banana, Cherry
👉@BookJava

Использование лямбда-выражений и Streams: Лямбда-выражения и streams делают код более лаконичным и читаемым.

List<String> names = Arrays.asList("John", "Jane", "Jack", "Doe");
names.stream()
    .filter(name -> name.startsWith("J"))
    .map(String::toUpperCase)
    .forEach(System.out::println);
👉@BookJava

Приглашаем вас на открытый вебинар: «Реализация простого HTTP-сервера на Java Core» ⏰Дата: 16 января в 20:00 мск Спикер: Алек
Приглашаем вас на открытый вебинар: «Реализация простого HTTP-сервера на Java Core» ⏰Дата: 16 января в 20:00 мск Спикер: Александр Фисунов 🧩Программа урока: - Введение в HTTP и его роль в веб-приложениях. - Создание простого HTTP-сервера с использованием Java Core. - Разбор ключевых компонентов стандартной Java библиотеки для работы с HTTP. 📚Урок будет полезен тем, кто хочет: - Узнать, как работают Java веб-приложения изнутри. - Разобраться в принципах работы HTTP-протокола. - Получить практический опыт в реализации базового HTTP-сервера. 🔥В результате урока вы: - Узнаете, как использовать базовые возможности Java для создания HTTP-сервера. - Поймете, как работают application server'ы и контейнеры сервлетов. - Сможете применить полученные знания для работы с Java веб-приложениями. Участники всех открытых уроков получат скидку🎁 на большое обучение 👉Регистрируйтесь на открытый вебинар по ссылке: https://vk.cc/cH5vrV Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Совет SpringBoot Вы можете запустить метод в Spring @Service сразу после запуска приложения, аннотируя его с помощью @EventLi
Совет SpringBoot Вы можете запустить метод в Spring @Service сразу после запуска приложения, аннотируя его с помощью @EventListener (ApplicationReadyEvent.class). Метод не может иметь параметров. Иногда я неправильно использую его, чтобы быстро протестировать определенный метод Spring Service. 👉@BookJava

Совет По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию @DynamicUpdate н
Совет По умолчанию при обновлении сущности Hibernate обновляет все ее поля. Вы можете использовать аннотацию @DynamicUpdate на объекте @Entity и Hibernate будет обновлять только те столбцы, которые изменились. 👉@BookJava

📢Собеседование по Spring? Будьте на шаг впереди интервьюера! Узнайте, как отвечать на самые хитрые вопросы по Spring Framewo
📢Собеседование по Spring? Будьте на шаг впереди интервьюера! Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью. 📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом. Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework». 🗓Регистрация открыта: https://vk.cc/cH3S1R Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru