Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований Как принудительно запустить поток?
Никак. В Java не существует абсолютно никакого способа принудительного запуска потока. Это контролируется JVM и Java не предоставляет никакого API для управления этим процессом.
Проектирование голосовых интерфейсов - новое направление в разработке

Смартапы отличаются от мобильных и веб-приложений тем, что взаимодействие с пользователем происходит с помощью виртуальных ассистентов Салют, которые управляются голосом, касаниями, жестами и пультом. И это значит, что кроме графического интерфейса у смартапов есть ещё и голосовой интерфейс.

О том, как нужно и как не нужно проектировать голосовые интерфейсы 28 июля на онлайн-митапе расскажет Михаил Пайсон, директор по b2b2c-продуктам, SberDevices. Вы узнаете о частых ошибках при разработке голосовых интерфейсов и почему стандартные подходы разработки не подходят для создания сценариев с виртуальными ассистентами.

Хотите узнать больше? Регистрируйтесь на митап от SberDevices и присоединяйтесь к трансляции 28 июля. Ссылка: developers.sber.ru
Learn Microservices with Spring Boot (2020)
Автор: Moisés Macero García
Количество страниц: 444

Создавайте микросервисную архитектуру на основе Java, используя платформу Spring Boot, превращая приложение из небольшого монолита в управляемую событиями архитектуру, состоящую из нескольких сервисов. Эта пересмотренная и обновленная книга следует инкрементному подходу к обучению структуре микросервисов, разработке через тестирование и общим шаблонам в распределенных системах, таким как обнаружение сервисов, балансировка нагрузки, маршрутизация, централизованные журналы, конфигурация для каждой среды и контейнеризация.

Скачать книгу
#вопросы_с_собеседований
Какие классы поддерживают чтение и запись потоков в компрессированном формате?
☕️ DeflaterOutputStream - компрессия данных в формате deflate.
☕️ Deflater - компрессия данных в формат ZLIB.
☕️ ZipOutputStream - потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream - потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream - декомпрессия данных в формате deflate.
☕️ Inflater - декомпрессия данных в формате ZLIB.
☕️ ZipInputStream - потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream - потомок InflaterInputStream для декомпрессии данных в формате GZIP.
Какова роль equals() и hashCode() в HashMap?

hashCode позволяет определить корзину для поиска элемента, а equals используется для сравнения ключей элементов в списке корзины и искомого ключа.
☕️ Пример проекта Java Backend: DDD, микросервисы, Spring Cloud и AWS (Часть 3)

Domain Driven Design дает большие возможности по созданию крупных проектов, которые в будущем становятся надежными и легко масштабируемыми. Как пройти полный проектный цикл, от бизнес-модели до AWS?

https://proglib.io/sh/EJjfvX67Z3
Как и когда происходит увеличение количества корзин в HashMap?

Помимо capacity у HashMap есть еще поле loadFactor, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor. По умолчанию loadFactor = 0.75. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.
Хочешь принять участие в новом крутом образовательном проекте? Тогда у нас для тебя отличные новости!
Мы открываем вакансию «Спикер (преподаватель) образовательного IT-курса по Java»!

Кого мы ищем? Java-разработчиков с опытом публичных выступлений.

Обязанности:
– Запись видеокурсов по подготовленным нашими авторам материалам
– Проверка домашних заданий студентов

Требования. Нам важно, чтобы спикер обладал грамотной речью и хорошей дикцией, имел навыки программирования на Java не ниже уровня Middle.
Условия работы. Мы рассчитываем на долгосрочное сотрудничество. Загрузка от 5 часов в неделю, оплата — от 2000 рублей за час съемки. Работа в нашей студии в Москве.

В отклике на вакансию укажите образование, опыт выступлений и разработки.
Контакты для связи:
Telegram: @vlad_proglib
Напоминаем, что у нас есть чат, привязанный к каналу, где можно обсудить вопросы с канала и предложить свои: https://yangx.top/javaproglibchat
#вопросы_с_собеседований
В каком случае может быть потерян элемент в HashMap?
Допустим, в качестве ключа используется не примитив, а объект с несколькими полями. После добавления элемента в HashMap у объекта, который выступает в качестве ключа, изменяют одно поле, которое участвует в вычислении хэш-кода. В результате при попытке найти данный элемент по исходному ключу, будет происходить обращение к правильной корзине, а вот equals уже не найдет указанный ключ в списке элементов. Тем не менее, даже если equals реализован таким образом, что изменение данного поля объекта не влияет на результат, то после увеличения размера корзин и пересчета хэш-кодов элементов, указанный элемент, с измененным значением поля, с большой долей вероятности попадет в совершенно другую корзину и тогда уже потеряется совсем.
TreeSet обеспечивает упорядоченное хранение элементов в виде красно-черного дерева. Сложность выполнения основных операций не хуже O(log(N)) (Логарифмическое время).

HashSet использует для хранения элементов такой же подход, что и HashMap, за тем отличием, что в HashSet в качестве ключа и значения выступает сам элемент, кроме того HashSet не поддерживает упорядоченное хранение элементов и обеспечивает временную сложность выполнения операций аналогично HashMap.
С нас полезные лекции и трудоустройство, с тебя – минимум год опыта коммерческой разработки на Java.

Как все проходит?
3 раза в неделю на протяжении двух месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Обучение можно совмещать с работой.

Чему будут учить?
На курсе будем изучать Core Java, промышленную разработку на Java, базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия и домашние задания.

Что будет после учебы?
Трудоустройство в Цифровые привычки. Ты будешь работать над высоконагруженными,отказоустойчивыми проектами.

Подать заявку на курс: https://cutt.ly/TQpPTYA
#вопросы_с_собеседований
Для чего в стримах предназначены методы flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong()?
#вакансия #Java #Luxoft
Вакансия: Senior Java Developer
Формат работы:
remote Russia
З/п: 230 000 – 300 000 руб.

Работа в международной IT-компании Luxoft в проекте по разработке модуля процессинга лояльности и бэкэнд части портала для крупного банка. Проект находится в стадии активного роста и развития, у нас сильная команда и современный стек.

Обязанности:
• разработка новой функциональности
• развитие существующей функциональности
• код ревью
• анализ и улучшение производительности системы
• взаимодействие с командой

Требования:
• Git, Java, Spring (Framework, Boot, Security), SQL, JDBC, Hibernate, Apache Kafka, Swagger/OpenAPI
• Будет плюсом опыт с MyBatis, Groovy, Gradle, Spock, Spring Integration, oAuth2, Docker
• Еще большим плюсом будут навыки лидерства команды девелоперов

Условия:
• Официальное трудоустройство
• Расширенный социальный пакет
• Профессиональное обучение
• Корпоративные скидки
• Гибкий график работы
• Возможность удаленной работы
• Участие в конференциях, митапах и подкастах
• Корпоративные мероприятия

Подробности и контакты:
в телеграме @elenabalyuk и на сайте
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «​#вакансия #Java #Luxoft Вакансия: Senior Java Developer Формат работы: remote Russia З/п: 230 000 – 300 000 руб. Работа в международной IT-компании Luxoft в проекте по разработке модуля процессинга лояльности и бэкэнд части портала для крупного банка.…»
Метод flatMap() похож на map, но может создавать из одного элемента несколько. Таким образом, каждый объект будет преобразован в ноль, один или несколько других объектов, поддерживаемых потоком. Наиболее очевидный способ применения этой операции — преобразование элементов контейнера при помощи функций, которые возвращают контейнеры.
flatMapToInt(), flatMapToDouble(), flatMapToLong() - это аналоги flatMap(), возвращающие соответствующий числовой стрим.