Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Подборка каналов для программистов 🎯

Системное администрирование 📌
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов

Программирование, фронтенд, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

Шутки программистов 📌
https://t.me/itumor ITumor | программисты шутят

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Учим английский 📌
https://t.me/UchuEnglish Английский с нуля

Книги по математике 📌
https://t.me/Pomatematike Канал по математике

Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика

Крипта 📌
https://t.me/bitkoinoff Новости криптовалют 📈

Вакансии для программистов 📌
https://t.me/progjob Вакансии для программистов
Какие различные методы управления сессией в сервлетах вы знаете?

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

Существует несколько способов обеспечения уникального идентификатора сессии:

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


Сookies («куки») — небольшой фрагмент данных, отправленный web-сервером и хранимый на устройстве пользователя. Всякий раз при попытке открыть страницу сайта, web-клиент пересылает соответствующие этому сайту cookies web-серверу в составе HTTP-запроса. Применяется для сохранения данных на стороне пользователя и на практике обычно используется для:

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

Привет! Я — Саша Казанцев, разработчик в hh. ru. В статье я расскажу, как сделать простого бота в Slack на java и немного о других вариантах использования slack api.

https://habr.com/ru/company/hh/blog/595837/
В Новый год — с новой профессией в IT!

Проверь свои знания на NIX Online Edu Testing

Купить подарки, поставить елку. Чего-то не хватает в праздничном списке… Точно! Подготовиться к карьере в IT!
Для этого приглашаем тебя поучаствовать в онлайн-тестировании по одной из 17-ти программ обучения. Выполни тест и узнай уровень своей подготовки.

Когда:
с 3 по 24 декабря
Где: онлайн с любого удобного тебе гаджета

Хочешь освоить самую актуальную профессию в IT? Эксперты NIX помогут тебе.

В Корпоративном центре обучения NIX есть 17 учебных программ. В зависимости от направления ты будешь учиться офлайн в Харькове или онлайн. Ты получишь базовые знания по фронтенд и бэкенд-разработке, по бизнес-анализу и в сфере облачных технологий. После обучения ты сможешь уверенно начать карьеру в IT и попробовать себя на позиции Junior-специалиста в команде NIX!

Отличный старт для нового года, правда? ;)

Теперь дело за малым — переходи по ссылке, выбирай понравившуюся программу обучения и проходи онлайн-тестирование.
Какие методы для работы с cookies предусмотрены в сервлетах?

Servlet API предоставляет поддержку cookies через класс javax.servlet.http.Cookie:

Для получения массива cookies из запроса необходимо воспользоваться методом HttpServletRequest.getCookies(). Методов для добавления cookies в HttpServletRequest не предусмотрено.
Для добавления cookie в ответ используется HttpServletResponse.addCookie(Cookie c). Метода получения cookies в HttpServletResponse отсутствует.
💥 Хотите попробовать себя в роли Java-разработчика и в будущем заниматься enterprise backend-задачами, используя современные подходы и паттерны? Тогда стажировка по Java в тренинг-центре EPAM Санкт-Петербург – то что нужно!

Интенсивное онлайн-обучение (от 30 часов в неделю) рассчитано на три–четыре месяца. Мы учим тех, с кем потом хотим работать в одной команде. Поэтому после успешного завершения стажировки вы получите предложение о работе в EPAM Санкт-Петербург.

👉🏻 Регистрируйтесь: https://epa.ms/internship-java-vk-33

📌 Как проходит стажировка
Вы участвуете в учебном проекте в роли разработчика под руководством наставника и параллельно изучаете материалы для самообучения. Цель учебного проекта — сократить время вашего входа на реальный рабочий проект. После завершения учебного проекта наставники примут решение, насколько вы готовы к работе на реальном проекте.

📌 Что мы предлагаем на стажировке
• Практический опыт на внутренних проектах;
• Помощь наставников с большим опытом в IT-сфере;
• 9000+ образовательных курсов по hard & soft skills;
• Бесплатные курсы английского языка;
• Нетворкинг и комьюнити единомышленников: митапы, вечера настольных игр и т. д.

📌 Мы ждём студентов четвертых – шестых курсов, выпускников и начинающих специалистов.
Необходимо иметь базовые зания Java Core, Java 8, Spring Core, писать SQL запросы и уверенно владеть английским языком (уровень B1 и выше).

👉🏻 Успейте подать заявку: https://epa.ms/internship-java-vk-33
👍1
Программирование на Java

Лекция 1. Введение
Лекция 2. Синтаксис
Лекция 3. Объекты
Лекция 4. Наследование. Перечисления. Строки.
Лекция 5. Исключения, try-catch, generics, varargs
Лекция 6. Коллекции.
Лекция 7. Элементы функционального программирования
Лекция 8. Stream API
Лекция 9. Коллекторы. Ввод-вывод
Лекция 10. Многопоточность
Лекция 11. Многопоточность. Продолжение
Лекция 12. Конкуррентные коллекции. Аннотации. Рефлекшн
Лекция 13. Что внутри?

Смотреть на youtube.
Что такое URL Rewriting?


URL Rewriting - специальная перезапись (перекодирование) оригинального URL. Данный механизм может использоваться для управления сессией в сервлетах, когда cookies отключены.
Зачем нужны и чем отличаются методы encodeURL() и encodeRedirectURL()?


HttpServletResponse.encodeURL() предоставляет способ преобразования URL в HTML гиперссылку с преобразованием спецсимволов и пробелов, а так же добавления session id к URL. Такое поведение аналогично java.net.URLEncoder.encode(), но с добавлением дополнительного параметра jsessionid в конец URL.

Метод HttpServletResponse.encodeRedirectURL() преобразует URL для последующего использования в методе sendRedirect().

Таким образом для HTML гиперссылок при URL rewriting необходимо использовать encodeURL(), а для URL при перенаправлении - encodeRedirectUrl().
Что такое «сессия»?


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

Чтобы быть уверенным в том, что объект будет оповещён о прекращении сессии, нужно реализовать интерфейс javax.servlet.http.HttpSessionBindingListener. Два метода этого интерфейса: valueBound() и valueUnbound() используются при добавлении объекта в качестве атрибута к сессии и при уничтожении сессии соответственно.
Подборка каналов для программистов 🎯

Системное администрирование 📌
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов

Программирование, фронтенд, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

Шутки программистов 📌
https://t.me/itumor ITumor | программисты шутят

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Учим английский 📌
https://t.me/UchuEnglish Английский с нуля

Книги по математике 📌
https://t.me/Pomatematike Канал по математике

Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика

Крипта 📌
https://t.me/bitkoinoff Новости криптовалют 📈

Вакансии для программистов 📌
https://t.me/progjob Вакансии для программистов
Какой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с верной сессией?

Сервлет фильтры используются для перехвата всех запросов между контейнером сервлетов и сервлетом. Поэтому логично использовать соответствующий фильтр для проверки необходимой информации (например валидности сессии) в запросе.
Как мы можем обеспечить transport layer security для нашего веб приложения?


Для обеспечения transport layer security необходимо настроить поддержку SSL сервлет контейнера. Как это сделать зависит от конкретной реализации сервлет-контейнера.
Как организовать подключение к базе данных, обеспечить журналирование в сервлете?

При работе с большим количеством подключений к базе данных рекомендуется инициализировать их в servlet context listener, а также установить в качестве атрибута контекста для возможности использования другими сервлетами.

Журналирование подключается к сервлету стандартным для логгера способом (например для log4j это может быть property-файл или XML-конфигурация) , а далее эта информация используется при настройке соответствующего context listener.
Какие основные особенности появились в спецификации
Servlet 3?
Servlet Annotations. До Servlet 3 вся конфигурация содержалась в web.xml, что приводило к ошибкам и неудобству при работе с большим количестве сервлетов. Примеры аннотаций: @WebServlet, @WebInitParam, @WebFilter, @WebListener.
Web Fragments. Одностраничное веб приложение может содержать множество модулей: все модули прописываются в fragment.xml в папке META-INF\. Это позволяет разделять веб приложение на отдельные модули, собранные как .jar-файлы в отдельной lib\ директории.
Динамическое добавление веб компонентов. Появилась возможность программно добавлять фильтры и слушатели, используя ServletContext объект. Для этого применяются методы addServlet(), addFilter(), addListener(). Используя это нововведение стало доступным построение динамической системы, в которой необходимый объект будет создан и вызван только по необходимости.
Асинхронное выполнение. Поддержка асинхронной обработки позволяет передать выполнение запроса в другой поток без удержания всего сервера занятым.
👍2
Хотите быть в курсе передовых технологий в IT?

💻 Получите доступ к единой витрине технологий Сбера! На платформе SmartMarket можно решать любые IT-задачи: от создания приложений для виртуальных ассистентов до организации облачного хранения данных. JavaScript-разработчики могут:

— Использовать десятки современных инструментов, например, для создания приложений для виртуальных ассистентов с визуальным интерфейсом;
— Подключить к готовому проекту NLP-платформу и распознавание жестов;
— Монетизировать бизнес в один клик;
— Найти в одном месте документацию, API и спецификации для всех сервисов;
— Общаться с сообществом из 2500+ разработчиков, посещать митапы и многое другое!

А ещё вы получите бонусы от партнеров Сбера и доступ к аудитории экосистемы в 100 млн клиентов.

👉🏻 Подробности и бесплатная регистрация в SmartMarket Studio здесь.
Какие способы аутентификации доступны сервлету?

Спецификация сервлетов определяет четыре типа проверки подлинности:

HTTP Basic Authentication - BASIC. При доступе к закрытым ресурсам появится окно, которое попросит ввести данные для аутентификации.
Form Based Login - FORM. Используется собственная html форма:
HTTP Digest Authentication - DIGEST. Цифровая аутентификация с шифрованием.
HTTPS Authentication - CLIENT-CERT. Аутентификация с помощью клиентского сертификата.
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
👍2
Системы поддержки принятия врачебных решений, которые разработают участники конкурса AI’M DOCTOR должны будут делать выводы на основе анализа комплекса информации о пациенте, включая медицинскую карту и протоколы осмотров. Также эти системы должны будут уметь обращаться к внешним базам медицинских знаний. При этом важнейшей характеристикой будет способность к проведению дифференциальной диагностики.

Значительную роль сыграет способность системы объяснить свои заключения. Для того, чтобы добиться этого, необходимо осуществить настоящий технологический прорыв, перейдя от «слабого» к «объясняющему» искусственному интеллекту. В данный момент логика работы ИИ-систем (Искусственного интеллекта) скрыта.

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

Подробнее о конкурсе НТИ Up Great AI’M DOCTOR: https://ai4med.upgreat.one/?utm_source=tg, FB и ВК