Comments 7
Не хватает оглавления
Смешались в кучу кони, люди. (ц)
Описание типов данных jvm, основных структур из компьютерных наук, натягивание их на микросервисы... Предположил бы, что кто-то закрывает подобными статьями долги зимней сессии, но, судя по профилю, автор староват для студента.
double (числа с плавающей точкой двойной точности):
...
Примеры: финансовые операции
Деньги и плавающая запятая - две непересекащихся вселенных. Тот, кто пытается их объединить, должен быть изгнан из профессии с позором.
Очередь (Queue) (FIFO)
А вот тут говорится, что нет. Очередь - это не обязательно FIFO.
Цитата
Queues typically, but do not necessarily, order elements in a FIFO (first-in-first-out) manner. Among the exceptions are priority queues, which order elements according to a supplied comparator, or the elements' natural ordering, and LIFO queues (or stacks) which order the elements LIFO (last-in-first-out).
Матрицы и тензоры (matrices, tensors)
...
Доступ к элементу по индексам: matrix[i][j] - O(1) для массивов, может быть O(n^2) и более, если это ArrayList.
Интересно как это так получилось, что у массивов сложность доступа к элементу константная, а у ArrayList (внутри которого тот же массив) вдруг стала квадратичной?
Диапазоны (ranges):
Описание: Определяют последовательности чисел ...
Упомянутая Guava же и не согласна.
Hidden text
Грубо говоря, диапазон можно создать с любым типом данных, для которого определена операция сравнивания.
Последовательности чисел (sequences):
...
В стандартную библиотеку Java не входит
Чё это?
Во-вторых, опять же не только из чисел.
И чем дальше, тем забористей.
Спасибо за развёрнутый комментарий! Рад, что статья вызвала живую реакцию и послужила поводом для столь детального разбора. 😊
По поводу "смешались в кучу кони, люди" – да, возможно, есть немного. Статья и не претендует на звание фундаментального труда, скорее, это попытка "взглянуть с высоты птичьего полёта" на данные в контексте Java-разработки, попутно затронув и основы.
Что касается конкретных замечаний:
double и финансы: Согласен, использовать
double
для финансовых расчётов – не лучшая идея из-за особенностей представления чисел с плавающей точкой. Тут стоило бы упомянутьBigDecimal
для точных вычислений.Queue и FIFO: Вы абсолютно правы,
Queue
в Java – это интерфейс, и он не обязан быть FIFO. Есть, например,PriorityQueue
, где элементы упорядочиваются по приоритету, и LIFO-очереди (стеки). В тексте, дай бог памяти, имелось в виду "как правило", но формулировка неточная.ArrayList и O(n^2): Здесь, конечно, ошибка. Доступ к элементу
ArrayList
по индексу – это O(1), так как внутри используется массив. O(n^2) – это, скорее, про неудачный алгоритм поиска внутри списка.Ranges: Да, Guava's
Range
может работать с любыми типами данных, для которых определено сравнение, не только с числами.Sequences: Тут, видимо, вышло недопонимание. Sequence упоминается как струкутра данных в общем. А в Java, Streams и Sequences из Kotlin, решают похожие задачи.
В общем, есть над чем работать! Спасибо за ценные замечания, обязательно учту их в будущих публикациях. А долги зимней сессии – да, надо закрывать, кто же спорит! 😉
Раздел про биометрические данные лучше удалить. В одну кучу скинуты знания бабушек у подъезда, упомянуты знатные русофобы (sourceafis) и не приведено ничего полезного или хотя бы современного.
P.S. Смешать OpenCV (открытую библиотеку компьютерного зрения) и Megamatcher (кусок профессионального ПО для распознавания отпечатков пальцев (и лица, и радужки), но именно кусок, отвечающий только за матчинг без экстракшена) - это пять
Спасибо за ваш комментарий и проявленный интерес к статье! 😉
Раздел про биометрические данные лучше удалить
Знаете, у меня тоже иногда возникает желание удалить кое-что… например, строчку кода, которая стала причиной бага, обнаруженного в 2 часа ночи. Но, как гласит народная мудрость, из песни слов не выкинешь (а из статьи – разделов). «Бабушки у подъезда» – это же кладезь народной мудрости и, между прочим, алгоритм "узнавания по походке" тоже серьёзный биометрический инструмент! 😄 Но если серьёзно – раздел, конечно же, можно дополнить и улучшить. Возможно у вас есть, что предложить? "... критикуешь – предлагай ...!" (с) Я с превеликим удовольствием добавлю в статью ваши наработки по теме биометрии!
знатные русофобы (sourceafis)
Ох уж эти ярлыки в наше неспокойное время! SourceAFIS – это, в первую очередь, библиотека с открытым исходным кодом (open-source) для распознавания отпечатков пальцев, причем имеющая реализации на Java. Видимо, «русофобия» проявляется в том, что она не на 1С написана? 😉 Но если отбросить шутки, то политику и технологии лучше не смешивать. Есть факты, которые указывают на то, что именно алгоритм (а не разработчик) проявляет признаки "русофобии"? С интересом ознакомлюсь.
Смешать OpenCV и Megamatcher
Каюсь, грешен, немного увлёкся. 😅 Это как в кулинарии: иногда хочется добавить в блюдо всего и побольше. OpenCV – это, действительно, библиотека компьютерного зрения общего назначения, эдакий "швейцарский нож" для обработки изображений. А Megamatcher – это уже профессиональный SDK, "набор инструментов", предназначенный для создания сложных мультибиометрических систем (включая, но не ограничиваясь, матчинг). Вы абсолютно правы: OpenCV предоставляет базовые возможности, а Megamatcher предлагает специализированные, оптимизированные (и закрытые) алгоритмы для решения конкретных задач. Учту ваше замечание и постараюсь в дальнейшем чётче разграничивать эти инструменты. (Если, конечно, сообщество Хабра не решит, что мои статьи тоже пора "удалить"! 😂)
В заключение хочу ещё раз поблагодарить вас за конструктивную критику. Статья обзорная, и, разумеется, невозможно в одном материале объять необъятное. Замечания сообщества ценны и помогут мне сделать статью лучше!
1) Про русофобию - а Вазан уже удалил страничку про помощь ВСУ, которая открывалась при заходе на его сайт с российского IP?
2) Про SourceAFIS - к сожалению, это "библиотека" очень низкого уровня, поделка студента без базы в рассматриваемой области
3) Про Megamatcher - во-первых, вы ошибаетесь, это не "набор инструментов", а конкретный один инструмент для сравнения шаблонов одного конкретного алгоритма; во-вторых, а почему вы выбрали именно Neurotechnology? откуда реклама данного конкретного литовского производителя, когда существует еще десятки других?
4) К сожалению, я не знаю, что "предложить" и чем "дополнить", потому что это не обзор. Это больше похоже на поток сознания gpt. Могу посоветовать только почитать какой-нибудь классический обзор, например, "Introduction to Biometrics", в авторах ищите индуса Анила. Он хотя в своей жизни никаких хороших алгоритмов сам не сделал, а только статьи писал, но обзор у него - обзор, а не набор фраз по теме.
Вся правда о данных: от примитивов до озера данных в эпоху микросервисов. Гайд для Java-разработчика