Pull to refresh
3
0
Виктор @sergeevik

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

Send message

Coroutines :: опыт практического применения

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

Статья подготовлена по материалам моего доклада на MBLT DEV 2018, в конце поста — линк на видеозапись.

Последовательный стиль


Total votes 27: ↑27 and ↓0+27
Comments3

Всё уже придумали за нас: библиотеки с тысячами готовых GPT-промтов для работы, учёбы и отдыха

Level of difficultyEasy
Reading time3 min
Views49K

Подборка для тех, кто пробовал использовать нейросети в своих задачах, но разочаровался в них: непонятно, как чат-бот вообще может помогать с чем-то серьёзным.

Читать далее
Total votes 33: ↑28 and ↓5+31
Comments17

7 основных способов оптимизировать кеширование в Spring Boot

Level of difficultyEasy
Reading time10 min
Views8.5K

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

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

Читать далее
Total votes 21: ↑20 and ↓1+22
Comments3

Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать

Level of difficultyMedium
Reading time6 min
Views10K

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut.

Сегодня хочу поговорить об одном из lock-free алгоритмов в Java. Разберём как с ним связано ключевое слово volatile и паттерн immutable.

Читать далее
Total votes 12: ↑12 and ↓0+14
Comments15

Как расширить JPA для работы с PostgreSQL

Level of difficultyMedium
Reading time4 min
Views5.6K

Всем привет! Меня зовут Антон, я — архитектор компании ITFB Group. Пережив несколько проектов, на которых встречается стек PostgreSQL с использованием связки PostgreSQL + JPA, мне удалось устранить большое количество проблем, связанных с неоптимальной интеграцией функциональности PostgresSQL в Java-приложения. В этой cтатье мы максимально подробно разберем, как можно настроить JPA для эффективной работы с PostgreSQL. Всем, кому интересна эта тема, добро пожаловать под кат)

Читать далее
Total votes 9: ↑7 and ↓2+7
Comments8

Как написать хорошее ТЗ?

Level of difficultyEasy
Reading time3 min
Views6.8K

Обсудим критерии качества требований и как их применять

О чём пойдёт речь:
1. зачем соблюдать критерии качества при написании требований;
2. как проверить хорошее требование или нет с помощью критериев качества;
3. как исправить требование

Раскрыть тайну
Total votes 9: ↑8 and ↓1+8
Comments8

Основы теории вероятностей для будущих программистов и дата-аналитиков

Level of difficultyMedium
Reading time13 min
Views5.8K

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

Вместе с Ильей Котовым, специалистом по Data Science в МТС Big Data, разбираемся в основных понятиях теории вероятностей и рассказываем, где и как ее используют. 

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

77+ примеров использования смарт-контрактов

Reading time19 min
Views18K

77+ примеров использования смарт-контрактов

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

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

Чтобы преодолеть отсутствие такого связующего звена, гибридные смарт-контракты используют оракулы в качестве посредника для сбора информации из внешних источников данных, предоставления информации во внешние источники, и для вычислений off-chain. Оракулы обеспечивают не только двустороннюю связь между смарт-контрактами и внешним миром,  но и безопасную среду, которая защищает от любого риска единой точки отказа (single point of failure), например, от манипуляции данных или системного сбоя.

Читать далее
Total votes 14: ↑7 and ↓7+1
Comments0

Балансировка нагрузки и поддержка непрерывности в режиме катастрофоустойчивости

Reading time3 min
Views10K
image

Привет, Хабр! Представьте себе мир без катастроф — без каскадного резонанса и сдвига полюсов. Ах, сладкий сон. В реальной жизни такое невозможно: закон Мерфи живее закона Мура. Однако всё иначе в квантовом мире ИТ.

Сегодня мы поговорим о балансировке нагрузки и отказоустойчивости. Решаем эту задачу с помощью GSLB (global server load balancing). В случае падения соединения или полного отказа ЦОДа сервис GSLB перенаправит ваших пользователей к доступному дата-центру.

Читать дальше →
Total votes 17: ↑15 and ↓2+15
Comments4

Борьба за ресурсы, часть 1: Основы Cgroups

Reading time5 min
Views27K
Компьютеры – это «железо». И сегодня мы вернулись в исходную точку, в том смысле, что сейчас редко найдешь физический хост, на котором выполняется одна единственная задача. Даже если на сервере крутится только одно приложение, оно, скорее всего, состоит из нескольких процессов, контейнеров или даже виртуальных машин (ВМ), и все они работают на одном сервере. Red Hat Enterprise Linux 7 неплохо справляется с распределением системных ресурсов в таких ситуациях, но по умолчанию ведет себя как добрая бабушка, угощающая внуков домашним пирогом и приговаривающая: «Всем поровну, всем поровну».



В теории принцип «всем поровну», конечно, прекрасен, но на практике некоторые процессы, контейнеры или ВМ оказываются важнее других, и, следовательно, должны получать больше.
Читать дальше: Основы Cgroups
Total votes 20: ↑19 and ↓1+18
Comments2

Чему нас НЕ учат случаи МТС, СДЭК и КБ Радуга или Имитационная Безопасность

Level of difficultyHard
Reading time7 min
Views29K

Утром 17 марта (2024) стали недоступны VDS‑серверы одновременно в двух датацентрах CloudMTS — в 03:30 в 1cloud.ru, в 03:45 в oblako.kz
Сервер в oblako.kz ожил 18 марта в 22:25
Сервер в 1cloud.ru ожил 23 марта в 15:40

Читать далее
Total votes 111: ↑86 and ↓25+80
Comments61

Настраиваем память JVM-приложения в Kubernetes

Reading time6 min
Views20K

Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на  использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.

 

Читать далее
Total votes 36: ↑34 and ↓2+38
Comments9

PostgreSQL на многоядерных серверах Power 8

Reading time13 min
Views26K

Аннотация


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

Введение


В ряде задач практически неограниченного масштабирования по объему обрабатываемых транзакций можно достичь, используя распределённые системы, в которых тем или иным способом поток транзакций распределяется на большое количество серверов. Такое масштабирование часто называют “горизонтальным”. Однако, универсального распределенного решения не существует, кроме того, распределённость имеет свою цену. Архитектура системы должна заранее проектироваться как распределённая. Распределенные системы менее гибки, чем монолитные, к тому же они сложнее в эксплуатации и требуют более высокой квалификации персонала. Одни задачи легче поддаются распараллеливанию, другие — сложнее. Поэтому спрос на высокопроизводительные монолитные системы существует, и достижение возможно лучших результатов по производительности в рамках одного сервера было и остается важной задачей. Это часто называют “вертикальным масштабированием”.

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

Для решения таких проблем существуют механизмы управления доступом к ресурсам — использование блокировок, а также пригодные в некоторых случаях неблокирующие (lock-free) подходы. Рост производительности этих механизмов, а также детализация блокировок дает возможность снизить издержки, связанные с одновременным (конкурентным) доступом.

При этом, если в распределённых системах узким местом оказывается, как правило, сеть, то в монолитных системах, близких к пиковой производительности, её рост ограничивается именно упомянутыми механизмами управления одновременным доступом.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments44

Установка Kubernetes на домашнем сервере с помощью K3s

Reading time23 min
Views28K

Но зачем


Знаю, о чем вы думаете — Kubernetes? На домашнем сервере? Кто может быть настолько сумасшедшим? Что ж, раньше я согласился бы, однако недавно кое-что изменило мое мнение.


Я начал работать в небольшом стартапе, в котором нет DevOps разработчиков со знанием Kubernetes (в дальнейшем K8s), и даже будучи старым ненавистником K8s из-за его громоздкости, был вынужден признать, что мне не хватает его программного подхода к деплойментам и доступу к подам. Также должен признать, что азарт от укрощения настолько навороченного зверя давно будоражит меня. И вообще, K8s захватывает мир — так что лишние знания не навредят.

Читать дальше →
Total votes 12: ↑11 and ↓1+11
Comments9

Открытый код. Сокрытие данных

Reading time4 min
Views4.2K

Введение

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

Читать далее
Total votes 5: ↑2 and ↓3-1
Comments3

Как spring-kafka обрабатывает сообщения и не мешает ли этому auto-commit?

Reading time6 min
Views26K

В предыдущей статье мы рассмотрели как работает KafkaConsumer и как реализован механизм auto-commit. 

В этой статье я хочу остановиться на том как получает и обрабатываются сообщения spring-kafka. 

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

Maven, где мои артефакты? Еще одна статья про управление зависимостями

Reading time6 min
Views31K
Легко жить с maven, когда есть доступ к центральному репозиторию, или у компании есть один корпоративный репозиторий. Все меняется, если работаешь в закрытом контуре, а количество репозиториев ближе к сотне. Под катом история о том, где искать потерявшийся артефакт и как для этого приготовить maven.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments8

Нейронные сети для планирования движения беспилотных автомобилей

Reading time16 min
Views16K

Планировщик движения беспилотного автомобиля — это алгоритм-помощник, который общается с другими участниками движения посредством манёвров. То есть он действует так, чтобы другим было понятно, куда поедет беспилотник, и сам по действиям других пытается определить, кто куда будет двигаться и почему.

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

Под катом — детальный разбор логики движения беспилотника, примеры свёрточных и трансформерных архитектур моделей для предсказания движения и много формул для расчёта вероятных траекторий других машин и пешеходов. А ещё я расскажу, в чём преимущества машинного обучения перед эвристиками и чем может помочь Reinforcement Learning.

Читать далее
Total votes 55: ↑55 and ↓0+55
Comments10
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity