Как Вы объяснили бы агентов непрограммисту? [закрытый]

9
задан Community 23 May 2017 в 10:32
поделиться

5 ответов

Обычно я хожу с PNG, так как он, кажется, имеет несколько преимуществ по сравнению с GIF. Раньше существовали патентные ограничения на GIF, но они истекли.

GIF-файлы подходят для острых линий (например, логотипы) с ограниченным количеством цветов. Это использует преимущества сжатия без потерь формата, которое способствует плоским областям однородного цвета с четко определенными краями (в отличие от JPEG, который предпочитает плавные градиенты и более мягкие изображения).

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

Ввиду общего ограничения палитры GIF-изображений на 256 цветов, она обычно не используется в качестве формата для цифровой фотографии. Цифровые фотографы используют форматы файлов изображений, способные воспроизводить больший диапазон цветов, таких как TIFF, RAW или проигрышный JPEG, что более подходит для сжатия фотографий.

Формат PNG является популярной альтернативой GIF-изображениям, поскольку он использует лучшие методы сжатия и не имеет предела 256 цветов, но PNG не поддерживают анимацию. Форматы MNG и APNG, полученные из PNG, поддерживают анимацию, но широко не используются.

-121--178723-

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

class RingBuffer
{
  RingBuffer():lastFullWrite(0)
  { 
    //Initialize the elements of dataBeingRead to false
    for(unsigned int i=0; i<DATA_COUNT; i++)
    {
      dataBeingRead[i] = false;
    } 
  }

  Data read()
  {
    // You may want to check to make sure write has been called once here
    // to prevent read from grabbing junk data. Else, initialize the elements
    // of dataArray to something valid.
    unsigned int indexToRead = lastFullWriteIndex;
    Data dataCopy;
    dataBeingRead[indexToRead] = true;
    dataCopy = dataArray[indexToRead];
    dataBeingRead[indexToRead] = false;
    return dataCopy;
  }

  void write( const Data& dataArg )
  {
    unsigned int writeIndex(0);

    //Search for an unused piece of data.
    // It's O(n), but plenty fast enough for small arrays.
    while( true == dataBeingRead[writeIndex] && writeIndex < DATA_COUNT )
    {
      writeIndex++;
    }  

    dataArray[writeIndex] = dataArg;

    lastFullWrite = &dataArray[writeIndex];
  }

private:
  static const unsigned int DATA_COUNT;
  unsigned int lastFullWrite;
  Data dataArray[DATA_COUNT];
  bool dataBeingRead[DATA_COUNT];
};

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

-121--4529228-
  • Может быть много актеров. Все актеры действуют «одновременно». Параллелизм является ключевой частью этой модели.

  • Актеры не могут знать, что думают другие Актеры. Единственный способ перемещения информации - это сообщение. (нет общего состояния)

  • Субъекты могут принимать сообщения и действовать по ним,

    • выполняя вычисления с данными в них

    • посылая сообщения другим субъектам

    • создавая других субъектов.

    • игнорирование/отмена сообщения.

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

Что касается вашего генерального проекта, я предлагаю узнать о веб-платформе Erlang. Язык программирования Erlang основан на модели Actor и используется для достижения больших результатов в масштабируемых системах, включая телефонные коммутаторы... и системы обмена сообщениями Facebook .

10
ответ дан 4 December 2019 в 12:17
поделиться

Я не уверен, что это будет хорошо, но я попробую:

Давайте представим классический рынок Ближнего Востока. Есть покупатели (предположим, это просто гуляющие туристы) и продавцы. Покупатели идут по рынку, а продавцы выкрикивают названия своих товаров: Ковры !! Разновидность!!! Лошади!!! Сладости !!! Драгоценности !!! и так далее ... Некоторые покупатели не интересуются конкретным товаром и переходят в следующий магазин, а некоторые покупатели интересуются и спрашивают: «Сколько стоит?», продавец: «50 $», покупатель: « Вы можете сделать мне скидку? »И так далее ...

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

1
ответ дан 4 December 2019 в 12:17
поделиться

Попробую простую метафору:

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

5
ответ дан 4 December 2019 в 12:17
поделиться

Актер - это то, что мы также можем назвать субъектом. Актеры что-то делают с объектами. Актер звонит так, потому что это кто-то действует.

1
ответ дан 4 December 2019 в 12:17
поделиться

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

0
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: