問題タブ [stream]
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.
c# - あるストリームの内容を別のストリームにコピーするにはどうすればよいですか?
あるストリームの内容を別のストリームにコピーする最良の方法は何ですか? これのための標準的なユーティリティメソッドはありますか?
c# - .NET には信頼できる非同期ソケット通信がありませんか?
私はかつて .NET で Crawler を作成しました。スケーラビリティを向上させるために、.NET の非同期 API を利用してみました。
System.Net.HttpWebRequest には非同期 API BeginGetResponse/EndGetResponse があります。ただし、この API のペアは、HTTP 応答ヘッダーと、HTTP 応答コンテンツを抽出できる Stream インスタンスを取得するためのものです。したがって、私の戦略は、BeginGetResponse/EndGetResponse を使用して非同期的に応答ストリームを取得し、次に BeginRead/EndRead を使用して応答ストリーム インスタンスからバイトを非同期的に取得することです。
クローラーがストレステストに行くまで、すべてが完璧に見えます。ストレス テストでは、クローラーのメモリ使用量が高くなります。WinDbg+SoS でメモリをチェックしたところ、多くのバイト配列が System.Threading.OverlappedData インスタンスによって固定されていることがわかりました。インターネットで検索した後、Microsoft からこの KB http://support.microsoft.com/kb/947862を見つけました。
KB によると、非同期 I/O の数には「上限」があるはずですが、「推奨される」境界値はわかりません。したがって、私の目には、この KB は何の役にも立ちません。これは明らかに .NET のバグです。最後に、応答ストリームから非同期でバイトを抽出するという考えを捨てて、同期的な方法でそれを行う必要があります。
ドット ネット ソケット (Socket.BeginSend / Socket.BeginReceive / NetworkStream.BeginRead / NetworkStream.BeginWrite) で非同期 IO を許可する .NET ライブラリには、非同期 IO で未処理のバッファー (送信または受信) の量に上限が必要です。 .
ネットワーク アプリケーションは、ポストする未処理の非同期 IOの数に上限を設定する必要があります 。
編集:いくつかの疑問符を追加してください。
Socket と NetworkStream で非同期 I/O を実行した経験のある人はいますか? 一般的に言えば、本番環境のクローラーは、同期または非同期でインターネットとの I/O を行いますか?
php - stream_filter_* を使用して PHP で大きな (1 ギガを超える) ファイルを処理する
これを実行すると、わずか 35MB のファイルを処理しただけで、スクリプトは最大 200 MB の RAM を消費してしまいます。
stream_filter なしで実行すると、約 10 MB の一定のメモリ フットプリントで圧縮されます。
何を与える?
java - Javaで文字列をInputStreamReaderに変換するにはどうすればよいですか?
String
値をに変換するにはどうすればよいInputStreamReader
ですか?
c# - C# で Stream に対して XPathNavigator を安全に作成するにはどうすればよいですか?
入力として Stream が与えられた場合、XML データ ソースに対して XPathNavigator を安全に作成するにはどうすればよいですか?
XML データ ソース:
- 削除する必要がある無効な 16 進数文字が含まれている可能性があります。
- ドキュメントの宣言されたエンコーディングと一致しない文字が含まれている可能性があります。
例として、クラウド内の一部の XML データ ソースではutf-8のエンコードが宣言されていますが、実際のエンコードはwindows-1252またはISO 8859-1であり、これに対して XmlReader を作成するときに無効な文字の例外がスローされる可能性があります。ストリーム。
StreamReader.CurrentEncodingプロパティのドキュメントから: 「現在のリーダーで使用されている現在の文字エンコーディング。値は、StreamReader の任意の Read メソッドへの最初の呼び出しの後で異なる場合があります。これは、エンコーディングの自動検出が Read メソッドへの最初の呼び出しまで行われないためです。 " これは、最初の読み取り後に CurrentEncoding を確認できることを示しているようですが、XML データを Stream に書き出す必要があるときに、このエンコーディングを格納するのに行き詰っていますか?
無効な文字の問題のエンコードを (できれば C# で) 適切に処理する XML データ ソースに対して XPathNavigator/IXPathNavigable インスタンスを安全に作成するためのベスト プラクティスを見つけたいと思っています。
delphi - Delphi7 でストリームから一部を切り取る方法
フォームが TStream (Delphi7) の着信 SOAP メッセージがあります。この SOAP を送信するサーバーは開発モードであり、デバッグ目的でメッセージに html ヘッダーを追加します。SOAP コンバーターに渡す前に、html ヘッダー部分を切り取る必要があります。「pre」タグで始まり、「/pre」タグで終わります。かなり簡単だと思いますが、Delphi7でこれまでやったことがないので、誰か助けてもらえますか?
c++ - std::streams は既に移動可能ですか?
GNU gcc 4.3 は、今後の c++0x 標準を部分的にサポートします。実装された機能の中には、右辺値参照があります。右辺値参照を使用すると、コピー不可能なオブジェクトを移動したり、関数からオブジェクトを返したりすることが可能になります。
std::streamsは右辺値参照によって既に移動可能ですか、それとも現在のライブラリの実装には何かが欠けていますか?
ruby - ローカル ファイルまたは URL から IO ストリームを開く
ローカル ファイルへのパスまたは URL のいずれかを含む文字列を取り、それを読み取り可能な IO ストリームとして開くことができるライブラリが他の言語にあることは知っています。
Rubyでこれを行う簡単な方法はありますか?
c++ - C++での無限ループ
私はC++を学び、小さなプログラムを書いています。以下はそのようなプログラムの1つです。
このプログラムを実行し、入力を適度に小さい絶対値に保つと、期待どおりに動作します。しかし、10000000000などのより大きな入力を入力すると、プログラムは同じ出力を繰り返し吐き出します。入力の組み合わせによっては、動作が不安定になります。例えば:
プログラムは、殺されるまで「10->」を吐き出します。(この特定の入力シーケンスでは、プログラムの出力の速度が不規則に変化します。)また、大きな値の出力は、現在の不正な入力の値だけでなく、以前の正当な入力によって決定されることに気付きました。
どうしたの?(私はプログラムを修正することを気にしません、それは簡単です。私はそれを理解したいです。)
c++ - C++ ストリームが unsigned char ではなく char を使用するのはなぜですか?
なぜ C++ 標準ライブラリが basic_[io]stream とそのすべてのバリアントをchar
型ではなく型を使用してインスタンス化したのか、私はずっと疑問に思っていましたunsigned char
。char
(署名されているかどうかに応じて) get() などの操作でオーバーフローとアンダーフローが発生する可能性があることを意味します。これにより、関連する変数の実装定義の値が得られます。put
もう 1 つの例は、その関数を使用して、フォーマットされていないバイトを ostream に出力する場合です。
何か案は?
注:私はまだ確信が持てません。したがって、決定的な答えがわかっている場合でも、実際に投稿できます。