源码,反码,补码序列化反序列化

2024-05-10 23:38
文章标签 源码 序列化 反码 补码

本文主要是介绍源码,反码,补码序列化反序列化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器数的源码:最高位存放符号(0表示正,1表示负),应该不限制位数。

机器数负数的反码:除符号位外,全部取反(1变为0,0变为1)。

机器数负数的补码:反码加1。

 

机器数正数没有反码补码。

java中byte:(一个字节是8位二进制数)

 

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0

最小值的-128的源码反码补码表示问题待解决

 

byte不是专门用来表示-128到127的整数的,byte是用来处理IO流和程序逻辑数据类型(字符串,日期,复合对象等)的,作为它们的中介而存在,是物理数据转化为程序的逻辑数据的最后一层物理表现形式。字符串直接用getBytes()方法可得到。

在编程中,逻辑数据到byte的转化称为序列化(其他语言的序列化中是不是用byte这个单词表示二进制数(源码反码无所谓肯定还会经过处理的)?是的话byte不知道是不是也是8位?),反过来叫反序列化。

es之所以保存的数据要求是JSON逻辑格式序列化后的,而不是bean逻辑格式序列化后的,因为序列化保存对象还需要保存对象的类型信息等。那么springMVC/Struts等框架给浏览器返回的到底是bean还是json或是xml呢?想法测一下

 

虽然序列化和反序列化常用在传输前后,但序列化反序列化本身不针对远程还是本地,仅仅是为了保证序列化时用的类和反序列化用的类一致而已。RPC一般客户端是直接依赖远程的jar的,server端没改过的话正常情况下是不会有问题的。

java中只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。

为了提高serialVersionUID的独立性和确定性,强烈建议在一个可序列化类中显示的定义serialVersionUID,为它赋予明确的值

常见序列化方法:

writeUTF(String s);将UTF-8字符串序列化/写入字节流
writeObject(Object obj);将java对象序列化/写入字节流

Serializable和 Externalizable的区别:

 Externalizable是Serializable的子类,使用Serializable会默认将整个对象都序列化,如果只想序列化一部分内容可以使用Serializable来制定:

此接口中定义了两个方法,这两个方法的作用如下。

writeExternal(ObjectOutputout):在此方法中指定要保存的属性信息,对象序列化时调用。

readExternal(ObjectInputin):在此方法中读取被保存的信息,对象反序列化时调用。

这篇关于源码,反码,补码序列化反序列化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977889

相关文章

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思