Как стать автором
Обновить
При поддержке
120.45

Java *

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

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

Java и современный процессор, Часть 1: Память и иерархия кэша

Время на прочтение 12 мин
Количество просмотров 1.8K
Блог компании OTUS Java *
Перевод

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

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

Новости

Преобразование закрытого ключа КриптоПро CSP по ГОСТ 2012 в контейнер p12, который понимает java

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 1.9K
Информационная безопасность *Криптография *Программирование *Java *Микросервисы *
Туториал


Закрытый ключ КриптоПро CSP представляет из себя флеш-накопитель, на котором в директории ххххх.000 лежат файлы primary.key, primary2.key, masks.key, masks2.key, name.key и header.key.

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

Фундаментальное руководство по пакетам в Java

Уровень сложности Средний
Время на прочтение 22 мин
Количество просмотров 2.8K
Программирование *Java *
Туториал
❤️‍🩹 Сезон Java one love

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

Java-пакеты реализуют так называемое пространство имен (namespace), позволяющее использовать в проекте файлы с одинаковыми именами. Такой подход существует с давних времен во многих языках.

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

И наконец, с помощью пакетов можно ограничивать доступ (из других пакетов) как целиком к классам, так и к их отдельным элементам.

Об этом и многом другом и пойдет речь в данной статье.

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

Как задеплоить монолитный pet проект на Java с 0 и не сойти с ума… Часть 2

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 990
Java *Amazon Web Services *GitHub *Системы сборки *DevOps *
Туториал

Это 2-ая часть статьи "Как задеплоить монолитный pet проект на Java с 0 и не сойти с ума". Первую часть вы можете найти по ссылке.

В первой части мы успешно добавили свои наработки в репозиторий GitHub, в этой части мы рассмотрим что такое GitHub Actions и как с помощью них добавить свой образ docker контейнера с приложением в хранилище DockerHub.

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

Истории

Apache Flink ML – прогнозирование в реальном времени

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 770
Блог компании Neoflex Программирование *Java *Apache *
Туториал

Всем привет!

В этой статье рассмотрим применение библиотеки Apache Flink ML для построения конвейеров машинного обучения. Затем реализуем простой проект по прогнозированию поведения системы, а также ответим на вопросы: какие задачи Machine Learning подходят для Flink и какие особенности Flink делают его подходящим для использования в задачах Machine Learning.

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

Как скомпилировать Spring Boot приложение в native image с помощью GraalVm и развернуть его с помощью Docker

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.8K
Программирование *Java *
Туториал
Из песочницы
❤️‍🩹 Сезон Java one love

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

Это стало одной из причин интереса к GraalVm - виртуальной машине, написанной на Java, помогающая делать программы быстрее с помощью JIT компилятора. GraalVm помогает скомпилировать java код в так называемый native image. Это исполняемый файл приложения, который мгновенно запускается без старта JVM.

Эта статья - туториал, как подружить между собой Spring Boot, GraalVm, Liquibase и Docker, какие могут возникнуть подводные камни и как их можно обойти.

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

Синхронизация в Java, часть 1: состояния гонки, блокировки и условия

Время на прочтение 14 мин
Количество просмотров 2K
Блог компании OTUS Java *
Перевод

Представляем вашему вниманию первую статью из серии о синхронизации потоков в Java, в которой мы рассмотрим основы: состояния гонки, объекты блокировки, объекты условий, а также методы await, signal и signalAll.

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

Как задеплоить монолитный pet проект на Java с 0 и не сойти с ума… Часть 1

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 3.6K
Java *Amazon Web Services *GitHub *Разработка под Linux *DevOps *
Из песочницы

Перерыв в работе заставил меня задуматься над смыслом выражения "Сапожник без сапог". Будучи Java Backend Developer с 3-ех летним стажем я не имею на руках ни одного pet проекта. Конечно, на GitHub у меня есть какие-то мелкие проектики, но они не доведены до конца и кроме того как просто висеть на доске "почета" они больше ничего и не могут. С этой мыслёй я пошел в интернет гуглить "как мне задеплоить свое приложение?".

Скажу сразу, это статья содержит шаги по развертыванию Java приложения с помощью GitHub Actions на серверах AWS EC2 и это моя интрерпретация тех инструкций, которые я находил в интернете. Собственно это статья содержит для новичков, кто просто не делал никогда деплой своего приложения, но очень хочет в сжатые сроки похвастаться своим результатом.

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

Авторизация в Spring Boot приложении с Spring Security 3.1.0 и PostgreSQL

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 3.4K
Java *
Из песочницы
❤️‍🩹 Сезон Java one love

Эта статья является первой, написанной мной. Буду очень рад, если она все же будет опубликована. На данный момент являюсь Junior Java разработчиком, поэтому в этой статье не будет сложной аналитики и глубокого погружения в тему, но я свой опыт изучения и реализации приложений с использованием Spring Security, возможно, кому-то это поможет справиться с теми трудностями, с которыми встретился я.

Недавно мне пришлось подключать и настраивать авторизацию через Spring Security версии 3.1.0. В процессе разработки и решения сложностей, которых было не мало, я заметил, что информации по версии 3.1.0 довольно мало, если не считать документацию.

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

Ракету пустил и забыл. Или как заставить DI работать

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 1.9K
Java *Разработка под Android *Kotlin *
Из песочницы

Ваш первый день на работе. Вчера вы рассказывали про чистую архитектуру, SOLID принципы, и про то, как создавать аккуратную и масштабируемую архитектуру.

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

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

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

Читать далее
Рейтинг 0
Комментарии 21

Поднимаем кластер PostgreSQL в Docker и Testcontainers

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 7.9K
PostgreSQL *Java *IT-инфраструктура *
❤️‍🩹 Сезон Java one love

Ранее я рассказывал о том, как запустить PostgreSQL в Docker. Тогда речь шла об использовании «ванильных» образов Postgres и поднятии одного хоста. В большинстве случаев этого достаточно как для тестов, так и для экспериментов, но нужно понимать, что в промышленной эксплуатации чаще всего используются высокодоступные (отказоустойчивые, кластеризованные) конфигурации PostgreSQL.

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

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

Исчерпывающее руководство по одномерным массивам в Java

Уровень сложности Простой
Время на прочтение 20 мин
Количество просмотров 3.9K
Программирование *Java *
Туториал
❤️‍🩹 Сезон Java one love

Для хранения данных, используемых при работе программы, применяются переменные того или иного типа. Например, если требуется сохранить имя игрока, то создается переменная String name, если целочисленное значение, то int number и т. д. Когда таких значений немного или их количество заранее известно, то для них приемлемо использовать отдельные переменные.

Но что делать, когда в программе задействовано не одно, а 10 чисел, или их количество становится известно только на этапе запуска приложения, когда пользователь вводит его с клавиатуры? Или в какой-то игре может участвовать разное количество игроков, устанавливаемое при ее старте. В таких ситуациях отдельными переменными уже не обойтись, т. к. их точное количество будет невозможно определить. Да и, если все же попытаться это сделать, код станет громоздким и не универсальным, а работа с ним будет крайне ограниченной из-за невозможности использования цикла для автоматизированной обработки данных.

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

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

Новый взгляд на Maven-plugin для IDEA — GMaven

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 3.2K
Open source *Программирование *Java *
Из песочницы
❤️‍🩹 Сезон Java one love

Привет, меня зовут Григорий Мясоедов, ранее я имел опыт работы в JetBrains в команде build tools, а конкретно занимался Maven-plugin.  В этой статье я хочу поговорить о том как устроен плагин под капотом, его сильных и слабых местах, и о том что я в итоге со всем этим сделал.

Одна из самых частых проблем, которыми я занимался в JetBrains, звучала так - “через командную строку Maven проект собирает, но в IDEA он не импортируется (импортируется с ошибками)”. Как будет показано ниже большинство этих проблем связаны с архитектурой JB Maven плагина.

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

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

E-COMMUNITY. Конференция про IT в e-com
Дата 24 августа
Время 16:00 – 20:00
Место Онлайн
«Стачка» — IT-конференция
Дата 15 – 16 сентября
Время 09:00 – 18:30
Место Ульяновск
Business⁢ Day: Retail CPG
Дата 28 сентября
Время 09:50 – 14:00
Место Онлайн
XIX конференция разработчиков свободных программ «Базальт СПО»
Дата 29 сентября – 1 октября
Время 10:00 – 19:00
Место Переславль-Залесский Онлайн

Kafka UI краткий гайд

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 8.8K
Java *DevOps *
Туториал

Буквально недавно я начал создавать свой аналог сервиса Discord, используя веб-сокеты и передавая сообщения через очередь. В один из моментов мне понадобилось проверить, корректно ли проходят сообщения в этой очереди. Тогда я осознал, как неудобно каждый раз заходить в docker контейнер и вручную вводить команду для просмотра всех сообщений в топиках. После дня анализа и советов от моего коллеги, опытного DevOps-инженера Паши, я пришел к выводу, что kafka-ui от команды provectus — это наилучший и наиболее удобный инструмент для визуализации данных в Kafka.

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

Пошушукаемся о Барбаре Лисков или раз и навсегда запоминаем принцип подстановки

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 6.4K
Программирование *Java *Совершенный код *ООП *Учебный процесс в IT
Туториал
Из песочницы

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

Материал по этой теме здесь уже имеется, но на мой взгляд, информация там подана не совсем удачно и полно. Рискну внести свою лепту в дело понимания и запоминания такого фундаментального принципа.

В данной статье я постараюсь по максимуму избежать кода. Сделано это в целях повышения универсальности материала, он должен быть интересен всем читателям независимо от их языка программирования. В тех местах, где код неизбежно понадобится, он будет оформлен в синтаксисе Java. Не пугайтесь, все объясню, сложно не будет (во всяком случае, по моим расчетам). Итак, поехали!

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

Java Digest #3

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 4.3K
Блог компании TINKOFF Программирование *Java *Kotlin *
Дайджест

Всем привет! 👋 👋 👋

Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим со всем сообществом.

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

Терри Пратчетт «Стража! Стража!» 

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

Из кладовщика в разработчики

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 5.9K
Программирование *Java *Go *Карьера в IT-индустрии
Роадмэп

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

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

Использование Kotlin и WebFlux для выполнения задач ML в Apache Spark на GPU

Уровень сложности Средний
Время на прочтение 32 мин
Количество просмотров 1.6K
Java *Kotlin *
❤️‍🩹 Сезон Java one love

В предыдущей статье для создания Spark Driver приложения использовался сервлетный стек Spring (Boot 2.7.11) и JDK 8.

На дворе вторая половина 2023 года, у многих в проде уже используется Boot 3+ (а то и 3.1+), совсем скоро должна выйти новая LTS версия Java, и, мягко говоря, Boot 2+ и JDK8 устарели. Использовались они намеренно, так как для задач тренировки моделей машинного обучения на GPU в среде Spark частью системы является ускоритель вычислений на GPU NVidia Rapids. Поддержка JDK 17 появилась только в релизе v23.06.0 от 27.06.23, с ее выходом появилась возможность перейти на актуальную LTS версию Java, а с ней - на Spring Boot 3+.

В данной статье описывается миграция с Boot 2 и JDK 8 До Boot 3 и JDK 17, со Spring Web на Spring WebFlux, в конце сравниваются Web и WebFlux версии по потреблению аппаратных ресурсов и скорости выполнения.

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

Свойство типа Controller Service в кастомном процессоре NiFi

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 889
Java *Big Data *
Туториал

В этой короткой статье я хочу показать, как использовать в качестве одного из свойств кастомного процессора NiFi стандартную службу Controller Service, а также как написать тест для такого процессора.В качестве примера будем использовать стандартную службу SSLContextService.

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

Опыт Сдачи: Oracle Certified Professional: Java SE 11 Developer 1Z0-819

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.9K
Java *Учебный процесс в IT Карьера в IT-индустрии
Из песочницы

Всем Привет. Публикация для тех кто планирует сдавать OCP от Oracle. Подобных постов великое множество, как и материалов, но я решил написать пост о своем опыте сдачи этой сертификации.

Сдавал я сертификацию на Java SE 11 чуть более года назад. Тогда была уже доступен экзамен на Java SE 17, но насколько я помню отредактированных книг и мок тестов еще не было, поэтому я решил сдать именно на 11-ую Java.

Вообще насколько мне известно до сих пор доступен экзамен и на Java SE 8, но он по-прежнему состоит из OCA + OCP, хотя его значительно упростили с годами уменьшив количество вопросов.

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

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

Работа

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