Pull to refresh
13
0

Пользователь

Send message

Разница между загрузкой и инициализацией классов в Java на любопытном примере

Level of difficulty Medium
Reading time 9 min
Views 13K

Привет, сегодняшняя статья будет о некоторых тонкостях загрузки и инициализации классов и немного о производительности (совсем чуть-чуть и в самом конце).


Поводом для написания статьи стал вопрос на StackOverflow. Откройте, но не торопитесь читать ответ ;)

Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 2

SRE: паттерны Reliability

Level of difficulty Easy
Reading time 12 min
Views 4.2K

Это первая часть топика, где мы поговорим о Reliability в рамках практик SRE.

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

Читать далее
Total votes 14: ↑12 and ↓2 +10
Comments 4

Как мы работаем с мониторингом и чем он нам помогает

Reading time 6 min
Views 3.7K

В одном из предыдущих постов мой коллега Юрий рассказывал об устройстве нашего мониторинга.

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

Для ленивых или занятых — переходите сразу на последний раздел: там краткая выжимка.

Читать далее
Total votes 15: ↑15 and ↓0 +15
Comments 2

Разбираемся с RabbitMQ: High Availability и High Load

Reading time 8 min
Views 12K

Продолжаем делиться конспектами Алексея Барабанова, IT-директора «Хлебницы». На этот раз обсудим специфику работы RabbitMQ с высокими нагрузками (High Load) и обеспечением высокой доступности (High Availability). Рассмотрим различные методы увеличения производительности и горизонтального масштабирования, разберём и настроим внутренние инструменты. Также по мере погружения постараемся изучить основные подводные камни всех подходов.

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 1

Дюк, вынеси мусор! — 1. Введение

Reading time 13 min
Views 209K


Наверняка вы уже читали не один обзор механизмов сборки мусора в Java и настройка таких опций, как Xmx и Xms, превратилась для вас в обычную рутину. Но действительно ли вы в деталях понимаете, что происходит под капотом вашей виртуальной машины в тот момент, когда приходит время избавиться от ненужных объектов в памяти и ваш идеально оптимизированный метод начинает выполняться в несколько раз дольше положенного? И знаете ли вы, какие возможности предоставляют вам последние версии Java для оптимизации ответственной работы по сборке мусора, зачастую сильно влияющей на производительность вашего приложения?

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать
Total votes 36: ↑36 and ↓0 +36
Comments 7

Работаем с PostgreSQL в Go. Опыт Авито

Reading time 8 min
Views 16K

Привет! Меня зовут Дима Вагин, я бэкенд-инженер в Авито. Сегодня расскажу, как мы работаем с БД PostgreSQL из Go. Покажу, какие библиотеки и пулеры соединений мы используем для доставки в код параметров подключения и как мы их настраиваем. А ещё расскажу про проблемы, к которым приводит отмена контекста, и о том, как мы с ними справляемся.

Читать далее
Total votes 29: ↑27 and ↓2 +25
Comments 19

Повышаем производительность и безопасность мониторингом логов и метрик

Level of difficulty Easy
Reading time 10 min
Views 10K

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

В этой статье мы подробно рассмотрим мониторинг, расскажем о нескольких примерах использования, дадим рекомендации, а также поговорим о том, как конкретно мониторинг способен повысить безопасность, производительность и надёжность при помощи наблюдаемости.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 2

Как работает Activity. Часть 1

Reading time 12 min
Views 18K

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

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

В первой части совсем немного расскажу про Binder, про то, как происходит запуск Activity, как стартует процесс приложения и как на вызов Activity влияют флаги и launch mode. Во второй части будет про то, как вызываются методы жизненного цикла Activity, что происходит при сворачивании приложения, и более подробно расскажу про старт первой Activity.

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 0

Глубокое погружение в Java Memory Model

Reading time 53 min
Views 123K


Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.


В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.

Читать дальше →
Total votes 109: ↑109 and ↓0 +109
Comments 60

Как безопасно завершить работу пода в Kubernetes: разбираемся с graceful shutdown и zero downtime деплоймент

Reading time 14 min
Views 16K

Landing deck by maciejkuciara

Создание и удаление подов — распространенная задача при работе с Kubernetes. Новые поды создаются, когда вы выполняете плавающее обновление, масштабируете развертывание и релизите новую функциональность, а также при выполнении cron и других задач. Еще поды пересоздаются при каждом удалении и внесении изменений, например, когда узел помечается как непланируемый (unschedulable).

Команда Kubernetes aaS VK Cloud Solutions перевела статью о том, как безопасно завершить работу пода.

Основные термины из статьи:

Graceful shutdown — предсказуемое окончание работы системы, когда все запущенные процессы корректно завершают работу без потери данных или негативного пользовательского опыта.

Zero downtime deploy — нулевой простой во время развертывания новой версии приложения. Пользователь не заметит его недоступности.

Понятная схема, которая показывает, что происходит в кластере при удалении пода (PDF).
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 3

Создание нативных CLI приложений на Java с помощью Graalvm и Picocli

Reading time 15 min
Views 7.1K

Язык программирования Go стал популярным для написания приложений командной строки. Для этого может быть много причин, но один аспект, в котором выделяется Go, - это возможность скомпилировать программу в один нативный исполняемый файл. Это значительно упрощает распространение программы.

Программы Java традиционно было трудно распространять, потому что они требовали, чтобы на целевой машине была установлена ​​виртуальная машина Java. Можно связать с приложением последнюю JVM, но это увеличивает размер пакета примерно на 200 МБ.

Все движется в правильном направлении: система модулей Java (JPMS), представленная в Java 9, включает утилиту jlink, позволяющую приложению создавать настраиваемую, минимизированную JRE, размер которой может составлять всего 30-40 МБ, и Java. 14 включает jpackage, которая может создать установщик, содержащий этот минимальный JRE с вашим приложением.

Тем не менее, для приложений командной строки установщик не идеален. В идеале мы хотим распространять нашу утилиту CLI как «настоящий» нативный исполняемый файл без упакованной среды выполнения. GraalVM позволяет нам делать это с помощью программ, написанных на Java.

Читать далее
Total votes 15: ↑13 and ↓2 +11
Comments 4

Как строить карьеру тимлидам и СТО: рефлексия, планирование и карьерный роадмап

Reading time 12 min
Views 17K
Стать руководителем — один из вариантов развития карьеры разработчика. Но что делать дальше, когда кода в жизни становится всё меньше, а управления всё больше? Мы поговорили с техлидами и СТО о том, что значит, когда очередная галочка в списке целей поставлена и вы уже руководитель небольшой (или очень даже большой) команды. Как правильно развиваться в профессии дальше и что предпринять, чтобы при этом не выгореть самому и не дать выгореть команде.

Выгорел и забухал...
Приятного чтения!
Total votes 27: ↑26 and ↓1 +25
Comments 4

Перевод Курса по стартапам и бизнесу от Стэнфордского Университета. Лекция №2. Команда и реализация стартапа

Reading time 3 min
Views 5.6K

Почему Курс по стартапам и бизнесу от Стэнфордского Университета, является одним из самых лучших в мире для стартаперов? Дело в том, что лекторами данного курса являются лучшие из лучших стартап-предприниматели, такие как: Сем Альтман – президент самого известного венчурного фонда Y Combinator, Дастин Московиц – сооснователь Facebook, Питер Тиль – сооснователь PayPal и первый инвестор, который вложил деньги в Facebook, Брайан Чески – основатель Airbnb, Альфред Лин – основатель Zappos, Алан Кей – отец ООП и много других гуру современного интернет-бизнеса.

В этом курсе отсутствуют сложные теории, а присутствуют только практические примеры и советы.
Например, как найти бизнес-идею и оценить её, как привлечь клиентов и постоянно увеличивать свои продажи, как построить успешную бизнес-стратегию и подобрать сильную команду и т. д.
В первой лекции будут выступать Сэм Альтман – гений-программист, который сейчас возглавляет венчурный фонд Y Combinator, с чьей помощью успешно реализовано более 400 стартапов и также Дастин Московиц — сооснователь Facebook.

В этой небольшой статье я хочу кратко описать содержимое лекции №2 - Команда и реализация стартапа из курса по стартапам и бизнесу от Стэнфордского Университета.

Итак, из Лекции №2 - Команда и реализация стартапа вы узнаете слендующее:

00:43 - Как определить какие рынки будут развиваться и расти в будущем?

01:35 - Как преодолеть усталость от стартапа основателям?

02:45 - Как найти со-основателя или партнера и выстроить с ним хорошие отношения?

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 0

Full-stack мониторинг на примере Java приложений

Reading time 9 min
Views 16K

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

Сегодня мы с вами рассмотрим, что такое Full Stack мониторинг и чем он отличается от привычного “уху” понятию мониторинга, нюансы Full Stack мониторинга для Java и сложности мониторинга микросервисных приложений на Java. Расскажем, как мы реализуем Full Stack мониторинг с помощью OpenSource стандартов и платной платформы. 

Давайте определимся, что мы называем Full Stack мониторингом?

Full stack мониторинг – это подход в мониторинге производительности приложений, который подразумевает под собой мониторинг всего стека, что включает в себя:

Мониторинг приложений – сбор метрик приложения, сбор трейсов транзакций, обеспечение видимости на уровне кода и т.д.

Мониторинг инфраструктуры – метрики хостов, процессов, контейнеров и т.д.

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

Читать далее
Total votes 1: ↑1 and ↓0 +1
Comments 0

Управленческие инструменты: Мамонт как главный принцип командообразования

Reading time 2 min
Views 19K
После публикации материалов по управленческим инструментам некоторые читатели пеняли нам, что мы много пишем о работе с людьми, но редко затрагиваем тему команд. И пока идет мега-конкурс историй про то, чему мы учимся у руководителей и коллег, мы решили сделать несколько материалов на тему команд.

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

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

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

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

Мамонт - главный концепт командообразования
Total votes 16: ↑11 and ↓5 +6
Comments 1
В твоей жизни настал переломный момент: необходимо написать статью на Хабр. Нужно, конечно, написать её хорошо. И ни в коем случае не написать плохо. Но начинающему автору это полезнейшее наставление слабо помогает (немудрено — нужна конкретика!). Поэтому мы собрали коллекцию хабрастатей о том, как писать технотексты — в них сами хабравчане поделятся тем, что умеют.

Лень или банально нет времени переходить по ссылкам и читать много длинных статей? Для удобства мы скомпилировали самую важную информацию прямо под катом.
Да, это вот тут
Total votes 51: ↑47 and ↓4 +43
Comments 24

Лучшие практики для деплоя высокодоступных приложений в Kubernetes. Часть 1

Reading time 13 min
Views 26K

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

Функциональность, которая не доступна в Kubernetes «из коробки», здесь почти не будет затрагиваться. Также мы не будем привязываться к конкретным CD-решениям и опустим вопросы шаблонизации/генерации Kubernetes-манифестов. Рассмотрены только общие правила, касающиеся того, как Kubernetes-манифесты могут выглядеть в конечном итоге при деплое в кластер.

Читать далее
Total votes 68: ↑67 and ↓1 +66
Comments 19

Всё, о чём должен знать разработчик Телеграм-ботов

Reading time 15 min
Views 588K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

Как вообще устроены боты? Как они взаимодействуют с пользователями? Что с их помощью можно реализовать, а что нельзя?

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Total votes 127: ↑127 and ↓0 +127
Comments 73

Недостающее введение в контейнеризацию

Reading time 13 min
Views 42K

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

Docker - одна из самых известных платформ контейнеризации в настоящее время, она была выпущена в 2013 году. Однако использование изоляции и контейнеризации началось раньше. Давайте вернемся в 1979 год, когда мы начали использовать Chroot Jail, и посмотрим на самые известные технологии контейнеризации, появившиеся после. Это поможет нам понять новые концепции...

Углубляемся дальше
Total votes 19: ↑19 and ↓0 +19
Comments 2

Практическое применение аннотации в Java на примере создания Telegram-бота

Reading time 20 min
Views 18K
Рефлексия в Java — это специальное API из стандартной библиотеки, которая позволяет получить доступ к информации о программе во время выполнения.

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

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

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

Приятного чтения
Total votes 20: ↑20 and ↓0 +20
Comments 0

Information

Rating
Does not participate
Location
Praha, Hlavni Mesto Praha, Чехия
Works in
Date of birth
Registered
Activity