আমি জানি যে বেশ কয়েকটি বিতরণ কৌশলগুলির (যেমন আরপিসি) শর্তে, "মার্শালিং" শব্দটি ব্যবহৃত হয়েছে তবে কীভাবে এটি সিরিয়ালাইজেশন থেকে পৃথক হয় তা বুঝতে পারেন না। তারা উভয়ই কি বিটকে সিরিজের আকারে রূপান্তর করছে?
আমি জানি যে বেশ কয়েকটি বিতরণ কৌশলগুলির (যেমন আরপিসি) শর্তে, "মার্শালিং" শব্দটি ব্যবহৃত হয়েছে তবে কীভাবে এটি সিরিয়ালাইজেশন থেকে পৃথক হয় তা বুঝতে পারেন না। তারা উভয়ই কি বিটকে সিরিজের আকারে রূপান্তর করছে?
উত্তর:
Marshaling এবং ধারাবাহিকতাতে হয় ঢিলেঢালাভাবে দূরবর্তী অবস্থান থেকে প্রসিডিউর কল প্রেক্ষাপটে সমার্থক কিন্তু শব্দার্থগতভাবে অভিপ্রায় একটি বিষয় হিসাবে আলাদা।
বিশেষত, মার্শালিং এখান থেকে প্যারামিটার পাওয়ার বিষয়ে, অন্যদিকে সিরিয়ালাইজেশন বাইট স্ট্রিমের মতো কোনও আদিম ফর্মের কাঠামোগত ডেটা অনুলিপি করার বিষয়ে। এই অর্থে, সিরিয়ালাইজেশন মার্শালিংয়ের একটি উপায়, সাধারণত পাস-বাই-ভ্যালু শব্দার্থক প্রয়োগ করে।
রেফারেন্সের মাধ্যমে কোনও বস্তুর মার্শাল করাও সম্ভব, এই ক্ষেত্রে "তারের উপরের" ডেটা হ'ল মূল বস্তুর অবস্থান সম্পর্কিত তথ্য। যাইহোক, এই জাতীয় কোনও বস্তু সিরিয়ালাইজেশনকে মূল্য দেওয়ার ক্ষেত্রে এখনও অনুকূল হতে পারে।
@ বিলের উল্লেখ অনুসারে, অতিরিক্ত মেটাডেটা যেমন কোড বেস অবস্থান বা এমনকি অবজেক্ট ইমপ্লিমেশন কোডও থাকতে পারে।
I
, মূলধন পরিবর্তনগুলি, এবং আরও প্রয়োজনীয় হিসাবে সাজান।
দু'জনেই একটি জিনিস অভিন্ন করে - এটি একটি অবজেক্টকে সিরিয়ালাইজ করা । সিরিয়ালাইজেশন বস্তু স্থানান্তর করতে বা তাদের সঞ্চয় করতে ব্যবহৃত হয়। কিন্তু:
সুতরাং সিরিয়ালাইজেশন মার্শেলিংয়ের অংশ।
কোডবেজ এমন তথ্য যা অবজেক্টের রিসিভারকে বলে যেখানে এই বস্তুর বাস্তবায়ন পাওয়া যাবে। যে কোনও প্রোগ্রাম যা মনে করে যে এটি অন্য কোনও প্রোগ্রামে এটি কোনও বস্তু পাস হতে পারে যা এটি আগে দেখা যায় নি সেগুলি অবশ্যই কোডবেস সেট করতে হবে, যাতে গ্রাহকরা জানতে পারেন যে কোডটি স্থানীয়ভাবে উপলব্ধ না থাকলে কোথা থেকে কোডটি ডাউনলোড করতে হবে। রিসিভার, অবজেক্টটি ডিসরিয়ালাইজ করার পরে, এটি থেকে কোডবেস আনবে এবং সেই জায়গা থেকে কোডটি লোড করবে।
invokeAndWait
এবং ফর্মস দেখুন Invoke
, যা সিরিয়ালাইজেশন জড়িত না করে ইউআই থ্রেডে একটি সুসংগত কলকে মার্শাল করে।
the implementation of this object
? আপনি একটি নির্দিষ্ট উদাহরণ দিতে পারেন Serialization
এবং Marshalling
?
থেকে marshalling (কম্পিউটার বিজ্ঞান) উইকিপিডিয়া নিবন্ধ:
পাইথন স্ট্যান্ডার্ড লাইব্রেরি 1-এ "মার্শাল" শব্দটি "সিরিয়ালাইজ" এর সমার্থক হিসাবে বিবেচিত , তবে শব্দটি জাভা-সম্পর্কিত আরএফসি 2713-এ সমার্থক নয়:
"মার্শাল" বলতে কোনও বস্তুর অর্থ তার রাজ্য এবং কোডবেস (গুলি) এমনভাবে রেকর্ড করা হয় যে যখন মার্শালযুক্ত বস্তুটি "নিরবচ্ছিন্ন" হয়, তখন মূল বস্তুর একটি অনুলিপি পাওয়া যায়, সম্ভবত বস্তুর শ্রেণিবদ্ধ সংজ্ঞা স্বয়ংক্রিয়ভাবে লোড করে by সিরিয়ালাইজযোগ্য বা দূরবর্তী যে কোনও অবজেক্টকে আপনি মার্শাল করতে পারেন। মার্শেলিং সিরিয়ালাইজের মতো, মার্শেলিং ছাড়াও কোডবেস রেকর্ড করা। মার্শেলিং সিরিয়ালাইজেশন থেকে আলাদা যে মার্শালিং দূরবর্তী বস্তুগুলিকে বিশেষভাবে আচরণ করে। (আরএফসি 2713)
কোনও বস্তুকে "সিরিয়ালাইজ" করা মানে তার রাজ্যটিকে এমনভাবে বাইট স্ট্রিমে রূপান্তর করা যাতে বাইট স্ট্রিমটি আবার বস্তুর অনুলিপিতে রূপান্তর করতে পারে।
সুতরাং, মার্শালিং তার রাজ্যের পাশাপাশি বাইট স্ট্রিমে কোনও সামগ্রীর কোডবেসও সংরক্ষণ করে ।
আমি মনে করি যে মূল পার্থক্যটি হ'ল মার্শালিংয়ের মধ্যে সম্ভবত কোডবেসও জড়িত। অন্য কথায়, আপনি কোনও শ্রেণীর রাজ্য-সমতুল্য উদাহরণে কোনও বস্তু মার্শাল এবং আনমারশাল করতে সক্ষম হবেন না। ।
সিরিয়ালাইজেশনের অর্থ হ'ল আপনি অন্য কোনও শ্রেণীর উদাহরণ হলেও, আপনি অবজেক্টটি সঞ্চয় করতে এবং একটি সমতুল্য অবস্থা পুনরুদ্ধার করতে পারেন।
বলা হচ্ছে, এগুলি সাধারণত প্রতিশব্দ।
মার্শালিং বলতে কোনও ফাংশনের স্বাক্ষর এবং পরামিতিগুলিকে একক বাইট অ্যারে রূপান্তরিত করতে বোঝায়। বিশেষত আরপিসির উদ্দেশ্যে।
সিরিয়ালাইজেশন প্রায়শই একটি সম্পূর্ণ অবজেক্ট / অবজেক্ট ট্রিকে বাইট অ্যারে রূপান্তরিত করতে বোঝায় মার্শালিং বস্তু পরামিতিগুলিকে বার্তায় যুক্ত করার জন্য এবং এটি নেটওয়ার্ক জুড়ে পাস করার জন্য ক্রমিক করে তোলে । * সিরিয়ালাইজেশনটি স্টোর থেকে ডিস্কের জন্যও ব্যবহার করা যেতে পারে *
মার্শেলিং হ'ল নিয়মটি সংকলককে বলে যে কীভাবে ডেটা অন্য পরিবেশ / সিস্টেমে উপস্থাপন করা হবে; উদাহরণ স্বরূপ;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string cFileName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
public string cAlternateFileName;
যেহেতু আপনি দুটি পৃথক স্ট্রিং মান দেখতে পাচ্ছেন বিভিন্ন মানের ধরণের হিসাবে উপস্থাপিত।
সিরিয়ালাইজেশন কেবল বস্তুর সামগ্রীকে রূপান্তর করবে, উপস্থাপনা নয় (একই থাকবে) এবং সিরিয়ালাইজেশনের নিয়মগুলি মানবে (কী রফতানি করবে বা না)। উদাহরণস্বরূপ, ব্যক্তিগত মানগুলি ক্রমিকায়িত হবে না, সর্বজনীন মান হ্যাঁ এবং অবজেক্টের কাঠামো একই থাকবে।
এখানে উভয়ের আরও নির্দিষ্ট উদাহরণ রয়েছে:
ক্রমিকায়নের উদাহরণ:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef struct {
char value[11];
} SerializedInt32;
SerializedInt32 SerializeInt32(int32_t x)
{
SerializedInt32 result;
itoa(x, result.value, 10);
return result;
}
int32_t DeserializeInt32(SerializedInt32 x)
{
int32_t result;
result = atoi(x.value);
return result;
}
int main(int argc, char **argv)
{
int x;
SerializedInt32 data;
int32_t result;
x = -268435455;
data = SerializeInt32(x);
result = DeserializeInt32(data);
printf("x = %s.\n", data.value);
return result;
}
সিরিয়ালাইজেশনে, ডেটা এমনভাবে সমতল করা হয় যা পরে সংরক্ষণ করা যায় এবং অপরিবর্তনীয় হতে পারে।
মার্শালিং ডেমো:
(MarshalDemoLib.cpp)
#include <iostream>
#include <string>
extern "C"
__declspec(dllexport)
void *StdCoutStdString(void *s)
{
std::string *str = (std::string *)s;
std::cout << *str;
}
extern "C"
__declspec(dllexport)
void *MarshalCStringToStdString(char *s)
{
std::string *str(new std::string(s));
std::cout << "string was successfully constructed.\n";
return str;
}
extern "C"
__declspec(dllexport)
void DestroyStdString(void *s)
{
std::string *str((std::string *)s);
delete str;
std::cout << "string was successfully destroyed.\n";
}
(MarshalDemo.c)
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main(int argc, char **argv)
{
void *myStdString;
LoadLibrary("MarshalDemoLib");
myStdString = ((void *(*)(char *))GetProcAddress (
GetModuleHandleA("MarshalDemoLib"),
"MarshalCStringToStdString"
))("Hello, World!\n");
((void (*)(void *))GetProcAddress (
GetModuleHandleA("MarshalDemoLib"),
"StdCoutStdString"
))(myStdString);
((void (*)(void *))GetProcAddress (
GetModuleHandleA("MarshalDemoLib"),
"DestroyStdString"
))(myStdString);
}
মার্শালিংয়ে, ডেটা প্রয়োজনীয়ভাবে সমতল করার প্রয়োজন হয় না, তবে এটি অন্য বিকল্প উপস্থাপনায় রূপান্তরিত হওয়া দরকার। সমস্ত ingালাই মার্শালিং হয় তবে সমস্ত মার্শালিং কাস্টিং হয় না।
মার্শালিং জড়িত থাকতে গতিশীল বরাদ্দ প্রয়োজন হয় না, এটি কেবল স্ট্রাক্টের মধ্যে রূপান্তর হতে পারে। উদাহরণস্বরূপ, আপনার একটি জুড়ি থাকতে পারে তবে ফাংশনটি এই জুটির প্রথম এবং দ্বিতীয় উপাদানগুলি অন্য উপায়ে প্রত্যাশা করে; আপনি এক জোড়া অন্যকে কাস্টিং / মেমপিপি কাজ করবেন না কারণ fst এবং snd ফ্লিপ হয়ে যাবে।
#include <stdio.h>
typedef struct {
int fst;
int snd;
} pair1;
typedef struct {
int snd;
int fst;
} pair2;
void pair2_dump(pair2 p)
{
printf("%d %d\n", p.fst, p.snd);
}
pair2 marshal_pair1_to_pair2(pair1 p)
{
pair2 result;
result.fst = p.fst;
result.snd = p.snd;
return result;
}
pair1 given = {3, 7};
int main(int argc, char **argv)
{
pair2_dump(marshal_pair1_to_pair2(given));
return 0;
}
আপনি যখন অনেক ধরণের ট্যাগযুক্ত ইউনিয়নগুলির সাথে ডিল শুরু করেন তখন মার্শালিংয়ের ধারণাটি গুরুত্বপূর্ণ হয়ে ওঠে। উদাহরণস্বরূপ, আপনার জন্য একটি "সি স্ট্রিং" মুদ্রণের জন্য জাভাস্ক্রিপ্ট ইঞ্জিন পেতে আপনার পক্ষে অসুবিধা হতে পারে তবে আপনি এটি একটি মোড়ানো সি স্ট্রিং মুদ্রণ করতে বলতে পারেন ask অথবা আপনি যদি জাভা স্ক্রিপ্ট রানটাইম থেকে কোনও লুয়া বা পাইথন রানটাইমে মুদ্রণ করতে চান। এগুলি সমস্ত স্ট্রিং, তবে প্রায়শই মার্শালিং ছাড়া পাবে না।
আমি সম্প্রতি একটি বিরক্তি পেয়েছিলাম যে জেএসক্রিপ্ট মার্শালকে সি # তে "__ComObject" হিসাবে সাজিয়েছে এবং এই অবজেক্টটির সাথে খেলার কোনও নথিভুক্ত উপায় নেই। আমি এটি কোথায় ছিল তার ঠিকানাটি খুঁজে পেতে পারি তবে আমি এটি সম্পর্কে সত্যিকার অর্থে অন্য কিছু জানি না, সুতরাং এটির সত্যিকারের উপায় খুঁজে বের করার একমাত্র উপায় হ'ল এটি যেকোন উপায়ে ঠাট্টা করা এবং আশা করা যায় যে এটি সম্পর্কে দরকারী তথ্য সন্ধান করতে পারি। সুতরাং স্ক্রিপ্টিং-এর মতো বন্ধুত্বপূর্ণ ইন্টারফেসের সাহায্যে একটি নতুন অবজেক্ট তৈরি করা সহজ হয়ে যায় ictionaryডিকোরিয়াল, এতে জেএসক্রিপ্ট অ্যারে অবজেক্ট থেকে ডেটা অনুলিপি করুন এবং সেই বস্তুটি জেএসক্রিপ্টের ডিফল্ট অ্যারের পরিবর্তে সি # তে দিন।
test.js:
var x = new ActiveXObject("Dmitry.YetAnotherTestObject.YetAnotherTestObject");
x.send([1, 2, 3, 4]);
YetAnotherTestObject.cs
using System;
using System.Runtime.InteropServices;
namespace Dmitry.YetAnotherTestObject
{
[Guid("C612BD9B-74E0-4176-AAB8-C53EB24C2B29"), ComVisible(true)]
public class YetAnotherTestObject
{
public void send(object x)
{
System.Console.WriteLine(x.GetType().Name);
}
}
}
উপরের প্রিন্টগুলি "__ComObject", যা সি # এর দৃষ্টিকোণ থেকে কিছুটা কালো বক্স is
আরেকটি আকর্ষণীয় ধারণাটি হ'ল আপনার কোডটি কীভাবে লিখবেন তা বোঝার থাকতে পারে এবং একটি কম্পিউটার যা নির্দেশাবলী কার্যকর করতে হয় তা জানে তাই প্রোগ্রামার হিসাবে আপনি কম্পিউটারটি আপনার মস্তিষ্ক থেকে প্রোগ্রামটিতে কী করতে চান তা ধারণাকে কার্যকরভাবে মার্শাল করছেন are চিত্র। আমাদের যদি পর্যাপ্ত পরিমাণে মার্শালার থাকে তবে আমরা কী করতে / পরিবর্তন করতে চাই তা কেবল ভাবতে পারি এবং কীবোর্ডে টাইপ না করে প্রোগ্রামটি সেভাবেই বদলে যাবে। সুতরাং, আপনি যদি সত্যিই সেমিকোলনটি লিখতে চান যেখানে কয়েক সেকেন্ডের জন্য আপনার মস্তিস্কের সমস্ত শারীরিক পরিবর্তনগুলি সংরক্ষণ করার উপায় থাকতে পারে, আপনি সেমিকোলন মুদ্রণের জন্য সিগন্যালে সেই ডেটা মার্শাল করতে পারেন, তবে এটি চূড়ান্ত।
মার্শেলিং সাধারণত তুলনামূলকভাবে জড়িত প্রক্রিয়াগুলির মধ্যে থাকে; সিরিয়ালাইজেশন অগত্যা যে প্রত্যাশা আছে। সুতরাং প্রক্রিয়াগুলির মধ্যে ডেটা মার্শাল করার সময়, উদাহরণস্বরূপ, আপনি কেবল পুনরুদ্ধার করার জন্য সম্ভাব্য ব্যয়বহুল ডেটাতে কেবল একটি রেফারেন্স পাঠাতে চাইতে পারেন, তবে সিরিয়ালাইজেশন সহ, আপনি এই সমস্ত কিছু সংরক্ষণ করতে চান, যখন ডিসিরিয়ালাইজড হওয়ার পরে অবজেক্টটি সঠিকভাবে পুনরায় তৈরি করতে পারেন।
মার্শেলিং সম্পর্কে আমার উপলব্ধি অন্যান্য উত্তরগুলির চেয়ে আলাদা।
ধারাবাহিকতাতে:
কোনও কনভেনশন ব্যবহার করে কোনও অবজেক্ট গ্রাফের তার-বিন্যাসের সংস্করণ উত্পাদন বা পুনরায় হাইড্রেট করতে।
marshalling:
ম্যাপিং ফাইলটি ব্যবহার করে কোনও অবজেক্ট গ্রাফের তারের-বিন্যাসের সংস্করণ উত্পাদন বা পুনরায় হাইড্রেট করতে, যাতে ফলাফলগুলি কাস্টমাইজ করা যায়। সরঞ্জামটি একটি সম্মেলনে মেনে চলতে শুরু করতে পারে তবে গুরুত্বপূর্ণ পার্থক্যটি ফলাফলগুলি কাস্টমাইজ করার ক্ষমতা।
চুক্তি প্রথম উন্নয়ন:
চুক্তির প্রথম বিকাশের প্রসঙ্গে মার্শেলিং গুরুত্বপূর্ণ।
Hydrating an object is taking an object that exists in memory, that doesn't yet contain any domain data ("real" data), and then populating it with domain data (such as from a database, from the network, or from a file system).
বাইট স্ট্রিম - স্ট্রিম হচ্ছে ডেটার ক্রম sequ ইনপুট স্ট্রিম - উত্স থেকে ডেটা পড়ে। আউটপুট স্ট্রিম - বর্নণে ডেটা লিখে। জাভা বাইট স্ট্রিমগুলি ইনপুট / আউটপুট বাইট বাই বাইট (একসাথে 8 বিট) সম্পাদন করতে ব্যবহৃত হয়। বাইটারি স্ট্রিম বাইনারি ফাইলগুলির মতো কাঁচা ডেটা প্রক্রিয়াকরণের জন্য উপযুক্ত। জাভা চরিত্রের স্ট্রিমগুলি একবারে ইনপুট / আউটপুট 2 বাইট সম্পাদন করতে ব্যবহৃত হয়, কারণ জাভাতে ইউনিকোড কনভেনশনগুলি ব্যবহার করে প্রতিটি চরিত্রের জন্য 2 বাইট ব্যবহার করে অক্ষরগুলি সংরক্ষণ করা হয়। অক্ষর প্রবাহটি দরকারী যখন আমরা পাঠ্য ফাইলগুলি প্রক্রিয়াকরণ করি (পড়ি / লিখি)।
আরএমআই (রিমোট মেথড ইনভোকেশন) - এমন একটি এপিআই যা জাভাতে বিতরণ অ্যাপ্লিকেশন তৈরির একটি প্রক্রিয়া সরবরাহ করে। আরএমআই একটি বস্তুকে অন্য জেভিএমে চলমান কোনও অবজেক্টের জন্য পদ্ধতিগুলি আহ্বানের অনুমতি দেয়।
সিরিয়ালাইজেশন এবং মার্শালিং উভয়ই শিথিলভাবে প্রতিশব্দ হিসাবে ব্যবহৃত হয়। এখানে কয়েকটি পার্থক্য রয়েছে।
সিরিয়ালাইজেশন - কোনও বস্তুর ডেটা সদস্যগণ বাইনারি ফর্ম বা বাইট স্ট্রিমে লিখিত হয় (এবং তারপরে ফাইল / মেমরি / ডাটাবেস ইত্যাদিতে লেখা যেতে পারে)। একবার বস্তুর ডেটা সদস্যদের বাইনারি ফর্মে লিখিত হয়ে গেলে তথ্য-প্রকার সম্পর্কিত কোনও তথ্য ধরে রাখা যায় না।
মার্শেলিং - অবজেক্টটি সিরিয়ালযুক্ত করা হয় (বাইনারি ফর্ম্যাটে বাইট স্ট্রিম থেকে) ডেটা-টাইপ + কোডবেস সংযুক্ত করে এবং তারপরে রিমোট অবজেক্ট (আরএমআই) কেটে যায় । মার্শালিং ডেটা-টাইপকে পূর্বনির্ধারিত নামকরণ কনভেনশনে রূপান্তরিত করবে যাতে এটি প্রাথমিক ডেটা টাইপের সাথে সম্মতি দিয়ে পুনর্গঠন করা যায়।
সুতরাং সিরিয়ালাইজেশন মার্শেলিংয়ের অংশ।
কোডবেজ এমন তথ্য যা অবজেক্টের রিসিভারকে বলে যেখানে এই বস্তুর বাস্তবায়ন পাওয়া যাবে। যে কোনও প্রোগ্রাম যা মনে করে যে এটি অন্য কোনও প্রোগ্রামে এটি কোনও বস্তু পাস হতে পারে যা এটি আগে দেখা যায় নি সেগুলি অবশ্যই কোডবেস সেট করতে হবে, যাতে গ্রাহকরা জানতে পারেন যে কোডটি স্থানীয়ভাবে উপলব্ধ না থাকলে কোথা থেকে কোডটি ডাউনলোড করতে হবে। রিসিভার, অবজেক্টটি ডিসরিয়ালাইজ করার পরে, এটি থেকে কোডবেস আনবে এবং সেই জায়গা থেকে কোডটি লোড করবে। (@ নাসিরের উত্তর থেকে অনুলিপি করা হয়েছে)
সিরিয়ালাইজেশন হ'ল অবজেক্ট (গুলি) দ্বারা ব্যবহৃত মেমরির মূ .় মেমরি-ডাম্পের মতো, যখন মার্শালিং কাস্টম ডেটা-টাইপ সম্পর্কিত তথ্য সঞ্চয় করে।
একরকমভাবে, সিরিয়ালাইজেশন পাস-বাই-ভ্যালু প্রয়োগের সাথে মার্শালিং সম্পাদন করে কারণ ডেটা-টাইপের কোনও তথ্যই পাস করা হয় না, কেবল আদিম ফর্মটি বাইট স্ট্রিমে পাস করা হয়।
সিরিয়ালাইজেশনে বিগ-এন্ডিয়ান, ছোট-এন্ডিয়ান সম্পর্কিত কিছু সমস্যা থাকতে পারে যদি ভিন্ন ওএসের একই উপাত্ত উপস্থাপনের বিভিন্ন উপায় থাকে তবে স্ট্রিমটি একটি ওএস থেকে অন্য OS এ চলেছে। অন্যদিকে, মার্শেলিং ওএসের মধ্যে স্থানান্তরিত করতে পুরোপুরি ঠিক আছে কারণ ফলাফলটি উচ্চ স্তরের প্রতিনিধিত্ব।
মার্শালিং প্রকৃতপক্ষে সিরিয়ালাইজেশন প্রক্রিয়া ব্যবহার করে তবে প্রধান পার্থক্যটি হ'ল এটি কেবল সিরিয়ালাইজেশনে ডেটা সদস্য এবং বস্তু নিজেই স্বাক্ষর নয় সিরিয়ালীকৃত হয় তবে মার্শালিং অবজেক্ট + কোড বেসে (এর প্রয়োগ) বাইটেও রূপান্তরিত হবে।
মার্শেলিং হ'ল JAXB ব্যবহার করে জাভা অবজেক্টকে XML অবজেক্টে রূপান্তর করার প্রক্রিয়া যাতে এটি ওয়েব পরিষেবায় ব্যবহার করা যায়।
এটিকে প্রতিশব্দ হিসাবে ভাবেন, দু'জনেরই এমন একটি প্রযোজক রয়েছে যা গ্রাহককে স্টাফ প্রেরণ করে ... উদাহরণের শেষের ক্ষেত্রগুলিতে একটি বাইট স্ট্রিমে লেখা হয় এবং অন্য প্রান্তটি একই উদাহরণগুলির সাথে বিপরীত অ্যান্ডসকে শত্রু করে তোলে।
এনবি - জাভা আরএমআইতে প্রাপক থেকে নিখোঁজ থাকা ক্লাসগুলি পরিবহণের জন্য সমর্থনও রয়েছে ...