Pull to refresh
2
0
Send message

Задача трёх тел (не китайская нефантастика)

Level of difficultyMedium
Reading time21 min
Views42K

Однажды, выполнив в Гугле запрос "Three body problem" ("Задача трёх тел"), я был просто поражен - первая страница результатов состояла только из ссылок на роман китайского писателя-фантаста Лю Цысиня с соответствующим названием, а также на телесериал, снятый по этому роману, т.е. ссылок на собственно задачу трёх тел не было вообще! Мне это показалось удивительным и несправедливым, поскольку сама по себе задача трёх тел тоже может выглядеть увлекательной в популярном изложении. В этой публикации я постарался привести некоторые доказательства этого утверждения.

Читать далее
Total votes 184: ↑182 and ↓2+234
Comments150

Как положить приложение 21 запросом* к /actuator/health

Level of difficultyMedium
Reading time18 min
Views1.6K
Уточнение для въедливых :)

* 21 и более параллельным запросом в определённых условиях :)


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

Читать дальше →
Total votes 18: ↑16 and ↓2+19
Comments0

Вы точно хотите пойти программистом в gamedev?

Level of difficultyEasy
Reading time17 min
Views76K

Хочу вас огорчить, программисты не делают игры - их делают дизайнеры и арт. Можно уволить программиста и на его место придет другой и через условные месяц-два-полгода начнет закрывать таски не хуже. Если увольняется дизайнер, его монстр, пушка или контент повисает без хозяина и без "видения". Если её не перехватил сосед (а у соседа свой монстр), то в большинстве случаев его работа просто уходит в стол и монстра пишут заново на тех же ассетах и принципах, но заново.

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

O, тепленькая пошла!
Total votes 217: ↑213 and ↓4+258
Comments234

Рекрутинговый ад или как я в Канаде IT работу искал

Level of difficultyEasy
Reading time8 min
Views85K

Привет. Мне 32 года, идентифицирую себя как Middle Frontend Developer. У меня почти 7 лет опыта работы, из которых только три я считаю релевантными, где я работал с современными технологиями типа React, TypeScript, GraphQL и т.д. До этого работа заключалась в разработке сайтов с использованием JQuery.

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

Читать далее
Total votes 156: ↑149 and ↓7+177
Comments527

Хитрые бактерии и антибиотики

Reading time13 min
Views27K

Аптека в Африке, сейчас пациент получит одну таблетку доксициклина

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

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

Поэтому антибиотики уже через 15 минут после появления начали резко создавать эволюционное давление.

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

В общем, там есть пара суперинтересных историй про то, насколько бактерии хитрые и продуманные. Пора бы в этом разобраться. Сегодня мы это делаем с экспертом — Денисом Кузьминым, к.б.н., директором физтех-школы биологической и медицинской физики МФТИ.
Читать дальше →
Total votes 175: ↑174 and ↓1+215
Comments81

Микросервисы в представлении среднего разработчика, и как всё на самом деле

Level of difficultyMedium
Reading time11 min
Views61K

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

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

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

погрузиться в микросервисы
Total votes 236: ↑232 and ↓4+260
Comments207

Hibernate — проблема декартова произведения при запросах с пагинацией

Level of difficultyHard
Reading time18 min
Views11K

Привет! Меня зовут Артём Гордиенко, я работаю Java/Kotlin-разработчиком в Росбанке и занимаюсь разработкой микросервисов, необходимых для внешнеэкономической деятельности интернет-клиент-банка юридических лиц. Реализация этого доклада стала возможной благодаря одному-единственному сообщению, обнаруженному в логах одного нового микросервиса. Как оказалось, причина сообщения серьезно влияет на производительность приложения. Мне это показалось довольно интересным, и захотелось поделиться информацией с другими разработчиками. 

Многие сталкиваются с реализацией вывода списочных данных с пагинацией из БД. В Spring Data и в самом Hibernate есть стандартные решения, которые позволяют достаточно просто решить эту задачу. Но у предлагаемых решений есть подводные камни, и со временем или даже сразу они могут серьезно повлиять на производительность. В худшем случае — и вовсе привести к падению приложения.

В этом посте, основанном на моем докладе с JPoint 2023, я расскажу, при использовании каких стандартных решений вы столкнетесь с падением производительности и какие есть эффективные варианты реализации запросов с пагинацией. Также обсудим баги в Hibernate 6, которые я обнаружил.

Читать далее
Total votes 16: ↑15 and ↓1+19
Comments24

Zeebe и Camunda: сравниваем известные BPM-системы под высокими нагрузками

Reading time12 min
Views28K

Всем привет! Меня зовут Николай Первухин, я Senior Java Developer в Райффайзенбанке. В последнее время я активно занимаюсь BPM-системами Camunda и Zeebe (основа Camunda-cloud). Если вы, как и я, с ходу не можете ответить на вопрос, кто быстрее — Camunda или Zeebe, насколько, и в каких случаях они могут тормозить, то добро пожаловать под кат.

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments7

Helidon 4 вышел, а никто и не заметил

Reading time5 min
Views7.9K

Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...

Интересно. Читать далее
Total votes 21: ↑19 and ↓2+24
Comments8

Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ

Level of difficultyEasy
Reading time10 min
Views16K

Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться. Вместе с тем с помощью каждого из них можно решить строго определенный круг прикладных задач. Меня зовут Константин Шибков, я старший Java-разработчик CDEK и программный директор курсов по Java в Skillbox. Сегодня расскажу о практике использования фреймворка для модульного тестирования JUnit 5, а также покажу на конкретных примерах, как проводятся стандартные юнит-тесты и параметризованные тесты. Вы сможете самостоятельно повторить их, воспользовавшись подготовленным репозиторием с готовыми примерами тестов на Java. 

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

Распределённые транзакции

Level of difficultyMedium
Reading time10 min
Views43K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее
Total votes 22: ↑19 and ↓3+20
Comments2

Асинхронный API First

Level of difficultyEasy
Reading time17 min
Views11K

API-First — один из популярных подходов к проектированию серверных приложений. Для обеспечения этого подхода создано множество программных продуктов. Однако сложно найти продукт, который поможет реализовать этот подход для серверных приложений, использующих брокеры сообщений в качестве средства интеграции —  такие, как Apache Kafka, RabbitMQ, Apache ActiveMQ. Мы решили это исправить и представляем вам свое решение AxenAPI.

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

Аннотации и рефлексия в Java

Level of difficultyMedium
Reading time10 min
Views12K


Привет, уважаемые читатели Хабра!

Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.
Читать дальше →
Total votes 10: ↑8 and ↓2+9
Comments1

Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

Level of difficultyMedium
Reading time7 min
Views23K

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?

Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.

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

Микросервисы в банке: на чем их лучше писать? Java/Kotlin, а может Go?

Level of difficultyMedium
Reading time19 min
Views11K

В июле в офисе РСХБ-Интех (технологической дочки Россельхозбанка) состоялся бесплатный митап для Java-разработчиков — RSHB Backend Dev Meetup. Обсудили Kotlin, Go, маппинг и разные аспекты бэкэнд-разработки. В числе докладчиков выступал Иван Кочергин, руководитель центра собственной разработки РСХБ-Интех. Иван более 10 лет занимается разработкой на Java, последние три года — на Kotlin. В своем докладе он сравнил, на чем лучше писать микросервисы в банке: Java, Kotlin или Go. Делимся расшифровкой доклада. Запись всего митапа можно посмотреть на Rutube.

Читать далее
Total votes 28: ↑18 and ↓10+13
Comments17

Разработка высоконагруженного игрового WebSocket сервера на Java, Netty с поддержкой BattleRoyale/Matchmaking

Level of difficultyHard
Reading time18 min
Views13K

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

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

Garbage Collection и JVM

Level of difficultyEasy
Reading time17 min
Views32K

Привет, Хабровчане!

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

Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.

Читать далее
Total votes 24: ↑21 and ↓3+21
Comments7

CompletableFuture. Глубокое погружение

Level of difficultyHard
Reading time20 min
Views33K

java.util.concurrent.CompletableFuture - класс не новый. Он предстал перед нами во всём своём величии в 2014-м году вместе с выпуском Java 8. Много лет с тех пор прошло, а проще он не стал.

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

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

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

Level of difficultyMedium
Reading time8 min
Views32K

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

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

Читать далее
Total votes 34: ↑32 and ↓2+35
Comments87

Java Digest #8

Level of difficultyEasy
Reading time3 min
Views6.4K

??Приветствуем в новогоднем Java Digest! ??

В этом выпуске с радостью представляем некоторые захватывающие статьи, связанные с миром Java и его новейшими разработками. Приготовьтесь узнать о главных моментах Java в 2023 году, улучшениях в сборщиках мусора в JDK 21, устаревших функциях в Java 18—21, применении CDS с Spring Framework 6.1 и многом другом.

Читать новогодний выпуск
Total votes 14: ↑14 and ↓0+14
Comments2

Information

Rating
Does not participate
Registered
Activity