Библиотека джависта | 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
加入频道
Senior Java-разработчик, присоединяйся к нашей команде Luxoft и получи не только работу мечты, но и Welcome Bonus, который точно порадует!

До 31 октября 2021 года заполни короткую форму, и мы расскажем о наших проектах и бонусе!

Все подробности и регистрация по ссылке.
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?
Примерное правило, которым можно руководствоваться при создании индекса - если объем информации (в байтах) НЕ удовлетворяющей условию выборки меньше, чем размер индекса (в байтах) по данному условию выборки, то в общем случае оптимизация приведет к замедлению выборки.
💥 Java Hiring Sprint, 18-29 октября | онлайн
Мы приглашаем Java-разработчиков уровня Middle/Senior/Lead/Architect с опытом работы от 2 лет стать частью команды EPAM Anywhere.

🎯 Пройди техническое интервью и в течение 48 часов получи оффер от EPAM Anywhere, а также бонус до US $5,000 после присоединения к нашей команде!

🔸 Бонус для специалиста уровня Middle – US $2,000
🔸 Бонус для специалиста уровня Senior — US $3,000
🔸 Бонус для специалиста уровня Lead — US $4,000
🔸 Бонус для специалиста уровня Architect — US $5,000.
Сумма бонуса фиксирована независимо от оклада.

Хочешь узнать больше? Заполни регистрационную форму и узнай о платформе EPAM Anywhere и Java Hiring Sprint!

👉 Зарегистрироваться -> https://epa.ms/2aWdI1
Добрый вечер. Комьюнити Библиотеки программиста подумывает о том, чтобы организовать встречу офлайн в конце октября у нас на локации в мск. Хотим узнать ваше мнение, во что бы вы хотели поиграть в компании из 6-10 человек (единомышленников-программистов)
Anonymous Poll
15%
Монополия
20%
Мафия
9%
Крокодил
5%
Домино
18%
Покер
14%
Кто я такой (стикеры на лбу)
11%
Квизы (участики делятся на команды)
13%
Манчкин
4%
Другое (в комментариях)
41%
Полное прекращение работы Telegram в России
Фреймворк Fork/Join, представленный в JDK 7, - это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно.

• Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом.
• Этап Join: далее (опционально) идёт процесс «свёртки» - решения подзадач некоторым образом объединяются пока не получится решение всей задачи.
Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно.

Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Join будет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач.

Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
#вопросы_с_собеседований
Как создать потокобезопасный Singleton?
Static field
 class Singleton {
public static final Singleton INSTANCE = new Singleton();
}

• Enum
 enum Singleton {
INSTANCE;
}

Synchronized Accessor
 class Singleton {
private static Singleton instance;

public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}

• Double Checked Locking & volatile
 class Singleton {
private static volatile Singleton instance;

public static Singleton getInstance() {
Singleton localInstance = instance;
if (localInstance == null) {
synchronized (Singleton.class) {
localInstance = instance;
if (localInstance == null) {
instance = localInstance = new Singleton();
}
}
}
return localInstance;
}
}

• On Demand Holder Idiom
public class Singleton {

public static class SingletonHolder {
public static final Singleton HOLDER_INSTANCE = new Singleton();
}

public static Singleton getInstance() {
return SingletonHolder.HOLDER_INSTANCE;
}
}
Привет, Username! Приглашаем тебя на новый хакатон Цифрового Прорыва на тему "Транспорт и логистика"!

Для тебя мы подготовили крутецкие кейсы от Росатома, Ростелекома, Транспортных инноваций Москвы, международного аэропорта Шереметьево, Accenture и др.!

Участвовать можно онлайн из любой точки России, либо в специальных оффлайн-коворкингах (см. список доступных на сайте).

Успей собрать команду 3-5 человек (или присоединиться к имеющимся), выбрать кейс и побороться за призовой фонд до 4.500.000 руб. 🚀🚀🚀

Регистрируйся прямо сейчас: https://proglib.io/w/589dba35
#вопросы_с_собеседований
Для чего в стримах применяются методы forEach() и forEachOrdered()?
☕️ forEach() применяет функцию к каждому объекту стрима, порядок при параллельном выполнении не гарантируется;
☕️ forEachOrdered() применяет функцию к каждому объекту стрима с сохранением порядка элементов.
Как реализовать запуск сервлета одновременно с запуском приложения?

Контейнер сервлетов обычно загружает сервлет по первому запросу клиента.

Если необходимо загрузить сервлет прямо на старте приложения (например если загрузка сервлета происходит длительное время) следует использовать элемент <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>
Все больше специалистов из стран Восточной Европы обращают внимание на рынок Польши в качестве следующего этапа в развитии карьеры:

- зарплаты в среднем на 30%-40 выше;
- схожесть менталитета и близость к дому;
- простота в получении визы и вида на жительство;
- огромный спрос со стороны работодателей;
- один из наиболее высоких темпов роста экономики в Европе.

Для тех, кто хочет открыть для себя глобальные возможности этого рынка, мы рекомендуем платформу Just Join IT — самый популярный Job board для сферы IT в Польше.

Найдите наилучшее предложение среди 500+ вакансий и работайте на крупнейшие компании: https://bit.ly/justjoinit-java
Что представляет собой ServletConfig?

Интерфейс javax.servlet.ServletConfig используется для передачи сервлету конфигурационной информации. Каждый сервлет имеет свой собственный экземпляр объекта ServletConfig, создаваемый контейнером сервлетов.

Для установки параметров конфигурации используются параметры init-param в web.xml:

    <servlet-name>ExampleServlet</servlet-name>
<servlet-class>xyz.company.ExampleServlet</servlet-class>
<init-param>
<param-name>exampleParameter</param-name>
<param-value>parameterValue</param-value>
</init-param>
</servlet>

или аннотации @WebInitParam:

    urlPatterns = "/example",
initParams = {
@WebInitParam(name = "exampleParameter", value = "parameterValue")
}
)
public class ExampleServlet extends HttpServlet {
//...
}

Для получения ServletConfig сервлета используется метод getServletConfig().
#вопросы_с_собеседований
Как обработать в приложении исключения, выброшенные другим сервлетом?
Курс автоматизатор на Java.
Клёвые новости для всех, кто хочет стартануть в этой профессии — ребята из школы автоматизации QA.GURU проводят бесплатное вводное занятие 20-го октября в 20:00 МСК

Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажут о рынке QA🔥 Кто, кому, за что и сколько платит?
— Покажут боевой проект с полной инфраструктурой.
— Дадут домашнее задание и проверят его.

Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
Когда приложение выбрасывает исключение, контейнер сервлетов обрабатывает его и создаёт ответ в формате HTML. Это аналогично тому, что происходит при кодах ошибок вроде 404, 403 и т.д.

В дополнении к этому существует возможность написания собственных сервлетов для обработки исключений и ошибок с указанием их в дескрипторе развертывания:

    <error-code>404</error-code>
<location>/AppExceptionHandler</location>
</error-page>

<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/AppExceptionHandler</location>
</error-page>
Основная задача таких сервлетов - обработать ошибку/исключение и сформировать понятный ответ пользователю. Например, предоставить ссылку на главную страницу или же описание ошибки.
Привет!

Команда МегаФона в поиске старшего Java-разработчика на проект по разработке и развитию аналитических платформ в подразделении Корпоративное Хранилище Данных.
Стэк – java, python, LUA, SQL (ClickHouse).

Что ждём от кандидата:
- Опыт разработки на Java от 3 лет
- Опыт функционального руководства группой разработки от 2 лет
- Опыт работы в сфере IT / телекоммуникаций от 3 лет
- Высшее образование в области математики/ИТ технологий

Смотри подробное описание вакансии и откликайся на сайте

Или присылай CV с темой “резюме из tg” на почту: [email protected]
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований В чем отличия ServletContext и ServletConfig?
☕️ ServletConfig уникален для сервлета, а ServletContext - для приложения;
☕️ ServletConfig используется для предоставления параметров инициализации конкретному сервлету, а ServletContext для предоставления параметров инициализации для всех сервлетов приложения;
☕️ для ServletConfig возможности модифицировать атрибуты отсутствуют, атрибуты в объекте ServletContext можно изменять.