Как стать автором
Обновить
178.13
Рейтинг

Java *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Краткое сравнение библиотек отказоустойчивости на JVM

Java *
Перевод
Tutorial

Независимо от того, внедряете ли вы микросервисы или нет, есть вероятность, что вы вызываете конечные точки HTTP. С HTTP-вызовами многое может пойти не так. Опытные разработчики планируют это и проектируют не только успешные пути. В общем отказоустойчивость (Fault Tolerance) включает в себя следующие функции: Retry (повтор попытки), Timeout (тайм-аут), Circuit Breaker (автоматический выключатель), Fallback (откат), Rate Limiter (ограничитель скорости), Bulkhead.

Несколько библиотек реализуют эти функции на JVM. В этом посте мы рассмотрим Microprofile Fault ToleranceFailsafe и Resilience4J.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.2K
Комментарии 1

Новости

Полезные и неизвестные возможности Java

Java *
Перевод
Tutorial

В этой статье вы узнаете о некоторых полезных функциях Java, о которых вы, вероятно, не слышали. 

Это мой личный список функций, использованных мной недавно или с которыми я столкнулся при чтении статей о Java. 

Я сосредоточусь не на языковых аспектах, а на API. Я уже опубликовал все примеры, относящиеся к этой статье, в Твиттере в форме, показанной ниже. Вы также можете найти их в моей учетной записи Twitter или просто под #javaхэштегом.

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

Тысячная статья про принципы SOLID

Java *Анализ и проектирование систем *Проектирование и рефакторинг *

Ещё будучи совсем-совсем начинающим разработчиком, я услышал про принципы SOLID и, конечно же, совершенно их не понял. Их не помогли понять ни лекции Дядюшки Боба, ни книга его же авторства, не несколько десятков (а то и сотен) статей в интернете, которые я тогда прочитал (по какой-то причине мне эти принципы казались чем-то очень важным, прямо-таки фундаментальным). Сейчас я могу сказать, что понимаю их как-то, по-своему, и пользуюсь ими каждый день. В данной короткой статье хочу поделиться своими размышлениями о сути принципов, которые были бы понятны тому мне из прошлого, который пытался загуглить доступное объяснение этих принципов.

Читать далее
Всего голосов 31: ↑21 и ↓10 +11
Просмотры 13K
Комментарии 35

Дыра в безопасности, похожая на Log4Shell, обнаружена в популярном Java SQL движке базы данных H2

Информационная безопасность *Java *
Перевод
Tutorial

«Это Log4Shell, Джим, но не в том виде, в каком мы его знаем» — так никогда не говорил Commander Spock.

Это краткий обзор ошибки CVE-2021-42392дыры в системе безопасности, о которой недавно сообщили исследователи из компании по управлению цепочками поставок программного обеспечения Jfrog.

На этот раз ошибка находится не в осажденном наборе инструментов Apache Log4j, а в популярном Java SQL сервере под названием H2 Database Engine.

H2 не похож на традиционную SQL систему, такую ​​как MySQL или Microsoft SQL server.

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

В результате вы можете встраивать код H2 SQL базы данных прямо в свои собственные Java-приложения и запускать свои базы данных полностью в памяти без необходимости в отдельных серверных процессах.

Как и в случае с Log4j, это означает, что в вашей организации могут быть неявно запущенные экземпляры кода H2 Database Engine, если вы используете какие-либо приложения или компоненты разработки, которые сами по себе незаметно включают его.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 4.2K
Комментарии 3

Нестандартное применение программирования в реальной жизни

Блог компании FirstVDS Программирование *Java *Читальный зал Лайфхаки для гиков

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

Однако программное обеспечение — это не только проекты компьютерных игр класса ААА или корпоративных проектов, предлагающих программное обеспечение по модели SaaS, это и использование его в обычной жизни, порой весьма неожиданным образом. О чём мы и поговорим в этой статье.
Читать дальше →
Всего голосов 33: ↑22 и ↓11 +11
Просмотры 12K
Комментарии 13

Бомба Log4j и кризис опенсорса

Блог компании М.Видео-Эльдорадо Информационная безопасность *Open source *Java *API *


Учитывая стремительную цифровизацию бизнеса и развитие наших мобильных и веб-платформ, вопросы информационной безопасности для М.Видео-Эльдорадо крайне важны. Наверняка почти все в курсе про эпическую уязвимость в библиотеке Apache Log4j. Она поддерживает выполнение внешнего кода для интеллектуального парсинга логов, куда попадает и пользовательский ввод. Грубо говоря, одна строчка в адресной строке браузера у школьника кладёт сервер, если эту строчку скушает логгер (на многих серверах записываются в логи все HTTP-запросы).

Уязвимость в библиотеке сидела с 2013 года, но заметили только сейчас. А когда начали копать глубже, то обнаружили пропасть, дно которой не просматривается вообще.

Спустя месяц можно с холодной головой осмыслить произошедшее и подумать, что эта история означает для всего движения Open Source.
Читать дальше →
Всего голосов 100: ↑75 и ↓25 +50
Просмотры 46K
Комментарии 248

Распознаем фигуры по массиву точек: эллипсы и не выпуклые фигуры

Ненормальное программирование *Java *Алгоритмы *

Данная статья является продолжением предыдущей статьи о распознавании простых многоугольников по нарисованной линии. В данной части будут рассмотрены алгоритмы распознавания эллипсов и алгоритм распознавания невыпуклых многоугольников.

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

Как тестировать gradle-плагины

Java *Kotlin *Gradle *
Recovery mode

Когда я писал свой первый gradle-плагин, я проверял его работоспособность следующим образом:

1. Опубликовал версию n в plugins.gradle.org
2. Проверил опубликованный плагин вручную на тестовом проекте
3. Нашел ошибку/доработал, увеличил версию n=n+1, затем снова пункт 1

Такой вот PDD (Publish Driven Development). Сегодня поговорим о том, как писать эффективные тесты на собственные gradle плагины.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 1.5K
Комментарии 3

Проектируем приложение с Redis в качестве хранилища данных. Что? Зачем?

Java *Kotlin *
Из песочницы

Всем привет!. Многие знают что такое Redis, а если вы не знаете, то официальный сайт может ввести вас в курс дела. Большинство знают Redis как кэш и иногда как очередь сообщений. Но что если немножко сойти с ума и попытаться спроектировать целое приложение, используя в качестве хранилища данных только лишь Redis? Какие задачи можно решить с использованием Redis'а?

В этой статье мы и попытаемся ответить на эти вопросы.

Не переключайтесь.

Читать далее
Всего голосов 20: ↑18 и ↓2 +16
Просмотры 8.4K
Комментарии 20

LJV: Чему нас может научить визуализация структур данных в Java

Java *Алгоритмы *

Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.


image

Читать дальше →
Всего голосов 81: ↑81 и ↓0 +81
Просмотры 15K
Комментарии 10

«Невозможный» параллельный алгоритм неотрицательной суммы

Программирование *Java *SQL *Haskell *Параллельное программирование *

Рецепт параллельных вычислений Fork/Join или Map/Reduce:
- разбить задачу на куски;
- посчитать куски по-отдельности;
- склеить вместе.

Неотрицательная сумма (a, b) -> max(0, a + b) неассоциативна и результат зависит от порядка склейки. Она сломает Fork/Join и результат будет некорректен. Магией моноида починить на Java, SQL и Haskell за 5 минут, но

сломать мозг
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 6.7K
Комментарии 33

Создание Native Images со Spring Native и GraalVM

Блог компании Домклик Java *Микросервисы *

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

Читать далее
Всего голосов 46: ↑45 и ↓1 +44
Просмотры 2.6K
Комментарии 4

Разрушаем и подтверждаем мифы о кадровых агентствах в ИТ

PHP *JavaScript *Java *SQL *ReactJS *
Из песочницы

Всем привет! На связи Антон Чимин. Не так давно я стал ИТ рекрутером и сегодня решил написать небольшую статью о том, что на самом деле происходит внутри кадровых агентств и стоит ли с ними работать. Называть свое кадровое агентство я не буду, чтобы это не было рекламой :) Просто пройдемся по фактам, что здесь и как.

Сегодня будет необычный пост, в котором я буду разрушать или подтверждать мифы о кадровых агентствах (КА), как это когда-то делали Адам Сэвидж и Джэми Хайнеман в одном известном шоу :) Погнали!

Читать далее
Всего голосов 30: ↑6 и ↓24 -18
Просмотры 4.5K
Комментарии 11

Тестирование GraphQL: подходы, инструменты, автоматизация

Блог компании Lineate Python *Java *API *Тестирование веб-сервисов *

Несколько месяцев назад на моем пути возник GraphQL.

Это произошло, когда я присоединилась к одному из наших проектов, где был не только привычный REST, но и GraphQL API. Это было моё первое знакомство с ним. Я понятия не имела, что он собой представляет, в чем его особенности, а самое главное для меня, как QA инженера – не знала, как его тестировать. 

Ниже я расскажу, что делала я, с какими проблемами сталкивалась, с чего можно начать и что важного и особенного надо знать про GraphQL для успешного тестирования как руками, так и с помощью автотестов. Вполне вероятно, что это поможет и вам разобраться в данном вопросе.

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

Разбираем Log4j уязвимость в деталях… с примерами и кодом

Информационная безопасность *Java *Серверное администрирование *
Из песочницы

Все о той же критической уязвимости в Log4j, но с примерами и кодом.

Читать далее
Всего голосов 74: ↑73 и ↓1 +72
Просмотры 32K
Комментарии 55

Spring AOP: как работает проксирование

Java *
Перевод

Четкое разделение бизнес логики с другими сквозными задачами является обязательным условием для создания чистого и читабельного кода. И говоря о сквозных задачах я имею ввиду управление транзакциями, безопасность и прочие важные задачи, которые хоть и не относятся к бизнес логике напрямую - но оказывают существенное влияние на работу приложения в целом. В случае "жесткого связывания" основной логики и подобных задач - мы можем получить кучу проблем в случае ошибки последних. АОП, собственно, и нацелено на решение подобных задач.

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

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 6.8K
Комментарии 8

Разбираемся с библиотекой лексического анализа ANTLR4

Блог компании SberDevices Программирование *Java *
Tutorial

У нас в SberDevices разрабатывается платформа по управлению рекомендациями, которая взаимодействует с разными ML-движками. Со временем их станет много, и, когда пользователь умных устройств Sber будет запрашивать контент – искать фильмы, музыку, спрашивать о чём-то виртуальных ассистентов Салют, – запрос будет проходить через нашу платформу.

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

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

Для обработки правил, написанных на кастомном DSL, лучшая библиотека – ANTLR4. Я находил много статей, в которых описываются разные аспекты работы с ANTLR4, но ни в одной из них я не увидел, то, что изучил на пути создания production-ready кода. Поэтому, разобравшись, я решил собрать туториал. Ниже опишу пример парсинга SQL SELECT-запроса в объектную модель Java. Будем двигаться постепенно, в этот раз рассмотрим простейший случай. На нём мы разберём саму идею этого парсера, сделаем минимальную реализацию.

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

Миграция Spring Boot приложения на Java 17 — сложный путь: День 2

Java *
Перевод
Tutorial

Добро пожаловать в статью о миграции приложения Spring Boot на Java 17.

В первый день мы пытались использовать Java 17 со Spring Boot и завершили день компиляцией нашего кода и зелеными юнит тестами.

В этом посте мы рассмотрим миграции: Spring Cloud, Spring Data, Spring Kafka

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 2.7K
Комментарии 2

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

Работа

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