Библиотека 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/progjob Вакансии для программистов

Системное администрирование 📌
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/linux_sup Новости и информация из мира Linux
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/Angular_Vuejs Angular Vue js React
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/Frontend_now Все для фронтендеров
https://t.me/react_prog Все что связано с reactjs
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/Welcome_Python Добро пожаловать в мир Python
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_sup Программирование на Java
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/imobile_dev Все по мобильной разработке: iOS, Android
https://t.me/database_group Все про базы данных
https://t.me/cloud_comp Облачные сервисы, вычисления и безопасность
https://t.me/bigdata_world Data Science, Big Data, Machine Learning

IT новости 📌
https://t.me/htech_news Новости HighTech
https://t.me/all_itnews IT новости на английском
https://t.me/gmorning_news Последнии новости из мира науки
https://t.me/youtips_tricks Технологические советы и хитрости

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

SMM, Seo, Wordpress 📌
https://t.me/allsocial_news SMM / Советы, Новости, Лайфхаки
https://t.me/seo_go Новости по SEO продвижению сайтов
https://t.me/news_wordpress Канал о самой популярной CMS

Защита, взлом, безопасность 📌
https://t.me/crypto_security_lab Материалы по информационной безопасности
https://t.me/thehaking Канал о кибербезопасности
https://t.me/Hackme_news Новости из мира хакинга

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

Должен знать 📌
https://t.me/UchuEnglish Английский с нуля
https://t.me/Pomatematike Канал по математике

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

Крипта 📌
https://t.me/crypto_moneygo Канал о крипте, новости, инсайды
https://t.me/bitkoinoff Нгвости криптовалют

VR, робототехника 📌
https://t.me/AR_VR_vision Компьютерное зрение, виртуальная реальность
https://t.me/robotics_scince Канал о Робототехнике и автоматизации


https://t.me/network_arch Network architecture and Administration
https://t.me/easy_program Программирование для новичков
https://t.me/testin_new Тестирование
https://t.me/IoTprog Интернет вещей
https://t.me/generalprog General programming
https://t.me/Hware_news Цифровые тенденции
https://t.me/dev_ops_info Devops
Почему необходимо переопределить только init() метод без аргументов?
Метод init() переопределяется, если необходимо инициализировать какие-то данные до того как сервлет начнет обрабатывать запросы.

При переопределении метода init(ServletConfig config), первым должен быть вызван метод super(config), который обеспечит вызов метода init(ServletConfig config) суперкласса. GenericServlet предоставляет другой метод init() без параметров, который будет вызываться в конце метода init(ServletConfig config).

Необходимо использовать переопределенный метод init() без параметров для инициализации данных во избежание каких-либо проблем, например ошибку, когда вызов super() не указан в переопределенном init(ServletConfig config).
👍1
Какие наиболее распространенные задачи выполняются в контейнере сервлетов?

Поддержка обмена данными. Контейнер сервлетов предоставляет легкий способ обмена данными между веб клиентом (браузером) и сервлетом. Благодаря контейнеру нет необходимости создавать слушателя сокета на сервере для отслеживания запросов от клиента, а также разбирать запрос и генерировать ответ. Все эти важные и комплексные задачи решаются с помощью контейнера и разработчик может сосредоточиться на бизнес логике приложения.

Управление жизненным циклом сервлетов и ресурсов. Начиная от загрузки сервлета в память, инициализации, внедрения методов и заканчивая уничтожением сервлета. Контейнер так же предоставляет дополнительные утилиты, например JNDI, для управления пулом ресурсов.

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

Поддержка JSP. JSP классы не похожи на стандартные классы джавы, но контейнер сервлетов преобразует каждую JSP в сервлет и далее управляется контейнером как обычным сервлетом.

Различные задачи. Контейнер сервлетов управляет пулом ресурсов, памятью приложения, сборщиком мусора. Предоставляются возможности настройки безопасности и многое другое.
servlet-filter.zip
194 KB
Исходный код примера, рассмотренного в посте выше☝️.
Java. Программирование

Java. Многопоточность. Ключевое слово synchronized
Java. Многопоточность. Методы wait и notify. Блокирующая очередь и Worker Thread.
Java. Методы equals и hashCode.
Java. Работа с датой и временем.
Java. Ковариантность и контравариантность обобщенных типов на примере ArrayList.
Java. Обобщенный класс для представления дерева с любыми данными.
Java. Парсер арифметических выражений, часть 2: оператор "унарный минус" и вызов функций.
Java. Побитовые операторы.
Java. Класс Object. Разбор вопросов на собеседование.
Java. Рисуем звезды в 3D пространстве.
Java. Многопоточность. Остановка потока. Обработка InterruptedException.
Java. Интерфейс Comparator и стандартная сортировка Сollections.sort()
Java. Стирание типов.
Java. Представление отрицательных чисел. Преобразование цветной фотографии в черно-белую.
Java. Об Iterator и Iterable c примерами.


https://www.youtube.com/playlist?list=PL5BhKu-LkR_3zYHvQZ-AjkmcYciv65QVB
1👍1
Хочешь стать востребованным Java-разработчиком и работать в топовых IT-компаниях Москвы и Санкт-Петербурга? Расходы во время обучение берет на себя Kata Academy (ex Java Mentor), а оплата только после твоего трудоустройства программистом. Зарплата уже на старте от 100 тысяч рублей.

🙋‍♂👉 Подать заявку: https://clck.ru/YoX2r

Как это работает:
• Ты освоишь востребованные у бизнеса технологии: Java Core, Maven, Git, Tomcat, Spring MVC, Core, Security, Hibernate.
• Опытные наставники будут контролировать усвоение каждой темы.
• Ты пройдешь стажировку в реальном проекте, которая необходима для трудоустройства и получишь строчку в резюме.
• HR-специалисты помогут составить резюме и подготовят тебя к непростым вопросам на собеседовании.
• На всех этапах обучения ты будешь получать мощную поддержку от сообщества студентов.

Каждый наш выпускник получает от трех предложений о работе. Поэтому после успешных собеседований ты самостоятельно выберешь понравившийся проект и начнёшь работу.
Ищем: Java Developer Trainee (стажировка)
Локация (Офис): Ростов-на-Дону, Казань, Санкт-Петербург, Киев, Харьков, Одесса, Днепр, Чернигов, Черкассы, Минск, Гомель, Полоцк, Витебск.
Удаленно: Города РФ (не более UTC+5). Москва - набор закрыт.

Опыт работы: без опыта

Международная компания Andersen, проводит набор на оплачиваемую стажировку с последующим трудоустройством по направлению Java Developer Trainee

Требования
:
📌уровень знания английского языка Intermediate и выше ( в РФ уровень может быть ниже);
📌понимание принципов ООП, понимание алгоритмов и структур данных знание, Java Core;
📌обязательное знание основ Java EE (Servlets, jsp);
📌представление о реляционных базах данных (Oracle, MySQL, PostgreSQL и др.);
📌опыт написания unit-тестов, знания систем контроля версий (git или svn), Spring Framework, а также ORM (Hibernate Framework)

Направляйте заявку на trainee@andersenlab.com
Тема письма «Имя, Фамилия, город, Java Trainee»
Зачем в сервлетах используются различные listener?

Listener (слушатель) работает как триггер, выполняя определённые действия при наступлении какого-либо события в жизненном цикле сервлета.

Слушатели, разделённые по области видимости (scope):

Request:
ServletRequestListener используется для того, чтобы поймать момент создания и уничтожения запроса;
ServletRequestAttributeListener используется для прослушивания событий, происходящих с атрибутами запроса.
Context:
ServletContextListener позволяет поймать момент, когда контекст инициализируется либо уничтожается;
ServletContextAttributeListener используется для прослушивании событий, происходящих с атрибутами в контексте.
Session:
HttpSessionListener позволяет поймать момент создания и уничтожения сессии;
HttpSessionAttributeListener используется при прослушивании событий происходящих с атрибутами в сессии;
HttpSessionActivationListener используется в случае, если происходит миграция сессии между различными JVM в распределённых приложениях;
HttpSessionBindingListener так же используется для прослушивания событий, происходящих с атрибутами в сессии. Разница между HttpSessionAttributeListener и HttpSessionBindingListener слушателями: первый декларируется в web.xml; экземпляр класса создается контейнером автоматически в единственном числе и применяется ко всем сессиям; второй: экземпляр класса должен быть создан и закреплён за определённой сессией «вручную», количество экземпляров также регулируется самостоятельно.
Подключение слушателей:

<web-app>
...
<listener>
<listener-class>xyz.company.ExampleListener</listener-class>
</listener>
...
</web-app>
HttpSessionBindingListener подключается в качестве атрибута непосредственно в сессию, т.е., чтобы его подключить необходимо:

создать экземпляр класса, реализующего этот интерфейс;
положить созданный экземпляр в сессию при помощи setAttribute(String, Object).
👍1
​​Знаешь, как оптимизировать транспортные потоки Москвы и обеспечить кибербезопасность транспортных систем? Подавай заявку на участие в хакатоне Moscow Secure Traffic от Транспортных инноваций Москвы и Центра организации дорожного движения!

Будет много активностей и приятных бонусов:

• 2 кейса по разработке чат-бота и информационного портала;
• Идеатон с призовым фондом в 100 000 рублей;
• Комнаты Диснея, где эксперты помогут тебе пройти 3 этапа генерации идеи;
• Мастер-классы;
• Wild-card в студенческий трек акселератора ТИМ;
• Много подарков и призов от партнеров;
• Мерч и сертификаты;
• Общий призовой фонд в 500 000 рублей.

Членами жюри и экспертами хакатона выступят представители ТИМ, ЦОДД, ИЦ «Безопасный транспорт», Акселератора Возможностей, МГУ им. М. В. Ломоносова, ИНТЦ МГУ «Воробьевы горы», ФИЦ ИУ РАН, АО «Лаборатория Касперского», Positive Technologies, Сбер, BI.Zone, ГК «Программный продукт», и RuSIEM.

Лови ссылку на регистрацию: https://securetraffic.moscow/. А если пока нет времени на заполнение формы, просто оставь свой ник в Телеграмм на нашем сайте, и мы обязательно тебе напомним.

Мероприятие пройдет 3-5 декабря. Прием заявок на хакатон открыт до 2 декабря.
Когда стоит использовать фильтры сервлетов, а когда слушателей?
Следует использовать фильтры, если необходимо обрабатывать входящие или исходящие данные (например: для аутентификации, преобразования формата, компрессии, шифрования и т.д.), в случае, когда необходимо реагировать на события - лучше применять слушателей.
Как реализовать запуск сервлета одновременно с запуском приложения?
Контейнер сервлетов обычно загружает сервлет по первому запросу клиента.

Если необходимо загрузить сервлет прямо на старте приложения (например если загрузка сервлета происходит длительное время) следует использовать элемент <load-on-startup> в дескрипторе или аннотацию @loadOnStartup в коде сервлета, что будет указывать на необходимость загрузки сервлета при запуске.

Если целочисленное значение этого параметра отрицательно, то сервлет будет загружен при запросе клиента. В противном случае - загрузится на старте приложения, при этом, чем число меньше, тем раньше в очереди на загрузку он окажется.

<servlet>
<servlet-name>ExampleServlet</servlet-name>
<servlet-class>xyz.company.ExampleServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
🎙 «БКС Мир инвестиций» и Фонд «Сколково» проводят онлайн-митап в формате круглого стола по Java разработке.
Всех заинтересованных приглашаем к участию: https://clck.ru/YuUcV

📌 25 ноября в 15:00 пройдет онлайн круглый стол, на котором обсудим, «Асинхронный бэкенд на JVM: Как увидеть прирост производительности?» и «Масштабирование приложений и оптимизация производительности».

В программе:
15:00 - 15:10 — Вступительное слово модератора, представление программы
15:10 - 15:40 — «Асинхронный бэкенд на JVM: Как увидеть прирост производительности?», Янис Батура, Ведущий разработчик, команда Wildlings, «БКС Мир Инвестиций».
15:40-16:00 — Задача соревнования BCS Coding Days: полезная информация про задачу, секретики для ее решения
16:00 - 17:00 — Круглый стол с участием Виктора Молодцова, CTO of Broker business, «БКС Мир Инвестиций»; Владислава Иванова, TeamLead, команда Baggins, «БКС Мир Инвестиций»; Юрия Милютина, Engineering Manager, Эквайринг Сбера; Александра Токарева, Head of R&D, Платформа Сбера.

👉 Регистрация на митап: https://clck.ru/YuUcV

Митап проводится в рамках онлайн-соревнования BCS Coding Days для Java, Android-разработчиков и системных аналитиков. Победители разделят 1,5 млн рублей. Подробнее о Java-треке: https://clck.ru/YuUdx
Соверши прорыв в методах диагностики и выиграй приз ₽200 млн!

Прими участие в конкурсе в области ИИ в медицине.

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

Технологии, развиваемые в рамках проведения Конкурса, смогут стать ядром широкого спектра продуктов, как в медицине и здравоохранении, так и в других областях, где необходимо объединять системы на основе машинного обучения, обработку естественного языка и работу с неструктурированными данными. Полученные в ходе Конкурса разработки будут способствовать занятию российскими высокотехнологичными компаниями ведущих позиций в области ИИ в медицине и здравоохранении на мировом рынке.

Вместе с основным этапом проводится конкурс-сателлит по аналогичной тематике с более простым заданием. Он направлен на поддержку команд-участниц и также имеет денежный приз.

Отборочный этап начнется осенью 2022 года, но заявку можно подать уже сейчас. Требования к разработчикам, график конкурса, задание и регистрация на конкурс: http://ai4med.upgreat.one/?utm_source=tg