数据封装

Encapsulate Field (封装字段)

筅森魡賤 提交于 2020-03-02 01:47:38
Summary : 你的类中存在一个 public 字段。 将它声明为 private ,并提供相应的访问函数。 动机: 面向对象的首要原则之一就是封装,或者成为“数据隐藏”。按此原则,你绝不应该将数据声明为 public ,否则其他对象就有可能访问甚至修改这项数据,而拥有该数据的对象却毫无察觉。于是,数据和行为就被分开了 — 这可不是件好事。 数据声明为 public 被看做是一种不好的做法,因为这样会降低程序的模块化程度。数据和使用该数据的行为如果集中在一起,一旦情况发生变化,代码的修改就会比较简单,因为需要修改的代码都集中于同一块地方,而不是星罗棋布地散落在整个程序中。 Encapsulate Field 是封装过程的第一步。通过这项重构手法,你可以将数据隐藏起来,并提供相应的访问函数。但它毕竟只是第一步。如果一个类除了访问函数外不能提供其他行为,它终究只是一个哑巴类。这样的类并不能享受对象技术带来的好处。而你知道,浪费任何一个对象都是很不好的。实施 Encapsulate Field 之后,我会尝试寻找用到新建访问函数的代码,看看是否可以通过简单的 Move Method 轻快地将它们移到新对象去。 做法: 1. 为 public 字段提供取值 / 设值函数。 2. 找到这个类以外使用该字段的所有地点。如果客户只是读取该字段,就把引用替换为对取值函数的调用

JDBC——ResultSet结果集对象

我与影子孤独终老i 提交于 2020-02-28 13:28:35
ResultSet结果集对象,封装结果。它是怎么做到封装结果的呢? 游标,类似指针索引 最初指在“列名”上,要取到数据就需要让游标向下移动 移动后就指向了第一行数据,然后通过一些方法把第一行的每一列都取出来。 一次只能获取一行中的一列数据 这个过程就涉及到了两类方法,移动和获取 移动: next():游标向下移动一行,判断当前行是否为最后一行(判断是否有数据)。如果是返回false,不是则返回ture 获取: getXXX(参数):获取数据   XXX代表数据类型,例如表格中的name 用getString     参数有两种情况     int:代表列的编号(从1开始),getString(1)1表示第一列     string:代表列的名称,getString("列名") 注意使用步骤:   ①游标向下移动一行   ②判断是否有数据   ③获取数据 while (rs.next()){①②   //获取数据   String str = rs.getString(1);   int i = rs.getInt(2);   double d = rs.getDouble(3);   System.out.println(str+" "+i+" "+d); } 基本使用 package cn.itcast.jdbc; import java.sql.*; /* * DDL语句 *

六:数据转发过程

*爱你&永不变心* 提交于 2020-02-27 23:57:47
TCP/IP协议簇和底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。 数据转发过程概述 数据包在相同网段内或不同网段之间转发所依据的原理基本一致。 同一网段中封装的是目的地的MAC,不同网段封装的是网关MAC。 转发过程大致如下: 首先当主机建立了到达目的地的 TCP 连接后,便开始对应用层数据进行 TCP封装 。 然后进行 IP封装 然后 查找路由 ,确认主机A有去往主机B的路由 通过 ARP 缓存表找到下一跳的MAC地址。 如果表项里没有下一跳的MAC地址,主机A会发送ARP请求。 然后进行 以太网封装,将MAC地址表 封装 然后进行转发,当主机接收到报文时,发现目的MAC地址与IP地址都是自己,则进行解封装操作,如果目的MAC和IP地址不是自己,则将报文丢弃。同时,封装和解封装的完整过程都只会在终端设备上实现。 通过封装和解封装的方式,最终将数据送至目的地。 来源: CSDN 作者: 起风了で 链接: https://blog.csdn.net/weixin_44064040/article/details/104535911

多媒体封装格式(容器)介绍

你说的曾经没有我的故事 提交于 2020-02-23 01:52:50
封装格式 :在观看已经下载好的视频的时候,经常会看到一些视频文件后缀,如.mp4,.flv,.avi,.mkv等等,这些扩展名就可以简单理解为视频的封装格式或者视频的容器格式。 封装 :所谓视频的封装,就是将已经编码好的音频,视频,还可能有字幕,脚本之类的文件按照一定的规范放到一起,形成一个封装格式的文件(封装和编码是两个不同的概念,封装是在“视频流水线”上,编码以后的一个过程,一个容器可以封装多种编码格式的文件,但是只支持特定的编码格式)。封装格式有很多,比如flv,mp4,ts,avi ,mkv等等。 几种常见的封装格式: 1.TS封装格式 TS流最早应用于数字电视领域,视频格式主要是mpeg2。后来,苹果公司发明HLS协议也是基于TS文件的。hls流媒体视频编码的主要格式为h264/mpeg4,音频为aac/mp3。 TS文件分为三层:ts层(如下图)pes(Packet Elemental Stream)层,es层(Elementary Stream)。 es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层是在pes层上加入了数据流识别和传输的必要信息。 由上图可以看出,ts流是由一个个固定大小的包组成的,每个packet大小固定188个字节。 在这里说一下TS流的生产,就不再画深一层的结构图了,深一层结构图自行脑补: TS流的形成过程:

C#里封装 继承 多态

白昼怎懂夜的黑 提交于 2020-02-22 17:37:09
一、封装 C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。 在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。 此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。一个类中包含敏感数据,有些人可以访问,有些人不能访问,如果不对这些数据的访问加以限制,后果将会非常严重。所以要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。 封装语法: Public 数据类型 变量名 { get { return 变量名 } set { 变量名=value; } } 当然了!get和set有快捷键的:光标选择要封装的属性然后右键点击快速操作和重构…(Chrl+.)点击封装字段(并使用属性) 二、继承 继承是面向对象最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承类的所有成员。在面向对象编程中,被继承的类称为父类或基类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C

微信小程序面试题总结

我的梦境 提交于 2020-02-20 12:49:27
A类问题 1 请谈谈微信小程序主要目录和文件的作用? project.config.json 项目配置文件,用得最多的就是配置是否开启https校验; App.js 设置一些全局的基础数据等; App.json 底部tab, 标题栏和路由等设置; App.wxss 公共样式,引入iconfont等; pages 里面包含一个个具体的页面; index.json (配置当前页面标题和引入组件等); index.wxml (页面结构); index.wxss (页面样式表); index.js (页面的逻辑,请求和数据处理等); 2 请谈谈wxml与标准的html的异同? 都是用来描述页面的结构; 都由标签、属性等构成; 标签名字不一样,且小程序标签更少,单一标签更多; 多了一些 wx:if 这样的属性以及 {{ }} 这样的表达式 WXML仅能在微信小程序开发者工具中预览,而HTML可以在浏览器内预览 组件封装不同, WXML对组件进行了重新封装, 小程序运行在JS Core内,没有DOM树和window对象,小程序中无法使用window对象和document对象。 3 请谈谈WXSS和CSS的异同? 都是用来描述页面的样子; WXSS 具有 CSS 大部分的特性,也做了一些扩充和修改; WXSS新增了尺寸单位,WXSS 在底层支持新的尺寸单位 rpx; WXSS 仅支持部分 CSS

第7关 初识爬虫

不想你离开。 提交于 2020-02-06 22:36:22
你造吗,今天是个大喜的日子!来到这儿,就意味着你爬虫已经入门啦! 在这个重要又喜悦的日子里,我们就干三件事:回顾前路、项目实操、展望未来。 回顾前路,是为了复习0-6关所学的知识。项目实操,是通过写一个爬虫程序把所学的知识用起来。展望未来,是预告一下我们之后会遇到的风景。 马上开始吧~ 回顾前路 在前面,我们按关卡学了好多好多知识。而这么多的内容,我们用【项目实现】和【知识地图】两张图就能说清。 【项目实现】: 任何完成项目的过程,都是由以下三步构成的。 先需要明确自己的目标是什么,然后分析一下如何实现这个目标,最后就可以去写代码了。 当然,这不是一个线性的过程,而可能出现“代码实现”碰壁后然后折返“分析过程”,再“代码实现”的情形。 接下来是【知识地图】:前面6关所讲的爬虫原理,在本质上,是一个我们所操作的对象在不断转换的过程。 总体上来说,从Response对象开始,我们就分成了两条路径,一条路径是数据放在HTML里,所以我们用BeautifulSoup库去解析数据和提取数据;另一条,数据作为Json存储起来,所以我们用response.json()方法去解析,然后提取、存储数据。 你需要根据具体的情况,来确定自己应该选择哪一条路径。 也可以参考图片上的注释,帮助自己去回忆不同对象的方法和属性。不过,老师还是希望你能把这个图记在心里。 好啦,0-6关的内容就梳理完成啦~

封装Vue组件的一些技巧

*爱你&永不变心* 提交于 2020-02-06 21:10:25
封装Vue组件的一些技巧 本文同步在个人博客 shymean.com 上,欢迎关注 写Vue有很长一段时间了,除了常规的业务开发之外,也应该思考和反思一下封装组件的正确方式。以弹窗组件为例,一种实现是在需要模板中引入需要弹窗展示的组件,然后通过一个flag变量来控制弹窗的组件,在业务代码里面会充斥着冗余的弹窗组件逻辑,十分不优雅。 本文整理了开发Vue组件的一些技巧,包含大量代码示例。 开发环境 vue-cli3 提供了非常方便的功能,可以快速编写一些测试demo,是开发组件必备的环境。下面是安装使用步骤 // 全局安装vue-cli3 npm install -g @vue/cli vue -V // 查看版本是否为3.x // 安装扩展,此后可以快速启动单个vue文件 npm install -g @vue/cli-service-global // 快速启动demo文件 vue serve demo.vue 复制代码 如果需要scss,则还需要在目录下安装sass-loader等。 下面是使用vue-cli3可能会遇见的几个问题,更多使用教程可以参考: 一份超级详细的Vue-cli3.0使用教程[赶紧来试试!] 自定义入口文件 如果需要(比如需要开发移动端的组件),可以在使用 vue serve 时自定义html入口文件,在根目录下编写 index.html ,并确保页面包含

数据封装与解封装

▼魔方 西西 提交于 2020-02-06 05:50:59
使用_未来网络分析系统_进行抓包 应用层 数据 传输层 TCP头部 _ + 数据 数据段 segment 网络层 _ IP头部 + TCP头部 + 数据 数据包 segment 数据链路层 MAC头部 + IP头部 + TCP头部 + 数据 + 尾部 数据帧 frame 物理层 比特流 bit 数据的封装过程 1.在应用层,数据被“翻译”为网络世界使用的语言——二进制编码数据。 2.在传输层,上层数据被分割成小的数据段,并为每个分段后的数据封装TCP报文头部。在TCP头部有一个关键的字段信息——端口号,它用于标识上层的协议或应用程序,确保上层应用数据的正常通信。 3.在网络层,上层数据被封装上新的报文头部——IP头部。值得注意的是,这里所说的上层数据包括TCP头部,也就是说,这里的上层是指传输层。对于网络层而言,它是“看不懂”TCP包头中的内容的,在它看来,无论是应用层的应用数据,还是TCP头部信息都属于上层数据。在IP头部中有一个关键的字段信息——IP地址,用于标识网络的逻辑地址。在IP头部中包含目标IP地址和源IP地址,在网络传输过程中的一些中间设备,如路由器,会根据目标IP地址来逻辑寻址,找到正确的路径将数据转发到目的端。 4.在数据链路层,上层数据被封装一个MAC头部,其内部有一个关键的字段信息——MAC地址,先把它理解为固化在硬件设备中的物理地址,具有全球唯一性

关于视频的一些概念

南楼画角 提交于 2020-02-05 00:42:18
http://www.samirchen.com/video-concept/ 关于视频的一些概念 2016-01-28 视频相关概念 视频文件格式 文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是 .doc ,JPG 图片的文件格式是 .jpg 等等。那对于视频来说,我们常见的文件格式则有: .mov 、 .avi 、 .mpg 、 .vob 、 .mkv 、 .rm 、 .rmvb 等等。文件格式通常表现为文件在操作系统上存储时的后缀名,它通常会被操作系统用来与相应的打开程序关联,比如你双击一个 test.doc 文件,系统会调用 Word 去打开它。你双击一个 test.avi 或者 test.mkv 系统会调用视频播放器去打开它。 同样是视频,为什么会有 .mov 、 .avi 、 .mpg 等等这么多种文件格式呢?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。 视频封装格式 视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。 下面我们就列举一些文件封装格式: AVI 格式 ,对应的文件格式为