🔥В OTUS продолжается набор в группу курса Kotlin Backend Developer Professional. Это отличная возможность расширить свои возможности разработки на Kotlin!
18 октября в 19:00 мск. приглашаем на бесплатный урок «Возможности Kotlin для создания DSL на примере JsonBuilder».
⚡️На занятии:
- рассмотрим общую теорию о DSL: назначение, особенности, практика;
- попрактикуемся в создание DSL на примере JsonBuilder;
- рассмотрим возможности Kotlin, полезные для создания DSL;
- узнаем, как создавать собственные DSL и применять их при написании приложения;
- познакомимся с замыканиями и extension-методами.
Отправьте заявку, чтобы записаться на урок и получить спец. условия при поступлении в группу.
👉Регистрация https://otus.pw/797v/
❗️Легендой курса является разработка стартапа. В рамках легенды обсуждается реализация экстремальных проектов, в которых сочетаются высокая неопределенность и жесткие ограничения по времени и ресурсам. При покупке курса возможна рассрочка платежа
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K2Mns
Как Greenplum помогает аналитикам и архитекторам?
Эта БД используется для сложной аналитики по большим объёмам данных. Она быстро выполняет сложные аналитические запросы благодаря MPP-архитектуре и сочетает в себе возможность масштабируемости на десятки терабайт, строгую консистентность данных, ANSI SQL и джойны.
Изучите эту технологию на бесплатном открытом уроке «Greenplum в высоконагруженных системах» от OTUS.
На эфире разберем:
- Обзор аналитических возможностей Greenplum
- Настройку Greenplum для высоконагруженных систем
- Пример с использованием Greenplum в реальной системе
🔥 Преподаватель Дмитрий Золотов – Flutter+Kotlin Developer в Yandex.
📅 Занятие пройдёт 16 октября в 20:00 мск в рамках курса «Highload Architect».
🌐 Зарегистрируйтесь на событие прямо сейчас: https://otus.pw/fa4HD/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K1MM5
Опрос для опытных ИТ-специалистов.
Поделитесь мнением об ИТ-работодателях. Напишите, что вам нравится, а что — нет. Так компании смогут исправить ошибки, улучшить условия и присылать офферы, на которые хочется соглашаться.
Посмотрите, это займет не больше 10 минут
Типичный программист — сюда айтишники заходят отдохнуть от тупых заказчиков и бесконечных правок.
Залетай, тут уже угарают над твоим говнокодом: /channel/+H1tY9ytqhP1iNTk6
Интерфейс UnaryOperator
Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function
.UnaryOperator
часто используется в stream API
для применения функций к элементам потока.
В примере UnaryOperator
используется для преобразования строк в верхний регистр с помощью метода map()
.
shutdown hook
Shutdown hook позволяет приложению выполнить некоторый код перед завершением приложения.
Для создания hook
нужно создать объект класса Thread
и передать его в метод addShutdownHook()
класса Runtime
.
Когда приложение завершается, все заданные hook
выполнятся последовательно.Shutdown hook
работает в случае нормального или аварийного завершения приложения и часто используется для освобождения ресурсов, закрытия соединений, сохранения данных.
#это_база
Что значит быть дата-инженером?
Присоединяйся к бесплатной Q&A сессии:
Расскажем, что такое быть дата-инженером, как им стать, и как развиваться в профессии.
Все в формете Q&A, задавай любые вопросы опытным дата-инженерам. Помни, самый глупый вопрос – незаданный 😉
Кому будет полезно:
✅ junior DE - если только начинаешь свой путь дата-инженера, сможешь задать вопрос опытным коллегам
✅ DS и DA - сможешь узнать больше о типах задач, с которыми работают дата-инженеры
✅ разработчики - если хочешь сменить профессию, попробовать свои силы в данных, то вебинар поможет разобраться с вектором развития
✅ техлиды и менеджеры - вебинар поможет определить направление развития вашей дата-команды
Бонусы зарегистрированным: разыграем 2 бесплатных места на поток «Data-Engineer 13.0». Дополнительно два счастливчик получат скидку 50%.
Спикеры:
🕶 Игорь Мосягин, Klarna
🧢 Алексей Ница, NewProLab
📅Дата: 10 октября 2023
🕗Время: 20:00 по МСК
🔵Место: YouTube
🔗[Записаться на бесплатный вебинар]
#вопросы_с_собеседований
Какие есть режимы доступа к файлу?
В Java есть несколько режимов доступа к файлам:
— Read (чтение): открывает файл для чтения, позволяет читать данные из файла.
— Write (запись): открывает файл для записи, позволяет записывать данные в файл. При этом старое содержимое файла удаляется.
— Append (добавление): открывает файл для записи, но данные добавляются в конец файла, старое содержимое сохраняется.
— RandomAccess (произвольный доступ): позволяет читать и записывать данные в произвольном месте в файле.
Для указания режима доступа используются константы из класса File:
File.READ, File.WRITE, File.APPEND и т.д.
Выбор нужного режима зависит от задачи, а комбинируя режимы, можно получить различные варианты работы с файлами.
ServletRequest
ServletRequest — это интерфейс, который предоставляет доступ к запросу, полученному сервлетом. Он используется для получения данных из запроса, таких как параметры, заголовки, атрибуты и др.ServletRequest
позволяет сервлету взаимодействовать с клиентом вне зависимости от деталей реализации или протокола запроса.
В этом примере из запроса получается параметр "name" с помощью метода getParameter()
. Затем это значение используется для вывода приветствия в ответ клиенту.
Митапы от Сбера для IT-сообщества — это всегда интересно, весело и очень полезно. Следующий, кстати, пройдёт уже 17 октября в Рязани 👨💻
В этот раз банк приглашает специалистов на IT Talk by Sber, чтобы поговорить о трёх вехах разработки: frontend, backend и ML. Ведущие эксперты расскажут:
✔️ Чем может быть полезен GraalVM и как его эффективно применяют в платёжном шлюзе Сбера? Спикер — главный разработчик платёжного шлюза Сбера - Антон Ленок.
✔️ Системы сборки: в погоне за скоростью. Спикер – руководитель направления frontend–разработки в команде Брокерского бизнеса - Василий Маркитан.
✔️ Как работает GigaChat и где его использовать? Спикер — ML-инженер департамента SberDevices — Эль-Айясс Дани Валид.
Помимо новых знаний, в программе будет розыгрыш мерча, интерактивная фотозона для лучших кадров, нетворкинг и вкуснейший кейтеринг.
Скорее регистрируйтесь по ссылке. Встречаемся 17 октября в 18:30 в лофт-пространстве «Свобода» по адресу: Соборная площадь, 21 💚
Привет! На связи организатор IT-конференций по разным направлениям разработки Podlodka Crew.
♨️ Приглашаем посетить третий сезон Podlodka Java Crew. Окунёмся в масштабную и важную для каждого Java-разработчика тему «Работа с базой данных» и рассмотрим её со всех возможных сторон. Ведь какой бэкенд без SQL?
В этом сезоне вас ждёт много дискуссий, мнений и нетворкинга. В программе не только технические доклады, но ещё и два публичных собеседования, воркшопы и круглый стол:
🔸 Поговорим про паттерны обработки данных - стриминг, батчи, cdc;
🔸 Узнаем, как не наступить на грабли сочетая Debezium с Postgres;
🔸 Разберёмся в тонкостях CRUD-сервисов: Spring, Jooq, PostgreSQL, Liquibase, Testcontainers
🔸 Сравним использование NoSQL и SQL баз данных на конкретных примерах.
🤓 А ещё в программе — традиционный бар на тему «Интеграция через базу — не антипаттерн» — обсудим и поделимся опытом.
🤑 Для ранних пташек — низкие цены! Посмотреть программу и купить билет со скидкой можно на сайте: https://podlodka.io/javacrew
Community Day на Joker 2023 🔥
Joker 2023 совсем скоро, и у вас еще есть возможность купить билет со скидкой по промокоду SENIORJAVIST
.
Но если вы не готовы купить билет на конференцию, то присоединяйтесь к бесплатному Community Day 10 октября.
Этот день такой же насыщенный, как и другие дни конференции:
✔ Доклады о производительности, эволюции Java, архитектуре и Machine Learning.
✔ Воркшоп «Пишем на Idiomatic Kotlin».
✔ Дискуссии со спикерами и участниками после докладов.
✔ Чат с коллегами со всего мира.
➡️ Для участия достаточно зарегистрироваться.
Увидимся на Joker 2023!
Реклама, ООО «Джуг Ру Груп», ИНН 7801341446, erid 2RanykjNUz4
DoubleAdder
DoubleAdder — это класс из пакета java.util.concurrent, предназначенный для эффективного параллельного суммирования значений типа double.DoubleAdder
оптимизирован для многопоточных приложений, когда нужно подсчитать сумму или другое агрегатное значение из большого числа потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Хорошо масштабируется на большом количестве CPU ядер.
Метод delete() класса StringBuffer
Метод delete() в классе StringBuffer используется для удаления символов из строки. Он удаляет символы из строки, на которой он был вызван.
В качестве аргумента принимает начальный индекс и конечный индекс удаляемого фрагмента и сдвигает оставшиеся символы влево, замещая удаленные.
Возвращает ссылку на текущий объект StringBuffer
.
#это_база
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшее мероприятие:
• 7-8 октября — Fast Track для С++ разработчиков, офер за 2 дня в команды Фудтеха и Яндекс Маркета.
Зарегистрироваться
Реклама. ООО "Яндекс". erid:2VtzqwWoJws
Приоритеты потоков
Приоритеты потоков используются для определения того, как операционная система должна разделять вычислительные ресурсы между потоками. Приоритеты потоков представлены целыми числами от 1 до 10, где 1 — минимальный приоритет, а 10 — максимальный приоритет. По умолчанию все потоки имеют нормальный приоритет (5).
Здесь важно понимать, что приоритеты могут вести себя по-разному в зависимости от операционной системы и JVM. На некоторых системах высокоприоритетные потоки могут получать больше времени выполнения, чем низкоприоритетные, но это не гарантировано.
#для_продвинутых
Маршалинг
Маршалинг (marshaling) — это процесс преобразования объектов в другой формат, который может быть использован для передачи данных через сеть, сохранения на диске или для других целей. Он также известен как сериализация. Обратным процессом является демаршалинг (unmarshaling или десериализация), который восстанавливает объекты из сериализованных данных.
#для_продвинутых
FixedThemeResolverFixedThemeResolver
— это класс из пакета Spring Framework, который используется для установки фиксированной темы (или стиля) для веб-приложения. Тема определяет внешний вид компонентов пользовательского интерфейса, таких как цвета, шрифты, изображения и т. д.
Когда вы создаете веб-приложение с использованием Spring Framework, вы можете хотеть дать пользователю возможность выбора темы или стиля. FixedThemeResolver
предоставляет простой способ жестко задать тему в коде и применить ее ко всем страницам вашего веб-приложения.
#для_продвинутых
Класс StringJoiner
Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.StringJoiner
часто используется при необходимости преобразовать коллекцию объектов в строку.
В примере StringJoiner
используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.
🥶 Забудь о Web2 Программировании: Переходи на Web3 и Зарабатывай От $60,000!
Если ты разработчик, но до сих пор не в теме Web3, то упустил множество возможностей. Middle Web3 разработчики уже зарабатывают от $5,000 до $8,000 в месяц!
🔎 Что такое Web3 в двух словах, и как стать мастером блокчейн-разработки?
🔎 Какие перспективы ждут именно тебя на рынке Web3, учитывая твой текущий стек?
🔎 Вакансии, зарплаты и требования к блокчейн-разработчикам: разберем на реальных примерах с рынка.
🔎 Как за 2 года увеличить доход до $5,000+ и стать Middle в Web3?
🔎 Апгрейд: как стать более востребованным, не меняя текущий стек?
✈️ И даже поделимся секретами релокации и работы в международной компании!
🗺 Построим личный роадмеп и разберем все это на 30-минутной бесплатной консультации:
Как действующему программисту расширить стек до Web3 и стать блокчейн-разработчиком на Solidity, увеличив доход в $ за несколько месяцев!
👨💼 Кто проводит?
Рекрутеры Crypton Studio — крупнейшей студии блокчейн-разработки в Европе (6 лет на рынке, более 160+ сотрудников, в числе которых 63% разработчиков, огромное портфолио из более чем 100 успешно реализованных проектов для клиентов из 20 стран). Они запустили новый проект MarniD и телеграм-канал, где можно учиться на их опыте!
Места на консультацию ограничены
Если ты действующий разраб, то переходи на сайт и оставляй заявку — ссылка
Команда свяжется с тобой и забронирует слот на Zoom! Узнай о своих возможностях на рынке будущего!
Класс AbstractSet
AbstractSet — это абстрактный класс, который предоставляет базовую реализацию интерфейса Set. Он входит в java.util
пакет.AbstractSet
реализует большинство методов интерфейса Set
, оставляя для подклассов только методы size()
и iterator()
. Это позволяет создавать подклассы с минимальным кодом.
Для хранения элементов AbstractSet
использует объект Collection
, передаваемый в конструктор.
Методы add()
, remove()
, contains()
делегируют работу соответствующим методам внутренней коллекции.
Методы size()
, isEmpty()
, clear()
и другие используют объект коллекции для реализации.
#это_база
#вопросы_с_собеседований
Какие условия “благополучной” сериализации объекта?
Для успешной сериализации объекта должны выполняться следующие условия:
1. Класс объекта должен имплементировать интерфейс Serializable.
2. В классе должно быть определено serialVersionUID — идентификатор версии класса. Это нужно для совместимости версий класса при десериализации.
3. Все поля класса должны быть сериализуемыми типами данных. Примитивные типы сериализуются автоматически, для объектов вложенных классов нужно также выполнить условия сериализации.
4. Если в классе есть поля, которые не нужно сериализовывать, они помечаются модификатором transient.
5. Методы класса сериализации не подлежат, сериализуются только данные объекта.
6. Класс должен иметь конструктор по умолчанию без параметров для корректной десериализации.
ServletResponse
ServletResponse — это интерфейс, который предоставляет сервлету возможности для формирования ответа клиенту. Он используется для отправки данных в ответ на запрос клиента.ServletResponse
позволяет абстрагироваться от деталей протокола и реализации при формировании ответа.
Здесь с помощью ServletResponse
устанавливается тип ответа, получается объект для записи, и формируется HTML-страница в качестве ответа клиенту.
ServletContext
ServletContext предоставляет сервлету доступ к контексту веб-приложения. Он содержит общую информацию о приложении и позволяет сервлетам взаимодействовать.
Доступ к ServletContext
можно получить через метод getServletContext()
класса ServletConfig
.
Через ServletContext
можно получить данные инициализационных параметров web.xml.ServletContext
позволяет сервлетам оставлять атрибуты, доступные всем сервлетам данного приложения.
Также с его помощью можно получить ресурсы приложения, например потоки ввода-вывода.
#это_база
ServletConfig
ServletConfig используется для настройки сервлетов при их инициализации.
Основные моменты, которые следует знать о ServletConfig
:
— ServletConfig
предоставляет сервлету доступ к инициализационным параметрам. Эти параметры определяются в дескрипторе развертывания (например, web.xml).
— Для получения экземпляра ServletConfig
используется метод getServletConfig()
, вызываемый в методе инициализации сервлета init()
.
— Через ServletConfig
можно получить доступ к контексту сервлета с помощью метода getServletContext()
.
— Можно получить значение инициализационного параметра по имени с помощью метода getInitParameter()
.
— Можно перечислить все инициализационные параметры методом getInitParameterNames()
.
#это_база
#вопросы_с_собеседований
Как правильно сравнить значения строк двух различных объектов типа String и StringBuffer?
Чтобы сравнить значения строк из этих классов, нужно преобразовать их к одному типу, например String.
Для объекта StringBuffer можно вызвать метод toString(), который вернет строку типа String.
После этого значения уже можно сравнивать с помощью метода equals().
Или для простого сравнения значений можно использовать метод compareTo(), который вернет 0 если строки равны.
#вопросы_с_собеседований
Как получить не модифицируемую коллекцию?
Чтобы создать неизменяемую коллекцию, можно использовать интерфейс Collection и его реализации, такие как ArrayList или HashSet.
Экземпляр коллекции по умолчанию является изменяемым, но можно создать неизменяемую версию, вызвав метод Collections.unmodifiableCollection() и передав ему изменяемую коллекцию.
Этот метод вернет обертку этой коллекции, которая будет неизменяемой. Попытка модифицировать возвращенную коллекцию приведет к ошибке UnsupportedOperationException.
LongAdder
LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.LongAdder
применяется в многопоточных приложениях, когда нужно эффективно подсчитать сумму или другое агрегатное значение из нескольких потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
Метод trimToSize()
Метод trimToSize() используется для оптимизации размера внутреннего массива коллекций, таких как ArrayList или HashMap.
Этот метод позволяет уменьшить размер внутреннего массива коллекции до текущего количества элементов, то есть избавиться от неиспользуемой памяти.
Вызывать этот метод имеет смысл после массового удаления элементов из коллекции, чтобы освободить лишнюю память.
При добавлении новых элементов размер массива автоматически увеличится.
Метод trimToSize()
является необязательной оптимизацией производительности и памяти. Его можно не вызывать, в этом случае внутренний массив будет занимать максимальный размер.
#это_база
#вопросы_с_собеседований
Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
— Если в блоке try вызвать метод System.exit(). Это приведет к немедленному завершению приложения, и блок finally пропускается.
— Если произойдет аварийное завершение JVM, например OutOfMemoryError. В этом случае JVM останавливается без выполнения finally.
— Если в блоке try выбрасывается исключение Error или его подклассы (например, StackOverflowError). Такие исключения обычно означают серьезную проблему, поэтому JVM не гарантирует выполнение finally.
— Если при выполнении кода в блоке try произошел deadlock. В этом случае поток зависает, и блок finally не выполняется.
— Если программа была принудительно остановлена, например, по kill -9 в Linux.