Обновить
128K+

Java *

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

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

Профилирование, ассемблер и все-все-все

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели6.9K

Привет, сегодня будет объёмная и обстоятельная статья о низкоуровневом профилировании и дигностике производительности. Многократно в комментариях к докладам и статьям пользователи высказывали пожелание увидеть не просто перечисление шаблонов "как нужно" и "как не нужно", а целостную историю. Поэтому вот вам статья про конкретный кейс и его историю :). Не удивляйтесь, что начнём мы с JPA, хотя казалось бы где оно и где ассемблер. По ходу дела вы всё поймёте.

Читать далее

Spring Data JPA: замена нескольких запросов одним и почему это очень важно

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

Spring Data JPA: замена нескольких запросов одним и почему это очень важно.

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

Читать далее

Разница между FileReader и BufferedReader в Java

Время на прочтение4 мин
Охват и читатели16K

FileReader и BufferedReader — два класса, которые могут считывать символы из входного потока. В этом туториале мы с вами рассмотрим различия между ними.

Читать далее

Java Digest #1

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.1K

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

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

Льюис Кэрролл писал: «Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!» Надеемся, что поможем немного сберечь силы в этом марафоне всем читателям. Stay tuned! ?

Читать первый выпуск

Просто о сложном: трассировки в микросервисах

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

В современном мире все больше IT-проектов переходят на микросервисную архитектуру. При таком подходе появляется ряд вопросов — как избитых, так и не самых очевидных. Как обеспечить корректную работу системы из большого числа микросервисов? Каким способом и с помощью каких технологий разворачивать этот зоопарк? Как отследить узкие места в производительности?

Меня зовут Максим, я Java-разработчик в SimbirSoft. Сейчас работаю на финтех-проекте, занимаюсь созданием бизнес-логики, иногда подключаюсь к различным техническим задачам. В этой статье я кратко и понятно опишу, что такое трассировки, как устроен Jaeger, а также расскажу про недавно появившийся новый стандарт распределенного трейсинга и мониторинга — OpenTelemetry.

Материал будет полезен начинающим разработчикам. Из него вы узнаете, как с небольшими усилиями подключить трассировки к своему проекту. Речь пойдет об инструменте из большого блока «‎Наблюдаемость» (Monitoring), а конкретно — о трассировках.

Читать далее

Принцип подстановки Барбары Лисков

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели29K

Принципы проектирования SOLID были представлены Робертом Мартином в его книге “Design Principles and Design Patterns” в 2000 году. Эти принципы помогают нам создавать более гибкое программное обеспечение, которое легко понимать и обслуживать. 

В этой статье мы обсудим “Принцип подстановки Барбары Лискофф”, который соответствует букве L в акрониме SOLID.

Читать далее

Сколько памяти нужно для запуска 1 миллиона конкурирующих задач?

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

В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir.

Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие занимали почти 3 ГБ. К сожалению, эти программы были довольно сложными и также отличались своим функционалом, поэтому было бы трудно сравнить их непосредственно и сделать какие-то осмысленные выводы. Тут то у меня и возникла идея создать специальный синтетический бенчмарк.
Читать дальше →

JVM internals

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели29K

Статья объясняет внутреннюю архитектуру виртуальной машины Java (JVM). Диаграмма отображает ключевые внутренние компоненты типичной JVM, которая соответствует спецификации The Java Virtual Machine Specification Java SE 7 Edition

Читать далее

Масштабируемая Big Data система в Kubernetes с использованием Spark и Cassandra

Уровень сложностиСредний
Время на прочтение39 мин
Охват и читатели5.1K

В предыдущей статье я рассказал, как организовать систему распределенного машинного обучения на GPU NVidia, используя язык Java с фреймворками Spring, Spark ML, XGBoost, DJL в standalone кластере Spark. Особенностью поставленной задачи являлось организация системы под управлением ОС Windows 10 Pro, в Docker‑контейнерах. Эксперимент оказался не вполне успешным. В данной статье я покажу, как воспользоваться имеющимися наработками и запустить Spark Jobs в Kubernetes в режимах client и cluster, опишу особенности работы с Cassandra в Spark, покажу пример обучения модели и ее дальнейшего использования. В этот раз буду использовать язык Kotlin. Репозиторий с кодом доступен на GitLab.

Данная статья представляет интерес для тех, кто интересуется системами Big Data и стремится создать систему, позволяющую, в том числе, выполнять задачи распределенного машинного обучения на Spark в Kubernetes, используя GPU NVidia и Cassandra для хранения данных.

Читать далее

Java для новичков: подборка материалов для самостоятельного изучения и сообществ для погружения

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели81K

Привет, Хабр! Меня зовут Егор Ерохин, я — наставник на курсе «Java-разработчик» Яндекс Практикума и Java тимлид. В этой статье я собрал как русскоязычные, так и англоязычные ресурсы, которые помогут начинающим Java-разработчикам на их пути. А ещё комьюнити, которые будут полезны для расширения кругозора и нетворкинга.

Читать далее

Предположим, нам дали два целых числа, но не примитивы, а Integer-объекты…

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.9K

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

Итак, один из подвопросов, традиционно выносимых на экзамен — будь это сертификация Oracle или сертификации для Java‑разработчиков от Учебного центра IBS, — интересуется разработкой кода с использованием классов‑оболочек, в частности, Boolean, Double или, скажем, Integer.

Задача и ее решение

Многопоточность в мобильной разработке

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели32K

Всем привет! На связи Сергей, Android-разработчик Студии Олега Чулакова на проектах Сбера.

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

Читать далее

Консолидация отображения данных с использованием протокола OData

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

Появилась у нас тут задачка, вывести на портале Incomand данные из разных подсистем (1С, Тезис…) . Конечно можно было бы написать плагины, каждый из которых слазил бы в подсистему, получил данные и показал их на портале - НО - мы бы получили p2p и спагетти, порталу пришлось бы разбираться с форматами и протоколами работы каждой системы….

Читать далее

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

Работа Apache Kafka на примерах. Поднимаем Kafka Cluster используя docker-compose

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели130K

В этой статье продемонстрирую и объясню работу Kafka, используя как можно меньше определений и больше практики. Мы рассмотрим 3 сценария работы с Kafka. Для последнего сценария мы поднимем Kafka Cluster в Docker и с помощью UI увидим, как происходит общение между сервисами.

Читать далее

Что такое абстрактные классы и методы в Java

Время на прочтение7 мин
Охват и читатели39K
Абстрагирование – это процесс, в ходе которого от пользователя скрываются многие детали реализации, а предоставляются только те детали, которые действительно важны. Так удаётся сфокусироваться на том, что делает объект, а не как он это делает.

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

Если вы новичок в Java или хотите освежить знания о том, чем отличаются абстрактные классы или интерфейсы, то можете почитать руководство и на эту тему: Difference Between Interface and Abstract class in Java.
Читать дальше →

Spring Data JPA: разница между методами findById, getOne, getById и findOne

Время на прочтение8 мин
Охват и читатели20K

JpaRepository Spring Data предоставляет огромный набор методов, упрощающих реализацию операций над базой данных. С их помощью вы можете сохранять, удалять и считывать объект сущности (entity object). Однако одна из немногих проблем, являющаяся следствием изобилия возможностей, которые дают нам эти интерфейсы, — это выбор правильного метода для вашего конкретного случая. И иногда это совсем не так просто, как могло бы показаться с первого взгляда. Хорошим примером этой проблемы являются методы findById, getOne, getById, и findOne. Судя по их именам, все они делают одно и то же. Так когда и какой из них вы должны использовать?

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

Читать далее

Как в 3 раза снизить затраты на отказоустойчивую инфраструктуру, переехав с Hazelcast на Redis

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

Redis на хайпе. Но мы переехали на него с Hazelcast не из-за этого, а потому, что в какой-то момент осознали, что не замечать сколько инцидентов у нас возникает из-за Hazelcast, дальше невозможно. Сегодня расскажу вам замечательную историю как мы всем Альфа-Мобайлом сменяли одну технологию на другую.

Читать далее

Telegram клиент. TDLib и Spring Boot

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели25K

Всем привет! В данной статье я хотел бы рассмотреть процесс создания Telegram клиента с помощью кроссплатформенной библиотеки TDLib, Java и Spring Boot.

Читать далее

Как мы выбирали процессный движок: месяц мучений ради идеала

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели17K

Хабр, привет! Меня зовут Артем Терзьян, я Java-разработчик в IBS. Именно на мои плечи пала нелегкая задача выбора идеального BPMN-движка для реализации с его помощью бизнес-процессов в рамках нашей собственной платформы. Надеюсь, приведенный обзор поможет кому-то сэкономить время при столкновении с аналогичной задачей.

Подробнее о моих экспериментах

Как работают сервисы карт и маршрутизации

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

В период моей жизни, когда я работал в Санкт-Петербурге, пришла мне интереснейшая задача — создать и интегрировать в один проект функционал карт. По ограничениям бизнес требований, карта должна работать в условиях отсутствия интернета, при этом удовлетворять требования визуального отображения и построения маршрутов. Значит не было возможности использовать готовый API Яндекса или Google, так что пришлось реализовывать механизмы самому.

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

Как работают сервисы карт и маршрутизации?