Questions tagged «clone»

克隆是具有与原始对象相同的所有属性,数据和方法的对象的副本。或旨在模仿另一个系统的软件系统。

5
fork(),vfork(),exec()和clone()之间的区别
我一直想在Google上找到这四个之间的区别,我希望这方面会有大量的信息,但是这四个调用之间确实没有任何可靠的比较。 我着手尝试汇编一下这些系统调用之间的区别的基本概况,这就是我得到的。所有这些信息是否正确/我是否缺少任何重要信息? Fork :fork调用基本上是对当前过程进行重复,几乎在每种方式上都是相同的(例如,并非在所有实现中都复制了所有内容,例如,在某些实现中资源有限,但其想法是创建尽可能接近的副本)。 新进程(子进程)获得不同的进程ID(PID),并将旧进程(父进程)的PID作为其父进程PID(PPID)。因为这两个进程现在正在运行完全相同的代码,所以它们可以通过fork的返回码来确定哪个是哪个-子代为0,父代为子代的PID。当然,假设fork调用有效,这就是全部-如果无效,则不会创建任何子代,并且父代会获得错误代码。 Vfork:vfork和fork之间的基本区别是,当使用vfork()创建新进程时,父进程会暂时挂起,子进程可能会借用父进程的地址空间。这种奇怪的状态一直持续到子进程退出或调用execve(),此时父进程继续运行。 这意味着vfork()的子进程必须小心,以免意外修改父进程的变量。特别是,子进程一定不能从包含vfork()调用的函数中返回,也一定不能调用exit()(如果需要退出,则应该使用_exit();实际上,对于子进程也是如此)普通fork()的形式。 Exec :exec调用是用新程序基本上替换整个当前过程的方法。它将程序加载到当前进程空间并从入口点运行它。exec()将当前进程替换为函数所指向的可执行文件。除非有exec()错误,否则控制权永远不会返回到原始程序。 Clone :克隆(作为分叉)创建一个新进程。与fork不同,这些调用允许子进程与调用进程共享其执行上下文的各个部分,例如内存空间,文件描述符表和信号处理程序表。 当使用克隆创建子进程时,它将执行功能应用程序fn(arg)。(这与fork不同,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 感谢您抽时间阅读 !:)
198 linux  process  fork  exec  clone 

9
Java:深度克隆/复制实例的推荐解决方案
我想知道是否有推荐的方法可以在Java中进行实例的深层克隆/复制。 我有3个解决方案,但我可能会想念一些,我想征求您的意见 编辑:包括Bohzo命题,并提炼问题:更多是关于深克隆而不是浅克隆。 自己做: 在属性之后手动编写克隆代码,并检查是否也克隆了可变实例。 优点: -控制要执行的操作 -快速执行 缺点: -繁琐的编写和维护 -容易出错(复制/粘贴失败,缺少属性,重新分配的可变属性) 使用反射: 使用您自己的反射工具或外部帮助程序(例如jakarta common-beans),可以很容易地编写一个通用的复制方法,该方法可以在一行中完成此工作。 优点: -易于编写 -无需维护, 缺点: -对发生的事情的控制较少 -如果反射工具也不能克隆子对象,则易发生对象易变的错误 -执行速度较慢 使用克隆框架: 使用适合您的框架,例如: commons-lang SerializationUtils Java深度克隆库 Dozer Kryo 优点: -与反射相同 -可以精确控制要克隆的内容。 缺点: -每个可变实例都被完全克隆,即使在层次结构的末尾 -可能执行起来很慢 使用字节码检测在运行时编写克隆 可以使用javassit,BCEL或cglib尽快生成专用克隆。有人知道为此目的使用这些工具之一的库吗? 我在这里错过了什么? 您会推荐哪一个? 谢谢。
175 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文件?



6
如何克隆BufferedImage
我有一个其中包含许多bufferedimages的对象,我想创建一个新对象,将所有bufferedimages复制到新对象中,但是这些新图像可能会更改,并且我不希望通过更改原始对象图像来更改新对象图像。 明白了吗? 这有可能做到吗,有人可以建议一个好方法吗?我曾经想到过getSubImage,但在某处读到,对子图像的任何更改都会重新关联到父图像。 我只希望能够获得BufferedImage的全新完全独立副本或克隆

9
如何正确覆盖克隆方法?
我需要在我的没有超类的对象中实现一个深层克隆。 处理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中的Map的浅表副本
据我了解,有几种方法(可能也有其他方法)Map在Java中创建a的浅表副本: 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(); 一种方法优于另一种方法吗?如果是,为什么? 值得一提的是,第二种方式会发出“未经检查的演员表”警告。因此,您必须添加内容@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();



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.