FlatBuffers একটি কার্যকরী সিরিয়ালাইজেশন ফরম্যাট যা বিভিন্ন প্রোগ্রামিং ভাষায় সমর্থন করে। নিচে বিভিন্ন ভাষায় FlatBuffers এর ব্যবহার এবং উদাহরণ সহ বিবরণ দেওয়া হলো।
১. C++
স্কিমা ফাইল: monster.fbs
namespace Game;
table Monster {
name: string;
hp: int;
mana: int;
}
root_type Monster;
C++ কোড উদাহরণ
#include "monster_generated.h" // FlatBuffers জেনারেটেড ফাইল
#include <iostream>
#include <fstream>
int main() {
flatbuffers::FlatBufferBuilder builder;
auto name = builder.CreateString("Orc");
Game::MonsterBuilder monster_builder(builder);
monster_builder.add_name(name);
monster_builder.add_hp(100);
monster_builder.add_mana(50);
auto monster = monster_builder.Finish();
builder.Finish(monster);
// Write to file
std::ofstream output("monster.bin", std::ios::binary);
output.write(reinterpret_cast<const char*>(builder.GetBufferPointer()), builder.GetSize());
output.close();
std::cout << "Monster data saved!" << std::endl;
return 0;
}
২. Java
স্কিমা ফাইল: monster.fbs
(একই স্কিমা ফাইল ব্যবহার করুন)
Java কোড উদাহরণ
import com.google.flatbuffers.FlatBufferBuilder;
public class Main {
public static void main(String[] args) {
FlatBufferBuilder builder = new FlatBufferBuilder(1024);
int nameOffset = builder.createString("Orc");
Monster.startMonster(builder);
Monster.addName(builder, nameOffset);
Monster.addHp(builder, 100);
Monster.addMana(builder, 50);
int monster = Monster.endMonster(builder);
builder.finish(monster);
// Write to file
try (FileOutputStream fos = new FileOutputStream("monster.bin")) {
fos.write(builder.sizedByteArray());
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Monster data saved!");
}
}
৩. Python
স্কিমা ফাইল: monster.fbs
(একই স্কিমা ফাইল ব্যবহার করুন)
Python কোড উদাহরণ
import monster_pb2
def main():
monster = monster_pb2.Monster()
monster.name = "Orc"
monster.hp = 100
monster.mana = 50
# Serialize to binary
with open("monster.bin", "wb") as f:
f.write(monster.SerializeToString())
print("Monster data saved!")
if __name__ == "__main__":
main()
৪. C#
স্কিমা ফাইল: monster.fbs
(একই স্কিমা ফাইল ব্যবহার করুন)
C# কোড উদাহরণ
using FlatBuffers;
using System;
using System.IO;
class Program
{
static void Main()
{
var builder = new FlatBufferBuilder(1024);
var nameOffset = builder.CreateString("Orc");
Game.Monster.StartMonster(builder);
Game.Monster.AddName(builder, nameOffset);
Game.Monster.AddHp(builder, 100);
Game.Monster.AddMana(builder, 50);
var monster = Game.Monster.EndMonster(builder);
builder.Finish(monster.Value);
// Write to file
File.WriteAllBytes("monster.bin", builder.SizedByteArray());
Console.WriteLine("Monster data saved!");
}
}
৫. Go
স্কিমা ফাইল: monster.fbs
(একই স্কিমা ফাইল ব্যবহার করুন)
Go কোড উদাহরণ
package main
import (
"flatbuffers"
"io/ioutil"
"monster"
"log"
)
func main() {
builder := flatbuffers.NewBuilder(0)
name := builder.CreateString("Orc")
monster.StartMonster(builder)
monster.AddName(builder, name)
monster.AddHp(builder, 100)
monster.AddMana(builder, 50)
m := monster.EndMonster(builder)
builder.Finish(m)
// Write to file
if err := ioutil.WriteFile("monster.bin", builder.FinishedBytes(), 0644); err != nil {
log.Fatalf("failed writing to file: %s", err)
}
log.Println("Monster data saved!")
}
৬. JavaScript
স্কিমা ফাইল: monster.fbs
(একই স্কিমা ফাইল ব্যবহার করুন)
JavaScript কোড উদাহরণ
const fs = require('fs');
const flatbuffers = require('flatbuffers').flatbuffers;
const Monster = require('./monster_generated').Game.Monster;
function main() {
const builder = new flatbuffers.FlatBufferBuilder(1024);
const nameOffset = builder.createString("Orc");
Monster.startMonster(builder);
Monster.addName(builder, nameOffset);
Monster.addHp(builder, 100);
Monster.addMana(builder, 50);
const monster = Monster.endMonster(builder);
builder.finish(monster);
// Write to file
fs.writeFileSync("monster.bin", builder.asUint8Array());
console.log("Monster data saved!");
}
main();
উপসংহার
FlatBuffers বিভিন্ন প্রোগ্রামিং ভাষায় কার্যকরী ডেটা সিরিয়ালাইজেশন ও ডেসিরিয়ালাইজেশন সমর্থন করে। প্রতিটি ভাষায় কোড উদাহরণগুলি FlatBuffers এর সুবিধা এবং কার্যকারিতা তুলে ধরে, যা উন্নত পারফরম্যান্স এবং কম মেমরি ব্যবহারের জন্য উপযোগী। এটি গেমিং, মোবাইল অ্যাপ্লিকেশন, এবং রিয়েল-টাইম ডেটা প্রসেসিংয়ের মতো ক্ষেত্রে বিশেষভাবে কার্যকর।
Read more