問題タブ [kryo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Kryo シリアライゼーション ライブラリ: 本番環境で使用されていますか?
Kryoは非常に新しく興味深い Java シリアライゼーション ライブラリであり、thrift-protobufベンチマークで最速のライブラリの 1 つです。Kryo を使用したことがある場合、製品コードで試すのに十分な成熟度に達していますか?
更新 (2010 年 10 月 27 日):まだ本番環境ではありませんが、Kryo を使用しています。詳細については、以下の私の回答を参照してください。
更新 (2011 年 3 月 9 日):最新の Jackson および Kryo ライブラリに更新すると、Jackson のバイナリ Smile シリアライゼーションはかなり競争力があることがわかります。
java - Kryo を使用して複数のオブジェクトを 1 つのファイルにシリアル化する
私の知る限り、Kryo のシリアライズ/デシリアライズはオブジェクトごとに行われます。複数のオブジェクトを単一のファイルにシリアル化することは可能ですか?. 別の同様の SO の質問で提案された回避策の 1 つは、オブジェクトの配列を使用することでした。シリアル化する必要がある膨大な量のデータを考えると、本来あるべきほど効率的ではないと感じています。それは正しい仮定ですか?
java - Kryo を使用しているときに NullPointerException が発生するのはなぜですか?
これが私が使用しているコード全体です。
PlayerPOJO クラスには、2 つの float とそれらの get メソッドしかありません。
私が得ているエラーは次のとおりです。
java.lang.NullPointerException at ...
奇妙なことに、これは Kryo サイトのサンプル コードです。私も使用しようreadClassAndObject
とwriteClassAndObject
しましたが、同じエラーが発生しました。
エラーをググってみましたが、このエラーと Kryo に関連する結果はありません。Kryo に関する情報がほとんどないため、これは SO 上の Kryo に関する 4 番目の質問です。
java - カスタム ネットワーク ライブラリとシリアル化 VS デフォルトのシリアル化と RMI
私はこのクラスを持っています.RMIとkryonetとkryoを介してこのクラスを送信しています.rmiの場合、リモートメソッド呼び出しの戻り値として、およびkryonetを使用してサーバーからクライアントにエコーするkryonetの場合の両方で、10個のオブジェクトの配列を取得しています.そしてkryo、私は合計55 * 10のオブジェクトを1つ持っていますが、RMIは1196バイトです。
これらの結果は妥当ですか?
*なぜこれらの結果がそのようなものになるのですか?
なぜそんなに違いがあるのですか?
舞台裏でどのオーバーヘッドやその他の要因が関与しているか、
これは RMI でこれだけの合計を作っており、違いが大きすぎて、私を指摘しています。
単一のオブジェクトで合計 55 バイトで問題ありませんか?*.
これらの結果を提示しなければならないので、確認と専門家の目だけが必要です。
本当に感謝します。
これは私が両方で使用しているクラスです:
}
ありがとう。
java - Java Kryonet [クラスが登録されていない例外]
Kryonetという API を見つけました。さて、プロジェクトページで提供されている例を実装しようとしました。しかし、それは成功しませんでした。
サーバーコード:
クライアントコード:
例外:
このコードの何が問題になっていますか?
java - Kryonetのサーバー/クライアントのバッファサイズを増やします
Kryonetのサーバー/クライアントコンストラクターのバッファーサイズを増やすにはどうすればよいですか?
caching - Infinispan+kyro/Google Protocol Buffers を使用して、スペースと時間効率の高いシリアル化を実現しますか?
私の理解が正しければ、Infinispan/JBoss Cache は Java 独自のシリアル化メカニズムを使用しますが、これは遅くなる可能性があり、比較的多くのストレージ スペースを必要とします。私は、次のことを達成できる代替手段を探していました。
- 自動キャッシュ管理、つまり、より頻繁に使用されるオブジェクトは自動的にメモリにロードされます
- より効率的なシリアル化 (おそらくオブジェクト --> コンパクトなバイナリ ストア)。主な目標は、パフォーマンスをあまり犠牲にすることなく、ディスク/メモリ容量の消費を抑えることです
両方を実現するフレームワークまたはライブラリはありますか?
java - クラスをkryoに登録するための戦略
私は最近、ライブラリkryonetを発見しました。これは非常に素晴らしく、私のニーズに非常によく適合しています。
しかし、私が抱えている問題の1つは、転送可能なすべてのクラスを登録するための優れた戦略を開発することです。
使用するすべてのクラスのリストを返す静的メソッドを各オブジェクトに記述できることは知っていますが、実際にはそうする必要はありません(私自身の時間の目的と、これらのオブジェクトを拡張します)。
オブジェクトが参照するすべてのクラス(フィールドと継承)をgetClass()メソッドから取得する方法があるかどうかを試してみましたが、成功しませんでした。
最後に、kryoにはkryo.setRegistrationOptional(true)があることを知っていますが、それを使用する方法を理解しようとすると非常に苦労しています。このオプションをオンにしても、クラスを登録していない場合でもkryoは例外をスローするようです。また、想定されるこのメソッドは、すべてのクラスを登録できるよりもはるかに低速です。このメソッドを使用して初めてオブジェクトを送信する必要があるのが遅い場合は問題ありませんが、オブジェクトを送信するたびにパフォーマンスが大幅に低下しても問題ないかどうかはわかりません。
理想的には、kryonetを使用して送信したいオブジェクトのパッケージがあります。そのパッケージをスキャンして、登録する必要のあるすべてのクラスを判別するだけであれば、それは素晴らしいことです。すべてのクライアントがすべてのオブジェクトを登録する必要があるわけではありませんが、それは別の問題であり、その解決策があるかどうかはわかりません。
誰かが私を正しい方向に向けることができれば、それは素晴らしいことです。
java - Kryo(カスタムシリアライザー)によるオブジェクトのシリアル化
オブジェクトの配列を含むオブジェクトがあります。私はしたいと思います
A)このオブジェクトの配列を同じファイルに保存します
B)これらのオブジェクトにカスタムシリアル化を使用します。
たとえば、Tile[][]配列を持つMapオブジェクトがあります。Intsは問題なく実行できますが、オブジェクトの実行方法について混乱しています。
java - ブロッキングキューを使用せずにメッセージを別のスレッドに渡すにはどうすればよいですか?
私はかなり単純なサーバーを持っています(kryonetを使用)。クライアントは、車の現在の状態(x、y、angleなど)のみを保存し、加速と方向転換の要求を送信しています。
サーバーはリクエストを受信し、物理スレッドがドレインして読み取り、更新するArrayBlockingQueueにリクエストを追加します。
別のプレーヤーを追加すると、ゲームの速度がほぼ2倍遅くなります。私は多くのことを除外しました(私はすべてのアップデートとパッケージ送信を60Hzで抑制しています)。
ブロッキングキューを使用すると、ブロッキングが多すぎて速度が低下しているのではないかと思います。
問題をブロックせずにクライアントリクエストを物理スレッドに送信するにはどうすればよいですか?