問題タブ [nio]

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.

0 投票する
3 に答える
3161 参照

java - FileChannelとRandomAccessFileが機能していないようです

簡単に言うと、バックエンドとしてsqlitejdbcを使用するswingアプリです。現在、同じデータベースファイルで動作する複数のインスタンスを起動することに問題はありません。そしてあるべきです。ファイルはロックされているため(アプリの実行中は削除できません)、チェックは簡単です。そうではないことが判明しました。

結果は

アプリが実行されているかどうかに関係なく。私はポイントを逃していますか?TIA。

0 投票する
1 に答える
832 参照

java - サーバーソケットチャネルを使用してポートから最大バイト数を取得する方法

nioパッケージを使用して複数ポート読み取りアプリケーションを開発しています。実際、これらのポートは継続的にパケットを受信します。パッケージを使用nioすると、チャネルを使用してパケットを読み取る必要があります。パケット損失があってはなりません。データ全体を失わずにデータベースにdmpできるように、バッファを処理する実行可能な方法を提案してください。

これが私のコードです:

else if ((key.readyOps() & SelectionKey.OP_READ)== SelectionKey.OP_READ)ブロックで混乱してい ます。

0 投票する
3 に答える
21037 参照

java - Java での非ブロッキング UDP I/O とブロッキング UDP I/O の比較

ノンブロッキング TCP/IPSocketChannelSelectorNIO は、少数のスレッドで多くの TCP/IP 接続を処理するのに役立ちます。しかし、UDP はDatagramChannelsどうですか? (私は UDP にあまり詳しくないことを認めなければなりません。)

DatagramChannelがブロッキング モードで動作していなくても、UDP 送信操作がブロックされないようです。DatagramSocket.send(DatagramPacket)渋滞などで通行止めになるケースって本当にあるの?そのようなケースがあるかどうか、および本番環境でどのようなケースが存在する可能性があるか、非常に興味があります。

DatagramSocket.send(DatagramPacket)が実際にブロックされず、接続されたポートを使用せず、1 つのポートのみにバインドする場合、 andDatagramSocketで非ブロック モードを使用する利点はありませんか?DatagramChannelSelector

0 投票する
3 に答える
18015 参照

java - ある ByteBuffer から別の ByteBuffer にバイトを転送する

bbuf_srcByteBufferから別の ByteBuffer にできるだけ多くのバイトを配置する最も効率的な方法は何ですかbbuf_dest(転送されたバイト数を知ることもできます)? 試しbbuf_dest.put(bbuf_src)ていますが、BufferOverflowException をスローしたいようで、必要なときに Sun から Javadoc を取得できません (ネットワークの問題)。>:( ああ。


編集: darnit、@Richard のアプローチ (バッキング配列から put() を使用)bbuf_srcは、bbuf_src が ReadOnly バッファーの場合、その配列にアクセスできないため機能しません。その場合、どうすればよいでしょうか???

0 投票する
3 に答える
3199 参照

java - Javaで大きなファイルを処理するためのヒントは何ですか

Java で大きなファイルに対して単純な grep やその他の操作を実行する必要があります。私は Java NIO ユーティリティにあまり詳しくありませんが、それを使用する必要があると思います。大きなファイルを読み書きするためのリソースや役立つヒントを教えてください。また、私は SWT アプリケーションに取り組んでおり、GUI のテキスト領域内にそのデータの一部を表示する必要があります。

0 投票する
7 に答える
7808 参照

java - ByteBuffer クラスの拡張

ByteBuffer クラスを拡張するクラスを作成する方法はありますか?

ByteBuffer の一部の抽象メソッドはパッケージ プライベートであり、パッケージ java.nio を作成すると、セキュリティ例外がスローされます。

パフォーマンス上の理由からこれを行いたいと思います。たとえば、getInt には約 10 のメソッド呼び出しと、かなりの数の if があります。すべてのチェックが残され、メソッド呼び出しのみがインライン化され、ビッグ/スモール エンディアン チェックが削除された場合でも、私が作成したテストでは、約 4 倍高速になることが示されています。

0 投票する
3 に答える
20366 参照

c# - .NET 用の NIO フレームワークはありますか?

.NET 用のノンブロッキング IO フレームワークはありますか?

Apache MinaJBoss Nettyが Java に提供するものに似たものを探しています。.NETフレームワークが提供する低レベルのサポートだけでなく、高度にスケーラブルなサーバーを実装するためのフレームワークです。

編集:私が見たいことをよりよく説明するために、Mina でできることの基本的な例を次に示します。

Mina では、次のように ProtocolDecoder を実装できます。

そして、次のような CommandHandler:

呼び出してサーバーを起動すると

ノンブロッキングサーバーを取得します。

単一の (または少なくとも数個の) スレッドを実行し、すべての着信接続を循環させ、ソケットからデータを収集SimpleDecoder.doDecode()し、接続に完全なコマンドがあるかどうかを確認するために呼び出します。その後、コマンドが に渡さCommandHandler.messageReceived()れ、処理を引き継ぐことができます。

0 投票する
8 に答える
17948 参照

java - Javaでソートされた(メモリマップト?)ファイルでのバイナリ検索

私はPerlプログラムをJavaに移植するのに苦労しており、Javaを学びながら進んでいます。元のプログラムの中心的なコンポーネントは、バイナリ検索を使用して+500 GBのソートされたテキストファイルで文字列プレフィックスルックアップを実行するPerlモジュールです(基本的に、ファイルの中央のバイトオフセットを「シーク」し、最も近い改行にバックトラックし、比較します)検索文字列の行プレフィックス、そのバイトオフセットの半分/ 2倍に「シーク」し、見つかるまで繰り返します...)

私はいくつかのデータベースソリューションを試しましたが、このサイズのデータ​​セットを使用した場合のルックアップ速度でこれに勝るものはありません。そのような機能を実装する既存のJavaライブラリを知っていますか?それができない場合、ランダムアクセスがテキストファイルを読み取る慣用的なサンプルコードを教えていただけますか?

または、新しい(?)Java I / Oライブラリに精通していませんが、500 GBのテキストファイルをメモリマップして(メモリに余裕のある64ビットマシンを使用しています)、バイナリを実行するオプションはありますか?メモリマップトバイト配列を検索しますか?この問題や同様の問題についてあなたが共有しなければならない経験を聞いて非常に興味があります。

0 投票する
2 に答える
977 参照

java - ファイルが論理的に移動されるか物理的に移動されるかを判断する方法

事実:

ファイルを移動する場合、次の 2 つの可能性があります。

  1. ソース ファイルと宛先ファイルは同じパーティションにあり、ファイル システム インデックスのみが更新されます。
  2. ソースと宛先は 2 つの異なるファイル システム上にあり、ファイルはバイトごとに移動する必要があります。(別名コピーオンムーブ)

質問:

ファイルが論理的に移動されるか物理的に移動されるかをどのように判断できますか?

私は大きなファイル (700 MB 以上) を転送しており、状況ごとに異なる動作を採用しています。


編集:

一度に 1 MB ずつファイルをコピーするためのブロッキング io 呼び出しを実行するワーカー スレッドを使用して、ファイルの移動ダイアログを既にコーディングしています。残り時間や転送速度の概算などの情報をユーザーに提供します。

問題は、ファイルを物理的に移動する前に、ファイルを論理的に移動できるかどうかをどのように確認するかです。