- 浏览: 351835 次
- 性别:
- 来自: 成都正在项目
文章分类
- 全部博客 (121)
- Java-Spring (1)
- Java-Hibernate (5)
- Java-基础 (16)
- Java-中级 (1)
- Java-高级 (18)
- Java-Struts (0)
- Java-RCP/Swing/SWT/JFACE (1)
- Java-常用正则 (1)
- Java-反射 (2)
- Java-h2database (2)
- JAVA面试题目 (1)
- ArcGIS Desktop 10——安装篇 (2)
- ArcGIS Desktop 10——基本知识 (0)
- ArcGIS Desktop 10——专业库——数据管理 (9)
- PHP——安装篇 (3)
- PHP——基础篇 (2)
- PHP——教程笔记 (10)
- GIS——基础 (3)
- GIS——算法 (0)
- GIS——Geoserver (1)
- GIS——OpenLayers (1)
- C#——既然改成了ITEYE我就增加个栏目 (1)
- Oracle——PL/SQL (1)
- Oracle——Java基础 (2)
- Oracle——TOAD (1)
- ECLIPSE-MYECLIPSE常见问题 (3)
- MySQL——安装篇 (4)
- Postgres (5)
- JavaScript - JQUERY (2)
- C++ (2)
- 操作系统 (5)
- Dwr——DirectWebRemoting (5)
- Maven (1)
- FLEX (4)
- ruby (1)
最新评论
-
AXthrough:
好强大,支持。
解决Jquery.autocomplete.js多参数的正确传递+中文编码+发送兼容FF+空格问题+返回值 -
redsky008:
独立的程序,独立的路径。
我已经转行了,以后这个很少关注的了 ...
真正解决 log4j:ERROR Failed to rename错误解决办法 -
梅花簪:
没明白,怎么改配置,为不同的进程所有?
真正解决 log4j:ERROR Failed to rename错误解决办法
必须将对象序列和反序列,
而且尤其在多线程中要引用多个对象,而且多个对象之间有某种关联,
将多个对象融合进一个对象中,便于深度克隆,否则一旦牵扯关联获取某种数据。
就有可能访问不到某对象数据,
比如:序列多个对象中存在Map对象建立的链表,Key值为对象的情况,如果不深度克隆,会造成死循环(一个对象被多个进程引用,注意:并非是锁定了,本质就是死循环)。
而如果这个时候每个对象都进行深度克隆,再加入多线程的run中运算,定会造成一个Map对象访问不到另一个Map对象中的值
而且尤其在多线程中要引用多个对象,而且多个对象之间有某种关联,
将多个对象融合进一个对象中,便于深度克隆,否则一旦牵扯关联获取某种数据。
就有可能访问不到某对象数据,
比如:序列多个对象中存在Map对象建立的链表,Key值为对象的情况,如果不深度克隆,会造成死循环(一个对象被多个进程引用,注意:并非是锁定了,本质就是死循环)。
而如果这个时候每个对象都进行深度克隆,再加入多线程的run中运算,定会造成一个Map对象访问不到另一个Map对象中的值
public static final Object deepclone(Object src) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(src); out.close(); ByteArrayInputStream bin = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream in = new ObjectInputStream(bin); Object clone = in.readObject(); in.close(); return (clone); } catch (ClassNotFoundException e) { throw new InternalError(e.toString()); } catch (StreamCorruptedException e) { throw new InternalError(e.toString()); } catch (IOException e) { throw new InternalError(e.toString()); } }
发表评论
-
RESTEasy 例子 hello world(两种方法)
2012-12-14 17:41 21865转载自http://zorro.blog.51cto.com/ ... -
原来Junit不支持多线程测试,需要使用GroboUtils才可以支持多线程测试
2011-12-06 09:30 1952对Junit的不深刻理解,造成多线程执行不完整,比如执行100 ... -
java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloa
2011-07-29 10:07 1274在做RESTful测试时,在Windows系统下出现了如下问题 ... -
转:Mina2 Http server
2011-07-27 14:03 1049http://amozon.iteye.com/blog/32 ... -
Base64测试
2011-06-29 17:36 1package com.redsky.cn.test; ... -
转Java集群好网站
2011-06-28 22:11 719http://www.jdon.com/jivejdon/th ... -
转:常见NIO开源框架(MINA、xSocket)学习 2
2011-06-23 18:17 842http://unbounder.iteye.com/blog ... -
test
2011-06-23 16:50 544http://www.liuyangs.info/docume ... -
转:直接用socket的话,mina server就不能用filter
2011-06-23 16:00 1转:http://www.blogjava.net/cresp ... -
转:模拟Mina2的TextLineCodecFactory中的TextLineDecoder解码器
2011-06-21 21:50 2002转自:http://hi.baidu.com/huahua03 ... -
转Java NIO文件操作
2011-06-21 13:54 909http://download.csdn.net/source ... -
搜集的一篇OutOfMemoryError
2011-06-10 23:29 1968最近遇到如下问题,主要是在做线程池+数据库连接池时遇到的,虽然 ... -
另一个线程池ThreadPool,感觉比之前发的那个JDK自带的好用
2011-06-10 22:52 2248import java.util.LinkedList; p ... -
转载Socket解包
2011-05-31 20:04 1838http://liuyuyuan.iteye.com/blog ... -
Java解决常见验证码——一定是准确率100%
2011-05-28 21:30 1147绝对不适合于严重扭曲,形状交叉的情形。有别于传统切图(一般4张 ... -
Mina2和Spring(2.5)在web项目中的结合使用
2011-05-18 20:55 784转载http://yanda20056.blog.163.co ... -
学习动态代理的时候,原来JAVA代码中也可以编译代码执行JAVAC的功能啊
2011-05-04 22:37 1026JDK1.6提供了如题的功能,前提是项目必须引入JDK1.6而 ... -
关于Map接口中Key值是对象还是值的问题
2011-04-28 19:24 3653今天遇到取不出Key所对应的值,取值为null. 原来是Key ... -
转载:JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介
2011-04-28 15:04 812将封装的如下方法置顶 public static Thr ...
相关推荐
深度克隆,也称为完全克隆,是一种创建新对象的技术,这个新对象不仅包含原始对象的所有属性值,还包含了嵌套对象的完整副本。这意味着如果一个对象中包含了其他对象的引用,深度克隆会创建这些引用对象的独立副本,...
java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)
在Java中,深度克隆是一种用于创建对象副本的方法,它可以确保复制出的新对象与原对象之间没有任何引用关系,也就是说,新对象中的所有成员变量(包括引用类型)都是原对象对应成员变量的副本。这种特性使得深度克隆...
在开发中,深度克隆对象的原因通常是为了保持原始数据的完整性,避免因修改克隆后的对象而导致原始数据的意外变更。例如,当你想要创建一个用户配置对象的副本,以便在不改变用户原始设置的情况下进行操作,或者在...
深度克隆是编程中一种重要的概念,特别是在处理复杂对象或者数据结构时,它能够创建一个完全独立的副本,这个副本不仅包含原始对象的所有属性,而且其内部引用的对象也会被复制,形成一个新的独立的对象树。...
3. **反序列化对象**:创建一个`ObjectInputStream`,从`ByteArrayOutputStream`读取对象,得到克隆对象。 ```java ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ...
Gson深度克隆是一个利用Gson库实现对象深度克隆的工具,主要通过将对象序列化为JSON字符串,再从JSON字符串反序列化为新对象。其核心原理是利用Gson的序列化与反序列化特性,无需手动实现克隆逻辑。 主要特点: ...
在JavaScript编程中,对象的...在JavaScript中,深度克隆对象对于维护数据的独立性和防止意外的副作用至关重要,特别是在数据驱动的框架(如Angular)中。了解和掌握这些方法能够帮助开发者更好地处理复杂的数据结构。
在JavaScript开发中,深度克隆是一个常见的需求,它主要用于创建对象的一个完全独立的副本,不会因为对原对象的修改而影响到副本。标题提到的"一个用于对象深度克隆的同构和可配置javascript函数"是指一个能够在...
JavaScript中的对象深度克隆是一种创建新对象的过程,这个新对象完全复制了原始对象的所有属性,包括嵌套的对象和数组,而不会与原始对象共享引用。这意味着对克隆对象的任何修改都不会影响原始对象。在JavaScript中...
例如,如果你有一个对象A,它包含一个列表或另一个对象B的引用,当使用`clone()`方法时,对象A和其克隆对象之间的引用关系保持不变,也就是说,修改克隆对象中的B,也将影响原始对象中的B。 为了克服这个限制,Java...
JavaScript中的浅层克隆与深度克隆是两种不同的对象复制方式,它们主要处理对象和数组这类引用类型的数据。这两种克隆方法的区别在于处理对象内部引用值的方式,即对堆内存中对象的复制程度。 1. **浅层克隆**: ...
浅克隆只是复制对象的引用,而不是实际的对象内容,因此,如果对象中包含其他对象的引用,这些引用在原始对象和克隆对象之间是共享的。而深度克隆则会递归地复制对象及其所有嵌套对象,确保每个对象都有自己的独立...
在JavaScript中,深度克隆指的是创建一个新对象,其内容完全复制自源对象,包括所有嵌套的对象和数组。在处理复杂的数据结构时,深度克隆尤为重要,因为它能确保源对象不受目标对象的修改影响。标题提到的"一行代码...
可以更好的去理解java克隆的运用,尤其在多线程的运用过程中,多个对象进行操作过程中,可以先进行对 对象进行 备份,首先就克隆一份,当多线程对对象操作过程中,与异常情况,可以对对象进行恢复,克隆还其他的用途,学会...
标题提到的"nanoclone"是一个极简的JavaScript库,其核心代码只有145字节,但能实现深度克隆功能。这在追求轻量级解决方案的场景下显得尤为宝贵。 在JavaScript中,有多种实现深拷贝的方法。例如,可以使用JSON的...
深度克隆对象,支持循环引用和属性描述符 var clone = require ( '@dmail/object-clone' ) ; var a = { name : 'a' } ; var b = clone ( a ) ; b . name ; // 'a' // of course b != a 它克隆得很深 var a = { ...