<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://shinecore.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://shinecore.github.io/" rel="alternate" type="text/html" /><updated>2021-02-19T02:55:16+00:00</updated><id>https://shinecore.github.io/feed.xml</id><title type="html">Moon</title><subtitle>Moon is a minimal, one column jekyll theme for your blog.</subtitle><entry><title type="html">FlatBuffer를 이용한 데이터 버퍼 생성</title><link href="https://shinecore.github.io/FlatBuffer%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%84%ED%8D%BC-%EC%83%9D%EC%84%B1/" rel="alternate" type="text/html" title="FlatBuffer를 이용한 데이터 버퍼 생성" /><published>2021-02-19T00:00:00+00:00</published><updated>2021-02-19T00:00:00+00:00</updated><id>https://shinecore.github.io/FlatBuffer%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%84%ED%8D%BC-%EC%83%9D%EC%84%B1</id><content type="html" xml:base="https://shinecore.github.io/FlatBuffer%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%84%ED%8D%BC-%EC%83%9D%EC%84%B1/">&lt;h1 id=&quot;flatbuffer를-이용한-데이터-버퍼-생성&quot;&gt;FlatBuffer를 이용한 데이터 버퍼 생성&lt;/h1&gt;

&lt;h2 id=&quot;개념&quot;&gt;개념&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;테이블 : 데이터 버퍼로 생성할 데이터 정의&lt;/li&gt;
  &lt;li&gt;구조체 : 테이블에 포함되는 사용자 정의 자료형(ex : Vector)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;사용법&quot;&gt;사용법&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;FlatBufferBuilder를 이용해 버퍼 생성&lt;/li&gt;
  &lt;li&gt;각 테이블 클래스를 이용해 FlatBufferBuilder에 테이블 데이터 입력&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;flatbufferbuilder&quot;&gt;FlatBufferBuilder&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;버퍼 생성 및 버퍼 데이터 값 입력 제공&lt;/li&gt;
  &lt;li&gt;각 테이블 클래스에 대한 Start{테이블명} ~ End{테이블명} or Create{테이블명} 함수를 사용하여 버퍼에 데이터값 입력&lt;/li&gt;
  &lt;li&gt;버퍼에 모든 데이터 입력 완료 후 Finish 함수를 호출하여, 버퍼 데이터 메타정보 저장 (버퍼 오프셋, 버퍼 길이(기본 false))&lt;/li&gt;
  &lt;li&gt;SizedByteArray 함수를 호출해 서버에 전송할 최종 byte Array 생성&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;flatbufferbuilder-내부-처리&quot;&gt;FlatBufferBuilder 내부 처리&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Start{테이블명} ~ End{테이블명} or Create{테이블명} 함수 사용 시 필드에 대한 메타정보도 버퍼에 입력됨&lt;/li&gt;
  &lt;li&gt;버퍼에 테이블 필드 값 저장 시 버퍼 끝부터 역순으로 저장됨&lt;/li&gt;
  &lt;li&gt;버퍼 사이즈가 부족한 경우 버퍼 크기 현재 크기에서 2배 증가 (배열 생성 및 복사가 일어나, 초기 생성 시 알맞은 사이즈 값 조정 필요)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;서버-판별용-데이터-저장&quot;&gt;서버 판별용 데이터 저장&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;테이블 타입 및 파싱할 버퍼 사이즈를 판별하기 위해 버퍼에 해당 정보 추가 필요&lt;/li&gt;
  &lt;li&gt;버퍼 길이 추가 :  FlatBufferBuilder Finish함수 대신 FinishSizePrefixed함수를 사용하면 버퍼 최상위에 길이 정보(int)가 추가됨, int 외에 타입은 직접 데이터 삽입 필요&lt;/li&gt;
  &lt;li&gt;테이블 타입 : FlatBufferBuilder를 사용해 직접 데이터 삽입 필요(ex : PutShort, PutInt)&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="flatbuffer" /><summary type="html">FlatBuffer 기본 개념과 실제 사용법 정리</summary></entry></feed>