Nano Hash - криптовалюты, майнинг, программирование

Дрейф времени при сохранении и оценке данных с течением времени

на протяжении многих лет я всегда сталкивался с такого рода проблемами, и я никогда не решал их так, как мне казалось «правильным».

представьте, что мне нужно реализовать функцию/метод для оценки уровня реки. int river() дает нам int из 0 to 10 , что означает

0 - вода вообще не проходила

, а также

10 означает почти перелив

обычно я бы брал выходные данные в течение нескольких секунд в минуту, а затем оценивал их по некоторым группам, таким как empty/ half-full / full

если время здесь является бесплатным вариантом, как бы вы собрали вывод river() и оценили через несколько секунд/минут? или даже правильно и надежно использовать Time в качестве параметра в подобных задачах. Я прошу идею алгоритма для решения таких вопросов. Уважать

Edit1: жирный шрифт — это мой главный вопрос

Edit2: под Time я подразумеваю реализацию Runnable и вызов его каждые 10 секунд.


Ответы:


1

Если бы я правильно понял ваш вопрос, у вас было бы две отдельные программы (или, по крайней мере, потоки). Один собирает информацию, другой интерпретирует информацию.

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

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

Редактировать: для внесения правок: прочтите этот поток Java каждые X секунд и что точность ScheduledExecutorService в обычной ОС/JVM. Он должен ответить на все ваши вопросы.

Вкратце: это будет немного неточно, но я думаю, что этого достаточно для 99% всех случаев использования.

08.02.2014
  • Я думаю, было бы разумнее, если бы интерпретатор данных получал данные непосредственно из уровня сохраняемости. Тогда интерпретатор данных и сборщик данных будут независимы друг от друга. 08.02.2014
  • @Merguez, вы правильно поняли, с небольшой модификацией, сборщик данных работает без остановок, но данные не сохраняются. Я думаю, было бы точнее переименовать сборщика данных в поставщика данных. Я слышал, вы предлагаете реализацию массива или БД. почему не время? 08.02.2014
  • @Shervin, тогда почему данные не сохраняются? Честно говоря, я не понял, что вы имели в виду под «Временем» в этом контексте. 08.02.2014
  • данные не сохраняются рекой (), как в моем вопросе, они просто предоставляют разные значения int с течением времени. Я (или мы!) должны что-то реализовать, чтобы собирать эти данные и оценивать их с течением времени. Я выделил время для этого точного использования, чтобы вызывать реку () каждые 10 секунд, т.е. 08.02.2014
  • @Shervin Итак, почему проблематично хранить данные в массиве в интерпретаторе, а затем, когда данных достаточно для их интерпретации? 08.02.2014
  • @Merguez, нет проблем, но я чувствую, что время здесь не правильный подход, у меня нет ничего, что могло бы поддержать мои чувства. Таким образом, вы подошли бы к этому решению, так что время, если быть точным во времени в Java, надежно, чтобы рассчитывать? 08.02.2014
  • @Shervin проверьте это stackoverflow.com/questions/3541676/ java-поток-каждые-х-секунд 08.02.2014
  • Я думаю, неясно, хотите ли вы оценивать данные за период времени (скажем, за последние 10 минут) или просто периодически запрашиваете данные и мгновенно что-то с ними делаете. Если вы хотите оценить данные за определенный период времени, вам абсолютно необходимо сохранить данные (хотя бы временно) в каком-либо хранилище, будь то объект или база данных. 08.02.2014
  • @Shervin Если моя ссылка отвечает на ваш вопрос, то да;). 08.02.2014
  • @abl, конечно, мне нужно сохранить его, нет проблем, я спросил о надежности времени в этом вопросе. 08.02.2014
  • Извините, я не понял вопроса. Когда вы говорите «время», вы имеете в виду класс java.sql.Time? @Шервин 08.02.2014
  • @Shervin комбинация моей ссылки выше и этой: os jvm">stackoverflow.com/questions/14255324/ должен идеально решить вашу проблему и ответить на ваши вопросы 08.02.2014
  • @Merguez это что-то, там написано 5 минут в месяц. вы предоставите / отредактируете ответ об этом, чтобы я мог его принять 08.02.2014
  • @ Шервин, поехали. 08.02.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

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

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..