PhaserPhaser
очень похож на более известную CountDownLatch
. Однако он предоставляет некоторые дополнительные функции. Он позволяет нам установить динамическое количество потоков, которые должны ждать перед продолжением выполнения.
С Phaser
определенное количество потоков должно дождаться барьера, прежде чем перейти к следующей фазе выполнения. Благодаря этому мы можем координировать несколько фаз выполнения.
#для_продвинутых
➡️ Пример Singleton в Java
🗣️ Этот код демонстрирует две реализации паттерна Singleton в Java, который гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к этому экземпляру.
•
В первой реализации используется класс с приватным конструктором и статическим методом для получения единственного экземпляра.•
Во второй реализации используется перечисление (enum), что обеспечивает автоматическую гарантию единственного экземпляра и потокобезопасность.
Читать полностью…
❕ Есть одна штука, которая мешает развивать продукт и внедрять новые функции.
Это устаревший легаси-монолит.
Поэтому архитектуру легаси-системы нужно обновлять. Однако процесс обновления часто влечёт за собой простои, баги и системные отказы.
Так как же всего этого избежать?
Поговорим на открытом вебинаре «Как обновить легаси-монолит и не поседеть?»
На встрече выступит Алексей Ягур, действующий тимлид с большим опытом программирования в ведущих компаниях.
⌨️Вы узнаете:
- Как проводить аудит существующей системы и планировать миграцию
- О различных подходах к обновлению легаси-монолитов
- Об актуальных инструментах и методиках, которые упрощают процесс миграции
- О том, как снизить риски при переходе на новую архитектуру
👍Бонус! Всем участникам – скидка 5% на любой курс OTUS и бесплатный чек лист по переходу от монолита к микросервисам
13 августа
19:00 МСК
Бесплатно
✅ Записаться на событиеРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ Создаем PDF-файл в Java
Этот код создает PDF-файл с использованием библиотеки iText в Java.•
Внутри метода main
создается новый PDF-документ, добавляются два параграфа: один с текстом "Hello Kiran
" и второй с текущей датой и временем.•
Затем документ сохраняется в файл C:\Test.pdf
. Если возникает ошибка, она выводится в консоль.
⚙️ Преобразование java.util.Date в java.sql.Date
Этот код преобразует дату из формата Java java.util.Date
в формат java.sql.Date
, который используется для работы с базами данных.
#вопросы_с_собеседований
Какие преобразования называются нисходящими и восходящими?
Восходящее преобразование (Upcasting) — это преобразование объекта дочернего класса в объект родительского класса. Преобразование может быть выполнено неявно, так как дочерний класс является подтипом родительского класса. Восходящее преобразование позволяет нам получить доступ к членам родительского класса, но не ко всем членам дочернего класса.
Нисходящее преобразование (Downcasting) — это преобразование объекта родительского класса в объект дочернего класса. Это преобразование не может быть выполнено неявно и требует явного указания типа. Нисходящее преобразование может быть опасным, так как оно может привести к ошибке ClassCastException, если типы не совместимы.
Как разбить строку на подстроки по заданному разделителю?
Мы можем использовать метод split(String regex) для разделения строки на массив символов, используя в качестве разделителя регулярное выражение.
Метод split(String regex, int numOfStrings) является перегруженным методом для разделения строки на заданное количество строк. Мы можем использовать обратную черту для использования специальных символов регулярных выражений в качестве обычных символов.
⚡️Шпаргалка по Maven
Maven — один из самых популярных и удобных инструментов для управления и сборки проектов на Java. Сохраняй и делись с друзьями!
Что делать, когда уже выучил Java Core, но его не хватает для трудоустройства?
С ростом конкуренции на рынке труда становится все сложнее выделиться среди других ИТ-специалистов и получить оффер. К тому же большинство работодателей ожидают от кандидатов владения масштабным стеком технологий.
Комплексная программа «Java-разработчик. Middle Developer» в гибридном формате с упором на практику с экспертом поможет превратить ваши навыки Java в профессиональное мастерство!
В рамках обучения вы будете работать над реальными проектами и сможете получить ценный практический опыт в области разработки.
✅ Старт курса — август 2024 г. Набор уже идет!
✅ Рассрочка без %. Онлайн-формат.
✅ Удобное расписание.
Начните с бесплатного мини-курса, чтобы понять подойдет вам обучение или нет.
RandomAccessFileRandomAccessFile
— это класс пакета Java IO API, который позволяет перемещаться по файлу, читать из него или писать в него, как вам будет угодно. Он обеспечивает несущественный доступ к файлам и ведет себя как большой массив байтов, хранящихся в файловой системе. Вы можете использовать его для чтения и записи данных в файл.
В этом примере мы создаем экземпляр RandomAccessFile
с режимом rw
, который позволяет нам читать и записывать данные в файл. Затем мы записываем строку "Hello, World!" в файл с помощью метода writeUTF()
. После этого мы перемещаем указатель файла в начало с помощью метода seek(0)
и читаем строку из файла с помощью метода readUTF()
. Наконец, мы выводим прочитанную строку на экран и закрываем файл.
ThreadDeathThreadDeath
представляет собой исключение, которое указывает на то, что поток должен быть остановлен. Это исключение является подклассом Error
, а не Exception
, потому что оно является нормальным явлением и не должно обрабатываться в коде приложения.
Когда поток получает исключение ThreadDeath
, он немедленно завершается. Если поток был заблокирован на мониторе, он сначала разблокирует монитор.
Важно отметить, что исключение ThreadDeath
не может быть обработано с помощью блока try-catch
. Если поток получает исключение ThreadDeath
, оно просто игнорируется и поток завершается.
#для_продвинутых
Не знаете, как правильно реализовать аварийное восстановление (DR) и высокую доступность (HA)?
А теперь представьте, что вы освоили основы DR и HA, понимаете их взаимосвязь и умеете применять архитектурные паттерны для обеспечения надежности и доступности.
Присоединяйтесь к открытому вебинару «Связь DR и HA в современных архитектурных решениях» 14 августа в 20:00 мск и сделайте этот прыжок в будущее! Там мы обсудим все эти проблемы и даже больше, а также разберем возникающие вопросы.
👨💻🛠👨🏻💻 Урок будет полезен Backend- и Fullstack-разработчикам, DevOps-инженерам, архитекторам ПО, IT-менеджерам и руководителям проектов.
🔴 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cyTRf2Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Класс Unsafe
Класс Unsafe
— это мощный, но опасный инструмент, который позволяет выполнять низкоуровневые операции с памятью и внутренними механизмами JVM. Его использование не рекомендуется для обычных задач веб-разработки или стандартных приложений, но он может быть полезен в специфических ситуациях, требующих высокой производительности и обхода стандартных механизмов Java.
#для_продвинутых
У вендора и производителя IT-инфраструктуры YADRO активны вакансии в разных направлениях для тех, кто кодит на С/С++ 🔍
1️⃣ Software Engineer C/C++
2️⃣ Разработчик ПО для цифровых систем связи
3️⃣ Senior C++ developer/Старший инженер-программист С++
4️⃣ Инженер по разработке ПО (C/C++ Embedded Linux)
5️⃣ Старший разработчик C++ (Linux/ OpenBMC)
6️⃣ Инженер по разработке встраиваемого ПО (Embedded Linux BSP)
Ты сможешь раскрыть свой творческий и инженерный потенциал в команде профессионалов, которые создают высокотехнологичные решения мирового уровня.
Какие бенефиты предлагаются:
– достойная зарплата (размер обсуждается на собеседовании) и прозрачная система премий;
– обучение за счёт компании: учебный портал с курсами и лекциями от экспертов, дополнительное профессиональное обучение, изучение английского, участие в конференциях;
– возможность учиться у лучших специалистов индустрии, расти в рамках своей роли, а также участвовать во множестве различных проектов;
– личное участие в становлении процессов и продуктов, возможность увидеть результат своей работы;
– большое инженерное сообщество, которое постоянно развивается;
– гибридный или удалённый формат работы;
– ДМС со стоматологией с первого дня, консультации юристов, психологов, экспертов по ЗОЖ и управлению финансами;
– скидки для сотрудников, дополнительные day-off;
– комфортные офисы в Москве, Санкт-Петербурге, Нижнем Новгороде и Минске.
Скорее переходи по ссылкам и оставляй отклики!
java.lang.reflect.Constructor
Класс java.lang.reflect.Constructor
представляет собой конструктор класса Java. Он используется для создания экземпляров класса, предоставляя доступ к информации о конструкторе, а также возможность его вызова.
#для_продвинутых
Single Responsibility Principle
Принцип единственной ответственности (Single Responsibility Principle, SRP) является одним из принципов SOLID, предложенных Робертом Мартином. Этот принцип гласит, что у класса должна быть только одна причина для изменения. Иными словами, класс должен выполнять только одну ответственность.
Применительно к Java это означает, что класс должен быть спроектирован так, чтобы он занимался только одним аспектом функциональности. Если у класса есть более одной обязанности, его стоит разделить на несколько классов, каждый из которых будет отвечать за свою конкретную обязанность.
#для_продвинутых
➡️ Отправка email с использованием JavaMail API
Метод postMail
отправляет письмо на заданные адреса. Он принимает список получателей, тему, сообщение и адрес отправителя.
⚙️ Настраивается соединение с SMTP-сервером, создается сессия и сообщение. Устанавливаются адрес отправителя и получателей, заголовки, тема и текст сообщения.
✔️ Затем сообщение отправляется с помощью метода Transport.send
.
➡️ Скриншот в Java
🗣️ Этот код выполняет захват экрана и сохраняет его как изображение в формате PNG.
•
Получает размер экрана с помощью Toolkit.getDefaultToolkit().getScreenSize()
.•
Создает прямоугольник, соответствующий размеру экрана.•
Создает объект Robot
для выполнения действий, связанных с автоматизацией, таких как захват экрана.•
Захватывает изображение экрана в виде объекта BufferedImage
.•
Сохраняет захваченное изображение в файл с указанным именем и форматом PNG с помощью ImageIO.write()
.
Читать полностью…
Бэкенд-разработчики, вышла новая версия CodeRun с задачами от разработчиков Яндекса и внешних экспертов
CodeRun — бесплатный онлайн-тренажер с кастомизацией сложности и большим каталогом задач. Здесь можно готовиться к техническим собеседованиям по программированию и заполнять пробелы в знаниях. А еще решать тематические и авторские подборки и задания с прошлых турниров и контестов.
Главная особенность: здесь есть система рейтинга и баллов, а также сезонные турниры. По итогам каждого сезона лучшие кодеры могут получить мерч, сертификаты и даже возможность попасть в штат Яндекса по упрощенному найму.
2 сезон уже начался: решайте задачи и зарабатывайте баллы на ценные призы.
😮 Добавлена новая база слитых курсов на 800ГБ:
Python:
/channel/+OnAzdnf-1mRjNjYy
Программирование:
/channel/+V2R5VLsH2igwMmU6
Frontend и Web:
/channel/+baoGxh-bG4Q5NmNi
Графика и дизайн:
/channel/+GrDwDo7c96s5ZTIy
#вопросы_с_собеседований
Каким образом из вложенного класса получить доступ к полю внешнего класса?
Статический вложенный класс имеет прямой доступ только к статическим полям обрамляющего класса.
Простой внутренний класс, может обратиться к любому полю внешнего класса напрямую. В случае, если у вложенного класса уже существует поле с таким же литералом, то обращаться к такому полю следует через ссылку на его экземпляр. Например: Outer.this.field.
Начните обучение в магистратуре в Центральном университете уже на 3-м курсе бакалавриата!
Центральный университет — современный вуз, созданный при поддержке ведущих компаний России: Т-Банка, Авито и других.
Учебу реально совместить с последними курсами бакалавриата или действующей работой. Обучение занимает 20 часов в неделю в вечернее время в первый год, а занятия проводят в центре Москвы профессоры из МГУ, МФТИ, РЭШ и практики из индустрии. Обучение в университете построено по принципам ИТ-компаний, со средой, способствующей росту и развитию.
У каждого студента будет:
— личный ментор по траектории обучения;
— доступ к карьерному центру с коучами и консультантами;
— опыт работы в проектах 30+ компаний-партнеров уже во время обучения;
— диплом гособразца.
Участвуйте в онлайн-отборе, чтобы выиграть грант на обучение до 1,2 млн рублей. Больше подробностей про университет и конкурс грантов по ссылке!
erid:2VtzqxfHdBZ
Реклама, АНО ВО «Центральный университет», ИНН 774341802
Правила переопределения метода Object.equals().
1. Использование оператора ==
для проверки, является ли аргумент ссылкой на указанный объект. Если является, возвращается true
. Если сравниваемый объект == null
, должно вернуться false
.
2. Использование оператор instanceof
и вызова метода getClass()
для проверки, имеет ли аргумент правильный тип. Если не имеет, возвращается false
.
3. Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой instanceof
она гарантированно будет выполнена.
4. Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат true
, в противном случае - false
.
По окончанию переопределения метода equals()
следует проверить: является ли порождаемое отношение эквивалентности рефлексивным, симметричным, транзитивным и непротиворечивым? Если ответ отрицательный, метод подлежит соответствующей правке.
Определить и найти. Разработка алгоритма поиска изменений с Мap-ами и хешами
Смотреть статью
ExecutorServiceExecutorService
— это API
JDK
, который упрощает запуск задач в асинхронном режиме. В общем смысле, ExecutorService
автоматически предоставляет пул потоков и API для назначения задач.
Лучший вариант использования ExecutorService
— это обработка независимых задач, таких как транзакции или запросы по схеме "один поток для одной задачи".
В этом примере создается ExecutorService
с помощью фабричного метода Executors.newSingleThreadExecutor()
. Затем запускается задача с помощью метода submit()
. В конце работы ExecutorService
завершается с помощью метода shutdown()
.
Класс Throwable
Класс Throwable
является суперклассом для всех ошибок и исключений. Объекты класса Throwable
используются для представления нештатных ситуаций, которые могут возникнуть во время выполнения программы.
Класс Throwable
имеет следующие важные методы:getMessage()
— возвращает строковое сообщение, описывающее исключение.printStackTrace()
— выводит в стандартный поток ошибок подробную информацию об исключении, включая его тип, сообщение и стек вызовов.
Исключения делятся на две категории: ошибки и исключения. Ошибки являются необратимыми ситуациями, которые приводят к завершению работы программы. Исключения же являются обратимыми ситуациями, которые можно обработать и продолжить выполнение программы.
#для_продвинутых
#вопросы_с_собеседований
Почему современные фреймворки используют в основном только unchecked exceptions?
Unchecked exceptions используются в основном потому, что они не требуют обязательной обработки исключений в коде. Это позволяет упростить код и сделать его более читаемым. Однако, это также может привести к тому, что исключения не будут обработаны и программа может завершиться аварийно.
Некоторые же фреймворки используют checked exceptions для обработки ошибок ввода-вывода или других проблем, которые могут возникнуть в процессе выполнения программы. Однако, это может привести к тому, что код становится более сложным и менее читаемым.
Класс MathContext
Класс MathContext
используется для указания точности вычислений с плавающей запятой. Он определяет два параметра:precision
— количество знаков после запятой, которые должны сохраняться в результате вычислений.roundingMode
— способ округления значений, которые не могут быть точно представлены с заданной точностью.
По умолчанию точность вычислений в Java равна 16 знакам после запятой, а режим округления — HALF_UP
.
#для_начинающих
EventListenerEventListener
(слушатель событий) — это интерфейс, который позволяет объектам реагировать на события, происходящие в системе. Он используется для создания интерактивных приложений, где действия пользователя или изменения в системе должны вызывать определенные реакции.
#для_продвинутых
Java-разработчики, QA-инженеры (backend) и системные аналитики, любите интересные задачи?
Попробуйте свои силы на Weekend Offer Нефинансовых сервисов — экосистемы на сайте Т-Банка, которая делает жизнь клиентов ярче. Здесь они выбирают билеты, продукты, топливо и отправляются в путешествия.
В команду ждут специалистов с опытом работы от 3 лет. Можете пройти собеседование за выходные, познакомиться с проектами, решить технические задачи и получить оценку от экспертов Т-Банка. Если справитесь — оффер получите на неделе.
Успейте подать заявку до 21 августа
erid:2Vtzqwh63Fy
Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673