详解--数据封装

网络中数据的封装与解封装 本章目录数据封装数据解封装PDU 数据封装 在网络中传输数据需要对其进行封装,也就是加入网络参考模型中各层对应的头部信息,这些头部信息的主要作用是用来帮助中间传输系统将数据传输到一个正确的目的地,它不是为了给接收方看的。 数据的封装过程如下图,传输层的传输是端到端的,类似于我们将信封交到邮递员手上;数据链路层主要负责本地区域的传输,类似邮递员将信封交到邮局;而网络层的传输是点到点的,类似信封被邮局发出去在不同城市间传输;所有的数据要转换成物理信号比特流在物理层传输。 数据解封装 而到接收方那边时,他不关心 阅读详情

在优锐课的java架构学习中,数据封装是使用对象编程时要掌握的最重要概念。 在面向对象的编程中,数据封装与以下方面有关:

结合数据及其在一个地方的处理方式。 这是通过对象的状态(私有字段)和行为(公共方法)实现的。
仅允许通过行为访问和修改对象的状态。 然后可以严格控制对象状态中包含的值。
隐藏对象工作原理的详细信息。 外界可以访问的对象的唯一部分是其行为。 这些行为内部发生的事情以及状态的存储方式都无法看到。

实施数据封装
首先,我们必须设计对象,使其具有状态和行为。 我们创建包含状态的私有字段和作为行为的公共方法。

例如,如果我们设计一个人员对象,则可以创建私有字段来存储人员的名字,姓氏和地址。 这三个字段的值组合在一起形成对象的状态。 我们还可以创建一个名为displayPersonDetails的方法,以在屏幕上显示名字,姓氏和地址的值。

接下来,我们必须做出访问和修改对象状态的行为。 这可以通过三种方式完成:
接下来,我们必须做出访问和修改对象状态的行为。 这可以通过三种方式完成:

构造方法。 通过调用构造方法创建对象的新实例。 可以将值传递给构造函数方法以设置对象的初始状态。 有两个有趣的事情要注意。 首先,Java并不坚持每个对象都有构造函数方法。 如果不存在任何方法,则对象的状态将使用私有字段的默认值。 第二,可以存在多个构造方法。 这些方法在传递给它们的值以及它们如何设置对象的初始状态方面会有所不同。

存取器方法。 对于每个私有字段,我们可以创建一个将返回其值的公共方法。

Mutator方法。 对于每个私有字段,我们可以创建一个公共方法来设置其值。 如果你希望私有字段是只读的,请不要为其创建一个mutator方法。
例如,我们可以将person对象设计为具有两个构造方法。 第一个不带任何值,只是将对象设置为默认状态(即,名字,姓氏和地址为空字符串)。 第二个从传递给它的值中设置名字和姓氏的初始值。 我们还可以创建三个访问器方法,分别称为getFirstName,getLastName和getAddress,它们仅返回相应私有字段的值。 创建一个名为setAddress的mutator字段,该字段将设置地址私有字段的值。

最后,我们隐藏对象的实现细节。 只要我们坚持将状态字段设为私有,并将行为公开化,外界就无法知道对象在内部如何工作。

数据封装的原因

采用数据封装的主要原因是:

保持对象状态合法。通过强制使用公共方法修改对象的私有字段,我们可以将代码添加到mutator或构造方法中,以确保该值合法。例如,假设人员对象还存储用户名作为其状态的一部分。用户名用于登录我们正在构建的Java应用程序,但长度不能超过10个字符。我们可以做的是将代码添加到用户名的mutator方法中,以确保用户名的值不超过十个字符。

我们可以更改对象的实现。只要我们保持公共方法不变,我们就可以更改对象的工作方式而不会破坏使用它的代码。该对象实质上是调用它的代码的“黑匣子”。

对象的重复使用。我们可以在不同的应用程序中使用相同的对象,因为我们已经将数据及其在一个地方的处理方式进行了组合。

每个对象的独立性。如果一个对象的编码不正确并导致错误,则由于代码位于一个位置,因此很容易测试和修复。实际上,可以与应用程序的其余部分无关地测试对象。可以在大型项目中使用相同的原理,在大型项目中,可以为不同的程序员分配不同的对象。

喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
如果你对java技术很感兴趣也可以+ qq群:907135806 交流学习,共同学习进步。
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货加vx:ddmsiqi 领取啦

在这里插入图片描述

网络数据包封装/解封装 数据的发送和接收其实就是封装及解封装的过程。协议栈逐层向下传递数据,并添加报文头部和报文尾部的过程称为封装。反过来就是解封装。 阅读详情

相关推荐

CSSCI中文数据库引文分析+主路径分析+共被引

有一款软件叫HistCite,用于做英文数据库的引文分析。 但是,并不适用于中文数据库。 基于此本文开了一款功能类似HistCite的软件,用于挖掘中文引文。 目前针对英文的引文分析论文较多,而对于中文的并不多,特别是主路径分析。 原因在于针对中文没有软件可以使用,想做主路径分析或者文献共被引、作者共被引、期刊共被引等有一定难度。 为了更准确地解决此类问题,【学术点滴】团队攻克了这一困扰国内研究者的一大难题,开发出一款软件,只需一键,你想要的信息全都构建完毕。 为便于引用,软件已经集合到COOC6.66版本

qq_39974284的博客 3816

TCP/IP为例数据封装与解封装过程

数据链路层:在数据链路层,上层数据封装一个MAC头部,其内部有一个关键的字段信息MAC头部,MAC头部有一个关键信息MAC地址,MAC地址全球唯一。传输层:数据段被分为数据段,每个数据段都被封装了TCP/UDP报头,在TCP/UDP头中都有一个关键信息-端口号,端口号用来识别上层协议或应用程序。网络层:上层数据被封装上了新的报文头部 --IP头部,IP头部有重要的信息---IP地址,IP地址是计算机在网络上的地址。TCP/IP数据封装分为5个步骤,在本文中我将按流程顺序介绍TCP/IP的数据封装过程。

weixin_55707333的博客 3902

ARP协议与数据包封装与解封装详解

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。

悦分享 1185

数据从发出到接收的细节介绍{封装与解封装}

本文将介绍了详细的封装在每一层的具体的操作,可以让大家学习到数据从发出到收到的具体过程。

幾微的学习博客 4183

飞控芯片的隐形战场:传感器冗余与实时OS的可靠性革命

本文深入探讨飞控芯片在工业级无人机中的可靠性设计,聚焦传感器冗余架构与实时操作系统(RTOS)的容错机制。通过多IMU备份、自适应加权融合算法及NuttX、ChibiOS等RTOS的故障隔离技术,确保系统在极端环境下毫秒级自愈。文章还涵盖开源生态如PX4的跨平台移植及RISC-V架构的应用,为高可靠性飞控系统提供关键技术参考。

z5a6b的博客 877

DSP28335做FFT傅里叶变换

1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列是有C2000 ware这个库的。方便很多,不过目前不确定在C5000上运行的FFT能直接迁移到DSP28335上行不?测试了一下,是可以的,因为都是用的math.h,下面的一些正弦函数基本一样的 2. 硬件简介,其中DSP28335和TLV320AIC23B之间使用I2C接口进行寄存器配置,...

weixin_30390075的博客 3331

数据在各层封装与解封装过程详解

数据封装与解封装过程解析:文章详细介绍了基于OSI七层模型和TCP/IP协议栈的数据处理流程。封装过程自应用层开始,逐层添加协议头部(HTTP/TCP/IP/以太网帧),传输层区分TCP(可靠连接)和UDP(高效无连接)封装,网络层处理IP路由与分片,数据链路层完成MAC地址封装。解封装则逆向操作,从物理层信号接收开始,逐层校验并剥离头部,最终交付应用数据。文章还深入探讨了MTU分片、NAT转换等关键技术,并提供了面试应答策略和实践学习建议。理解这一过程是网络问题排查和协议分析的重要基础。

qq_46082433的博客 2173

EGO_Plannerv2代码学习(一):栅格建图之V1 V2的区别

最近在尝试将高飞老师的集群规划器部署到真实无人机上跑一下,开这个新帖记录下学习过程中的问题和想法。

qq_41069236的博客 5752

详解数据包封装解封装过程

基本概念 IP地址:指互联网协议地址,用于在整个互联网中标识设备的存在位置(私有地址除外)。 MAC地址:为局域网地址,用于在一个局域网内确定主机的位置,这也说明了MAC只能在局部传递。 一:当互访者在同一个局域网内,即IP地址在同网段 实验拓扑: 1、当PC3访问PC4时,由于PC3和PC4处于相同网段,所以PC3会发送ARP广播报文,当LSW1收到广播报文时,会进行泛洪操作,ARP广播报文会从G0/0/2接口发出,PC4收到ARP广播报文时,发现34.1.1.4地址是我自己,此时PC4会回

GUOJIA_DASHAO的博客 6267

从零解析:富斯i6遥控器与STM32的IBUS协议通信实战

本文详细解析了富斯i6遥控器与STM32通过IBUS协议通信的实战指南,涵盖硬件准备、协议解析、驱动实现及常见问题解决。特别适合机器人及智能小车开发者,提供低成本、高可靠性的无线控制方案,助力快速实现多通道控制功能。

weixin_29193359的博客 440

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

大模型推理采样策略,举例通俗易懂汇总介绍

qq_43243579的博客 2万+

Struts2数据封装详解

1 属性驱动 1.1 提供set方法的方式 该方式需要在action类中提供相应的属性并提供属性的set方法,并且jsp页面中的name属性要与Action类中的属性相对应,下面是对应的Action类和jsp页面 Action类 package com.itykd.web.action; import java.util.Date; import com.itykd.domain.Us...

Keeping Ready, Keeping Coding 296

SAP ERP 物料主数据同步外围系统

w_input-beskz = i_marc_new-beskz."采购类型 " BESKZ--- ADD BY HX_FHJ 20210106。w_input-beskz = lw_marc-beskz."采购类型 " BESKZ--- ADD BY HX_FHJ 20210106。w_input-sobsl = i_marc_new-sobsl."特殊采购类型-虚拟物料标识。

ChampaignWolf的专栏 1744

Java JDK封装数据结构详解

Java JDK在java.util包中封装了多种常用数据结构,包括List、Set、Map、Queue和Stack等。这些数据结构通过私有属性隐藏内部实现,提供标准接口方法(如add/get/remove)供开发者使用。JDK采用了泛型支持、异常处理、自动扩容等封装机制,并运用工厂模式、迭代器模式等设计模式提升代码质量。典型实现如ArrayList的动态数组、HashMap的哈希分桶、LinkedList的双向链表等,都封装了底层细节。

onlymscn的博客 1839

ROS2学习笔记(二)-- 多机通讯原理简介及配置方法

简单介绍ROS2多机通信原理以及配置注意事项

aibingjin的博客 1万+

基于深度学习YOLOv8的商品识别系统(深度学习 + UI界面 + 训练数据集 + Python代码)

如果使用自定义数据集,可以通过图像标注工具如LabelImg来标注每个商品的类别和边界框,并保存为YOLO格式的文本文件。bash复制编辑/dataset/images/train/val/labels/train/val这样,我们就准备好了数据集,可以开始训练YOLOv8模型。本文介绍了如何使用YOLOv8构建一个商品识别系统,包括从数据准备到模型训练,再到UI界面的开发。通过深度学习技术,尤其是YOLOv8的高效目标检测能力,我们能够快速实现商品识别并集成到实际应用中。

YOLO 302

mysql中如何进行对象的封装_详解Mybatis是如何把数据库数据封装到对象中的

一、前言接到一个问题,数据库为Null的数据,传递到前端显示为0。之前有了解过,持久层框架(mybatis)在把数据库数据封装到对象中,是利用对象的Setter方法,这个大家也都知道,因此我就在Setter方法尝试,结果并不完全是这样。下面我用例子演示。二、准备阶段1.数据表2.表对应的实体类@Data@ApiModel("用户账号")public class User {@ApiModelPro...

weixin_39795971的博客 891

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Vue 数据请求封装详解

使用 axios 创建请求实例添加请求和响应拦截器创建模块化的 API 文件结合 Vuex 管理状态在组件中使用封装的 API实现全局的错误处理和加载状态支持 API 版本控制实现请求取消功能这个系统具有良好的可扩展性和可维护性,适用于各种复杂的Vue项目。它提供了统一的错误处理、身份验证、加载状态管理等功能,同时保持了代码的模块化和可读性。

疯狂假前端的博客 1066

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

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

sk_buff封装和解封装网络数据包的过程详解

可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体进行的,它的重要性和BSD的mbuf类似(看过《TCP/IP详解 卷2》的都知道),那么sk_buff是什么呢?        sk_buff就是网络数据包本身以及针对它的操作元数据。        想要理解sk_buff,最简单的方式就是凭着自己对网络协议栈的理解封装一个直到以太层的数据...

a19871012的博客 1010

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

网络数据传输 | 封装与解封装详解

……

u013669912的博客 2121

SystemVerilog 类的数据隐藏与封装详解

数据隐藏:通过限制对类成员的直接访问,保护数据不被外部直接修改。封装:将数据和对数据的操作(方法)封装在一起,提供清晰的接口供外部使用。数据隐藏与封装是 SystemVerilog 中实现面向对象编程的重要特性。通过 local 和 protected 关键字,可以限制对类成员的直接访问,保护数据的完整性和安全性,同时提供清晰的接口供外部使用。合理使用数据隐藏与封装可以提高代码的可维护性、可扩展性和可靠性,是面向对象编程的重要实践。

qq_40661327的博客 922

C# 封装数据 详解

readonly修饰符只能用于字段(不能用于局部变量),它指出字段值只能从构造函数中更改,或在声明通过初始化器指定。字段可以在声明时或在构造函数中初始化,并且其值在对象创建后不能被修改。(2)不要为将来会发生变化的值使用常量字段。(1)要为永远不变的值使用常量字段;(声明局部变量时见过)和。

weixin_44368627的博客 298

Ethernet/IP 数据封装格式详解

综上所述,一个完整的 Ethernet/IP 数据包是由多个层次嵌套构成的整体结构体。从外部看过去依次经历了物理链路级别的MAC地址识别过程直至深入内部触及到底层应用程序接口层面的操作行为为止2。# 示例代码展示如何解析 Ethernet/IP 数据包中的关键字段# 解析以太网头部])= '88ab': # 检查是否为 CIP 报文# 继续向下一层解析 IP/TCP/CIP 结构......

maliqiqaz的专栏 1087

封装数据库DML,DQL操作——代码详解

一、封装数据库DML操作 public class DB_utils { static final String URL = "jdbc:mysql://localhost:3306/dep ?serverTimezone=GMT"; static final String USER = "root"; static final String PWD = "password"; - 封装加载驱动方法 public static Connection getConnection()

Vicali的博客 452

详解OSI参考模型及其数据封装和解封装

详解OSI参考模型及其数据封装和解封装 一、计算机网络的发展 第一代:是以主机为中心的网络。 第二代:1964年baran提出“存储—转发”的概念 1966年david提出“分组”的概念。 是以通信子网为中心的网络 第三代:1977年osi参考模型的出现标志着第三代计算机的出现。 二、计算机网络...

weixin_34185320的博客 712
上一篇: 面试问题详解--了解Java中字符串的串联
下一篇: 何时使用异步或同步AJAX
程序员plus
博客等级 码龄8年 41粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值