Изучаем Java. По вопросам сотрудничества: @seniorvladislav
Класс Character
Класс Character
в Java является классом-обёрткой для примитивного типа данных char
. Он предоставляет несколько полезных методов для работы с символами, таких как проверка на принадлежность к различным категориям (цифры, буквы, пробелы и т.д.) и преобразование регистров.
#для_начинающих
23 марта, в субботу, SM Lab проводит Spring Day Offer для Java-разработчиков.
📍 Программа Spring Day Offer, 23 марта:
● Тестовые задания. Проверим уровень ваших навыков.
● Техтолки. В перерывах между тестовыми заданиями с докладами выступят наши ведущие специалисты.
● Знакомство с командами. Успешные кандидаты познакомятся с командами и узнают, какие задачи им предстоит решать.
● Кульминация! Оффер! Успешно прошедшие все этапы кандидаты в этот же день получат от нас предложение о работе.
📍 Мы ждем, что вы:
● Java-разработчик с опытом работы на Spring от 3-х лет;
● стремитесь расти и развиваться;
● хотите делать качественные ИТ-продукты и развивать ритейл в России;
● понимаете важность командной работы и стремитесь к ней.
🔥 Если вам интересно — до 19 марта зарегистрируйтесь на лендинге, и с вами свяжутся.
Остались вопросы? Пишите сюда: IT-HR@sportmasterlab.net
JarFileJarFile
— это класс в Java, который используется для чтения содержимого JAR-файла. JAR-файл (Java ARchive) — это формат архива, который используется для объединения нескольких файлов Java (.class), а также других ресурсов, таких как изображения, звуки и текстовые файлы, в один файл.
Создание объекта JarFile
Для создания объекта JarFile
необходимо использовать его конструктор, который принимает путь к JAR-файлу в качестве параметра.
#для_продвинутых
InvocationTargetException InvocationTargetException
– это проверяемое исключение, которое возникает при вызове метода или конструктора через рефлексию, если этот метод или конструктор бросает свое собственное исключение.
#для_продвинутых
MethodHandle MethodHandle
— это типизированная, напрямую исполняемая ссылка на метод, конструктор, поле или подобную низкоуровневую операцию с необязательными преобразованиями аргументов или возвращаемых значений.
#для_продвинутых
Привет! Это Podlodka Crew — организатор онлайн IT-конференции по различным технологиям.
Уже 11 марта запускаем четвёртый сезон звёздной Podlodka Java Crew с Филиппом Дельгядо, Гришей Кошелевым, Владимиром Картяевым и другими топовыми спекерами. Тема — наболевшая: интеграции между сервисами.
Если вы знакомы с болью интеграций не понаслышке, то ловите подробности:
🌟Kafka и Open-API. Разберём популярный подход к проектированию серверных приложений API-First. Рассмотрим программный продукт, доступный для серверных приложений, использующих брокеры сообщений.
🌟OAuth 2.0. Выясним, что лучше: взять готовое решение или реализовать собственный сервис. Обсудим подходы к реализации функционала и научимся встраивать двухфакторную авторизацию.
🌟Service Mesh. Погрузимся в реальные кейсы внедрения и деплоймента, поделимся опытом организации взаимодействия сервисов. Посмотрим на типичные проблемы и варианты их решения.
🌟GraphQL. На воркшопе раз и навсегда определим, когда и зачем он нужен, какие у него преимущества и недостатки. Обучимся версионировать схему и API. Объясним, как масштабировать GraphQL после внедрения. Бонус: разбор разных подходов на практических кейсах.
Это не все сессии грядущего сезона.
Больше подробностей и билеты забирайте на сайте:
https://podlodka.io/javacrew
Реклама. ИП Толстая Елена Петровна ИНН:507503278104, erid:2SDnjdSigqn
🔥 Годнота
Наткнулся на базу с 1700 вопросов с собеседований на Java разработчика. Фишка в том что просчитана вероятность с которой вопрос буден задан и есть примеры ответов. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам 😏
Ковариантность типов
Ковариантность типов — это вариантность типов в системе типов языка программирования. Ковариантность означает, что типы могут быть связаны отношением «родитель-потомок» в иерархии классов или интерфейсов, и этот относительный порядок сохраняется при передаче аргументов методам или возвращении значений из методов. Другими словами, ковариантность позволяет использовать подтип (потомок) вместо его родителя без необходимости явного приведения типов.
#для_начинающих
Монитор
Монитор представляет собой механизм, который обеспечивает синхронизированный доступ к критическим секциям кода, что позволяет избежать состояния гонки (race condition) и обеспечивает координацию между потоками.
Ключевое слово synchronized
может быть применено к методам или блокам кода. Когда метод или блок кода помечен как synchronized
, только один поток может выполнить этот код или метод в определенный момент времени. Если другой поток попытается войти в синхронизированный блок или вызвать синхронизированный метод, он будет ожидать, пока первый поток не завершит выполнение.
#для_продвинутых
Мёртвая нить
Мёртвая нить (deadlock) означает ситуацию, когда две или более нити (потока исполнения) блокируются и ожидают ресурсы, которые удерживают друг друга, что приводит к тому, что ни одна из них не может продолжить свою работу. В итоге программа оказывается в застойном состоянии, так как нити блокируют друг друга и не могут разблокироваться без внешнего вмешательства.
Чтобы избежать мёртвой нити, следует стремиться к тому, чтобы нити блокировали ресурсы в одном и том же порядке. Если это невозможно, можно использовать техники, такие как использование метода tryLock()
из java.util.concurrent.locks.Lock
, которые позволяют более гибко управлять блокировками и избегать мёртвой нити.
#для_начинающих
Checked exceptions
Checked exceptions — это исключения, которые должны быть обработаны или объявлены в сигнатуре метода при помощи throws
ключевого слова. Они обычно представляют собой ситуации, которые программист может предвидеть и обработать. Примеры таких исключений включают: IOException
, SQLException
, FileNotFoundException
.
Если вы вызываете метод, который объявляет checked exception, вы должны либо обработать это исключение с помощью конструкции try-catch
, либо продолжить передачу исключения вверх по стеку вызовов.
#для_начинающих
Абстрактные классы
Абстрактные классы — это классы, которые не могут быть инстанциированы напрямую, то есть нельзя создать объект абстрактного класса при помощи оператора new. Они предназначены для обеспечения базовой структуры и функциональности для других классов, которые наследуются от них. Абстрактные классы представляют собой в некотором роде «заготовки» для подклассов, указывая на общие атрибуты и методы, которые они должны реализовать.
#для_начинающих
Сделайте новый шаг в своей карьере: приглашаем на курс по 1C разработке мобильного приложения
Знания и опыт разработки мобильных приложений на 1С могут открыть возможности карьерного роста в сфере разработки ПО, особенно там, где 1С широко используется. Это станет ценным навыком, который отличает вас от других 1С разработчиков.
Именно этому в Слёрме начнут учить уже в феврале — на курсе "1С разработчик: мобильное приложение + интеграция".
🌀 Вы научитесь создавать и интегрировать мобильные приложения для бизнес-решений на платформе 1С;
🔮 На реальных примерах разберёте создание HTTP-сервисов с помощью RPC;
☕️Создадите мобильное приложение с расширенным функционалом.
Курс идет 6 недель в формате потока:
➕ Все задания и итоговый проект проверяют спикеры курса и готовят подробное код-ревью.
➕ На время потока будет создан чат. В нём вы сможете задать любой вопрос по разработке на 1С и оперативно получить ответ.
➕ На протяжении курса вы будете разрабатывать мобильное приложение на платформе «1С: Предприятие» и интегрировать сервисы API.
Узнать программу курса и записаться на поток вы можете по ссылке.
Реклама. ООО «Слёрм» г. Лиски, ОГРН 1193668020545
Готовы улучшить свое владение Java?
Присоединяйся к нашему каналу - /channel/java_secrets 📲
Свежие советы, лучшие практики, примеры кода и обсуждения, чтобы стать настоящим профессионалом в программировании на Java.
🫡 Повышай свой уровень!
ServletContextServletContext
— это интерфейс, который предоставляет методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов, предоставляемых интерфейсом ServletContext
, включают:getInitParameter
(String name): Возвращает значение инициализационного параметра сервлета, указанного по имени.getInitParameterNames()
: Возвращает имена всех инициализационных параметров сервлета.getAttribute
(String name): Возвращает значение атрибута, сохраненного в контексте сервлета по имени.setAttribute
(String name, Object object): Устанавливает значение атрибута в контексте сервлета.getRequestDispatcher
(String path): Возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.getRealPath
(String path): Преобразует виртуальный путь в абсолютный путь на сервере.
#для_продвинутых
Что такое интерфейс Cloneable?
Это маркерный интерфейс, то есть он не содержит никаких методов, а только сигнализирует о том, что объекты класса, реализующего этот интерфейс, могут быть клонированы.
Клонирование объекта означает создание его независимой копии.
Как работает клонирование в Java?
1. Реализация интерфейса Cloneable
: Класс, объекты которого вы хотите клонировать, должен реализовывать интерфейс Cloneable
.
2. Переопределение метода clone()
: Вам необходимо переопределить метод clone()
из класса Object
в вашем классе. Этот метод возвращает копию объекта.
3. Вызов метода clone()
: Чтобы создать копию объекта, вызовите метод clone()
у этого объекта.
#для_продвинутых
Атомарные переменные в Java.util.concurrent
Пакет java.util.concurrent.atomic
определяет классы, которые поддерживают атомарные операции над отдельными переменными. Все классы имеют методы get
и set
, которые работают как чтение и запись волатильных переменных. То есть set
имеет отношение happens-before с любым последующим get
на той же переменной.
Ниже перечислены все переменные, определенные в пакете: AtomicBoolean
, AtomicInteger
, AtomicLong
, AtomicReference
.
В этом примере создается AtomicInteger
со значением 0. Затем значение инкрементируется с помощью метода incrementAndGet()
. В конце значение получается с помощью метода get()
.
ZipFile ZipFile
— это класс, который используется для чтения содержимого ZIP-архивов. Он позволяет вам перебирать записи в архиве, получать информацию о них и извлекать их содержимое.
#для_начинающих
ManagementFactory
ManagementFactory — это класс-фабрика, предназначенный для получения управляемых beans для платформы Java. Он состоит из статических методов, каждый из которых возвращает один или несколько platform MXBeans, представляющих собой интерфейс управления компонентом виртуальной машины Java (JVM).
#для_продвинутых
AccessibleObject AccessibleObject
— это базовый класс для объектов Field
, Method
и Constructor
. Он позволяет помечать рефлектируемый объект как подавляющий проверки контроля доступа языка Java по умолчанию при его использовании.
Контроль доступа в Java языке запрещает:
—Использование приватных членов за пределами их класса верхнего уровня;
— Членов пакета за пределами их пакета;
— Защищенных членов за пределами их пакета или подклассов;
— Публичных членов за пределами их модуля, если они не объявлены в экспортируемом пакете, и пользователь не читает их модуль.
Важно: использование AccessibleObject может привести к проблемам безопасности, поэтому его следует использовать с осторожностью.
#для_продвинутых
OutOfMemoryError
«OutOfMemoryError» ошибка в Java, указывающая на то, что приложению не хватило памяти для выполнения операции. Это может произойти, когда программа пытается выделить больше памяти, чем доступно в куче (heap), которая используется для хранения объектов и данных во время выполнения Java-приложения.
В результате JVM (Java Virtual Machine) больше не может выделить дополнительную память, и возникает ошибка «OutOfMemoryError».
#для_начинающих
Лямбды как параметры и результаты методов
В Java лямбда-выражения — это компактный способ представления анонимных функций. Они часто используются для передачи функциональности как параметров в методы и возвращаются в качестве результатов методов, когда требуется работать с функциональным программированием.
#для_продвинутых
Уже слышали про GitVerse?
Это новая платформа для совместной разработки и хостинга кода от СберТеха. Сервис полностью российский – работать с ним удобно, безопасно и надежно.
С GitVerse разработчики смогут создавать проекты с открытым и закрытым кодом, переносить репозитории с других площадок, привлекать новых участников и назначать задачи.
А еще:
- делать код-ревью и объединять изменения;
- оптимизировать рабочий процесс: назначать ответственных за ревью и отслеживать результат;
- получать запросы на слияние и объединять ветки;
- подписываться на обновления пользователей и репозиториев и оставаться в курсе активностей команды;
- общаться с ИТ-сообществом, узнавать новости и читать материалы про open source.
Вся функциональность GitVerse доступна разработчикам бесплатно.
Зарегистрируйтесь и откройте возможности GitVerse уже сейчас.
😨Вы видели этот хардовый тест для Java QA Engineer'ов (не для новичков)? Его проходят всего 30%
👉 Пройдите тест из 20 вопросов онлайн-курса «Java QA Engineer. Professional» и узнайте, осилите ли вы обучение в OTUS.
🟢 Пройти тест: https://otus.pw/2brK/
💣Все, кто успешно пройдет тест, получит доступ к записям уроков курса для знакомства с форматом обучения и спец.цену на курс.
💻 За 4 месяца обучения на курсе вы освоите:
— популярные инструменты автоматизации
— полный спектр технологий тестирования на Java
— ключевые инструменты автоматизации UI- и API-тестирования
— навыки работы с RestAssured и JsonSchemaValidator
— навыки работы с Appium
— многопоточное тестирование с помощью Selenoid
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8JxHS6
Прямой обход дерева
Прямой обход дерева (pre-order traversal) — это один из способов обхода бинарного дерева. В этом способе сначала посещается корневой узел, затем левое поддерево и затем правое поддерево. Прямой обход широко используется для вывода структуры дерева и выполнения операций на каждом узле в нужном порядке.
#для_продвинутых
Сбер запускает масштабный проект и ищет Java-разработчика 😉
Присоединяйся к команде и создавай с нуля ERP-систему на современном стеке Platform V для учёта, планирования хозяйственной деятельности и расчёта заработной платы.
В работе используем:
⎯ Java 17, Spring Framework
⎯ Микросервисную архитектуру
⎯ Service Mesh, Kafka
⎯ WildFly, PostgreSQL, приложения с открытым исходным кодом
⎯ Сервисы Jenkins, Ansible, Git/BitBucket, Nexus, Jira, Confluence
⎯ Плечо друга и ценные советы ИТ-лидера
Какие задачи будут в планере:
• Участие в полном цикле разработки компонентов и сервисов с нуля
• Проектирование и разработка backend, API
• Оптимизация производительности продуктов и сервисов
• Внедрение масштабного продукта класса ERP для учёта и планирования хозяйственной деятельности в банке (и не только…)
• А ещё разработка коммерческой версии продуктов и сервисов
Расшифруй сообщение на картинке и откликайся 💚
Стек-трейс
Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке, начиная с метода, в котором произошло исключение. Стек-трейс позволяет отследить, какие методы были вызваны перед возникновением исключения, и предоставляет информацию о местоположении, где произошло исключение.
#для_продвинутых
Как написать собственное исключение?
Для создания собственного исключения нужно создать новый класс, который наследуется от класса Exception
или RuntimeException
.
В этом примере мы создаем класс CustomException
, который наследуется от класса Exception
.
Далее, мы используем пользовательское исключение в методе myMethod()
класса MyClass
. Если выполняется определенное условие, мы выбрасываем исключение CustomException
с сообщением об ошибке.
#для_начинающих
Рассмотрим задачу по созданию простого сервиса для управления задачами (To-Do list). Ваша задача — написать простую программу, которая позволяет добавлять задачи, удалять задачи и выводить список текущих задач.
Мы импортируем две библиотеки. ArrayList
используется для хранения списка задач, а Scanner
— для ввода данных с клавиатуры. Затем определяем класс ToDoList
и объявляем переменную tasks
типа ArrayList
, которая будет хранить наши задачи.
Затем создаем объект Scanner для считывания ввода с клавиатуры и бесконечный цикл для взаимодействия с пользователем.
Выводим меню с четырьмя действиями для пользователя, читаем выбор пользователя с клавиатуры и в зависимости от выбора пользователя, программа вызывает соответствующий метод. Этот метод запрашивает у пользователя новую задачу, добавляет её в список и выводит сообщение.
Таким образом, программа предоставляет простой интерфейс для взаимодействия с To-Do list, позволяя пользователю добавлять, удалять и просматривать задачи.
29 февраля 12:00 МСК
Вебинар «Надежное облако для команды разработки: как увеличить маржинальность проектов»
❓ Как облачные технологии могут стать одним из дополнительных источников заработка для команды разработки
❓ Как вы можете повысить маржинальность проектов ваших клиентов, расположив их в облаке ITGLOBAL.COM
Приглашаем разработчиков приложений, сервисов, сложных AI-проектов на вебинар, посвященный размещению проектов разработки в облачной инфраструктуре.
Вебинар будет полезен вам, если:
🔹 вы реализуете проекты по разработке;
🔹 вам требуются свободные ресурсы для тестирования и запусков;
🔹 вы хотите сократить time-to-market ваших проектов;
🔹 вам требуются мощные ресурсы для работы с AI, HPC и графикой;
🔹 вам важно снизить издержки на инфраструктуру для разработки и production.
🔗 Регистрация