Чашечка Java
الذهاب إلى القناة على Telegram
Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
إظهار المزيد8 283
المشتركون
-124 ساعات
-77 أيام
-7430 أيام
أرشيف المشاركات
8 283
Кто и в каких задачах быстрее? Coroutines, RxJava, Executor?
Вы когда-нибудь задумывались, какой из фреймворков для многопоточки самый быстрый? Я вроде и знал ответ, но задумывался периодически. В определённый момент сама судьба просто-напросто заставила меня взять и проверить. Так что если вам тоже всегда было это интересно, то я постарался протестировать, сравнить и предоставить результаты для вас.
Читать: https://habr.com/ru/companies/cian/articles/740782/?utm_campaign=740782
8 283
Ещё раз о пропертях или откуда что берётся
О чём вообще речь?
Всем привет! В данной статье речь пойдёт о настраиваемых параметрах конфигурации Spring приложений. Когда я только начал изучать Spring, естественно, одним из источников знаний были готовые примеры, проекты-образцы. И меня жутко бесило, что какие-то нужные для работы приложения значения появлялись «ниоткуда». К примеру, автор какого-нибудь туториала предлагал для проверки только что созданного учебного приложения зайти на localhost по порту 8088. Откуда берётся 8088? Почему не 8089? Оказалось, что для таких настраиваемых параметров есть специальные файлы. Итак:
Какие бывают настраиваемые параметры?
Настраиваемые параметры используются самим Spring-ом, различными библиотеками и, по желанию разработчика, могут быть добавлены свои собственные. Список всех параметров Spring-а можно посмотреть здесь.
Например, за то на каком порту будет крутиться встроенный http-сервер (если мы используем Spring Web) отвечает параметр server.port. В том самом туториале из вступления в соответствующем файле server.port был равен 8088. Выглядит это (в простейшем случае) так:
server.port=8088
Имя параметра может состоять (и, как правило, состоит) из нескольких частей. Например, все «спринговые» параметры начинаются со слова «spring». Кастомные (пользовательские) параметры, введённые разработчиком конечного приложения, могут начинаться, например со слова application или любого другого. В зависимости от используемого формата файла, части разделяются по-разному (см. следующий раздел). Простейший вариант, просто точками. Пример пользовательских параметров:
Читать: https://habr.com/ru/articles/740802/?utm_campaign=7408028 283
Профилирование, ассемблер и все-все-все
Привет, сегодня будет объёмная и обстоятельная статья о низкоуровневом профилировании и дигностике производительности. Многократно в комментариях к докладам и статьям пользователи высказывали пожелание увидеть не просто перечисление шаблонов "как нужно" и "как не нужно", а целостную историю. Поэтому вот вам статья про конкретный кейс и его историю :). Не удивляйтесь, что начнём мы с JPA, хотя казалось бы где оно и где ассемблер. По ходу дела вы всё поймёте.
Читать: https://habr.com/ru/articles/542156/?utm_campaign=542156
8 283
Spring Data JPA: замена нескольких запросов одним и почему это очень важно
Spring Data JPA: замена нескольких запросов одним и почему это очень важно.
Всем привет. В данной статье коснусь темы запросов к базе данных и как небольшие изменения в коде позволят значительно увеличить скорость работы нашего приложения, за счет увеличения производительности работы базы данных.
Читать: https://habr.com/ru/articles/740446/?utm_campaign=740446
8 283
Разница между FileReader и BufferedReader в Java
FileReaderи BufferedReader— два класса, которые могут считывать символы из входного потока. В этом туториале мы с вами рассмотрим различия между ними.
Читать: https://habr.com/ru/companies/otus/articles/740278/?utm_campaign=7402788 283
Java Digest #1
Всем привет! 👋 👋 👋
Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.
Льюис Кэрролл писал: «Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!» Надеемся, что поможем немного сберечь силы в этом марафоне всем читателям. Stay tuned! 😉
Читать первый выпуск
Читать: https://habr.com/ru/companies/tinkoff/articles/740350/?utm_campaign=740350
8 283
Просто о сложном: трассировки в микросервисах
В современном мире все больше IT-проектов переходят на микросервисную архитектуру. При таком подходе появляется ряд вопросов — как избитых, так и не самых очевидных. Как обеспечить корректную работу системы из большого числа микросервисов? Каким способом и с помощью каких технологий разворачивать этот зоопарк? Как отследить узкие места в производительности?
Меня зовут Максим, я Java-разработчик в SimbirSoft. Сейчас работаю на финтех-проекте, занимаюсь созданием бизнес-логики, иногда подключаюсь к различным техническим задачам. В этой статье я кратко и понятно опишу, что такое трассировки, как устроен Jaeger, а также расскажу про недавно появившийся новый стандарт распределенного трейсинга и мониторинга — OpenTelemetry.
Материал будет полезен начинающим разработчикам. Из него вы узнаете, как с небольшими усилиями подключить трассировки к своему проекту. Речь пойдет об инструменте из большого блока «Наблюдаемость» (Monitoring), а конкретно — о трассировках.
Читать: https://habr.com/ru/companies/simbirsoft/articles/740152/?utm_campaign=740152
8 283
Принцип подстановки Барбары Лисков в Java
Принципы проектирования SOLID были представлены Робертом Мартином в его книге “Design Principles and Design Patterns” в 2000 году. Эти принципы помогают нам создавать более гибкое программное обеспечение, которое легко понимать и обслуживать.
В этой статье мы обсудим “Принцип подстановки Барбары Лискофф”, который соответствует букве L в акрониме SOLID.
Читать: https://habr.com/ru/articles/739734/?utm_campaign=739734
8 283
Сколько памяти нужно для запуска 1 миллиона конкурирующих задач?
В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir.
Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие занимали почти 3 ГБ. К сожалению, эти программы были довольно сложными и также отличались своим функционалом, поэтому было бы трудно сравнить их непосредственно и сделать какие-то осмысленные выводы. Тут то у меня и возникла идея создать специальный синтетический бенчмарк.
Читать: https://habr.com/ru/companies/ruvds/articles/739054/?utm_campaign=739054
8 283
JVM internals
Статья объясняет внутреннюю архитектуру виртуальной машины Java (JVM). Диаграмма отображает ключевые внутренние компоненты типичной JVM, которая соответствует спецификации The Java Virtual Machine Specification Java SE 7 Edition
Читать: https://habr.com/ru/articles/739338/?utm_campaign=739338
8 283
Java для новичков: подборка материалов для самостоятельного изучения и сообществ для погружения
Привет, Хабр! Меня зовут Егор Ерохин, я — наставник на курсе «Java-разработчик» Яндекс Практикума и Java тимлид. В этой статье я собрал как русскоязычные, так и англоязычные ресурсы, которые помогут начинающим Java-разработчикам на их пути. А ещё комьюнити, которые будут полезны для расширения кругозора и нетворкинга.
Читать: https://habr.com/ru/companies/yandex_praktikum/articles/738812/?utm_campaign=738812
8 283
Предположим, нам дали два целых числа, но не примитивы, а Integer-объекты…
Этой публикацией мы начинаем серию небольших статей с разбором «сложных» заданий из сертификации для Java‑разработчиков, чтобы помочь вам подготовиться к сдаче сертификационного экзамена и помочь вам лучше понять, как работает Java и как эффективнее использовать его в своих проектах.
Итак, один из подвопросов, традиционно выносимых на экзамен — будь это сертификация Oracle или сертификации для Java‑разработчиков от Учебного центра IBS, — интересуется разработкой кода с использованием классов‑оболочек, в частности, Boolean, Double или, скажем, Integer.
Задача и ее решение
Читать: https://habr.com/ru/companies/ibs/articles/739380/?utm_campaign=739380
8 283
Многопоточность в мобильной разработке
Всем привет! На связи Сергей, Android-разработчик Студии Олега Чулакова на проектах Сбера.
В этой статье я хочу рассмотреть один из важнейших аспектов мобильной разработки — многопоточность. Многопоточность позволяет выполнять несколько задач одновременно и повышать производительность приложения.
Читать: https://habr.com/ru/articles/739212/?utm_campaign=739212
8 283
Консолидация отображения данных с использованием протокола OData
Появилась у нас тут задачка, вывести на портале Incomand данные из разных подсистем (1С, Тезис…) . Конечно можно было бы написать плагины, каждый из которых слазил бы в подсистему, получил данные и показал их на портале - НО - мы бы получили p2p и спагетти, порталу пришлось бы разбираться с форматами и протоколами работы каждой системы….
Читать: https://habr.com/ru/articles/738526/?utm_campaign=738526
8 283
Работа Apache Kafka на примерах. Поднимаем Kafka Cluster используя docker-compose
В этой статье продемонстрирую и объясню работу Kafka, используя как можно меньше определений и больше практики. Мы рассмотрим 3 сценария работы с Kafka. Для последнего сценария мы поднимем Kafka Cluster в Docker и с помощью UI увидим, как происходит общение между сервисами.
Читать: https://habr.com/ru/articles/738874/?utm_campaign=738874
8 283
Что такое абстрактные классы и методы в Java
Абстрагирование – это процесс, в ходе которого от пользователя скрываются многие детали реализации, а предоставляются только те детали, которые действительно важны. Так удаётся сфокусироваться на том, что делает объект, а не как он это делает.
В Java абстрактные классы и методы – это основные инструменты для реализации абстракций. Абстрактные классы служат шаблонами для создания субклассов, а абстрактные методы можно сравнить с чертежами, описывающими поведение этих субклассов.
Если вы новичок в Java или хотите освежить знания о том, чем отличаются абстрактные классы или интерфейсы, то можете почитать руководство и на эту тему: Difference Between Interface and Abstract class in Java.
Читать: https://habr.com/ru/companies/piter/articles/738508/?utm_campaign=738508
8 283
Spring Data JPA: разница между методами findById, getOne, getById и findOne
JpaRepositorySpring Data предоставляет огромный набор методов, упрощающих реализацию операций над базой данных. С их помощью вы можете сохранять, удалять и считывать объект сущности (entity object). Однако одна из немногих проблем, являющаяся следствием изобилия возможностей, которые дают нам эти интерфейсы, — это выбор правильного метода для вашего конкретного случая. И иногда это совсем не так просто, как могло бы показаться с первого взгляда. Хорошим примером этой проблемы являются методы findById, getOne, getById, и findOne. Судя по их именам, все они делают одно и то же. Так когда и какой из них вы должны использовать?
Именно на этот вопрос я собираюсь ответить в этой статье. Эти методы имеют несколько важных различий. И как только вы их узнаете, выбор правильного метода для вашего конкретного случая станет чем-то совсем очевидным.
Читать: https://habr.com/ru/companies/otus/articles/738298/?utm_campaign=7382988 283
Как в 3 раза снизить затраты на отказоустойчивую инфраструктуру, переехав с Hazelcast на Redis
Redis на хайпе. Но мы переехали на него с Hazelcast не из-за этого, а потому, что в какой-то момент осознали, что не замечать сколько инцидентов у нас возникает из-за Hazelcast, дальше невозможно. Сегодня расскажу вам замечательную историю как мы всем Альфа-Мобайлом сменяли одну технологию на другую.
Читать: https://habr.com/ru/companies/alfa/articles/737630/?utm_campaign=737630
8 283
Telegram клиент. TDLib и Spring Boot
Всем привет! В данной статье я хотел бы рассмотреть процесс создания Telegram клиента с помощью кроссплатформенной библиотеки TDLib, Java и Spring Boot.
Читать: https://habr.com/ru/articles/738022/?utm_campaign=738022
