Все разработчик C++ должно знать о сетевом программировании?

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

[114 ]

const json = {
  "dev@be-activ-it.fr-Quiz-10": {
    "id": "dev@be-activ-it.fr-Quiz-10",
    "user_id": "dev@be-activ-it.fr",
    "myposition": 2,
    "points": 35
  },
  "fbl@be-activ-it.fr-Quiz-10": {
    "id": "fbl@be-activ-it.fr-Quiz-10",
    "user_id": "fbl@be-activ-it.fr",
    "myposition": 1,
    "points": 38
  },
  "ddd@be-activ-it.fr-Quiz-10": {
    "id": "ddd@be-activ-it.fr-Quiz-10",
    "user_id": "ddd@be-activ-it.fr",
    "myposition": 3,
    "points": 37
  }
};

const result = Object.values(json).sort((a, b) => a.myposition - b.myposition).reduce((all, curr) => {
  all[curr.id] = curr;
  return all;
}, {});

console.log(result);

10
задан ApplePieIsGood 14 December 2008 в 07:03
поделиться

1 ответ

Некоторые пункты маркированного списка первое, что пришло на ум вещей необходимо знать:

  • Как и почему TCP работает... Трехсторонние квитирования, подтверждение, отложенный ack, nagling, протокол скользящего окна. Существует конкретная причина каждых из тех функций..., и они могут все уничтожить производительность Вашего приложения, если обработано неправильно.
  • Многоадресная передача UDP..., даже если Вы никогда не думаете, что будете использовать ее, необходимо знать, почему она существует так, можно принять образованные решения при разработке систем.
  • Фрагментация IP и влияние MTU.
  • Двоичная сериализация и сетевой порядок байтов (даже если Вы просто собираетесь использовать Google первичные буферы, хорошо понять, почему они эффективны).
  • Сериализация ASCII и структурирование сообщения (что делает \r\n\r\n средний в HTTP?)
  • Различные модели отправки ввода-вывода: предварительное разветвление стиля Apache, для каждого подключения потоком, основанное на событии однопоточный, основанный на событии с рабочими потоками, и т.д.
  • Влияние уязвимостей переполнения буфера в сетевом приложении
  • Основанный на протоколе дизайн, в противоположность API - или основанный на библиотеке дизайн
  • асинхронный по сравнению с синхронными протоколами. Много высокоэффективных систем являются асинхронными. HTTP синхронен, если Вы не используете конвейерную обработку, и даже затем, существует много ограничений на то, что не возможно... никакие неисправные ответы, например.

Обновление: Что означает основанный на протоколе дизайн?

Рассмотрите HTTP, протокол сети. Apache, IIS, Lighttpd, Firefox, Opera, WebKit, и т.д... Все эти части программного обеспечения говорят HTTP. Довольно возможно, что ни один из них не совместно использует код, чтобы сделать так. Оборотная сторона, конечно, является увеличенной вероятностью ошибок из-за сетевого тома кода. Существуют многочисленные позитивные аспекты:

  • Любая программа может связаться через HTTP, независимо от языка реализации
  • Легкие/встроенные среды могут привередливо выбрать подмножество протокола, вместо того, чтобы использовать все это
  • Возможно оптимизировать обработчика протокола для конкретных ситуаций. Не возможно оптимизировать библиотеку, не жертвуя общностью.
  • Множество различных реализаций вынуждает поставщиков библиотеки обратиться к ошибкам (вместо того, чтобы просто сдуть их, потому что, ну, в общем, все пользуются той же библиотекой).
  • Нет никакой организационной или договорной нагрузки на пользователях HTTP, никаких лицензионных сборов.

При разработке сетевого протокола можно создать себя несколько API, каждый адаптированный к определенным примерам использования. Или можно создать один, Вам решать. Сетевые компоненты программного обеспечения могут быть обновлены независимые друг от друга. В основном, все, Вы слышите, что это хорошо об Интерфейсах Java/C# и абстрактных классах C++, но примененный на сетевом уровне, а не слое языка программирования.

14
ответ дан 3 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

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