Уютное сообщество джавистов
رفتن به کانال در Telegram
Уютное сообщество джавистов - это хорошие материалы,задачки, туториалы для проверки знаний и обратная связь от соратников по изучению. @viktorreh
نمایش بیشتر2 064
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-77 روز
-1930 روز
آرشیو پست ها
Java for Web Development
Автор: Sarika Agarwal
Год издания: 2022
#java #книги #en
Скачать книгу
Зачем нужен протокол HTTP? Узнайте на открытом уроке «Основы протокола HTTP», который состоится 🗓 15 июня в 20:00 мск в OTUS!
На занятие мы:
- углубимся в историю этого протокола,
- разберем его до мельчайших деталей,
- изучим работу HTTPS,
- немного коснемся HTTP-серверов и REST
Встречу проведет 👨💻 Никита Сапогов — руководитель backend-разработки в Ситилинк.
👉 Чтобы записаться на урок, пройдите вступительное тестирование — https://otus.pw/GHnc/
Больше полезных навыков будет ждать вас на онлайн-курсе OTUS «Highload Architect». Курс можно приобрести удобным для вас способом.
Реклама. Информация о рекламодателе на сайте www.otus.ru
VM Options
— это параметры, которые указываются при запуске JVM. В этом посте расскажу, чем они отличаются, и как безопасно перейти на новую версию java. В конце будет список самых популярных (и полезных) опций.
Все JVM опции делятся на три группы:
⚙️ Стандартные
Пишутся через минус и поддерживаются всеми JVM.
Пример:
-classpath, -server, -version
⚙️ Нестандартные
Начинаются на -Х и определяют базовые свойства JVM. Могут не работать во всех JVM, но если поддерживаются, то вряд ли удалятся.
Пример: -Xmx, -Xms
⚙️ Продвинутые
Начинаются на -ХХ и касаются внутренних механизмов JVM. Не поддерживаются всеми JVM, часто меняются и удаляются.
Пример: -XX:MaxGCPauseMillis=500
Некоторые продвинутые опции требуют дополнительных флажков. Для экспериментальных фич обязателен -XX:+UnlockExperimentalVMOptions. Многие фичи диагностики не заработают без -XX:+UnlockDiagnosticVMOptions
Количество опций часто меняется. В 11 версии OpenJDK 1504 опции, а в 17 на 200 опций меньше.
Цикл отключения опций не совсем стандартный. В обычном коде что-то помечается Deprecated, и спустя время удаляется. VM Options используют более длинный цикл:
🔸 Deprecate: функционал работает, при запуске появляется warning
🔸 Obsolete: функция не выполняется, JVM пишет предупреждения
🔸 Expired: JVM не запускается
Многие опции очень нестабильны и часто меняются. Чтобы безопасно обновить версию java, нужно проверить набор опций через JaCoLine . Он подсветит устаревшие или уже бесполезные опции.
Полезные опции для java 11
(да, недавно вышла java 20, но самая популярная версия всё ещё 11)
1️⃣ Память
▫️ Начальный размер хипа: -Xms256m в абсолютных значениях, -XX:InitialRAMPercentage=60 - в процентах от RAM
▫️ Максимальный размер хипа: -Xmx8g или -XX:MaxRAMPercentage=60
▫️ Снять heap dump при переполнении памяти: -XX:+HeapDumpOnOutOfMemoryError. Адрес выходного файла задаётся в -XX:HeapDumpPath
2️⃣ Сборщик мусора
▫️ Serial GC: -XX:+UseSerialGC
▫️ Parallel GC: -XX:+UseParalllGC
▫️ CMS: -XX:+UseConcMarkSweepGC
▫️ G1: -XX:+UseG1GC (вариант по умолчанию)
▫️ ZGC: -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
▫️ Shenandoah: -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC
Вывести статистику сборщика при завершении работы: -XX:+UnlockDiagnosticVMOptions ‑XX:NativeMemoryTracking=summary ‑XX:+PrintNMTStatistics
Базовое логгирование коллектора: -Xlog:gc
Максимально информативное: -Xlog:gc*
3️⃣ Посмотреть все доступные опции
⚙️ Нестандартные: java -X
⚙️ Продвинутые: java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal🔥Хардкорный тест по Java🔥
🤖Готов выбрать светлую сторону силы, юный падаван? Пройди тест из 20 вопроса и испытай себя, сможешь сдать — пройдёшь на продвинутый онлайн-курс «Java Developer. Professional» от OTUS со скидкой!
🦸🏼♂️Компании-партнеры ждут, когда ты овладеешь этим мастерством. Проходи вступительный тест и помни большая сила — большая ответственность!
📌ПРОЙТИ ТЕСТ - https://otus.pw/OJHt/
💪🏻Хочешь протестировать учебный процесс заранее? Регистрируйся на бесплатное демо-занятие:
🔸 Регистрация на вебинар 21 Июня в 20:00 - «Конечные автоматы»
Регистрируйся сейчас - напомним в день вебинара!
Нативная интеграция. Информация о продукте www.otus.ruЧто такое «сервлет»?
Сервлет является интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.
Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах
javax.servlet и javax.servlet.http.
Основные методы сервлета:
• public void init(ServletConfig config) throws ServletException запускается сразу после загрузки сервлета в память;
• public ServletConfig getServletConfig() возвращает ссылку на объект, который предоставляет доступ к информации о конфигурации сервлета;
• public String getServletInfo() возвращает строку, содержащую информацию о сервлете, например: автор и версия сервлета;
• public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException вызывается для обработки каждого запроса;
• public void destroy() выполняется перед выгрузкой сервлета из памяти.Многие компании уже перешли на микросервисную архитектуру. Хотите оставаться востребованным на рынке IT? Тогда самое время пополнять свой багаж знаний! Приходите 🗓 13 июня в 20:00 на открытый урок «DDD и модульные монолиты», который приурочен к старту онлайн-курса «Microservice Architecture» в OTUS.
На занятии мы рассмотрим:
— Основы domain-driven design
— Применение DDD к предметно-ориентированному проектированию
— Поймем, как DDD помогает в построении архитектуры.
👨💻 Спикер — Станислав Щетинников, директор разработки с 10-летним опытом. Архитектурой систем занимается уже больше 8 лет.
👉 Пройдите вступительный тест, чтобы записаться на урок — https://otus.pw/8JkB3/
Вебинар приурочен к старту онлайн-курса «Microservice Architecture» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.
Реклама. Информация о рекламодателе на сайте www.otus.ru
Exceptions in Java
Автор: Nik Lumi
Год издания: 2022
#java #книги #en
Скачать книгу
⌨️Изучать Java с нуля гораздо интереснее, если сразу начать делать игры!
При работе на Java вы вряд ли столкнетесь с разработкой игр, однако так вы сможете увидеть, как изменение кода приводит к изменению поведения программ.
📆Приглашаем 8 июня в 20:00 на открытый урок «Создание игры на Java и LibGDX с нуля». Вебинар приурочен к старту специализации «Java Developer».
На вебинаре создадим небольшую двумерную игру на Java с нуля, изучим принципы кодирования и разработаем логику игры на ходу.
Урок будет полезен тем, кто хочет:
— Начать изучать Java с нуля.
— Создать свою игру и уже имеет базовые навыки программирования.
В результате урока вы:
— Увидите, как пишется код и создаются программы на языке Java.
— Узнаете, из каких базовых блоков строятся программы.
После вебинара онлайн-курс можно приобрести в рассрочку.
➡️Для участия зарегистрируйтесь:
https://otus.pw/Kp9I/
Нативная интеграция. Информация о продукте www.otus.ru
https://t.me/booksforjava - дополнительный канал, где можно скачать книги по нашей любимой JAVA. Подписывайтесь и качайте
Можно ли к блоку try-with-resources подключить блок finally?
А вы уже знакомы с Prometheus — мощным инструментом для сбора и визуализации данных? Если хотите начать работать с метриками, приходите 🗓 30 мая в 20:00 мск на открытый урок «Метрики и Prometheus» в OTUS.
Спикером выступит 👨💻 Евгением Непомнящим, опытный разработчик в IT-Sense, специализирующийся на C++ и Java.
На занятии мы обсудим:
— Зачем нужны метрики и какие виды бывают
— Особенности Prometheus и его внутреннее устройство
— Развертывание Prometheus в Kubernetes и интеграция с приложениями
А также вместе с экспертом сами сделаем приложение на Spring Boot с метриками для Prometheus.
👉 Пройдите вступительный тест, чтобы записаться на урок — https://otus.pw/wxp7/
Вебинар приурочен к старту онлайн-курса «Microservice Architecture» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.
Реклама. Информация о рекламодателе на сайте www.otus.ru
Как и когда происходит увеличение количества корзин в HashMap?
Помимо capacity у HashMap есть еще поле loadFactor, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor. По умолчанию loadFactor = 0.75. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.
#вопросы_с_собеседований
Что такое ClickHouse и как эффективно использовать его в высоких нагрузках? Разберемся в этом вместе с экспертом 🗓 29 мая в 20:00 на открытом уроке.
На этой встрече детальнее рассмотрим:
- SQL диалект,
- физическое хранение данных,
- индексацию данных и разреженные индексы,
- различные движки: MergeTree, Log.
Спикером выступит 👨💻 Андрей Поляков, старший разработчик в Unlimint с опытом бэкенд-разработки более 6 лет.
👉 Пройдите вступительный тест, чтобы записаться на урок — https://otus.pw/tYBj/
Больше полезных навыков будет ждать вас на онлайн-курсе OTUS «Highload Architect». Курс можно приобрести удобным для вас способом.
Реклама. Информация о рекламодателе на сайте www.otus.ru
Learning Java
Авторы: Marc Loy, Patrick Niemeyer
Год издания: 2020
#java #книги #en
Скачать книгу
♨️ Тест на знание языка Java
— Ответьте на 21 вопрос и проверьте, насколько хорошо вы знаете язык Java и готовы освоить Spring. Сможете сдать — пройдёте на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!
👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework"
Курс доступен в рассрочку.
🎁 Пройдете успешно тест, получите доступ к открытым урокам курса.
Нативная интеграция. Информация о продукте www.otus.ruОбъясните разницу между Linkedlist и Arraylist.
ArrayList — это реализация интерфейса List, основанная на массиве. ArrayList внутренне обрабатывает изменение размера этого массива при добавлении или удалении элементов. Вы можете получить доступ к его элементам за константное время по их индексу в массиве. Однако вставка или удаление элемента подразумевает сдвиг всех последующих элементов, что может быть медленным, если массив огромен, а вставленный или удаленный элемент находится близко к началу списка.
LinkedList — это двусвязный список: отдельные элементы помещаются в объекты Node (узел), которые имеют ссылки на предыдущий и следующий Node. Эта реализация может оказаться более эффективной, чем ArrayList, если у вас много вставок или удалений в разных частях списка, особенно если список большой.
Однако в большинстве случаев ArrayList превосходит LinkedList. Даже перемещение элементов в ArrayList, хотя и является операцией O(n), реализовано в виде очень быстрого вызова System.arraycopy(). Это может даже оказаться быстрее, чем O(1) вставка в LinkedList, которая требует создания экземпляра объекта Node и обновления нескольких ссылок под капотом. LinkedList также может иметь большие накладные расходы памяти из-за создания нескольких небольших Node объектов
#вопросы_с_собеседований
Intellij IDEA: комментарии TODO
Часто встречаются ситуации, когда нужно запомнить место в коде:
⭐️ Внести изменения по задаче, но чуть позже
⭐️ Отметить непокрытый тестами код
⭐️ Обсудить метод с коллегой
Для таких случаев в IDEA есть специальный тип комментариев. Он начинается со слов
TODO и выглядит так:
// TODO добавить тестыВсе такие комментарии можно посмотреть в окне TODO внизу экрана. Через него же можно перейти в нужное место кода в один клик. Если списка нет, ищите его через View → Tool Windows → TODO Помимо стандартных
TODO и FIXME можно добавить свои метки, например, OPTIMIZE, ASK, TEST. Сделать это можно в File → Settings → Editor → TODO
Очень удобно использовать TODO для текущих задач, чтобы ничего не забыть. Чтобы отметить код, который исправит кто-то другой, не забудьте закинуть соответствующую задачу в бэклог:)Можно ли построить успешную карьеру человеку, который до этого не работал в высокотехнологичной области? Да! К тому же, для некоторых IT-профессий не нужно специализированное техническое образование.
Записывайтесь на бесплатную онлайн-профориентацию с Кириллом Мокевниным, СЕО Хекслета.
🗓 Начинаем 16 мая в 19:00 по мск.
Вы узнаете всё о востребованных языках программирования, наиболее перспективных направлениях и возможностях карьерного роста с junior до middle. Пройдете онлайн-тест и поймете, какая IT-профессия подходит именно вам.
🎁 Зарегистрируйтесь и получите в подарок гайд «Как разговаривать на сленге IT-специалистов»!
Поучаствуйте в откровенном разговоре. Задайте вопросы эксперту и сделайте первый шаг к новой профессии. Регистрация по ссылке —> https://ru.hexlet.io/link/Y1IMot
Java Memory Management
Автор: Maaike van Putten
Год издания: 2022
#java #книги #en
Скачать книгу
Хотите перейти с Java на Go? Приходите 🗓 15 мая в 20:00 мск на открытый урок, где мы разберем слайсы и массивы простым языком на примерах.
В отличие от Java, Golang обеспечивает быструю компиляцию и запуск программ, что позволяет ускорить процесс разработки. Кроме того, он имеет более простой и понятный синтаксис, что делает его более доступным для начинающих разработчиков.
На занятии вы узнаете:
– Как устроены массивы и слайсы внутри
– Какие ошибки чаще всего допускают программисты при работе с ними
– Как применять эти знания на практике
👨💻 Занятие проведет Владимир Балун, ведущий разработчик в Ozon и преподаватель OTUS.
👉 Регистрируйтесь для участия — https://otus.pw/J5aP/
Вебинар приурочен к старту онлайн-курса «Golang Developer. Professional» в OTUS. Курс доступен в рассрочку.
Реклама. Информация о рекламодателе на сайте www.otus.ru.
