Как стать автором
Обновить
126.89

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Синглтоны в Java

Время на прочтение 4 мин
Количество просмотров 3.8K

В этом кратком руководстве мы рассмотрим два наиболее популярных способа реализации синглтонов в Java.

Читать далее
Всего голосов 17: ↑11 и ↓6 +5
Комментарии 25

Новости

Настраиваем ExecutorService'ы на практике

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 3.4K

В этой статье хочу рассмотреть что такое ExecutorService в Java, зачем он нужен, варианты создания и в как его настраивать для решения практических задач

Понимаю что есть много подобных статей, но в тех статьях что мне удалось найти не хватало практических примеров, сегодня хочу рассказать вам то, что по-настоящему пригодиться в работе

Также я веду блог в телеграм, где вы сможете найти другие материалы от меня

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 7

Монады как строительные блоки функционального Java

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 3.6K

Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.

Читать далее
Всего голосов 9: ↑3 и ↓6 -3
Комментарии 9

JetBrains TeamCity CI/CD CVE-2024-27198

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.1K

В феврале 2024 года группа исследователей уязвимостей Rapid7 выявила уязвимость, затрагивающую сервер JetBrains TeamCity CI/CD и представляющую собой обход аутентификации в веб-компоненте TeamCity.

Уязвимость получила идентификатор CVE-2024-27198 и балл CVSS равный 9,8 (критический).

Наличие данного недостатка позволяет полностью скомпрометировать сервер TeamCity, не имея аутентифицированного доступа, включая удаленное исполнение команд.

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Истории

Битва фреймворков: сравнение высокопроизводительных HTTP-библиотек

Время на прочтение 5 мин
Количество просмотров 11K

Мир веб-разработки предлагает бесконечное количество вариантов HTTP-фреймворков для разных языков программирования. Но как разработчикам понять, какие из них обеспечивают действительно высокую производительность? Под катом команда блога CodeReliant* проводит прямое сравнение некоторых из лучших претендентов на быстродействие. Рассматривает популярные варианты на Javascript/Bun, Java, C#, Go и Rust, проводит бенчмаркинг, оценивает их пропускную способность и время отклика при тестировании.

Выбранные для сравнительного анализа фреймворки имеют репутацию высокопроизводительных, — но посмотрим, как это понятие реализуется в разных стеках.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 22

Как мы лечили раздвоение встреч в конференциях на базе Jitsi

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 1.9K

Привет! Меня зовут Дима. Я из команды бэкенда Яндекс Телемоста — сервиса для проведения видеовстреч, который входит в Яндекс 360. Перед нами стоит задача не просто предоставить сервис, а предоставить отказоустойчивый и надёжный сервис, который работает 24/7 и обслуживает весь мир.

Телемост создан на основе open source решения Jitsi meet — оно постоянно развивается благодаря вкладу комьюнити, но при этом имеет свои ограничения. В статье расскажу, как мы встретили один редкий, но интересный плавающий баг. И конечно, как его лечили.

Читать далее
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 3

MindVault: маленькая революция в flash карточных приложениях

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 1.1K

Здравствуй хабр! Я всегда мечтал создать идеальное приложение для обучения и запоминания информации, пытался понять как в целом работает память, насколько хорошо она может работать, от чего и как это зависит, в этой статье мы посмотрим что на данном этапе я достиг, или быть может я ничего такого и не сделал. Буду рад критике, и коль проект опенсоурс буду рад пул реквестам/предложениям.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Внутренний мир: Java NIO

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 4.9K

Привет, Хабр!

Парадигма «неблокируемого ввода/вывода» заинтересовала меня с того момента, как я о ней услышал. Идея возможности вызвать операцию чтения без блокировки вызывающего потока довольно привлекающая сама по себе.

Неблокируемый ввод/вывод был реализован в пакете java.nio Java SE 1.4. К сожалению, в ежедневной практике нечасто приходится иметь дело с низкоуровневым I/O, и намного чаще при необходимости используются стримы из java.io. В этой статье будет описано содержание Java NIO, несколько примеров и принцип работы неблокируемого I/O.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 7

Реализации Microkernel архитектуры с помощью Java OSGI

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 1.7K

Я хотел бы поделиться опытом реализации микроядерной архитектуры (microkernel) на Java с помощью OSGI (Open Service Gateway Initiative). Этот подход является промежуточным вариантом между микро-сервисной и монолитной архитектурой. С одной стороны присутствует разделение между компонентами на уровне VM с другой - межкомпонентное взаимодействие происходит без участия сети, что ускоряет запросы.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 20

Как провести unit-тестирование Flink-операторов: TestHarness

Время на прочтение 11 мин
Количество просмотров 389

Привет всем, на связи снова Александр Бобряков, техлид в команде МТС Аналитики. Продолжаем цикл статей про фреймворк Apache Flink.

Напомню, в предыдущих частях я рассказывал про построение пайплайна Kafka-to-Kafka с промежуточным разделением потока и дедупликацией событий. Также в предыдущей статье я рассказал, как можно динамически определить выходной Kafka-топик для каждого отправляемого события.

Начиная с этой статьи начнём разбирать, как тестировать всё наше приложение Flink + Spring. Многие описанные подходы вполне применимы и в любом другом обычном Spring-приложении, поэтому, надеюсь, вы найдёте для себя что-то новое.

В данной статье мы рассмотрим, как протестировать stateless- и stateful-операторы Flink с помощью абстракций TestHarness.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Вышла Java 22

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 22K

Вышла общедоступная версия Java 22. В этот релиз попало около 2300 закрытых задач и 12 JEP'ов. Release Notes можно посмотреть здесь. Полный список изменений API – здесь.


Java 22 не является LTS-релизом, и у неё будут выходить обновления только полгода (до сентября 2024 года).


Читать дальше →
Всего голосов 57: ↑56 и ↓1 +55
Комментарии 26

Что такое Risk Storming?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 878

Это метод, позволяющий легко и быстро, коллективно и визуально идентифицировать риски в системе. Метод подразумевает участие нескольких людей. Для более широкого взгляда на рассматриваемую систему, полный состав участников может включать в себя людей из разных направлений и с разными навыками.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 0

Исследуем лицензирование Cockroach DB до Enterprise или не случившийся хард-реверс-инжиниринг

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 757

Как известно java компилируется в байт-код, скомпилированные классы также богаты мета-информацией для обеспечения механизма рефлексии что в совокупности позволяет довольно легко декомпилировать java-приложения обратно в java-код. Смотря в окошко рандомного java-приложения, строго требующего ключа активации, невольно ухмыляешься: знаю я, есть заветная строка в твоем коде, до которой добраться на самом деле не особо долго, да, есть обфускация, проверки через подпись с асимметричным шифрованием и т.д., но... ведь это только продлевает агонию и увеличивает трудозатраты вендора на не бизнесовый код, словом особенного смысла не имеет, все равно вскрывается довольно быстро.

Но как обстоят дела с приложениями написанными на языках компилирующихся сразу в машинный бинарь? Ну что ж, волею судеб пациентом был выбран Cockroach DB, а вернее его Enterprise часть, его мы и будем анализировать в этой статье.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 0

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн

Паттерны Singleton и Multiton в Java: когда и какой лучше?

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4.4K

Привет, Хабр!

Паттерн Singleton гарантирует существование лишь одного экземпляра класса и предоставляет к нему глобальную точку доступа. Этот паттерн стал почти синонимом чистоты кода в многих сценариях работы с Java, где требуется строго один экземпляр объекта. Но не менее интересный и гибкий паттерн - это Multiton. Менее известный, но не менее мощный, он позволяет создавать множество экземпляров класса и контролировать их число и жизненный цикл через предопределенные ключи.

В этой статье мы рассмотрим эти паттерны и их различия.

Читать далее
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 9

Выпущена версия Jmix 2.2

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 997

Данная статья описывает важные обновления, представленные в только что вышедшем релизе платформы Jmix 2.2.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Как облегчить жизнь программисту при написании тестов

Время на прочтение 6 мин
Количество просмотров 5.2K

Наверняка, многие из вас работали или хотя бы слышали о том, что есть разработчики, которые работают над проектом в одиночку. Ну как в одиночку… Есть скрам, аналитик, продакт, еще кто-то вплоть до директора, а вот программист один, даже тестировщика нет. В этом случае оптимальным видом тестирования, на мой взгляд, является интеграционное тестирование с  использованием тест-контейнеров.

Привет, Хабр! Меня зовут Николай Пискунов — ведущий разработчик в подразделении Big Data. И сегодня в блоге beeline cloud поговорим о Spring boot и интеграционном тестировании. Расскажу, как упростить жизнь при написании тестов.

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 3

Разработка высоконагруженного игрового WebSocket сервера на Kotlin, Webflux с поддержкой BattleRoyale/Matchmaking

Уровень сложности Сложный
Время на прочтение 20 мин
Количество просмотров 5.5K

Всем доброго времени суток. Некоторое время назад мною была написана статья, где я детально описал процесс разработки демо игрового вебсокет сервера. На этот раз, я хотел бы поделиться более усовершенствованным и оптимизированным материалом на Kotlin и реактивном стеке.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 1

Систему модулей в Java для новичков

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 6.6K

Привет, Хабр!

Система модулей в Java 9, известная как Project Jigsaw, была задумана и реализована для решения ряда проблем, включая «Ад JAR‑файлов» и сложностей с обеспечением сильной инкапсуляции.

И вот с Java 9 можно явно контролировать, какие части их модулей доступны внешнему миру, а какие скрыты и защищены от несанкционированного доступа.

Модульность вносит ясность и порядок в то, как приложения связываются с библиотеками и друг с другом. Благодаря системе модулей, зависимости становятся явными и управляемыми.

Рассмотрим, как выглядит работы с системой модулей в Java.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 3

Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Время на прочтение 12 мин
Количество просмотров 11K

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

— POST и PUT-запросы, использующие requestBody для передачи параметров.
— GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее
Всего голосов 19: ↑14 и ↓5 +9
Комментарии 11

Автодокументация Doxygen и её развертывание на GitHub Pages

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 5.5K

Наверняка вы создавали open source проекты и выкладывали их на GitHub, но я уверен, что очень немногие из вас создавали документацию для этих проектов. В этой статье я расскажу, как создавать и публиковать доки максимально просто.

Документация будет создаваться на основе исходного кода, она будет обновляться при каждом коммите и при этом будет доступна через интернет. Документирование происходит через Doxygen, в качестве хостинга выступает GitHub, а за обновление документации отвечает GitHub Pages.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 1

Вклад авторов

Работа

Java разработчик
357 вакансий