而不是寫我自己的序列化算法;是否有可能只使用內置的Java序列化,就像我在下面所做的那樣,同時仍然可以跨多種語言使用它?
說明:
我如何想象它的工作,將是如下:我啓動了一個進程,那將是是一個特定語言的程序 - 該語言編寫的。所以我會有一個CppExecutor.exe文件,例如。我會寫數據到這個程序的一個流。該程序然後將做它需要做的事情,然後返回結果。
爲此,我需要以某種方式序列化數據。首先想到的是使用ObjectInputStream
和ObjectOutputStream
的基本Java Serialization
。我讀過的大部分內容只是說Java序列化是Java到Java的應用程序。
這些數據都不需要存儲在文件中。傳輸這些數據包的方法是通過我已經建立的java.lang.Process
。
的數據將被組成如下:
String
- 大部分包含被顯示給用戶的信息。Integer
- 最有可能的是32位。不需要處理時間。Float
- 只是爲了處理所有的浮點值。Character
- 確保使用正確的類型。Array
- 由此列表中的任何元素組成。
我已經制定了如何做到這一點的最佳方式如下:我將從一個4字節的幻數開始 - 只是爲了確保我們正在使用正確的數據。以下,我會有一個整數,指定有多少元素。之後,對於每個元素,我將擁有:單個字節,表示數據類型(以上),後面是關鍵信息e.x:length
(String
和Array
)。然後,數據如下。
側面說明:
我也想指出的是,很多這些計算將採取地方,在那裏每毫秒可能無所謂。因此,基於文本的格式(如JSON)可能會產生更大的操作時間。考慮到非數據包需要由人解釋,只使用字節不會是一個問題。
你看過這個http://stackoverflow.com/questions/1714624/is-there-any-library-to-deserialize-with-python-這-is-serialized-with-java –
恕我直言,你可以在這裏做的最糟糕的事情是重新發明輪子。這是一個以前已經被別人徹底探究過的案例,並且像Google的Protobuf一樣渺茫,創造出像測試一樣的戰鬥的可能性。 –