問題タブ [resource-management]
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 - Java の RAII... リソースの処分はいつもとても醜いですか?
Java ファイル システム API をいじってみたところ、バイナリ ファイルのコピーに使用される次の関数が思い浮かびました。元のソースは Web から取得しましたが、try/catch/finally 句を追加して、何か問題が発生した場合に、関数を終了する前にバッファー ストリームが閉じられる (したがって、OS リソースが解放される) ようにしました。
パターンを表示するために関数を縮小しました。
私が理解している限りでは、2 つclose()
を finally 句に入れることはできません。1 つ目は問題close()
なくスローでき、2 つ目は実行されないからです。
C# には、キーワードでこれを処理するDisposeパターンがあることを知っています。using
私は、C++ コードが (Java のような API を使用して) 次のようになることをよく知っています。
何か不足していますか、それともclose()
Buffered Stream のメソッドで例外を処理するためだけに、Java で見苦しく肥大化したコードを作成する必要があるのでしょうか?
(どこか間違っているので教えてください...)
編集:それは私ですか、それともこのページを更新したときに、質問とすべての回答の両方が数分で1ポイント減少したのを見ましたか? 誰かが匿名のままで楽しみすぎていませんか?
編集 2: McDowellは、私がここで言及しなければならないと感じた非常に興味深いリンクを提供しました: http://illegalargumentexception.blogspot.com/2008/10/java-how-not-to-make-mess-of-stream.html
編集 3: McDowell のリンクに続いて、パターンを使用する C# に似たパターンの Java 7 の提案を見つけました: http://tech.puredanger.com/java7/#resourceblock。私の問題は明示的に説明されています。どうやら、Java 7 でもdo
、問題は残っています。
java - Java PreparedStatements と ResultSet をどこで閉じるか?
次のコードを検討してください。
PreparedStatement.close()
と の両方が をResultSet.close()
スローするため、上記はコンパイルされませんjava.sql.SQLException
。では、finally 句に try/catch ブロックを追加しますか? または、close ステートメントを try 句に移動しますか? それとも、近くに電話することを気にしませんか?
c++ - 用語と概念の意味を理解する-RAII(リソース獲得は初期化です)
C ++開発者は、RAIIとは何か、なぜそれが重要なのか、そして他の言語との関連性があるかどうかについて、よく説明していただけますか?
私は少し知っています。「ResourceAcquisitionisInitialization」の略だと思います。ただし、その名前は、RAIIが何であるかについての私の(おそらく間違った)理解とは相容れません。RAIIは、スタック上のオブジェクトを初期化する方法であり、それらの変数がスコープ外になると、デストラクタが自動的に実行されるという印象を受けます。リソースをクリーンアップするために呼び出されます。
では、なぜ「スタックを使用してクリーンアップをトリガーする」(UTSTTC:)と呼ばれないのでしょうか。そこからどうやって「RAII」にたどり着きますか?
そして、ヒープ上に存在する何かのクリーンアップを引き起こす何かをスタック上にどのように作成できますか?また、RAIIが使えない場合もありますか?ガベージコレクションを希望したことはありますか?少なくとも、他のオブジェクトを管理させながら、いくつかのオブジェクトに使用できるガベージコレクターはありますか?
ありがとう。
resource-management - 「職場の食器洗い機」の解決策を探しています
「仕事中の食器洗い機」の問題に適用するアルゴリズムを探しています。
汚れたコーヒーカップなどを入れられるのは嬉しい反面、「食器はどうなっているの?」ジレンマ。キッチンに行ったら、食器洗い機から食器を取り出してもらえますか。汚れた皿を食洗機に入れることはできますか、それともきれいな皿が無効になりますか?
同等のプログラミングが必要な問題のようです。非同期的にトリガーされ、オブジェクトをある状態から別の状態に移動する共有プロセスがあります。いつでもオブジェクトの状態を知ることができる必要があります。どのようなアルゴリズムを適用できますか?
私の最初のオプションは、食器洗い機に「きれい」と「汚れ」のフリップフラグを作成することです。食器洗い機を空にするときは「汚れ」に切り替え、実行するときは「きれい」に切り替える必要があります。そのアルゴリズムに問題はありますか?より良い/エラーが発生しにくいものはありますか?
注: ポーリング スケジュールを利用するアルゴリズムはありません。
google-app-engine - Google App Engine で DoSing を防ぐことは可能ですか?
Google App Engine 用のアプリを開発することを検討していますが、トラフィックが多すぎてはいけません。無料の割り当てを超えて支払うのは本当に嫌です。ただし、アプリを過負荷にして割り当てを超えることで、サービス拒否攻撃を引き起こすのは非常に簡単なようです. 無料の割り当て量を超えないようにする、または超えにくくする方法はありますか? たとえば、IP からのリクエスト数を制限する (CPU クォータを超えにくくする) ことはできますが、リクエストまたは帯域幅クォータを超えにくくする方法はありますか?
asp.net - HttpContext.GetGlobalResourceObjectは常にnullを返します
App_GlobalResourcesフォルダーに2つのファイルを作成しました。
どちらにも「SiteTitleSeparator」の値が含まれています。
これが私がやろうとしていることです(次の行は常にnullを返します):
ページのCultureプロパティが設定されていることに注意してください。
VBとC#の両方での回答を歓迎します。
iphone - iPhone: 未使用のリソースを自動的に識別する方法はありますか?
アプリを開発するにつれて、多くの画像、サウンドなどをインポートして組み込みました。ソース コードを grep するシェル スクリプトを作成することもできると思いますが、既存のものを識別する既存のスクリプトがあるかどうか疑問に思っています。私のプロジェクトで未使用のリソース。
ありがとう!