数据封装

数据传输中的成帧

戏子无情 提交于 2020-01-16 04:02:12
什么是数据传输中的成帧 数据传输中的成帧 成帧技术是一种用来在一个比特流内分配或标记信道的技术,为电信提供选择基本的时隙结构和管理方式、错误隔离和分段传输协议的手段。两个计算机或设备之间的点到点的连接中包括一根电线,在这根电线中数据作为位流传输。但是,这些位必须被分成可辨别的信息块。分帧是数据链路层的功能。它使发送器接收器传输一组对有含义的位。以太网、令牌环网、帧中继以及其他数据链路层技术都有它们自己的帧结构。帧具有包含错误检查代码之类的信息的标题。 共有三种不同类型的分帧,每个都为发送器提供一种方法以告诉接收器数据块开始和结束的位置: 面向字节分帧 计算机数据通常是以字母、数字、字符存储的,这种字符是用8bit组合(1Byte)编码的。这种分帧类型使字节各不相同。在终端/大型机环境中使用的是更老样式的分帧。其中面向字节分帧的例子包括IBM的BISYNC协议。 面向位的分帧 这种分帧允许发送器同时传输一长串的位。IBM的SDLC (同步数据链路控制)和HDLC(高级数据链路控制)都是面向位协议的例子。大多数LAN都使用面向位的分帧。通常有最大的帧大小。例如,以太网的最大帧大小为l526Byte。帧的开始和结束是用特殊的位序列来标识的(对于HDLC,是01111110)。如果没有传输数据,将连续传输相同的序列以便终端系统保持同步化。 基于时钟的分帧 在基于时钟的系统中

前后端分手大师——MVVM 模式

本小妞迷上赌 提交于 2020-01-15 00:49:56
阅读目录 简而言之 组成部分 没有什么是一个栗子不能解决的 简而言之 之前对 MVVM 模式一直只是模模糊糊的认识,正所谓没有实践就没有发言权,通过这两年对 Vue 框架的深入学习和项目实践,终于 可以装B了 有了拨开云雾见月明的感觉。 Model–View–ViewModel(MVVM) 是一个软件架构设计模式,由微软 WPF 和 Silverlight 的架构师 Ken Cooper 和 Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由 John Gossman(同样也是 WPF 和 Silverlight 的架构师)于2005年在他的博客上发表。 MVVM 源自于经典的 Model–View–Controller(MVC)模式(期间还演化出了 Model-View-Presenter(MVP)模式,可忽略不计)。MVVM 的出现促进了 GUI 前端开发与后端业务逻辑的分离,极大地提高了前端开发效率。 MVVM 的核心是 ViewModel 层 ,它就像是一个中转站(value converter),负责转换 Model 中的数据对象来让数据变得更容易管理和使用,该层向上与视图层进行双向数据绑定,向下与 Model 层通过接口请求进行数据交互,起呈上启下作用。如下图所示: MVVM模式 MVVM 已经相当成熟了,主要运用但不仅仅在网络应用程序开发中

局域网内和局域网间的通信(交换机和路由器)

血红的双手。 提交于 2020-01-09 23:18:49
1、交换机和路由器区别 交换机主要是用于组建局域网,而路由器则是负责让主机连接外网。 2、局域网间通信 例子1: 1. PC1与PC2通信时,在PC1电脑中,应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP或UDP,再进行不同服务端口号的封装(例:WWW 80 ,FTP 21),再传递给网络层;网络层在数据包头部进行封装源IP、目的IP,根据上层协议栈标识不同协议号,当IP包头封装TCP时协议号为6、UDP协议号为17,用来标识上层使用的协议,继续传递给数据链路层; 数据链路层在数据包头部进行帧的封装,封装源MAC、目的MAC,由于不知道目的MAC地址,会进行ARP的广播包,封装一个全F的类型字段为0X0806广播包,交付给物理层,物理层转换成电信号(bit流),发送到交换机; 2. 交换机接收后发现为ARP的广播包,进行其解封学习到PC1的MAC地址,继续封装并除接受端口以外的端口再次进行ARP的广播; 3. 路由器收到交换机发来的ARP广播,进行解封,查看到数据包中的类型字段为0X0806即ARP的广播包,进行回复,源MAC为路由(网关)的MAC,目的MAC为PC1的MAC,类型字段为0X0806,经过物理层将数据转换为电信号(bit流)发送给交换机; 4. 交换机收到后进行解封

封装函数实现存储和读取的功能

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-07 16:01:32
需求: 在全局中只有一个namespace函数, 可以实现两种功能, 一种是存储数据,另一种是读取数据 存储数据的时候: namespace('a.b.c', 123); 读取数据的时候: namespace('a.b.c') => 123 读取: namespace('a.b') => {c: 123} 读取: namespace('a') => {b: {c: 123}} a:{ b: { c: 123 } } 该函数可以实现两种功能: 第一种是可以存储数据: 当存储数据的时候需要接收两个参数,第一个参数是存储的路径,第二个参数存储的数据 第二种是可以读取数据: 当读取数据的时候,需要接收一个参数就是要读取的路径 var namespace = (function() { // 数据存储和读取的对象 var obj = {}; return function(path, val) { // 模拟函数的重载 if(arguments.length == 2) { //实参个数为2 则为存储数据 // 划分路径 var pathArr = path.split('.'); // 引用obj变量 var obj1 = obj; // 设置最后的键 var index = pathArr.pop(); // 循环产生对象 for(var i = 0;i < pathArr.length

从0到1打造直播 App

 ̄綄美尐妖づ 提交于 2020-01-06 05:43:10
转自http://dev.qq.com/topic/5811d42e7fd6ec467453bf58 概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——…….。从直播1.0秀场时代(YY),2.0游戏直播(斗鱼、虎牙、熊猫)到如今全民直播3.0泛生活娱乐时代(映客、花椒),国外直播app(Meerkat 、Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时代很快就能到来。 在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己的直播产品。本文主要从直播的一些基本知识,一步步打造直播app。直播那么火的背后有什么样的技术支撑呢? 先将这些APP按照视频网站按照视频网站、弹幕视频、直播平台、在线秀场、移动短视频、移动直播来划分类别。再按照内容和社交这个维度来进行区分,可以明显看出视频网站、弹幕网站和直播平台更偏内容,他们对内容的需求更加高,用户在上面进行社交沉淀相对比较浅。 而后面三者更加偏向社交,他们强调人而不强调内容。所以短期内不会有大的竞争关系,只是前三类、后三者之间的竞争会出现。 大体框架 大体框架 基本是下图这个套路: 录制->编码->网络传输->解码->播放 以上为直播的整体流程,根据该流程分为以下技术点: 怎样录制直播视频 怎样实时上传直播视频 怎样播放直播视频 直播间的用户是如何交互 一

FFMPEG音视频解码

ぃ、小莉子 提交于 2020-01-04 15:58:32
文章转自: https://www.cnblogs.com/CoderTian/p/6791638.html 1.播放多媒体文件步骤 通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件的相关信息。 所以当我们播放一个媒体文件时,通常需要经过以下几个步骤 ①解封装(Demuxing):就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。 ②解码(Decode):就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3等,视频的压缩编码标准则包含H.264,MPEG2等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV、RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。 ③音视频同步:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的音频和视频数据

用ajax对数据进行删除和查看

梦想与她 提交于 2019-12-30 04:17:12
删除和查看详情操作的共同语句:就是怎么显示表? 1.在主体中写表的开头行,想要显示的内容,并且加载数据也要显示的地方也建张表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <table width= "100%" border= "1" cellpadding= "0" cellspacing= "0" >    <tr> //开头行显示的内容 <td>代号</td> <td>名称</td> <td>价格</td> <td>产地</td> <td>库存</td> <td>操作</td>   </tr>   <tbody id= "bg" > //循环遍历表显示的内容展示的位置   </tbody> </table> 如图: 2.显示数据:用ajax方法遍历一张表,显示出表的内容 1 2 3 4 5 $.ajax({<br>   //因为不用传输数据所以就不用写data和传输类型了 url: "xianshicl.php" , //编写处理页面 dataType: "TEXT" , success: function (data){<br>       //执行处理页面结束的语句编写    }<br>}) 如图: 3.显示数据的处理页面 1 2 3 4 5 6 7 <?php include ( "DBDA.class.php" ); /调用封装好的类

0905-广告点击量实时统计

孤街浪徒 提交于 2019-12-28 21:08:41
0905-广告点击量实时统计 需求七:实时维护黑名单 7.1 需求概述 7.2 简要运行流程 7.3 具体运行流程 7.4 代码实现 7.4.1 加载并转换用户数据集 7.4.2 过滤掉已经上黑名单的用户 7.4.3 对实时数据进行统计,更新点击次数表 7.4.4 添加异常用户 需求八:各省各城市广告点击量实时统计 8.1 需求概述 8.2 简要运行流程 8.3 具体运行流程 8.4 代码实现 8.4.1 转换key值 8.4.2 进行聚合 8.4.3 封装case class 并入库 需求九:每天每个省份Top3热门广告 9.1 需求概述 9.2 简要运行流程 9.3 具体运行流程 9.4 代码实现 9.4.1 封装key 9.4.2 聚合 9.4.3 转换格式 9.4.4 创建临时表并执行查询 9.4.5 封装case class并入库 需求十:最近一小时广告点击量实时统计 10.1 需求概述 10.2 简要运行流程 10.3 具体运行流程 10.4 代码实现 10.4.1 封装key 10.4.2 使用窗口操作计算 10.4.4 封装case class并入库 小结 需求七:实时维护黑名单 7.1 需求概述 从Kafka获取实时数据,对每个用户的点击次数进行累加并写入MySQL,当一天之内一个用户对一个广告的点击次数超过100次时,将用户加入黑名单中。 7.2 简要运行流程

Struts2 Day02

試著忘記壹切 提交于 2019-12-28 05:45:06
本节内容: 1.结果页面配置 2.在Action获取表单提交数据 3.Struts2提供获取表单数据的方式 4.Struts2获取数据封装到集合 5.扩展-表达式封装和模型驱动比较 一、结果页面配置 1.全局结果页面 在struts.xml中我们的package标签中有一个标签叫做<global-results> 全局结果集 <package name="login" namespace="/" extends="struts-default" > <!--全局结果页面只能在一个package中有效 package中的所有的action都有作用--> <global-results> <result name="success">/index.jsp</result> </global-results> </package> 2.局部结果页面 <package name="login" namespace="/" extends="struts-default" > <!--全局结果页面只能在一个package中有效 package中的所有的action都有作用--> <global-results> <result name="success">/index.jsp</result> </global-results> <action name="userLogin" class

JAVA的基础知识(一)

半城伤御伤魂 提交于 2019-12-28 02:47:58
1、对象的概念 Java 是 面向对象的编程语言 ,对象就是 面向对象程序设计的核心 。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念 2、对象的特点 对象具有属性和行为。 对象具有变化的状态。 对象具有唯一性 。 对象都是某个类别的实例 。 一切皆为对象,真实世界中的所有事物都可以视为对象。 3、面向对象和面向过程的区别 面向过程:一种较早的编程思想,顾名思义就是 该思想是站着过程的角度思考问题 ,强调的就是 功能行为 ,功能的 执行过程,即先后顺序 ,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。 面向过程的设计: 最小的程序单元是函数 ,每个函数负责完成某一个功能,用于接受输入数据,函数对输入数据进行处理,然后输出结果数据,整个软件系统由一个个的函数组成,其中作为 程序入口的函数称之为主函数 ,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现整个系统功能。 面向过程最大的问题在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃。为了解决这一种软件危机,我们提出面向对象思想。 面向过程的缺陷:是 采用指定而下的设计模式 ,在设计阶段就需要考虑每一个模块应该分解成哪些子模块,每一个子模块又细分为更小的子模块,如此类推,直到将模块细化为一个个函数。