Библиотека джависта | 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
加入频道
📱 Легко ли устроиться начинающему Android-разработчику?

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

https://proglib.io/sh/tbJBOc3o6i
SQL Pocket Guide: A Guide to SQL Usage (2021)
Автор: Alice Zhao
Количество страниц: 356

Если вы используете SQL в повседневной работе в качестве аналитика данных, специалиста по данным или инженера, это популярное карманное руководство станет вашим идеальным справочником при работе. Вы найдете множество примеров, в которых рассматриваются сложности языка, а также ключевые аспекты SQL, используемые в Microsoft SQL Server, MySQL, Oracle Database, PostgreSQL и SQLite.

Скачать книгу
#вопросы_с_собеседований
Зачем может быть нужен private мьютекс?
Старт второго потока курса «CI/CD на примере Gitlab CI» от Слёрм.

За 5 недель освоим путь от простого пайплана до настройки сложных вариантов CI/CD. Поможем понять, как работать с CI/CD. Научим автоматизировать процесс интеграции и поставки, ускорять цикл разработки с минимальными рисками.

Ответим на вопросы:
Что такое CI/CD
Какие проблемы решает CI/CD
Какие преимущества и недостатки есть у Gitlab Cl
Как интегрируется Gitlab CI и Kubernetes
Что такое Gitops и где его применять
Как лучше всего строить пайплайны

Раз в неделю кураторы разбирают кейсы и практические задания студентов, кроме этого будет две встречи со спикером. В конце курса будет IT-поединок⚔️.

Прочитать подробнее про курс и начать учиться уже с 9 сентября: https://slurm.club/38ysZF0
Объект для синхронизации делается private, чтобы сторонний код не мог на него синхронизироваться и случайно получить взаимную блокировку.
Дело в том, что «висеть» на методе wait() одного монитора могут сразу несколько потоков. При вызове notify() только один из них выходит из wait() и пытается захватить монитор, а затем продолжает работу со следующего после wait() оператора. Какой из них выйдет - заранее неизвестно. А при вызове notifyAll(), все висящие на wait() потоки выходят из wait(), и все они пытаются захватить монитор. Понятно, что в любой момент времени монитор может быть захвачен только одним потоком, а остальные ждут своей очереди. Порядок очереди определяется планировщиком потоков Java.
#вопросы_с_собеседований
Каков общий синтаксис оператора SELECT?
SELECT - оператор DML SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию.
#вопросы_с_собеседований
Какие существуют модификаторы доступа?
Какие существуют модификаторы доступа?

private (приватный):
члены класса доступны только внутри класса. Для обозначения используется служебное слово private.

default, package-private, package level (доступ на уровне пакета): видимость класса/членов класса только внутри пакета. Является модификатором доступа по умолчанию - специальное обозначение не требуется.

protected (защищённый): члены класса доступны внутри пакета и в наследниках. Для обозначения используется служебное слово protected.

public (публичный): класс/члены класса доступны всем. Для обозначения используется служебное слово public.

Последовательность модификаторов по возрастанию уровня закрытости: public, protected, default, private.

Во время наследования возможно изменения модификаторов доступа в сторону большей видимости (для поддержания соответствия принципу подстановки Барбары Лисков).
Хочешь освоить востребованную профессию Java-разработчика и работать в топовых IT-компаниях Москвы? Расходы во время обучение берет на себя Java Mentor, а оплата только после твоего трудоустройства программистом ☕️⚡️

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

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

Каждый выпускник получает от трех предложений о работе. Поэтому работодателя выберешь самостоятельно после успешных собеседований.
👔 Java Developer
⛳️ SimpleTextin
💼🥁 Удаленка
💵 3000 — 4000$
SimpleTexting расширяет команду разработки, мы ищем Java программиста cо знанием noSQL. Предстоит активная разработка новой функциональности и технические задачи по развитию архитектуры платформы, код ревью, участие в поддержке продакшн серверов (L3).

Мы предлагаем работу в международной продуктовой компании над успешным и постоянно развивающимся проектом, которому более 10 лет. Техническая часть команды состоит из 45 инженеров, работающих удаленно. У нас Kanban, ежедневный выпуск релизов, высокие требования к качеству кода и непрерывное улучшение процесса разработки. Мы развиваем собственный продукт, поэтому решения принимаются оперативно внутри команды. Мы ценим баланс рабочего и личного времени — в компании действует гибкая политика отпусков.

SimpleTexting — одна из ведущих веб-платформ для SMS-маркетинга. Тысячи организаций в Северной Америке используют SimpleTexting для связи со своей аудиторией. Нашими клиентами являются компании из списка Fortune 500, малые предприятия, университеты, медицинские центры и другие организации.

Мы ожидаем от кандидата:

Высшее техническое образование и 4+ лет опыт коммерческой разработки на Java
Java 8+ (у нас используется Java 15), Spring Boot
Git, Maven, Unix
Большим плюсом будет опыт работы с MongoDB

Условия:

Удаленная работа на полный рабочий день
Команда разработки работает по московскому времени, но необходима доступность в вечернее время. Звонки с коллегами из США обычно проходят в 16-18 Мск.
Техническая поддержка продакшн серверов (L3) выпадает на рабочий день раз в две недели и требует доступность с 17 по 23 Мск.
Гибкая политика оплачиваемых отпусков: нет ограничений по количеству отпускных дней в году, но требуется заблаговременное согласование в команде
Ежегодный пересмотр заработной платы в декабре
Бесплатное обучение английскому языку за счет компании


Пишите и присылайте свои резюме @SvetlanaKonovalovaST
Вокруг поиска первой работы в IT много вопросов и проблем: большой конкурс на позицию junior, провалы на собеседованиях, глобальная незаинтересованность рынка в джунах, особенно если им больше 30. Мы, издание «Библиотека программиста», решили провести опрос среди всех, кто когда-либо искал первую работу в IT-сфере, чтобы понять кто, каким образом и с какой эффективностью (не) справляется с этой задачей. Опрос займет около 3 минут, результаты опубликуем на сайте proglib.io ориентировочно 19 сентября.

https://forms.gle/kuFeTtoHhKQW2Ekc8
Интерфейс RequestDispatcher используется для передачи запроса другому ресурсу, при этом существует возможность добавления данных, полученных из этого ресурса к собственному ответу сервлета. Так же этот интерфейс используется для внутренней коммуникации между сервлетами в одном контексте.

В интерфейсе объявлено два метода:

☕️ void forward(ServletRequest var1, ServletResponse var2) — передает запрос из сервлета к другому ресурсу (сервлету, JSP или HTML файлу) на сервере.
☕️ void include(ServletRequest var1, ServletResponse var2) — включает контент ресурса (сервлет, JSP или HTML страница) в ответ.
Доступ к интерфейсу можно получить с помощью метода интерфейса ServletContext - RequestDispatcher getRequestDispatcher(String path), где путь, начинающийся с /, интерпретируется относительно текущего корневого пути контекста.
Взаимная блокировка (deadlock) - явление, при котором все потоки находятся в режиме ожидания. Происходит, когда достигаются состояния:

1. взаимного исключения: по крайней мере один ресурс занят в режиме неделимости и, следовательно, только один поток может использовать ресурс в любой данный момент времени.
2. удержания и ожидания: поток удерживает как минимум один ресурс и запрашивает дополнительные ресурсов, которые удерживаются другими потоками.
3. отсутствия предочистки: операционная система не переназначивает ресурсы: если они уже заняты, они должны отдаваться удерживающим потокам сразу же.
4. цикличного ожидания: поток ждёт освобождения ресурса, другим потоком, который в свою очередь ждёт освобождения ресурса заблокированного первым потоком.

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

Метод Thread.holdsLock(lock) возвращает true, когда текущий поток удерживает монитор у определённого объекта.
#вопросы_с_собеседований
Для чего используются ключевые слова volatile, synchronized, transient, native?