Библиотека джависта | 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
加入频道
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.

Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.

Среди методов открытой реализации различают:

☕️ линейное пробирование;
☕️ квадратичное пробирование;
☕️ двойное хэширование.

Недостатки структур с методом открытой адресации:

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

Преимущества хэш-таблицы с открытой адресацией:

☕️ отсутствие затрат на создание и хранение объектов списка;
☕️ простота организации сериализации/десериализации объекта.
#вакансия #java #middle #удаленка

Требуется Backend java разработчик (не ниже middle) на постоянную работу.

Основная задача разработка бэкэнда приложений на java с нуля, доработка текущих проектов.

Работа удаленно, с возможными оплачиваемыми командировками в будущем.

На испытательный срок -2000 $
После испытательного - 2500 $
По итогам работы премии.

Требования:
* Хорошее знание Java EE или Spring
* Опыт разработки на Java/Kotlin
* Умение работать с SQL и не-SQL базами данных
* Знание C/C++
* Знание базового английского

Контакт для связи @viksantana
Пул строк – это набор строк, хранящийся в Heap.

☕️ Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
☕️ Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
☕️ Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
☕️ При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
☕️ Пул строк является примером паттерна «Приспособленец» (Flyweight).
Псс… Соскучились? 😝 Photo Lab объявляет о старте онлайн-хакатона PhotoHack Mobile с призовым фондом 500 000 рублей! 🔥


В этот раз перед участниками стоит задача разработать мобильное приложение, используя технологии Photo Lab. При этом речь не идёт о чём-то масштабном и грандиозном, а наоборот, нужно создать нишевый продукт, направленный на решение конкретной задачи.

Где: онлайн
Когда: 12-13 сентября 2020 года
Кого мы ждём: мобильных разработчиков, специалистов по Machine Learning и Data Science, продакт-менеджеров, UI/UX-дизайнеров, авторов креативных идей, а также студентов технических специальностей.

P.S. в команде может быть не более пяти человек 😉

Подробная информация и регистрация на сайте: https://bit.ly/2QnPLpG
Торопитесь! Заявки принимаются до 11 сентября 2020
Погрузись в мир Java-разработки и напиши свою первую программу на одном из самых востребованных языков программирования за три дня. Занятия бесплатные, а опыт в написании кода не обязателен для участия — материал будет доступным для всех.

Регистрация займёт меньше минуты: 👉 https://clc.am/O1bwgg.

Java — отличный выбор даже для новичков в коде!

Имеет дружественный и понятный синтаксис.
Востребован на рынке труда.
Java-приложения работают на любом устройстве и в любой операционной системе.
Это один из самых высокооплачиваемых языков в разработке.

Трёх дней достаточно, чтобы узнать о базовых инструментах, которые программисты применяют в работе, и попробовать их на практике.

⭐️ Если попадёшь в тройку лучших участников — получишь сертификат на 30 000 рублей для обучения в Skillbox!
Хотя оба интерфейса и предназначены для обхода коллекций, между ними имеются существенные различия:

☕️ с помощью Enumeration нельзя добавлять/удалять элементы;
☕️ в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNext(), Enumeration.nextElement() соответствует Iterator. next() и т.д);
☕️ Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
#вопросы_с_собеседований
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Каждый элемент LinkedList хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.

 static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
//...
}

Для 32-битных систем каждая ссылка занимает 32 бита (4 байта). Сам объект (заголовок) вложенного класса Node занимает 8 байт. 4 + 4 + 4 + 8 = 20 байт, а т.к. размер каждого объекта в Java кратен 8, соответственно получаем 24 байта. Примитив типа byte занимает 1 байт памяти, но в JCF примитивы упаковываются: объект типа Byte занимает в памяти 16 байт (8 байт на заголовок объекта, 1 байт на поле типа byte и 7 байт для кратности 8). Также напомню, что значения от -128 до 127 кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта тратятся на хранение одного элемента в списке и 16 байт - на хранение упакованного объекта типа Byte. Итого 40 байт.

Для 64-битной JVM каждая ссылка занимает 64 бита (8 байт), размер заголовка каждого объекта составляет 16 байт (два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт и 24 байта. Итого 64 байта.
Язык программирования Go уже давно применяют не только в Google, но и по всему миру: в IBM, Intel, Adobe, Wildberries, Avito. Уже после первого месяца изучения языка можно писать полноценные приложения и приносить пользу, получая за это высокую зарплату.

Но это не только превосходный язык для новичков в программировании. Многие компании переходят на Go и ищут специалистов со знанием двух языков программирования. Освоив Go как второй язык, вы обеспечите себе отличные перспективы карьерного роста.

Востребованная профессия с нуля, 5 проектов в портфолио и помощь с трудоустройством — всё это даёт курс «Go-разработчик» онлайн-университета Geekbrains. Подробности здесь 👉 https://proglib.io/w/9a63a9ba
Practical Android (2018)
Автор: Mark Wickham
Количество страниц: 253

Выберите лучший подход для своего приложения и быстро создайте решение, используя готовые проекты. Эта книга представляет собой сборник проектов, в которых используются передовые методы разработки Android. Книга является идеальным ресурсом для разработчиков, которые имеют некоторый опыт разработки, но не являются экспертами в области Android. Каждая глава включает как минимум один законченный проект, чтобы показать читателю, как реализовываются определённые концепции.

Скачать книгу
Хочешь бесплатно начуиться программировать?

Прямо сейчас идет новый набор в Школу 21 от Сбербанка в Казани. Это твой шанс бесплатно получить востребованную профессию и найти команду мечты! Обучающимся из других городов предоставляется общежитие.

Получи junior или senior degree без учителей, лекций и оценок

«Школа 21» работает 24/7 — без графиков и расписания, ты сам определяешь, когда учиться. Поступление не зависит от предыдущих знаний, опыта работы, умения программировать и наличия диплома. Поступить в нее может каждый достигший 18-летнего возраста.

Как стать участником?
1. Зарегистрируйся на сайте Школы 21
2. Пройди две онлайн игры на память и логику
3. Собеседование — онлайн интервью
4. И «Бассейн» — четырехнедельный интенсив по программированию

Переходи по ссылке https://clck.ru/QYHRb и успей подать заявку на поступление до 1 сентября!
Количество мест на ""бассейне"" ограничено!
#вопросы_с_собеседований
Почему нельзя использовать byte в качестве ключа в HashMap?
Поправка: в вопросе имеется в виду byte[].

Хэш-код массива не зависит от хранимых в нем элементов, а присваивается при создании массива (метод вычисления хэш-кода массива не переопределен и вычисляется по стандартному Object.hashCode() на основании адреса массива). Так же у массивов не переопределен equals и выполняется сравнение указателей. Это приводит к тому, что обратиться к сохраненному с ключом-массивом элементу не получится при использовании другого массива такого же размера и с такими же элементами, доступ можно осуществить лишь в одном случае — при использовании той же самой ссылки на массив, что использовалась для сохранения элемента.
#вопросы_с_собеседований
Какие классы поддерживают чтение и запись потоков в компрессированном формате?
☕️ DeflaterOutputStream - компрессия данных в формате deflate.
☕️ Deflater - компрессия данных в формат ZLIB.
☕️ ZipOutputStream - потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream - потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream - декомпрессия данных в формате deflate.
☕️ Inflater - декомпрессия данных в формате ZLIB.
☕️ ZipInputStream - потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream - потомок InflaterInputStream для декомпрессии данных в формате GZIP.
Стрим с Петром Зайцевым (CEO компании Percona) в группе Java Pro
- способы оптимизации SQL запросов в MySQL
- профессиональная оптимизация хранения данных в MySQL
- на что обратить внимание при проектировании и отладки сетевого взаимодействия с MySQL

Присоединиться
Java Cookbook (2020)
Автор: Ian F. Darwin
Количество страниц: 638

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

Скачать книгу
#вопросы_с_собеседований
Можно ли использовать строки в конструкции switch?