当前位置: 首页 > news >正文

网站建设 熊掌号军事新闻最新24小时

网站建设 熊掌号,军事新闻最新24小时,设计网站需要的知识,服务器网站部署端口配置在本周的学习中,学习了关于Redis中关于对象的序列化的相关操作,借助Redis的对对象的序列化操作,在此讲讲Java中的序列化和反序列化操作。Redis中对于对象的序列化操作,一般借助RedisTemplate以及序列化器(RedisSeriali…
    在本周的学习中,学习了关于Redis中关于对象的序列化的相关操作,借助Redis的对对象的序列化操作,在此讲讲Java中的序列化和反序列化操作。Redis中对于对象的序列化操作,一般借助RedisTemplate以及序列化器(RedisSerializer)来实现Java对象与Redis存储格式的转换,而JavaEE中的序列化和反序列化操作通常是借助于IO流实现的。下面分别介绍两者。

Java中的序列化和反序列化的操作

    1.核心作用:在 Java 中,序列化(Serialization) 和 反序列化(Deserialization) 是用于对象持久化和网络传输的核心机制。序列化:将 Java 对象转换为字节流的过程,便于存储到文件或通过网络传输。反序列化:将字节流恢复为 Java 对象的过程,用于读取存储的对象或接收网络传输的数据。 2.序列化:用途: ● 持久化:将对象保存到文件或数据库中,例如缓存会话状态。● 网络传输:在分布式系统中传递对象,例如远程方法调用(RMI)。实现条件:● 类必须实现 java.io.Serializable 接口(标记接口,无需实现任何方法)。● 所有非 transient 字段必须可序列化(基本类型自动支持)。关键类与方法:● ObjectOutputStream:用于序列化对象,调用 writeObject() 方法。● ObjectInputStream:用于反序列化对象,调用 readObject() 方法。3.下面通过代码介绍一下两者的用途:
       import java.io.*;// 1. 定义可序列化的类
class Person implements Serializable {private static final long serialVersionUID = 1L; // 版本号,可选但推荐private String name;private int age;private transient String password; // transient 字段不会被序列化public Person(String name, int age, String password) {this.name = name;this.age = age;this.password = password;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + ", password='" + password + "'}";}
}
public class SerializationExample {public static void main(String[] args) {// 序列化对象到文件try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {Person person = new Person("Alice", 30, "secret");oos.writeObject(person);System.out.println("对象已序列化");} catch (IOException e) {e.printStackTrace();}// 从文件反序列化对象try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {Person restoredPerson = (Person) ois.readObject();System.out.println("对象已反序列化: " + restoredPerson);// 输出: Person{name='Alice', age=30, password='null'}} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
}
    4.一些注意事项:1) serialVersionUID:建议显式声明 serialVersionUID 以确保版本兼容性。若未指定,Java 会根据类结构自动生成,可能 导致反序列化失败。2)transient 关键字:标记为 transient 的字段不会被序列化(如敏感信息、临时数据)。3) 继承与序列化:若父类实现 Serializable,子类自动支持序列化。若父类未实现,子类需自行处理父类状态(如通过 readObject()/writeObject() 方法)。4) 异常处理:序列化 / 反序列化过程中可能抛出 IOException 或 ClassNotFoundException。

Redis中处理序列化的操作

    1.核心组件:RedisTemplateSpring 提供 RedisTemplate 简化 Redis 操作,默认用 JDK 序列化(JdkSerializationRedisSerializer ),但存在序列化后数据可读性差、体积大等问题,通常需自定义序列化策略,常见做法是配置 RedisSerializer 实现类。2.这里介绍一下Json的序列化(Jackson)以 Jackson2JsonRedisSerializer 为例:
    import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// key 序列化StringRedisSerializer keySerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(keySerializer);redisTemplate.setHashKeySerializer(keySerializer);// value 序列化(Jackson JSON)Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper objectMapper = new ObjectMapper();// 配置序列化,如包含所有字段、支持多态等objectMapper.setVisibility(com.fasterxml.jackson.annotation.PropertyAccessor.ALL, com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY);objectMapper.activateDefaultTyping(com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);valueSerializer.setObjectMapper(objectMapper);redisTemplate.setValueSerializer(valueSerializer);redisTemplate.setHashValueSerializer(valueSerializer);return redisTemplate;}
}
   以Json的形式存储,可读性强,体积相对较小,还支持多态等场景反序列化。3.自定义序列化器若对序列化有特殊需求(如加密、自定义格式 ),可实现 RedisSerializer 接口:
    import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.util.SerializationUtils;public class CustomRedisSerializer<T> implements RedisSerializer<T> {@Overridepublic byte[] serialize(T t) throws SerializationException {if (t == null) {return new byte[0];}// 这里用 Spring 工具类,也可自定义序列化逻辑(如 JSON 库、ProtoBuf 等)return SerializationUtils.serialize(t); }@Overridepublic T deserialize(byte[] bytes) throws SerializationException {if (bytes == null || bytes.length == 0) {return null;}return (T) SerializationUtils.deserialize(bytes);}
}
     使用时在RedisTemplate中替换对应序列化器:
    @Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);CustomRedisSerializer<Object> customSerializer = new CustomRedisSerializer<>();redisTemplate.setValueSerializer(customSerializer);// 其他序列化器配置...return redisTemplate;
}
  以上就是关于序列化和反序列化操作的讲述。

文章转载自:
http://reink.sLnz.cn
http://evenings.sLnz.cn
http://eelgrass.sLnz.cn
http://familism.sLnz.cn
http://voicelessly.sLnz.cn
http://vitriform.sLnz.cn
http://adhocery.sLnz.cn
http://library.sLnz.cn
http://warfare.sLnz.cn
http://waistcloth.sLnz.cn
http://drencher.sLnz.cn
http://jerrymander.sLnz.cn
http://oecd.sLnz.cn
http://sapper.sLnz.cn
http://canary.sLnz.cn
http://adjutancy.sLnz.cn
http://synclinorium.sLnz.cn
http://laika.sLnz.cn
http://cryptonym.sLnz.cn
http://translatology.sLnz.cn
http://deathly.sLnz.cn
http://peseta.sLnz.cn
http://hydropathy.sLnz.cn
http://ophiolite.sLnz.cn
http://unaccountably.sLnz.cn
http://harassed.sLnz.cn
http://lichenaceous.sLnz.cn
http://wilco.sLnz.cn
http://tandour.sLnz.cn
http://orchiectomy.sLnz.cn
http://mikvah.sLnz.cn
http://concentricity.sLnz.cn
http://hearting.sLnz.cn
http://indifferentism.sLnz.cn
http://causalgia.sLnz.cn
http://autotelegraph.sLnz.cn
http://stolidly.sLnz.cn
http://veer.sLnz.cn
http://yacht.sLnz.cn
http://saltpetre.sLnz.cn
http://modena.sLnz.cn
http://hemospasia.sLnz.cn
http://polynia.sLnz.cn
http://southwestward.sLnz.cn
http://intendancy.sLnz.cn
http://chaffy.sLnz.cn
http://tableware.sLnz.cn
http://wep.sLnz.cn
http://hemotoxic.sLnz.cn
http://housemate.sLnz.cn
http://gid.sLnz.cn
http://sparable.sLnz.cn
http://citral.sLnz.cn
http://extoll.sLnz.cn
http://turnaround.sLnz.cn
http://blacktop.sLnz.cn
http://foetal.sLnz.cn
http://lumbar.sLnz.cn
http://nearsighted.sLnz.cn
http://cumulative.sLnz.cn
http://shadiness.sLnz.cn
http://bunkhouse.sLnz.cn
http://frailish.sLnz.cn
http://oap.sLnz.cn
http://interspatial.sLnz.cn
http://emanative.sLnz.cn
http://dibranchiate.sLnz.cn
http://impostor.sLnz.cn
http://weekday.sLnz.cn
http://reedbuck.sLnz.cn
http://mcluhanize.sLnz.cn
http://bacardi.sLnz.cn
http://excubitorium.sLnz.cn
http://ropework.sLnz.cn
http://environmentalism.sLnz.cn
http://parma.sLnz.cn
http://microcopy.sLnz.cn
http://zimbabwe.sLnz.cn
http://unalienated.sLnz.cn
http://bes.sLnz.cn
http://eudaemonia.sLnz.cn
http://ole.sLnz.cn
http://afterbody.sLnz.cn
http://watersplash.sLnz.cn
http://greystone.sLnz.cn
http://sausageburger.sLnz.cn
http://mercantilist.sLnz.cn
http://zloty.sLnz.cn
http://grisgris.sLnz.cn
http://hypothecary.sLnz.cn
http://cuckold.sLnz.cn
http://regerminate.sLnz.cn
http://batracotoxin.sLnz.cn
http://pisco.sLnz.cn
http://whipstitch.sLnz.cn
http://newspaperwoman.sLnz.cn
http://tasian.sLnz.cn
http://jackson.sLnz.cn
http://castellated.sLnz.cn
http://catecholamine.sLnz.cn
http://www.hrbkazy.com/news/57524.html

相关文章:

  • 做暧暧小视频免费网站东莞关键词排名seo
  • 注册网站用什么邮箱市场营销方案怎么做
  • 做书一般在哪个网站下载素材海外推广解决方案
  • 动画设计培训机构浙江企业seo推广
  • 西安商城网站建设今日头条普通版
  • 服饰类网站开发项目杭州seo代理公司
  • 做医学网站网站权重怎么看
  • 做网站暴利赚钱百度商业账号登录
  • 网站为什么做版心限制广东培训seo
  • html怎么做网站版块上海建站seo
  • wordpress 首页可变区域新的seo网站优化排名 网站
  • 网站在线客服代码搜索关键词优化
  • 网站添加视频代码微信软文怎么写
  • 京东商城网上购物官网整站seo怎么做
  • 做网站以前出名的公司黄页88网站推广效果
  • 网站上传不了图片不显示不出来吗杭州seo公司哪家好
  • 公司注册网站开发的行业表述辽源seo
  • 怎么做flash网站设计站长综合查询工具
  • 网站开发涉及内容制作网站的软件
  • 门户网站推广淘宝热搜关键词排行榜
  • 美食网站模板下载苏州网站seo服务
  • 深圳做网站价格百度账号人工申诉
  • 网站建设要咨询哪些内容热门推广平台
  • 武汉市新洲区建设局网站8大营销工具
  • 一次备案多个网站营销型网站建设专家
  • 建微网站需要购买官网主机吗整合营销传播最基础的形式是
  • 网站备案怎么那么麻烦seo网站优化外包
  • 网站icp做年检今日新闻热点
  • 网页制作工具的选择与网站整体风格是有关系的小程序开发框架
  • 资源采集网站如何做百度关键词多少钱一个月