序列化,实体类存在memcache中必须要序列化

转westlifesz的博文

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
是对象永久化的一种机制。

   确切的说应该是对象的序列化,一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失,但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运行时读取这些对象的值,或者在其他程序中利用这些保存下来的对象。这种情况下就要用到对象的序列化。

   只有序列化的对象才可以存储在存储设备上。为了对象的序列化而需要继承的接口也只是一个象征性的接口而已,也就是说继承这个接口说明这个对象可以被序列化了,没有其他的目的。之所以需要对象序列化,是因为有时候对象需要在网络上传输,传输的时候需要这种序列化处理,从服务器硬盘上把序列化的对象取出,然后通过网络传到客户端,再由客户端把序列化的对象读入内存,执行相应的处理。

   对象序列化是java的一个特征,通过该特征可以将对象写作一组字节码,当在其他位置读到这些字节码时,可以依此创建一个新的对象,而且新对象的状态与原对象完全相同。为了实现对象序列化,要求必须能够访问类的私有变量,从而保证对象状态能够正确的得以保存和恢复。相应的,对象序列化API能够在对象重建时,将这些值还原给私有的数据成员。这是对java语言访问权限的挑战。通常用在服务器客户端的对象交换上面,另外就是在本机的存储。

   对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整性和可传递性。譬如通过网络传输,或者把一个对象保存成一个文件的时候,要实现序列化接口 。
*
Quote:


比较java.io.Externalizable和java.io.Serializable
[URL]http://www.zdnet.com.cn/developer/code/story/0,3800066897,39304080,00.htm[/URL]

即使你没有用过对象序列化(serialization),你可能也知道它。但你是否知道 Java 还支持另外一种形式的对象持久化,外部化(externalization)?

下面是序列化和外部化在代码级的关联方式:

public interface Serializable {}

public interface Externalizable extends Serializable {
void readExternal(ObjectInput in);
void writeExternal(ObjectOutput out);
}

序列化和外部化的主要区别

外部化和序列化是实现同一目标的两种不同方法。下面让我们分析一下序列化和外部化之间的主要区别。

通过Serializable接口对对象序列化的支持是内建于核心 API 的,但是java.io.Externalizable的所有实现者必须提供读取和写出的实现。Java 已经具有了对序列化的内建支持,也就是说只要制作自己的类java.io.Serializable,Java 就会试图存储和重组你的对象。如果使用外部化,你就可以选择完全由自己完成读取和写出的工作,Java 对外部化所提供的唯一支持是接口:

voidreadExternal(ObjectInput in)
void writeExternal(ObjectOutput out)

现在如何实现readExternal() 和writeExternal() 就完全看你自己了。

序列化会自动存储必要的信息,用以反序列化被存储的实例,而外部化则只保存被存储的类的标识。当你通过java.io.Serializable接口序列化一个对象时,有关类的信息,比如它的属性和这些属性的类型,都与实例数据一起被存储起来。在选择走Externalizable这条路时,Java 只存储有关每个被存储类型的非常少的信息。

每个接口的优点和缺点

Serializable接口

· 优点:内建支持

· 优点:易于实现

· 缺点:占用空间过大

· 缺点:由于额外的开销导致速度变比较慢

Externalizable接口

· 优点:开销较少(程序员决定存储什么)

· 优点:可能的速度提升

· 缺点:虚拟机不提供任何帮助,也就是说所有的工作都落到了开发人员的肩上。

在两者之间如何选择要根据应用程序的需求来定。Serializable通常是最简单的解决方案,但是它可能会导致出现不可接受的性能问题或空间问题;在出现这些问题的情况下,Externalizable可能是一条可行之路。

要记住一点,如果一个类是可外部化的(Externalizable),那么Externalizable方法将被用于序列化类的实例,即使这个类型提供了Serializable方法:

private void writeObject()
private void readObject()
java的model,xml序列化(简单的,复杂的)方法都有 根据网上的资料自己研究的方法,不喜勿喷谢谢!! 立即下载

相关推荐

memcache-session序列化

tomcat kryo memcache session序列化 msm-memcached-session-manager-1.8.2

序列化:java.io.Serializable

java.io.Serializable引发的问题——什么是序列化?在什么情况下将类序列化?[@more@]序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的...

cqx2014的博客 200

手把手教你用ROS2 Humble给PX4无人机写个“画圆”程序:从C++代码到Gazebo仿真全流程

本文详细介绍了如何使用ROS2 Humble和PX4飞控实现无人机圆形轨迹控制,涵盖从环境配置、Gazebo仿真到C++代码实现的完整流程。通过实战教程,读者将掌握轨迹跟踪仿真的核心技术,包括ROS2与PX4的通信接口、圆形轨迹算法设计及Gazebo仿真调试技巧。

weixin_29056781的博客 257

xml序列化 java_XmlSerializer 对象的Xml序列化和反序列化

class Program{static void Main(string[] args){int i = 10;//声明Xml序列化对象实例serializerXmlSerializer serializer = new XmlSerializer(typeof(int));//执行序列化并将序列化结果输出到控制台serializer.Serialize(Console.Out, i);Cons...

weixin_42607969的博客 623

FTPClient使用中,碰到SocketTimeoutException 坑

ftpclient设置soTimeout无效

u010379794的博客 1951

VSAN闪存缓存磁盘故障处理指南-RAID0模式实战解析

本文详细解析了VSAN集群中RAID0模式下的闪存缓存磁盘故障处理全流程。通过模拟真实故障场景,从告警识别、数据重建策略到磁盘组重构,提供了手把手的实战操作指南,并深入探讨了RAID0缓存故障的独特影响与风险,为运维人员应对此类高性能存储架构的突发问题提供了专业解决方案。

assembly8low的博客 444

Java XML解析: 序列化 反序列化

Java XML解析 序列化 反序列化 支付行业报文格式

yudian1991的博客 2442

STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍芯片唤醒驱动程序。 一、RxDutyCycle模式 在讲述本篇内容之前,我们先来看一下SX1268的一种模式RxDutyCycle,译为中文为接收占空比模式。其可使用SetRxDutyCycle命令进入RxDutyCycle模式,我们来看一下该命令的详细解释。 该命令具有2个参数,...

snmplink的博客 4065

xml序列化与反序列化 java_XML和实体序列化和反序列化

近来的项目中用到了序列化就抽空学习了一下,拿出来给大家分享一下:类为我们提供了自己对象串行化(Serialize)和反串行化(Deserialize)的xml的方法,该类可以序列化的内容:公共类的公共读写字段或者属性XmlElement对象XmlNode对象Dataset对象实现了Icollection 或IEnumerable的类该类在设计中有一个设计需求:需要被序列化的类要提供一个空参数的构造...

weixin_39735005的博客 368

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB使用贝叶斯bnt网络工具箱:使用手册详解

WW、forever的博客 2676

C#部署YOLO三种方案深度实测:OpenCV DNN vs ONNX Runtime vs TensorRT

在工业视觉项目落地阶段,C#生态下部署YOLO模型主要有三条技术路线。很多开发者仅凭经验选型,往往在部署后期踩中性能瓶颈、兼容故障、维护成本超标的坑。本文基于工控机常见硬件配置,针对YOLOv8系列模型做控制变量实测,从推理性能、部署难度、工业稳定性、综合成本等多个维度做横向对比,给出可直接落地的选型结论。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 461

Memcache中实体类序列化的总结

在客户端调用服务器端的Memcache缓存的时候,我需要将一个实体类存入到一个List中,然后将这个List进行缓存,在这个过程中,实体类需要进行 implements java.io.Serializable这个都没有问题,刚开始写入缓存很正常,但是要quchu

糖糖糖糖糖先森 3177

滴滴数据分析80道面试题及参考答案

常见的模型评价指标有准确率、召回率、F1 值、均方误差、均方根误差、R 方等。准确率是指模型预测正确的样本数占总样本数的比例,它反映了模型预测的准确性。召回率是指模型预测为正例的样本中实际为正例的比例,它衡量了模型对正例的捕捉能力。F1 值是准确率和召回率的调和平均数,综合考虑了两者的平衡。均方误差是预测值与真实值之差的平方的平均值,它衡量了模型预测值与真实值的平均偏离程度。均方根误差是均方误差的平方根,与均方误差类似,但更直观地反映了误差的大小。

大模型大数据攻城狮的专栏 1695

php memcache 对象序列化,存储对象的方法

<?php $mem=memcache_connect('localhost',11211); $mem->add('123','456',false,0); $data=$mem->get('123'); // var_dump($data); class person{ var $name; function setname($name){

佟是佟博的佟 1674

Ubuntu 22.04+/WSL2 中解决 `error: externally-managed-environment` 并成功安装 PyTorch + vLLM 的完整指南

Ubuntu 22.04+/WSL2 因遵循 PEP 668 规范,系统 Python 被标记为“外部管理”,导致直接使用 pip install 安装包时报错 externally-managed-environment。解决方案是创建虚拟环境: 通过 python3 -m venv ~/vllm-env 创建隔离环境 激活环境后安装 PyTorch(CUDA 12.1)和 vLLM 避免使用 sudo pip 或 --break-system-packages,防止破坏系统依赖 关键点: 虚拟环

刘一说的IT专栏 296

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

memcache简单介绍

大家好,我是修真院第15期java学员,今天我给大家分享一下关于memcache的简单介绍1.背景介绍什么是MEMCACHE?MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字...

qq_42218123的博客 361

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Memcache函数详解

memcache函数所有的方法列表如下: Memcache::add – 添加一个值,如果已经存在,则返回false Memcache::addServer – 添加一个可供使用的服务器地址 Memcache::close – 关闭一个Memcache对象 Memcache::connect – 创建一个Memcache对象 memcache_debug – 控制调试功能 Memcac

Sunface撩技术 3400

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

memcache缓存详解

转自 memcache缓存详解 这篇文章主要介绍了PHP中的Memcache,从Memcache简介开始,详细讲解了如Memcache和memcached的区别、PHP的 Memcache所有操作方法、每个操作方法的详细解释等,需要的朋友可以参考下 一、Memcache简介 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来...

谁还不是一块小饼干的博客 354

memcache学习

memcache学习 下载安装 链接: https://pan.baidu.com/s/1U7_BmFwOwdZlMbM7Y7TPVg 提取码: xvim 解压下载后的文件,把它放到一个目录中,如D:\memcached。 3. 打开cmd,进入memcached解压后存放的目录,运行命令: memca...

Bug制造者 247

PHP操作Memcache

b/s: 基于浏览器和服务器架构  web程序 c/s: QQ  SVN client客户端+ 服务器    简单的基于文本行的协议:   redis memcache 区别: 都是存储数据的,memcache直接保存到内存中,redis 保存到内存中,关闭之后保存到硬盘中,memcache 重启电脑,关闭服务都会造成数据丢失   (1)保存在内存中 (2)重启电脑,重启

郭晓湉 3169

mysql数据改变 memcache 更改_php操作memcache增删改查(CURD)大全

刚接触memcache,感觉用起来还是挺方便的,于是就整理记录一下简单的增删改查(CURD)操作。直接上代码:创建memcache对象$m = new Memcache;// 第一种链接方式if(!$m->connect("127.0.0.1",11211)){die('链接失败');}// 第二种链接方式if(!$m->connect("127.0.0.1:11211")){die(...

weixin_33739387的博客 199

php打开memcache,php操作memcache

环境:PHP Version 5.2.6准备工作:在php.ini中添加extension=php_memcache.dll;重启apache测试一下://memcache$mem=new Memcache;if($mem->connect('127.0.0.1',11211)){//MEMCACHE_COMPRESSED标记对数据进行压缩(使用zlib)。if($mem->set('...

weixin_30768925的博客 176

memcache set方法 MEMCACHE_COMPRESSED

_COMPRESSED=2 Usingvalueof1producesserializationerrorswhenretrievingvalues. ----------------------------------------- 当检索值时,用1会产生序列化错误 MEMCACHE_COMPRESSED(integer) Usedtotur...

weixin_34194379的博客 247

Memcache 函数详细讲解一

Memcache函数库是在PECL(PHP Extension Community Library)中,主要作用是搭建大容量的内存数据的临时存放区域,在分布式的时候作用体现的非常明显,否则不建议使用。memcache函数所有的方法列表如下: Memcache::add – 添加一个值,如果已经存在,则返回false Memcache::addServer – 添加一个可供使用的服务器地址 M

qq_16490557的专栏 372

PHP中的Memcache详解

一、Memcache简介 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached管理这些HashTable,所以速度非常快。 二、Memc...

dianqiangjin0204的博客 114

Memcache缓存

memcache 是服务器缓存系统,以键值对方式保存数据到内存中,把对象序列化后,理论上可支持所有的数据类型。 使用情景:怎么用都可以,注意的是它只把数据保存到内存中,重启memcache 服务后丢失,如果要持久化,须要额外程序处理。 一般在web系统中用memcache 缓存常用的数据来缓解数据库查询压力和提高系统性能。它相当于数据库和程序间的中间件。 memcache 早就如雷贯耳,想要

刘彦的博客 660
上一篇: 从clob字段中取值
下一篇: grep 作用
disablebb
博客等级 码龄18年 5粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值