Деление целых чисел — это долго и сложно. Вычислять остаток от деления — нисколько не проще. При этом в спортивном программировании, да и в прикладной математике типа криптографии, задача умножения чисел по модулю встречается повсеместно.
Один из вариантов эффективного решения — умножать по модулю, вообще при этом не используя операции деления, с помощью алгоритма Монтгомери.
java.util.concurrent.CompletableFuture - класс не новый. Он предстал перед нами во всём своём величии в 2014-м году вместе с выпуском Java 8. Много лет с тех пор прошло, а проще он не стал.
Мы в компании называем их "фьючи". На хабре было много материала по отдельным частям их функциональности, но я решил поставить перед собой более серьёзную задачу - постараться разобрать внутреннее устройство и многие неочевидные нюансы работы с этим классом.
Лазерные, оптические, механические приборы для вычисления даже миллиметрового отклонения от цели…
— Мне нужна твоя одежда, каска и электронный тахеометр!
В первой части нашего большого геодезического обзора мы уже выяснили, что это богатство — не из арсенала экстра-классного снайпера, а «джентельменский набор» геодезиста «Лахта центра».
Что было в первой части?
Задача геодзистов – следить, чтобы все конструкции возводимых зданий заняли проектное положение, а башня «Лахта центра» шла строго вертикально. Разрешенная погрешность — не более 6 мм. на протяжении всего полукилометрового пути наверх.
Вероятно, это было бы менее сложно сделать с башней «в вакууме». Но реальность вносит свои «колебательные поправки»: здание всегда в движении. Эти колебания – результат поведения самой башни – ее конструкций, материалов, подфундаментного грунта, и внешней среды – ветра, солнца, собственно строительных работ. Нахождение правильного курса «в этом мире бушующем» — задача геодезистов «Лахта центра».
Что будет дальше?
В заключительной части обзора о гонке за вертикалью – разбор приборов с ответами на вопросы: что, зачем, и как используют геодезисты «Лахта центра».
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.
Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.
Все, кто еще не, срочно идем и регистрируемся на курс CS188.1x — «Artificial Intelligence». Курс стартовал 6.2.2015 и уже доступны материалы второй недели (первая проходится за три часа — она вводная). Оправдание принимается только одно — «не понимаю по-английски». В этом случае идешь и начинаешь учить английский!