Библиотека джависта | 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
加入频道
Дело в том, что «висеть» на методе wait() одного монитора могут сразу несколько потоков. При вызове notify() только один из них выходит из wait() и пытается захватить монитор, а затем продолжает работу со следующего после wait() оператора. Какой из них выйдет - заранее неизвестно. А при вызове notifyAll(), все висящие на wait() потоки выходят из wait(), и все они пытаются захватить монитор. Понятно, что в любой момент времени монитор может быть захвачен только одним потоком, а остальные ждут своей очереди. Порядок очереди определяется планировщиком потоков Java.
GeekBrains открывает факультет Fullstack JavaScript

Подготовительные курсы пройдут в ноябре, а обучение начнется в январе 2021 года. Рассчитанная на 15 месяцев программа позволит студентам освоить профессию разработчика полного цикла. Успешно окончив курс, они смогут запустить собственные проекты: сайты, мобильные приложения и высоконагруженные сервисы. Преподают на факультете ведущие специалисты из GeekBrains и Delivery Club, а затруднения с домашними заданиями поможет решить наставник. Помимо основ HTML, CSS и JavaScript, в учебную программу входят продвинутые темы: современная фронтенд-разработка, бэкенд-разработка, базы данных, сетевые протоколы, многопоточные приложения, взаимодействие в команде и многое другое. Гарантия трудоустройства закреплена в договоре — опытный HR поможет вам составить резюме.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/cbf6a980
👨‍🎓 35 приложений для изучения программирования на iOS и Android

Лучшие приложения для Android и iOS, которые научат детей логическому мышлению и основам кодинга. Для взрослых более сложные игрушки: Java, С, машинное обучение и Data Science.

https://proglib.io/sh/q2R9OsS4yE
GeekBrains запускает курс «Блокчейн-разработка»

Обучение начнется 2 ноября и продлится 4 месяца. Курс рассчитан на еще не знакомых с темой и уже имеющих некоторый опыт разработчиков. Технологический стек: командная оболочка, TCP/IP, Git и любой язык для backend. Занятия ведут участвующие в блокчейн-проектах преподаватели, а программа на 70% состоит из интерактивных вебинаров. Студенты изучат основы криптографии и распределенного реестра, а затем перейдут к более сложным темам: протоколам консенсуса и анонимизации, смарт-контрактам, закрытым блокчейнам и системам с разрешениями, масштабированию сетей блокчейн и пользовательским аспектам применения технологии. После обучения эксперты криптобиржи Binance проведут для студентов карьерные консультации, а возникающие в процессе затруднения поможет разрешить личный наставник.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/9b16b77c
Building Java Programs: A Back to Basics Approach (2019)
Автор: Stuart Reges, Marty Stepp
Количество страниц: 1232

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

Скачать книгу
GeekBrains запускает курс «Data Science в медицине»

За 18 месяцев начинающие специалисты освоят применение методов Data Science в здравоохранении. Опытные преподаватели будут проводить вебинары 2 — 4 раза в неделю, а закончившие курс студенты добавят в портфолио 16 учебных проектов. В программу входят основы высшей математики и программирования, введение в искусственный интеллект, а также продвинутые темы: ОС Linux и инструменты Data Science, сбор и обработка данных, нейронные сети, компьютерное зрение, машинное обучение и обработка естественного языка, а также применение методов AI, ML и Data Science в медицине. HR-менеджер поможет составить резюме и подготовиться к собеседованию.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/a417a814
#вопросы_с_собеседований
Почему не рекомендуется использовать метод Thread.stop()?
GeekBrains запускает курс «Машинное обучение»

Занятия начнутся в ноябре: за 6 месяцев студенты освоят востребованную профессию и получат практический опыт разработки проектов в сфере ML под руководством практикующих специалистов. Программа рассчитана на разработчиков-новичков и бизнес-аналитиков, но имеющие опыт разработчики также подчерпнут в ней немало полезного. После вводного блока занятий по математике, структурам данных и алгоритмам, будут рассмотрены сложные темы: библиотеки Python для Data Science, методы машинного обучения, нейронные сети, прототипирование и интеграция, а также бизнес-процесс машинного обучения. Студентам доступны карьерные консультации и помощь личного наставника в решении возникших затруднений.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/906326a7
При принудительной остановке (приостановке) потока, stop() прерывает поток в недетерменированном месте выполнения, в результате становится совершенно непонятно, что делать с принадлежащими ему ресурсами. Поток может открыть сетевое соединение - что в таком случае делать с данными, которые еще не вычитаны? Где гарантия, что после дальнейшего запуска потока (в случае приостановки) он сможет их дочитать? Если поток блокировал разделяемый ресурс, то как снять эту блокировку и не переведёт ли принудительное снятие к нарушению консистентности системы? То же самое можно расширить и на случай соединения с базой данных: если поток остановят посередине транзакции, то кто ее будет закрывать? Кто и как будет разблокировать ресурсы?
Освой Java-разработку на трёхдневном онлайн-интенсиве! Будем разбираться в коде сразу на практике и напишем программу для мониторинга активности рабочего стола.

Занятия бесплатные: https://clc.am/pMa5PQ.
Количество мест ограничено!

Почему изучение Java — это круто?

✔️ На нём создаются модульные программы, исходный код которых можно использовать многократно.
✔️ Написанные на Java приложения запускаются на разных ОС.
✔️ 3 млрд устройств работают на Java, в том числе Android.

Интенсив проведёт профи в своем деле, который уже более 15 лет работает в сфере Java и веб-разработки, является директором центра SymbioWay и находит IT-специалистов для крупнейших компаний России — Даниил Пилипенко. Он ответит на твои вопросы, поделится полезными советами и лайфхаками из мира программирования!

🎁 В конце интенсива всех участников ждут подарки от Skillbox и издательства «МИФ»!
#вопросы_с_собеседований
Что такое «денормализация»? Для чего она применяется?
Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных за счет увеличения избыточности данных.
#вопросы_с_собеседований
Какие подклассы класса Writer вы знаете, для чего они предназначены?
Убеждён, что Data Science — это не для всех? Мы докажем, что для разработки искусственного интеллекта достаточно базовой арифметики! Попробуй свои силы на бесплатном интенсиве от Skillbox.

Регистрация по ссылке: 🔜 https://clc.am/WZ3rlQ.
Для участия тебе не нужен опыт в программировании!


Что тебя ждёт?
⚙️ Экспресс-введение в Python.
⚙️ Работа с библиотеками Matplotlib и Scikit-Learn.
⚙️ Загрузка и визуализация данных.
⚙️ Построение модели от начала до конца.
⚙️ Оценка качества полученной модели.
⚙️ Подарки от Skillbox и издательства МИФ.

💡 Участвуй в интенсиве и убедись, что стать специалистом Machine Learning может каждый!
☕️ Writer - абстрактный класс, описывающий символьный вывод;
☕️ BufferedWriter - буферизованный выходной символьный поток;
☕️ CharArrayWriter - выходной поток, который пишет в символьный массив;
☕️ FileWriter - выходной поток, пишущий в файл;
☕️ FilterWriter - абстрактный класс, предоставляющий интерфейс для классов-надстроек;
☕️ UPD. OutputStreamWriter - является мостом между символьными потоками и байтовыми потоками. Записанные в него символы кодируются в байты с использованием указанной кодировки;
☕️ PipedWriter - выходной канал;
☕️ PrintWriter - выходной поток символов, включающий методы print() и println();
☕️ StringWriter - выходной поток, пишущий в строку.
#вопросы_с_собеседований
Перечислите принципы, которым вы следуете в многопоточном программировании?
При написании многопоточных программ следует придерживаться определённых правил, которые помогают обеспечить достойную производительность приложения в сочетании с удобной отладкой и простотой дальнейшей поддержки кода.

☕️ Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача. OrderProcessor, QuoteProcessor или TradeProcessor намного информативнее, чем Thread1, Thread2 и Thread3. Имя должно отражать задачу, выполняемую данным потоком.
☕️ Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
☕️ Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
☕️ Помните об обработке исключений. Выброшенные InterruptedException должны быть адекватно обработаны, а не просто подавлены. Так же не стоит пренебрегать Thread.UncaughtExceptionHandler. При использовании пула потоков необходимо помнить, что он зачастую просто «проглатывает» исключения. Так, если вы отправили на выполнение Runnable нужно обязательно поместить код выполнения задачи внутрь блока try-catch. Если в очередь пула помещается Callable, необходимо удостоверится, что результат выполнения всегда изымается с помощью блокирующего get(), чтобы в случае возникновения существовала возможность заново выбросить произошедшее исключение.
☕️ Почти всегда использование Concurrent сollection выгоднее использования Synchronized сollection, т.к. первые более современны (используют все доступные на момент их написания новшества языка) и масштабируемы, чем их синхронизированные аналоги.
#вопросы_с_собеседований
Опишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.
Когда пользователь переходит по ссылке на страницу page.jsp, он отправляет http-запрос на сервер GET /page.jsp. Затем на основе этого запроса и текста самой страницы сервер генерирует java-класс, компилирует его и выполняет полученный сервлет, формирующий ответ пользователю в виде представления этой страницы, который сервер и перенаправляет обратно пользователю.