- 浏览: 5031816 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
public class Serial extends SerializableEr implements Serializable{ private static final Logger LOG = Logger.getLogger(Serial.class); int id; String name; private static final Test test =new Test(); public Serial(int id, String name) { this.id = id; this.name = name; } public String toString() { return "DATA: " + id + " " +name+super.test; } public static void main(String[] args) throws Exception{ Serial serial=new Serial(1,"4234"); System.out.println("object serial:"+serial); try{ FileOutputStream fos=new FileOutputStream("serialTest.txt"); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(serial); oos.flush(); oos.close(); }catch(Exception e){ System.out.println("Exception:"+e); } a(); } public static void a()throws Exception{ FileInputStream fos=new FileInputStream("serialTest.txt"); ObjectInputStream oos=new ObjectInputStream(fos); Object o= oos.readObject(); System.out.println(o); }
public class Test { }
public class SerializableEr { Test test =new Test(); // public SerializableEr(){}; }
运行结果:object serial:DATA: 1 4234ser.Test@9971ad
DATA: 1 4234ser.Test@1bf6770
当把 Serial 改为 private static final Test test =new Test();
public class Serial extends SerializableEr implements Serializable{ private static final Logger LOG = Logger.getLogger(Serial.class); int id; String name; /*private static final*/ Test test =new Test(); public Serial(int id, String name) { this.id = id; this.name = name; } public String toString() { return "DATA: " + id + " " +name+super.test; } public static void main(String[] args) throws Exception{ Serial serial=new Serial(1,"4234"); System.out.println("object serial:"+serial); try{ FileOutputStream fos=new FileOutputStream("serialTest.txt"); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(serial); oos.flush(); oos.close(); }catch(Exception e){ System.out.println("Exception:"+e); } a(); } public static void a()throws Exception{ FileInputStream fos=new FileInputStream("serialTest.txt"); ObjectInputStream oos=new ObjectInputStream(fos); Object o= oos.readObject(); System.out.println(o); } }
object serial:DATA: 1 4234ser.Test@9971ad Exception:java.io.NotSerializableException: ser.Test Exception in thread "main" java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: ser.Test at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at ser.Serial.a(Serial.java:40) at ser.Serial.main(Serial.java:35) Caused by: java.io.NotSerializableException: ser.Test at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at ser.Serial.main(Serial.java:29)
总结:
事实证明。
1:java的序列化时 。只是序列化jvm堆上的对象以及属性对象,,像静态变量就可以不实现序列化接口,因为静态变量在存在与方法区的,
场景2:
public class Serial extends SerializableEr { private static final Logger LOG = Logger.getLogger(Serial.class); int id; String name; private static final Test test =new Test(); public Serial(int id, String name) { this.id = id; this.name = name; } public String toString() { return "DATA: " + id + " " +name+super.test; } public static void main(String[] args) throws Exception{ Serial serial=new Serial(1,"4234"); System.out.println("object serial:"+serial); try{ FileOutputStream fos=new FileOutputStream("serialTest.txt"); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(serial); oos.flush(); oos.close(); }catch(Exception e){ System.out.println("Exception:"+e); } a(); } public static void a()throws Exception{ FileInputStream fos=new FileInputStream("serialTest.txt"); ObjectInputStream oos=new ObjectInputStream(fos); Object o= oos.readObject(); System.out.println(o); } }
public class SerializableEr implements Serializable{ Test test =new Test(); // public SerializableEr(){}; }
结果:
object serial:DATA: 1 4234ser.Test@9971ad Exception:java.io.NotSerializableException: ser.Test Exception in thread "main" java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: ser.Test at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at ser.Serial.a(Serial.java:40) at ser.Serial.main(Serial.java:35) Caused by: java.io.NotSerializableException: ser.Test at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) at java.io.ObjectOutputStream.writeSerialData(Unknown Source) at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) at java.io.ObjectOutputStream.writeObject0(Unknown Source) at java.io.ObjectOutputStream.writeObject(Unknown Source) at ser.Serial.main(Serial.java:29)
2:java的序列化时 。当子类实现了序列化接口时,就只序列化子类,及属性,当子类没有实现序列化接口时,就要序列化子类,同时还要序列化实现了序列化接口的父类及属性,
发表评论
-
Kryo 使用指南
2017-12-05 20:14 20171、Kryo 的简介 Kryo 是一个快速序列化/ ... -
spring session序列化问题排查
2017-12-01 19:07 6269严重: Servlet.service() for ser ... -
利用junit对springMVC的Controller进行测试
2017-11-30 16:26 1443平时对junit测试service/D ... -
Java内存模型之重排序
2017-11-29 09:44 861在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重 ... -
pmd spotbugs 文档
2017-11-28 10:02 0https://pmd.github.io/pmd/pmd ... -
PMD、FindBug、checkstyle、sonar这些代码检查工具的区别?各自的侧重点是什么?
2017-11-28 10:01 2144可以说都是代码静态分析工具,但侧重点不同。pmd:基于源代码 ... -
阿里巴巴Java代码规约插件p3c-pmd使用指南与实现解析
2017-11-23 17:09 1603阿里巴巴Java代码规约插件安装 阿里Java代码规 ... -
静态分析工具PMD使用说明 (文章来源: Java Eye)
2017-11-23 17:07 1143质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤 ... -
MyBatis 使用 MyCat 实现多租户的一种简单思路
2017-11-20 18:27 2840本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进 ... -
Spring+MyBatis实现数据库读写分离方案
2017-11-20 17:15 1079百度关键词:spring mybatis 多数据源 读写分离 ... -
数据库连接池druid wallfilter配置
2017-11-20 11:38 1336使用缺省配置的WallFilter <be ... -
java restful 实体封装
2017-11-16 09:47 1591package com.mogoroom.bs.commo ... -
dak
2017-11-15 11:21 0package zzm; import jodd.ht ... -
Java内存模型之从JMM角度分析DCL
2017-11-15 09:35 638DCL,即Double Check Lock,中卫双重检查锁 ... -
Java 打印堆栈的几种方法
2017-11-14 09:36 4747java 中可以通过 eclipse 等工具直接打印堆栈, ... -
Servlet Session学习
2017-11-10 09:25 550HTTP 是一种"无状 ... -
浅析Cookie中的Path与domain
2017-11-10 09:26 1060Path – 路径。指定与co ... -
入分析volatile的实现原理
2017-11-08 09:47 684通过前面一章我们了解了synchronized是一个重量级的 ... -
Spring MVC-ContextLoaderListener和DispatcherServlet
2017-11-15 09:35 684Tomcat或Jetty作为Servlet ... -
搭建spring框架的时候,web.xml中的spring相关配置,可以不用配置ContextLoaderListener(即只配DispatcherServl
2017-11-07 18:27 1434搭建spring框架的时候,web.xml中的sprin ...
相关推荐
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
Java对象序列化是Java平台的一项重要特性,它允许将对象的状态转换为字节流,以便存储、传输或恢复。在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序...
Java序列化是Java平台中的一种核心机制,它允许对象的状态被转换成字节流,以便存储到磁盘、数据库,或者在网络中进行传输。这对于实现持久化、远程方法调用(RMI)以及Enterprise JavaBeans(EJB)等高级功能至关...
Java序列化是Java平台提供的一种将对象转换为字节流,以便存储、在网络上传输或者在后续时间重新创建相同对象的机制。这是Java编程中一个非常重要的概念,尤其是在分布式环境和持久化存储中。让我们深入探讨一下Java...
当两个Java进程需要通过网络通信时,由于网络只支持二进制数据的传输,因此需要将Java对象转换为字节流,然后在接收方再将字节流还原为原来的对象,这个过程就是反序列化。 Java提供了一套标准的序列化API,包括`...
Java序列化作为Java技术体系中的一个重要组成部分,其核心功能在于能够将Java对象转换成字节流,从而实现对象的持久化存储或是通过网络传输。然而,序列化的应用远不止于此,它还涉及到一系列复杂的概念和技术细节,...
1. **魔数**:标识文件为Java序列化文件,固定为`ACED`。 2. **序列化协议版本号**:目前常用的版本号为`0005`。 3. **对象类型标志**:一个字节用于表示对象类型。例如`0x73`表示普通Java对象。 4. **类或引用标志*...
- **类型继承与反序列化**:当存在继承关系时,可以使用`[XmlInclude]`特性来包含子类型。 - **排除不需要序列化的成员**:使用`[XmlIgnore]`特性来排除某个成员。 - **强制指定成员的序列化顺序**:使用`...
Java序列化技术提供了强大的功能,使开发者能够轻松地在网络上传输对象或将对象持久化到各种存储介质中。然而,为了充分利用这一特性,开发者需要深入了解其内部机制和最佳实践。本文详细介绍了Java序列化技术的基础...
Java的序列化和反序列化是Java开发中重要的概念,主要涉及对象状态的持久化以及在网络传输中的数据转换。在Java中,序列化是将一个对象转换为字节序列的过程,而反序列化则是将字节序列恢复为原始对象的过程。 1. *...
在Java编程语言中,序列化是一个重要的特性,它允许我们将对象的状态转换为字节流,以便存储或在网络中传输。这个过程称为对象的序列化,而反序列化则是将字节流恢复为原来的对象状态。在本文中,我们将深入探讨Java...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储或在网络中传输。这个过程称为序列化,而将字节流还原为对象的过程称为反序列化。序列化在许多场景下都非常有用,比如在分布式...
### Java序列化(Serializable)与反序列化详解 #### 序列化概念与应用场景 序列化是指将程序中的对象转换为一系列字节序列的过程,主要用于保存对象的状态以便将来使用或者在网络之间传输对象。Java提供了内置的...
在Java中,对象序列化允许我们将一个对象转换为字节流,这样就可以保存到磁盘、发送到网络或者存储在数据库中。`HashTable`,作为Java中的一个内置集合类,也可以被序列化。`HashTable`继承自`Dictionary`类,并实现...
Java 序列化是将一个对象的状态写入一个 Byte 流里,并且可以从其它地方把该 Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统...
Java 序列化是指将一个对象的状态写入一个 Byte 流里,并且可以从其它地方把该 Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等...
### 流程控制、网络编程与对象序列化:Java中的关键技术点 #### 一、对象序列化:数据的持久化与传输 **1.1 序列化目标** 对象序列化是Java中一种用于将对象状态转换为可以存储或传输的形式的过程。其主要目标有...
Java序列化是Java平台提供的一种持久化对象状态的机制,它可以将对象转换成字节流,以便存储到磁盘上,或者在网络中进行传输。这一过程被称为对象的序列化。相反,将字节流还原为原来的对象的过程叫做反序列化。 ...