Библиотека джависта | 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
加入频道
LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
В Java все исключения делятся на два типа:

☕️ checked (контролируемые/проверяемые исключения) должны обрабатываться блоком catch или описываться в объявлении метода (например throws IOException). Наличие такого обработчика/модификатора проверяется на этапе компиляции;

☕️ unchecked (неконтролируемые/непроверяемые исключения), к которым относятся ошибки Error (например OutOfMemoryError), обрабатывать которые не рекомендуется и исключения времени выполнения, представленные классом RuntimeException и его наследниками (например NullPointerException), которые могут не обрабатываться блоком catch и не быть описанными в объявлении метода.
📌 Напоминаем, что у нас есть чат канала: https://yangx.top/javaproglibchat
Присоединяйтесь к обсуждению вопросов и предлагайте свои!
#вопросы_с_собеседований
Где и как вы можете использовать закрытый конструктор?
Приватный (помеченный ключевым словом private, скрытый) конструктор может использоваться публичным статическим методом генерации объектов данного класса. Также доступ к нему разрешён вложенным классам и может использоваться для их нужд.
#вопросы_с_собеседований
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
Всем привет!
Мы сделали сервис, который отбирает вакансии по вашим интересам.
Настройте личные фильтры: локация, точный технологический стек, и, конечно, не забудьте о деньгах.

Все самые подходящие предложения рынка – в @GetMeIT_bot
#вопросы_с_собеседований
Какие виды ссылок на методы вы знаете?
☕️ ссылки на статические методы;
☕️ ссылки на методы экземпляра;
☕️ ссылки на конструкторы;
☕️ ссылки на обобщенные (шаблонные) методы.
Оба метода являются способами подачи задачи в пул потоков, но между ними есть небольшая разница.

execute(Runnable command) определён в интерфейсе Executor и выполняет поданную задачу и ничего не возвращает.

submit() – перегруженный метод, определённый в интерфейсе ExecutorService. Способен принимать задачи типов Runnable и Callable и возвращать объект Future, который можно использовать для контроля и управления процессом выполнения, получения его результата.
#вакансия #Senior #Middle #java #remote #fulltime

Fintech компания AMarkets приглашает Middle/Senior Java разработчиков в связи с расширением команды back-end разработки.
Вилка: от 2 500 USD на руки

Что мы даем:
- Релокацию в Черногорию за счет компании или удалённую работу.
- AMarkets - продуктовая компания, и мы даем свободу в выборе реализации разработчику. Мы с удовольствием применяем все возможные современные технологии и методологии в разработке: Микросервисы, SOLID, Clean architecture.

Над чем предстоит работать:
- анализировать задачи бизнеса и находить оптимальные решения;
- улучшать текущую кодовую базу;
- разрабатывать архитектуру для новых проектов;
- писать код - модульный, читаемый и тестируемый.

Чем нужно владеть:
- опытом Java разработки от 3 лет;
- опытом использования Spring Framework;
- умением писать тесты, unit\интеграционные;
- знанием SQL на уровне запросов.

Будет полезно:
- написание коммерческих проектов с использованием Kotlin;
- опыт работы с микросервисной архитектурой;
- опыт работы с CICD;
- участие в финтех проекте.

@Annalex67, [email protected]
Java Coding Problems: Improve your Java Programming skills by solving real-world coding challenges (2019)
Автор: Anghel Leonard

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

Скачать книгу
Web application (Веб-приложение) - клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — web-сервер. Логика web application распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, а обмен информацией происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому web application является кроссплатформенным сервисом.
#вопросы_с_собеседований
Какие различные методы управления сессией в сервлетах вы знаете?
Кто такой DevOps-инженер и как им стать? Познакомься с востребованной IT-профессией и попробуй себя в этом направлении на бесплатном онлайн-интенсиве лидера внедрения DevOps для разработки магазинных систем Кирилла Демченко: 👉 https://clc.am/aoT1NQ

⚡️ Ты научишься использовать Docker-compose и Kubernetes.
⚡️ Соберёшь контейнер с приложением.
⚡️ Узнаешь, как организовать непрерывную интеграцию и автоматически собирать новую версию приложения при обновлении исходного кода.
⚡️ Получишь практические советы эксперта и неограниченный доступ к материалам занятий.

Авторы трёх лучших проектов получат сертификаты на 30 000 рублей для обучения в онлайн-университете Skillbox!

Регистрируйся и расширяй свои знания в IT!
При посещении клиентом Web-ресурса и выполнении вариантов запросов, контекстная информация о клиенте не хранится. В протоколе HTTP нет возможностей для сохранения и изменения информации о предыдущих посещениях клиента. Сеанс (сессия) – соединение между клиентом и сервером, устанавливаемое на определенное время, за которое клиент может отправить на сервер сколько угодно запросов. Сеанс устанавливается непосредственно между клиентом и Web-сервером. Каждый клиент устанавливает с сервером свой собственный сеанс. Сеансы используются для обеспечения хранения данных во время нескольких запросов Web-страницы или на обработку информации, введенной в пользовательскую форму в результате нескольких HTTP-соединений (например, клиент совершает несколько покупок в интернет-магазине; студент отвечает на несколько тестов в системе дистанционного обучения).

Существует несколько способов обеспечения уникального идентификатора сессии:
User Authentication – Предоставление учетных данных самим пользователем в момент аутентификации. Переданная таким образом информация в дальнейшем используется для поддержания сеанса. Это метод не будет работать, если пользователь вошёл в систему одновременно из нескольких мест.
HTML Hidden Field – Присвоение уникального значения скрытому полю HTML страницы, в момент когда пользователь начинает сеанс. Этот метод не может быть использован со ссылками, потому что нуждается в подтверждении формы со скрытым полем каждый раз во время формирования запроса. Кроме того, это не безопасно, т.к. существует возможность простой подмены такого идентификатора.
URL Rewriting – Добавление идентификатора сеанса как параметра URL. Достаточно утомительная операция, потому что требует постоянного отслеживания этого идентификатора при каждом запросе или ответе.
Cookies – Использование небольших фрагментов данных, отправленных web-сервером и хранимых на устройстве пользователя. Данный метод не будет работать, если клиент отключает использование cookies.
Session Management API – Использование специального API для отслеживания сеанса, построенный на основе и на методах, описанных выше и который решает частные проблемы перечисленных способов:
Чаще всего недостаточно просто отслеживать сессию, необходимо ещё и сохранять какие-либо дополнительные данные о ней, которые могут потребоваться при обработке последующих запросов. Осуществление такого поведения требует много дополнительных усилий.
Все вышеперечисленные методы не являются универсальными: для каждого из них можно подобрать конкретный сценарий, при котором они не будут работать.