Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.
Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации
👉@BookJava
HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.
Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.
Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.
Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.
Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации
👉@BookJava
Прокачай свои знания в архитектуре современных распределенных систем
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Прокачай свои знания в архитектуре современных распределенных систем
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!
✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию
Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.
Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.
❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
В чем разница между методами GET и POST?
•
• Передача данных методом
•
•
GET передает данные серверу используя URL, тогда как POST передает данные, используя тело HTTP запроса. Длина URL ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать через GET. POST может отправлять гораздо большие объемы данных. Лимит устанавливается web-server и составляет обычно около 2 Mb.• Передача данных методом
POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя, в отличии от URL, который виден почти всегда. Иногда это преимущество превращается в недостаток - вы не сможете послать данные за кого-то другого.•
GET метод является неизменяемым, тогда как POST — изменяемый.Java Developer (middle )
#удаленка #офис #гибрид #гибкийграфик #полныйдень
ЗП: от 150 000 до 200 000 ₽
Компания: Тринити
Обязанности:
• Решение сложных задач (возможно без дизайна и аналитики).
• Написание красивого и чистого кода.
• Code review/cross review всей команды.
• Развитие внутреннего движка проектов (Java 8/ Spring boot).
• Участие в проектировании структуры БД.
Требования:
• Опыт реальной коммерческой разработки не менее 2 лет.
• Отличное знание Java, Spring.
• Умение работать с GitLab, Linux, Docker.
• Умение объяснить коллегам по команде чего не хватает для реализации задачи.
Откликнуться: @katrinmartyn
#удаленка #офис #гибрид #гибкийграфик #полныйдень
ЗП: от 150 000 до 200 000 ₽
Компания: Тринити
Обязанности:
• Решение сложных задач (возможно без дизайна и аналитики).
• Написание красивого и чистого кода.
• Code review/cross review всей команды.
• Развитие внутреннего движка проектов (Java 8/ Spring boot).
• Участие в проектировании структуры БД.
Требования:
• Опыт реальной коммерческой разработки не менее 2 лет.
• Отличное знание Java, Spring.
• Умение работать с GitLab, Linux, Docker.
• Умение объяснить коллегам по команде чего не хватает для реализации задачи.
Откликнуться: @katrinmartyn
Инкапсуляции в Java
Инкапсуляция - это фундаментальная концепция объектно-ориентированного программирования (ООП), которая позволяет разработчикам создавать классы, скрывающие свои внутренние детали и защищающие их состояние и поведение от доступа или изменения извне класса.
В этой статье по программированию мы обсудим инкапсуляцию, ее преимущества и то, как она может быть реализована в Java.
Прежде чем прочитать эту стаью, вы можете прочитать наше руководство "Как работать с классами и объектами в Java", если у вас нет твердого понимания концепций объектно-ориентированного программирования или вам необходимо освежить знания.
https://www.developer.com/java/java-encapsulation/
👉@BookJava
Инкапсуляция - это фундаментальная концепция объектно-ориентированного программирования (ООП), которая позволяет разработчикам создавать классы, скрывающие свои внутренние детали и защищающие их состояние и поведение от доступа или изменения извне класса.
В этой статье по программированию мы обсудим инкапсуляцию, ее преимущества и то, как она может быть реализована в Java.
Прежде чем прочитать эту стаью, вы можете прочитать наше руководство "Как работать с классами и объектами в Java", если у вас нет твердого понимания концепций объектно-ориентированного программирования или вам необходимо освежить знания.
https://www.developer.com/java/java-encapsulation/
👉@BookJava
Управление Arduino с помощью Java и Spring
Вы когда-нибудь хотели управлять платой Arduino с помощью Raspberry Pi или компьютера, используя только язык Java, а не язык Arduino?
В этой статье я покажу, как я создал веб-приложение для управления Arduino с помощью Raspberry PI с использованием Spring.
Читать статью
Вы когда-нибудь хотели управлять платой Arduino с помощью Raspberry Pi или компьютера, используя только язык Java, а не язык Arduino?
В этой статье я покажу, как я создал веб-приложение для управления Arduino с помощью Raspberry PI с использованием Spring.
Читать статью
Java разработчик (junior/middle/senior)
#удаленка #частичная_занятость
Канал: Java: fill the gaps
Задачи:
- Читать посты на темы Java, Spring и бэкенд-разработки
- Активно участвовать в опросах
- Поощрять автора позитивными реакциями
Требования:
- Знание основ Java
- Любопытство и стремление профессионально расти
- Толерантность к сердечкам и смайликам при обсуждении технических тем
✅ Подписаться
#удаленка #частичная_занятость
Канал: Java: fill the gaps
Задачи:
- Читать посты на темы Java, Spring и бэкенд-разработки
- Активно участвовать в опросах
- Поощрять автора позитивными реакциями
Требования:
- Знание основ Java
- Любопытство и стремление профессионально расти
- Толерантность к сердечкам и смайликам при обсуждении технических тем
✅ Подписаться
Карьерные советы, инструкции и тесты для разработчиков, которые планируют стать мидлом в 2023 году.
Начинайте отсюда.
Всё это на канале «Как стать мидлом».
Начинайте отсюда.
Всё это на канале «Как стать мидлом».
Какие из этих методов могут использоваться для конвертации всех символов String в массив символов?
Anonymous Quiz
0%
charAt()
0%
И getChars(), и charAt()
0%
И toCharArray(), и getChars()
0%
Все перечисленные
0%
Посмотреть ответ
Не самые очевидные советы по написанию DTO на Java
Чтобы воспользоваться данными из внешней службы, мы обычно преобразуем полезную нагрузку JSON в объект передачи данных (Data Transfer Object, DTO). Код, обрабатывающий DTO, быстро усложняется, но с этим могут помочь несколько советов. Вполне возможно писать DTO, с которыми легче взаимодействовать и которые облегчают написание и чтение кода. Если объединить их вместе — можно упростить себе работу.
https://medium.com/javarevisited/not-so-obvious-tips-to-write-better-dtos-in-java-c6116895b180
👉@BookJava
Чтобы воспользоваться данными из внешней службы, мы обычно преобразуем полезную нагрузку JSON в объект передачи данных (Data Transfer Object, DTO). Код, обрабатывающий DTO, быстро усложняется, но с этим могут помочь несколько советов. Вполне возможно писать DTO, с которыми легче взаимодействовать и которые облегчают написание и чтение кода. Если объединить их вместе — можно упростить себе работу.
https://medium.com/javarevisited/not-so-obvious-tips-to-write-better-dtos-in-java-c6116895b180
👉@BookJava