イメージと小さなビデオファイル(約5MB、10MB未満)をRESTサービスに送信する必要があります。これは私が作成します。 私はこのタスクを達成するためにByte []またはStreamを使うべきかどうか疑問に思っています。 Byte []とStreamを使用する間の転送ファイルサイズの目安は何ですか?バイト配列を使用するタイミングとストリームを使用するタイミング
答えて
トランザクションにコミットする予定の空きメモリの量は、唯一の実際の制約です。
5Mファイルをお持ちの場合は、RAMにすべてをロードする必要があります。これには5Mがかかります。
ストリーミングする場合は、ファイルから小さいチャンクを再利用可能なバッファに読み込んで、HTTPストリームに書き込むことで、はるかに少ないメモリを使用できます。
最終的には、いずれかの方法でストリームを送信します。
大量のbyte[]
として、コントロール外の別のソースからデータを受け取った場合は、不都合な場合を除いて、処理のためにそのフォームに保存しておき、ネットワークストリームにプッシュさせるこの線。
ストリームとして受け取った場合、別のストリームにプッシュされただけで大量のbyte[]
になります。 4〜8 kiB(4〜8ではなく4または8)のバッファを使用してください。これは、メモリ全体のページの同時発生回数にいくつかの利点があります。
ストリームを自分で作成している場合、ストリームはほとんどの場合(バイナリやテキストライタでラップして処理します)、より効率的です。
もっと一般的には、8KB以上のバッファがストリームに書き込まれたり、ストリームから読み込まれたりしている場合、遅いと思われる場合は最初に変更を試みます。
バイト配列またはストリームを選択する際の一般的なテストは、データがあるかどうか、先頭から何バイトまでのデータがあるか、この数値が所定の目的に合っているかどうかによって異なります。
たとえば、ローカルマシンで使用できる小さなアイコンファイル(50KB未満)を扱っていてファイルサイズがわかっている場合は、バイト配列を使用します。
逆に、難しいと思われるムービーファイルを使用している場合、2GBのコンテンツを同時にメモリに保存する場合は、ストリームを使用してください。
ストリーミングは、長さが正面からわからない大きなデータセットまたはデータを処理する場合に最適です。
- 1. タスクを使用するタイミングとスレッドを使用するタイミング
- 2. undef_methodを使用するタイミングとremove_methodを使用するタイミングは?
- 3. viewDidLoadを使用するタイミングとawakeFromNibを使用するタイミング
- 4. assert()を使用するタイミングとtry catchを使用するタイミング
- 5. "return result"を使用するタイミングと "self.result"を使用するタイミング
- 6. Task.Runを使用するタイミングasync-awaitを使用するタイミングと組み合わせて使用するタイミング
- 7. BackboneJS:フェッチを使用するタイミングと同期を使用するタイミング
- 8. ワンホットエンコーディングを使用するタイミングとダミー変数を使用するタイミング
- 9. Codeigniter redirect()を使用するタイミングと、$ this-> load-> viewを使用するタイミング
- 10. Requirejsを使用するタイミングとバンドルされたjavascriptを使用するタイミング
- 11. ES6クラスを使用するタイミングとjavacriptの機能を使用するタイミング
- 12. コマンドウィンドウを使用するタイミング
- 13. ServletRequestListenerを使用するタイミング
- 14. ビジュアルディフィーリングとユニファイドディフパッチファイルを使用するタイミングは?
- 15. GETとリンクを使用するタイミング
- 16. 既存ブランチを使用するタイミングと新しいブランチを作成するタイミング
- 17. Simpy - 歩留まりを使用するタイミングと関数を呼び出すタイミング
- 18. boto3クライアントを使用するタイミングとboto3リソースを使用するタイミングを教えてください。
- 19. isInstanceOfを使用するタイミングと、(Scalaで)match-case-statementを使用するタイミングを教えてください。
- 20. "as"キーワードを使用するタイミングと、キャストを使用するタイミングを教えてください。
- 21. JDKを使用してアプリケーション(javaw.exe)を起動するタイミングと、JREを使用するタイミング
- 22. スキームまたはラケットで関数を使用するタイミングとマクロを使用するタイミング
- 23. Big O表記を使用するタイミングと大きなTheta表記を使用するタイミング
- 24. マルチキャッチを使用するタイミングと再使用するタイミングを教えてください。
- 25. 静的バインディングを使用するタイミングとJavaで動的バインディングを使用するタイミング
- 26. plugins.withType(somePlugin)を使用するタイミング.whenPluginAdded
- 27. Springでアプリケーションコンテキストを使用するタイミング。
- 28. JDO DataNucleusを使用するタイミングQuery.close()
- 29. Spark2.0でrddを使用するタイミングは?
- 30. getAutowireCapableBeanFactory()。autowireBean(someBean)を使用するタイミングは?