Meta tags:
Headings (most frequently used words):
править, код, реализация, навигация, инструменты, protocol, buffers, содержание, общие, сведения, формат, протокола, примеры, использования, альтернативные, протоколы, примечания, ссылки, для, языка, си, сравнение, apache, thrift, персональные, пространства, имён, просмотры, участие, печать, экспорт, на, других, языках,
Text of the page (most frequently used words):
править (22), #protocol (20), buffers (19), для (18), данных (16), google (14), статьи (11), код (11), википедия (9), формате (9), программное (7), обеспечение (7), apache (7), string (7), при (7), varint (7), значение (7), числа (7), формат (7), версия (6), как (6), тип (6), года (6), required (6), страницы (5), без (5), программирования (5), если (5), objective (5), thrift (5), python (5), что (5), поля (5), типа (5), encoded_value (5), байт (5), 2023 (4), ссылки (4), свободное (4), php (4), developers (4), архивировано (4), дата (4), обращения (4), англ (4), 2017 (4), нет (4), java (4), javascript (4), памяти (4), языке (4), необходимо (4), реализация (4), будут (4), сериализации (4), proto (4), значения (4), бита (4), бит (4), старший (4), xml (4), википедии (3), wikipedia (3), использования (3), раз (3), языках (3), создать (3), сведения (3), инструменты (3), новые (3), текущая (3), алфавиту (3), правка (3), году (3), web (3), org (3), code (3), все (3), протокол (3), wayback (3), machine (3), json (3), twitter (3), сообщение (3), byte (3), double (3), ruby (3), требует (3), может (3), виде (3), чем (3), protobuf (3), чтобы (3), использовать (3), языка (3), разработчиков (3), можно (3), файл (3), будет (3), версии (3), число (3), uvalue (3), или (3), знакового (3), value (3), zigzag (3), размер (3), сообщения (3), идёт (3), 2022 (3), разработчики (2), могут (2), условия (2), foundation (2), inc (2), страница (2), была (2), викиданных (2), правки (2), статья (2), содержание (2), навигация (2), обсуждение (2), запись (2), категории (2), про (2), последняя (2), изображений (2), source (2), форматы (2), 2008 (2), https (2), protocol_buffers (2), llc (2), chromium (2), tools (2), flatbuffers (2), dart (2), языки (2), после (2), статью (2), правилам (2), этой (2), and (2), swift (2), 2019 (2), марта (2), api (2), reference (2), архивная (2), копия (2), июля (2), неопр (2), сентября (2), октября (2), 2010 (2), 2011 (2), примечания (2), bsd (2), лицензия (2), структура (2), bool (2), bit (2), integers (2), sequence (2), set (2), бинарный (2), perl (2), erlang (2), ocaml (2), haskell (2), разработчик (2), служить (2), передачи (2), также (2), сравнение (2), проект (2), кода (2), описывается (2), рус (2), которая (2), позволяет (2), данным (2), данные (2), альтернативные (2), протоколы (2), под (2), выделения (2), сторонних (2), библиотек (2), либо (2), компилятором (2), над (2), кодом (2), компиляторы (2), языков (2), которые (2), того (2), класс (2), доступа (2), методы (2), структуры (2), десериализации (2), owner (2), int64 (2), message (2), int32 (2), sedan (2), bodytype (2), информация (2), примеры (2), кроме (2), значению (2), единицами (2), например (2), таким (2), образом (2), умножение (2), младшего (2), декодирование (2), затем (2), знаковый (2), представление (2), max_value (2), выполняется (2), более (2), вправо (2), закодированного (2), биты (2), максимальное (2), разряда (2), алгоритмом (2), кодирование (2), чисел (2), отрицательные (2), друг (2), другом (2), последовательность (2), каждого (2), меньше (2), занимать (2), поскольку (2), представляет (2), собой (2), ключа (2), качестве (2), номер (2), протокола (2), классы (2), быстрее (2), проще (2), общие (2), перейти (2), пока (2), опытными (2), участниками (2), значительно (2), отличаться (2), проверенной (2), июня (2), проверки (2), проверялась (2), feb (2), заявление, куки, статистика, мобильная, свяжитесь, нами, отказ, ответственности, описание, политика, конфиденциальности, текст, доступен, отдельных, случаях, действовать, дополнительные, зарегистрированный, товарный, знак, некоммерческой, организации, wikimedia, подробнее, лицензии, creative, commons, attribution, sharealike, эта, последний, отредактирована, февраля, українська, português, norsk, bokmål, 한국어, 日本語, bahasa, indonesia, français, فارسی, español, english, deutsch, العربية, других, печати, скачать, pdf, книгу, печать, экспорт, элемент, цитировать, страницу, странице, постоянная, ссылка, служебные, связанные, сюда, справка, свежие, форум, сообщество, сообщить, ошибке, участие, пожертвовать, текущие, события, случайная, избранные, заглавная, ещё, история, читать, просмотры, русский, пространства, имён, войти, учётную, вклад, представились, системе, персональные, скрытые, шаблонами, недостатков, стилистически, некорректные, проблемами, оформлении, неэнциклопедическим, содержанием, текущем, распределённые, типам, источниками, cite, указан, язык, использующие, устаревший, тег, кроссплатформенное, разработанное, источник, index, title, oldid, 128376117, summer, open, security, oracle, america, связанное, goobuntu, glinux, fuchsia, aosp, операционные, системы, tensorflow, polymer, nacl, libvpx, leveldb, kubernetes, gvisor, guice, guetzli, gson, grpc, guava, gerrit, gears, flutter, cpplint, closure, блокли, bazel, beam, angularjs, angular, amp, фреймворки, разработки, sawzall, carbon, tesseract, openrefine, приложения, открытое, исправления, проблемы, исключите, списка, удалите, шаблон, устранены, недостатки, исправить, согласно, стилистическим, оформить, переработать, оформление, соответствии, правилами, написания, статей, улучшения, желательно, apple, how, use, опубликовал, обмена, данными, апреля, ноября, 2015, mirthlab, 2009, bufffers, third, party, add, ons, for, мая, encoding, января, solves, its, data, formatting, challenge, computerworld, 2014, april, 2012, developer, guide, release, расширения, составных, типов, style, скудная, хорошая, документация, исключения, составной, константы, map, list, float, повторные, свойства, работают, списки, простые, типы, исходящие, xsd, smalltalk, поддерживаемые, facebook, ключевыми, особенностями, возможность, ассоциативных, массивов, списков, множеств, встроенная, поддержка, удалённого, вызова, процедур, отличается, тем, генерации, изменении, схемы, использовании, динамически, типизируемых, сама, схема, avro, наиболее, высокопроизводительной, альтернативой, библиотека, обращаться, сериализованным, копирования, частям, отдельные, области, соответственно, передаются, том, каком, используются, связи, увеличивается, объём, передаваемых, архивный, embedded, оптимизирован, низкое, потребление, nanopb, поддержки, обработки, ошибок, возможно, использование, собственных, механизмов, вставки, таковые, поддерживаются, используемым, делать, обёртки, сгенерированным, подобные, варианты, подходят, известны, следующие, генераторы, данный, момент, компанией, созданы, существует, ряд, проектов, создали, следующих, delphi, visual, basic, scala, rust, mercury, matlab, lua, haxe, common, lisp, clojure, action, script, примечательно, добавлять, уже, созданной, структуре, потери, совместимости, предыдущей, версией, парсинге, старых, записей, просто, игнорироваться, нужной, структурой, создан, скомпилировать, его, вашего, сгенерировать, этим, этот, содержать, простейшие, всем, полям, get, вашей, массива, байтов, previousowner, repeated, driverlicense, lastname, name, year, color, optional, default, type, suv, hatchback, enum, model, car, определить, структуру, сериализуемых, исходным, ниже, приведён, пример, файла, где, машине, марка, кузова, цвет, год, выпуска, предыдущих, владельцах, числовые, протоколе, кодируются, sfixed64, fixed64, соответствует, разрядами, заполненными, установленного, это, соответствовать, знаковом, типе, осуществлять, значений, беззнакового, должно, преобразовываться, меняя, битовое, 0xffffffff, сложным, способом, исключающее, закодированным, значением, сдвинутым, удаления, знаковым, битом, полученным, спроецированным, через, разрядов, переносится, следует, учесть, вторая, операция, сдвига, является, арифметическим, сдвигом, есть, сдвиге, отрицательного, старшие, заполняются, нулями, сдвиг, пусть, исходное, разрядность, исходного, закодированное, тогда, записать, помощью, выражения, проблема, кодирования, отрицательных, решена, использованием, алгоритма, суть, которого, сводится, переносу, знака, старшего, младший, предполагает, положительные, чередоваться, увеличением, таком, случае, чётные, положительными, нечётные, отрицательными, sint64, sint32, кодируется, которой, всех, последнего, выставляется, преобразовании, стандартное, байта, отбрасывается, оставшиеся, битные, составляющие, соединяются, обратном, порядке, восьмиразрядного, был, выбран, уменьшения, размера, пакета, передаче, небольших, так, 128, оно, лишь, однако, близкие, максимально, возможным, больше, места, обычном, которое, сохранить, байтах, всегда, занимают, наибольший, зависимости, выставлен, msb, общем, закодированную, полей, состоящих, выступает, определённый, файле, перед, каждым, полем, указываются, совместно, закодированные, указана, строка, вложенное, повторяющееся, набор, следом, далее, соответствующее, полю, bytes, предназначен, чтения, пользователем, двоичный, необходим, отдельный, котором, определяется, создавать, дальнейшем, легче, программно, однозначный, 100, заявлениям, сравнению, бэкенд, перешёл, заявлению, база, триллион, твитов, занимала, десять, вместо, одного, петабайт, замыслу, сначала, должна, быть, описана, компилируется, вместе, классами, компактном, представления, чтение, доступна, высокоуровневых, таких, структурированных, предложенный, эффективная, бинарная, альтернатива, текстовому, формату, сообщают, компактнее, осуществляется, передача, бинарных, оптимизированных, минимальный, dev, сайт, действующий, состояние, кроссплатформенность, аппаратная, платформа, первый, выпуск, любая, операционная, система, поиску, навигации, материал, свободной, энциклопедии, the, http, archive, 20230328031323, wiki, timestamps, about, this, capture, fail, success, 2024, apr, mar, aug, 2026, captures,
Text of the page (random words):
protocol buffers википедия 53 captures 18 aug 2011 19 feb 2026 feb mar apr 28 2022 2023 2024 success fail about this capture timestamps the wayback machine http web archive org web 20230328031323 https ru wikipedia org wiki protocol_buffers protocol buffers материал из википедии свободной энциклопедии текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии проверенной 2 июня 2022 года проверки требует 1 правка текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии проверенной 2 июня 2022 года проверки требует 1 правка перейти к навигации перейти к поиску protocol buffers тип формат сериализации данных разработчик google операционная система любая ос первый выпуск 7 июля 2008 аппаратная платформа кроссплатформенность последняя версия 22 2 10 марта 2023 1 состояние действующий лицензия bsd сайт protobuf dev protocol buffers протокол сериализации передачи структурированных данных предложенный google как эффективная бинарная альтернатива текстовому формату xml разработчики сообщают что protocol buffers проще компактнее и быстрее чем xml поскольку осуществляется передача бинарных данных оптимизированных под минимальный размер сообщения 2 содержание 1 общие сведения 2 формат протокола 3 примеры использования 4 реализация 4 1 реализация для языка си 5 альтернативные протоколы 5 1 сравнение с apache thrift 6 примечания 7 ссылки общие сведения править править код по замыслу разработчиков сначала должна быть описана структура данных которая затем компилируется в классы вместе с классами идёт код их сериализации в компактном формате представления чтение и запись данных доступна в высокоуровневых языках программирования таких как java c или python в 2010 году бэкенд twitter перешёл на protocol buffers по заявлению разработчиков twitter база в триллион твитов на xml занимала бы десять петабайт вместо одного 3 по заявлениям google protocol buffers по сравнению с xml 2 проще от 3 до 10 раз меньше от 20 до 100 раз быстрее более однозначный позволяет создавать классы которые в дальнейшем легче использовать программно protocol buffers не предназначен для чтения пользователем и представляет собой двоичный формат для десериализации данных необходим отдельный proto файл в котором определяется формат сообщения формат протокола править править код в общем виде формат представляет собой закодированную последовательность полей состоящих из ключа и значения в качестве ключа выступает номер определённый для каждого поля сообщения в proto файле перед каждым полем указываются совместно закодированные номер поля в формате varint и тип поля если в качестве типа указана строка string вложенное сообщение повторяющееся сообщение или набор байт bytes то следом идёт размер данных в формате varint далее идёт значение соответствующее полю данные 4 число в формате varint int32 и int64 кодируется в последовательность байт в которой у всех байт кроме последнего старший бит msb выставляется в 1 при преобразовании в стандартное представление старший бит каждого байта отбрасывается а оставшиеся 7 битные составляющие соединяются друг с другом в обратном порядке 4 формат восьмиразрядного varint был выбран для уменьшения размера пакета при передаче небольших чисел так если число меньше 128 то оно будет занимать лишь 1 байт однако числа близкие к максимально возможным будут занимать больше места чем в обычном формате например максимальное значение которое можно сохранить в 8 ми байтах в формате varint 10 байт отрицательные числа в формате varint всегда занимают наибольший размер в зависимости от типа поскольку старший бит у знакового числа выставлен в 1 проблема кодирования отрицательных чисел была решена использованием алгоритма zigzag sint32 и sint64 суть которого сводится к переносу бита знака из старшего разряда в младший кодирование алгоритмом zigzag предполагает что положительные и отрицательные числа будут чередоваться друг с другом с увеличением закодированного значения в таком случае чётные числа будут положительными а нечётные отрицательными пусть value исходное значение а n разрядность типа данных исходного значения а encoded_value закодированное алгоритмом zigzag значение тогда кодирование можно записать с помощью выражения на языке си encoded_value value 1 value n 1 следует учесть что вторая операция сдвига является арифметическим сдвигом то есть при сдвиге вправо отрицательного числа старшие биты заполняются единицами а не нулями сдвиг знакового бита декодирование выполняется более сложным способом выполняется исключающее или над закодированным значением сдвинутым на 1 вправо для удаления знакового бита и знаковым битом полученным из закодированного числа спроецированным на все биты через умножение на максимальное значение для n разрядов таким образом знаковый бит переносится из младшего разряда в старший uvalue encoded_value 1 max_value n encoded_value 1 значение max_value n соответствует значению с n разрядами заполненными единицами например 0xffffffff при n 32 таким образом умножение младшего бита установленного в 1 на это число будет соответствовать значению 1 в знаковом типе данных в языке си декодирование необходимо осуществлять для значений encoded_value и uvalue беззнакового типа а затем значение uvalue должно преобразовываться в знаковый тип не меняя битовое представление все числовые значения кроме fixed64 sfixed64 и double в протоколе кодируются в формате varint примеры использования править править код для того чтобы определить структуру сериализуемых данных необходимо создать proto файл с исходным кодом этой структуры ниже приведён пример proto файла для 2 й версии protocol buffers где описывается информация о машине марка тип кузова цвет год выпуска и информация о предыдущих владельцах message car required string model 1 enum bodytype sedan 0 hatchback 1 suv 2 required bodytype type 2 default sedan optional string color 3 required int32 year 4 message owner required string name 1 required string lastname 2 required int64 driverlicense 3 repeated owner previousowner 5 после того как файл с нужной структурой данных создан необходимо скомпилировать его компилятором для вашего языка программирования чтобы сгенерировать класс доступа к этим данным этот класс будет содержать простейшие методы доступа ко всем полям типа get set а также методы для сериализации и десериализации вашей структуры данных в из массива байтов примечательно что можно добавлять к уже созданной структуре данных новые поля без потери совместимости с предыдущей версией при парсинге старых записей новые поля просто будут игнорироваться реализация править править код на данный момент компанией google созданы компиляторы для языков программирования c java python go c objective c javascript 5 но существует ряд проектов сторонних разработчиков которые создали компиляторы для следующих языков программирования action script c c clojure common lisp d erlang go haskell haxe javascript lua matlab mercury objective c swift ocaml perl php python ruby rust scala visual basic delphi 6 реализация для языка си править править код чтобы использовать протокол в языке си без сторонних библиотек необходимо либо использовать вставки на языке c если таковые поддерживаются используемым компилятором либо делать обёртки над сгенерированным для c кодом в виде библиотек если подобные варианты не подходят то известны следующие генераторы кода protobuf c нет поддержки обработки ошибок выделения памяти но возможно использование собственных механизмов выделения памяти nanopb оптимизирован под низкое потребление памяти protobuf embedded c архивный проект альтернативные протоколы править править код наиболее высокопроизводительной альтернативой может служить библиотека flatbuffers англ рус которая позволяет обращаться к сериализованным данным без их копирования по частям в отдельные области памяти соответственно данные передаются в том же виде в каком и используются в связи с чем увеличивается объём передаваемых данных проект apache avro англ рус отличается тем что не требует генерации кода при изменении схемы данных при использовании в динамически типизируемых языках а сама схема описывается в формате json сравнение с apache thrift править править код ключевыми особенностями apache thrift могут служить возможность передачи ассоциативных массивов списков и множеств а также встроенная поддержка удалённого вызова процедур 7 protocol buffers apache thrift разработчик google facebook apache поддерживаемые языки c dart go java python ruby c objective c javascript и php 8 c java javascript python php xsd ruby c perl objective c erlang smalltalk ocaml and haskell исходящие форматы бинарный бинарный json простые типы bool 32 64 bit integers float double string byte sequence повторные свойства работают как списки bool byte 16 32 64 bit integers double string byte sequence map t1 t2 list t set t константы нет да составной тип сообщение структура исключения нет да документация хорошая скудная лицензия bsd style apache расширения составных типов да нет примечания править править код release 22 2 2023 1 2 developer guide protocol buffers архивная копия от 11 сентября 2014 на wayback machine google developers april 2 2012 twitter solves its data formatting challenge computerworld неопр дата обращения 6 января 2011 архивировано 17 октября 2010 года 1 2 encoding protocol buffers google developers англ google developers дата обращения 11 октября 2017 архивировано 5 сентября 2017 года api reference protocol buffers google code неопр дата обращения 22 мая 2017 архивировано 15 июля 2017 года third party add ons for protocol buffers thrift vs protocol bufffers vs json архивная копия от 7 ноября 2015 на wayback machine mirthlab llc 2009 api reference protocol buffers англ google developers дата обращения 4 марта 2019 архивировано 10 апреля 2019 года ссылки править править код google опубликовал протокол обмена данными protocol buffers how to use protocol buffers protocol buffers objective c and apple swift для улучшения этой статьи желательно переработать оформление в соответствии с правилами написания статей оформить статью по правилам исправить статью согласно стилистическим правилам википедии после исправления проблемы исключите её из списка удалите шаблон если устранены все недостатки свободное и открытое программное обеспечение google программное обеспечение приложения chromium openrefine tesseract языки программирования carbon dart go sawzall фреймворки и инструменты разработки amp angular angularjs beam bazel блокли closure tools cpplint flatbuffers flutter gears gerrit guava grpc gson guetzli guice gvisor kubernetes leveldb libvpx nacl or tools polymer protocol buffers tensorflow операционные системы aosp chromium os fuchsia glinux goobuntu связанное code in google llc v oracle america inc open source security foundation summer of code источник https ru wikipedia org w index php title protocol_buffers oldid 128376117 категории программное обеспечение по алфавиту программное обеспечение разработанное в 2008 году форматы данных свободное программное обеспечение google свободное кроссплатформенное программное обеспечение скрытые категории страницы использующие устаревший тег source википедия cite web не указан язык википедия статьи с источниками из викиданных википедия статьи без изображений не распределённые по типам википедия статьи без изображений тип свободное программное обеспечение про ит статьи по алфавиту про ит последняя правка в текущем году википедия статьи с неэнциклопедическим содержанием википедия статьи с проблемами в оформлении википедия стилистически некорректные статьи википедия статьи с шаблонами недостатков по алфавиту навигация персональные инструменты вы не представились системе обсуждение вклад создать учётную запись войти пространства имён статья обсуждение русский просмотры читать текущая версия править править код история ещё навигация заглавная страница содержание избранные статьи случайная статья текущие события пожертвовать участие сообщить об ошибке как править статьи сообщество форум свежие правки новые страницы справка инструменты ссылки сюда связанные правки служебные страницы постоянная ссылка сведения о странице цитировать страницу элемент викиданных печать экспорт создать книгу скачать как pdf версия для печати на других языках العربية deutsch english español فارسی français bahasa indonesia 日本語 한국어 norsk bokmål português українська 中文 править ссылки эта страница в последний раз была отредактирована 8 февраля 2023 в 04 53 текст доступен по лицензии creative commons attribution sharealike в отдельных случаях могут действовать дополнительные условия подробнее см условия использования wikipedia зарегистрированный товарный знак некоммерческой организации wikimedia foundation inc политика конфиденциальности описание википедии отказ от ответственности свяжитесь с нами мобильная версия разработчики статистика заявление о куки
|