タグ付けされた質問 「clone」

クローンは、元のオブジェクトと同じ属性、データ、メソッドをすべて備えたオブジェクトのコピーです。または、別のシステムを模倣するように設計されたソフトウェアシステム。

5
fork()、vfork()、exec()およびclone()の違い
私はGoogleでこれら4つの違いを見つけようとしていたので、これについては膨大な量の情報があると予想していましたが、4つの呼び出しの間に明確な比較はありませんでした。 私は、これらのシステムコールの違いを一目で確認できるような種類のコンパイルを試みることに着手しました。これが私が得たものです。この情報はすべて正しいですか/重要な情報が欠けていますか? Fork :fork呼び出しは基本的に現在のプロセスの複製を作成し、ほぼすべての点で同一です(たとえば、一部の実装ではリソースの制限がすべてコピーされるわけではありませんが、できるだけ近いコピーを作成するという考えです)。 新しいプロセス(子)は別のプロセスID(PID)を取得し、古いプロセス(親)のPIDをその親PID(PPID)として持ちます。2つのプロセスがまったく同じコードを実行しているので、フォークの戻りコードによってどちらがどちらであるかがわかります。子は0を取得し、親は子のPIDを取得します。もちろん、これはすべてfork呼び出しが機能することを前提としています。機能しない場合、子は作成されず、親はエラーコードを受け取ります。 Vfork:vforkとforkの基本的な違いは、vfork()で新しいプロセスが作成されると、親プロセスが一時的に中断され、子プロセスが親のアドレス空間を借用する可能性があることです。この奇妙な状況は、子プロセスが終了するか、execve()を呼び出すまで続き、その時点で親プロセスは続行します。 つまり、vfork()の子プロセスは、親プロセスの変数を予期せず変更しないように注意する必要があります。特に、子プロセスはvfork()呼び出しを含む関数から戻ってはならず、exit()を呼び出してはなりません(終了する必要がある場合は、_exit()を使用する必要があります);実際、これは子にも当てはまります。通常のfork()の場合)。 Exec :exec呼び出しは、基本的に現在のプロセス全体を新しいプログラムに置き換える方法です。プログラムを現在のプロセス空間にロードし、エントリポイントから実行します。exec()は、現在のプロセスを、関数が指す実行可能ファイルで置き換えます。exec()エラーがない限り、制御が元のプログラムに戻ることはありません。 Clone :クローンは、フォークとして、新しいプロセスを作成します。forkとは異なり、これらの呼び出しにより、子プロセスは、メモリスペース、ファイル記述子のテーブル、シグナルハンドラーのテーブルなど、その実行コンテキストの一部を呼び出しプロセスと共有できます。 子プロセスがcloneで作成されると、関数アプリケーションfn(arg)が実行されます。(これは、元のfork呼び出しのポイントから子で実行が継続されるforkとは異なります。)fn引数は、実行の開始時に子プロセスによって呼び出される関数へのポインターです。arg引数はfn関数に渡されます。 fn(arg)関数アプリケーションが戻ると、子プロセスは終了します。fnによって返される整数は、子プロセスの終了コードです。子プロセスは、exit(2)を呼び出すことによって、または致命的なシグナルを受信した後で、明示的に終了することもできます。 取得した情報: forkとexecの違い http://www.allinterview.com/showanswers/59616.html http://www.unixguide.net/unix/programming/1.1.2.shtml http://linux.about.com/library/cmd/blcmdl2_clone.htm これを読むために時間を割いてくれてありがとう!:)
197 linux  process  fork  exec  clone 

9
Java:インスタンスのディープクローニング/コピーの推奨ソリューション
Javaでインスタンスの深いクローン/コピーを行う推奨方法があるかどうか疑問に思っています。 私は3つの解決策を考えていますが、いくつかは見逃す可能性があります。あなたの意見を聞きたいと思います 編集:Bohzoの提案を含め、質問を洗練させます。これは、浅い複製よりも深い複製についてです。 自分でやれ: プロパティの後に手動でクローンプロパティをコーディングし、可変インスタンスもクローンされることを確認します。 pro: - 実行される内容の制御-迅速な実行 短所: -作成および保守が面倒 -バグが発生しやすい(コピー/貼り付けの失敗、プロパティの欠落、変更可能なプロパティの再割り当て) リフレクションを使用する: 独自のリフレクションツールまたは外部ヘルパー(jakarta common-beansなど)を使用すると、1行で処理を行う汎用のコピーメソッドを簡単に作成できます。 pro: -書き込みが簡単 -メンテナンスの 短所: -何が起きるかの制御が少ない -リフレクションツールがサブオブジェクトも複製しない場合、ミュータブルオブジェクトでバグが発生しやすい -実行が遅い クローンフレームワークを使用する: :のように、あなたのためにそれを行うフレームワークを使用してください コモンズ・ラングSerializationUtils Javaの深クローニングライブラリ ドーザ Kryo プロ: -リフレクションと同じ -正確に複製されるものをより詳細に制御します。 短所: -階層の最後でも、すべての可変インスタンスが完全に複製されます -実行が非常に遅くなる可能性があります 実行時にバイトコードインストルメンテーションを使用してクローンを書き込む javassit、BCEL、またはcglibを使用すると、片手で書いたように高速で専用のクローンを生成できます。誰かがこの目的のためにこれらのツールの1つを使用しているlibを知っていますか? ここで見逃したものは何ですか? どちらをお勧めしますか? ありがとう。
176 java  clone 

9
PHPでオブジェクトのコピーを作成するにはどうすればよいですか?
PHPオブジェクトでは参照によって渡されるようです。代入演算子でさえ、オブジェクトのコピーを作成しているようには見えません。 簡単な、不自然な証明があります: <?php class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; //i would especially expect this to create a copy. set_b($a); print $a->b; //i would expect this to show 'before' print $c->b; //i would ESPECIALLY …
168 php  copy  clone  shallow-copy 

9
InputStreamを複製する方法は?
何らかの処理を行うためにメソッドに渡すInputStreamがあります。他のメソッドで同じInputStreamを使用しますが、最初の処理の後、InputStreamはメソッド内で閉じられているように見えます。 InputStreamを複製して、彼を閉じるメソッドに送信するにはどうすればよいですか?別の解決策はありますか? 編集:InputStreamを閉じるメソッドは、libの外部メソッドです。終了するかどうかを制御できません。 private String getContent(HttpURLConnection con) { InputStream content = null; String charset = ""; try { content = con.getInputStream(); CloseShieldInputStream csContent = new CloseShieldInputStream(content); charset = getCharset(csContent); return IOUtils.toString(content,charset); } catch (Exception e) { System.out.println("Error downloading page: " + e); return null; } } private String getCharset(InputStream content) …
162 java  clone  inputstream 


14
同じMySqlインスタンスでのMySQLデータベースの複製
現在のデータベースsitedb1をsitedb2同じmysqlデータベースインスタンスにコピーするスクリプトを書きたいのですが。sitedb1をSQLスクリプトにダンプできることはわかっています。 mysqldump -u root -p sitedb1 >~/db_name.sql にインポートしsitedb2ます。最初のデータベースをSQLファイルにダンプせずに簡単な方法はありますか?

3
これらの単語はGitで何を意味しますか:リポジトリ、フォーク、ブランチ、クローン、トラック?
私は正直なところ、ここでのセマンティクスを明確にしていません。それらはすべてコード+履歴ユニットのコピー/バリアントに関するものですが、それを過ぎると私は言うことができるかどうかわかりません。この論理構造はどこかで説明されていますか?
130 git  branch  clone 

6
jQuery clone()とIDの変更方法は?
IDのクローンを作成し、その後id1にid2、などのように番号を追加する必要があります。クローンを押すたびに、IDの最新の番号の後にクローンを配置します。 $("button").click(function() { $("#id").clone().after("#id"); });
127 javascript  jquery  clone 

6
どのようにBufferedImageを複製しますか
多くのバッファリングされたイメージを含むオブジェクトがあります。すべてのバッファリングされたイメージを新しいオブジェクトにコピーする新しいオブジェクトを作成したいのですが、これらの新しいイメージは変更される可能性があり、元のオブジェクトのイメージが新しいオブジェクトの画像。 それは明らかですか? これは可能ですか?誰もがそれを行うための良い方法を提案できますか?私はgetSubImageについて考えましたが、サブイメージへの変更はすべて親イメージに反映されるとどこかで読みました。 私は、BufferedImageの完全に別個の新しいコピーまたはクローンを取得できるようにしたいだけです。

9
クローンメソッドを適切にオーバーライドする方法は?
スーパークラスを持たないオブジェクトの1つにディープクローンを実装する必要があります。 CloneNotSupportedExceptionスーパークラス(Object)によってスローされたチェックを処理する最良の方法は何ですか? 同僚から、次のように処理するようにアドバイスされました。 @Override public MyObject clone() { MyObject foo; try { foo = (MyObject) super.clone(); } catch (CloneNotSupportedException e) { throw new Error(); } // Deep clone member fields here return foo; } これは私には良い解決策のようですが、StackOverflowコミュニティにそれを投げ入れて、他に含めることができる洞察があるかどうかを確認したいと思いました。ありがとう!
114 java  clone  cloning  cloneable 


3
Javaでのマップの浅いコピー
私が理解しているように、MapJavaで浅いコピーを作成するには、いくつかの方法があります(おそらく他の方法も)。 Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> shallowCopy; // first way shallowCopy = new HashMap<String, Object>(data); // second way shallowCopy = (Map<String, Object>) ((HashMap<String, Object>) data).clone(); ある方法が他の方法よりも優先されますか?そうであれば、なぜですか? 言及する価値のあることの1つは、2番目の方法で「未チェックのキャスト」警告が表示されることです。その@SuppressWarnings("unchecked")ため、これを回避するために追加する必要があります。これは少しイライラします(以下を参照)。 @SuppressWarnings("unchecked") public Map<String, Object> getDataAsMap() { // return a shallow copy of the data map return (Map<String, Object>) ((HashMap<String, …
106 java  map  clone  shallow-copy 

8
JavaScript / JQueryでHTML要素オブジェクトを複製することは可能ですか?
問題を解決するためのヒントを探しています。 テーブルにhtml要素(選択ボックスの入力フィールドなど)があります。次に、オブジェクトをコピーして、そのコピーから新しいオブジェクトを生成し、それをJavaScriptまたはjQueryで生成します。これは何とかうまくいくと思いますが、現時点では少し無知です。 このようなもの(疑似コード): oldDdl = $("#ddl_1").get(); newDdl = oldDdl; oldDdl.attr('id', newId); oldDdl.html();

13
git statusからの「致命的:gitリポジトリ(または親ディレクトリのいずれでもない)」
このコマンドは、ファイルを取得してコンパイルするために機能します。 git clone a-valid-git-url 例えば: git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts ただし、git status(またはその他のgitコマンド)を実行すると、上記のfatal: Not a git repository (or any of the parent directories)エラーが発生します。 何が悪いのですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.