10 ouyangshima

尚未进行身份认证

找到心中的那份自信 技术不牢,地动山摇

等级
TA的排名 2k+

[网络知识]TCP协议中的粘包与拆包

在平时客户端socket开发中,如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以及拆包的问题。我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文...

2020-01-14 19:42:42

[iOS]苹果审核规则

不能强制用户注册 不能强制收集用户手机号 不能使用苹果不允许的权限 所有苹果手机内提供的服务,必须使用苹果内购 内购的类型一定要使用准确 宣传图一定要是应用的实际截图 适配ipv6网络 适配最新版本的iOS系统 各种尺寸的icon,需要保持一致性 开启app后,loading过程中需要有背景图,不允许黑屏等loading。 app内,不允许出现“测试”、“demo”、“试用”等...

2020-01-12 18:33:42

[C++]智能指针unique_ptr,shared_ptr,weak_ptr

C++中对于动态内存的使用非常严格,一次申请必须对应一次释放,否则将造成内存泄漏。这也要求程序员格外小心,比如如下示例:void getStr() { std::string * pstr = new std::string();//pstr为局部变量 *pstr = "Hello world"; .... return;}当该方法执行完毕后,局部变量p...

2020-01-12 00:16:08

[Android]Activity生命周期之三大循环|五种状态|七种方法

生命周期三大循环我们能监控Activity生命周期中的三个嵌套循环(monitor three nested loops in the activity lifecycle)1.Activity的entire lifetime(全部的生命期)发生在调用onCreate()和调用onDestory()之间。在onCreate()方法中执行全局状态的建立(例如定义布局),在onDestr...

2019-12-26 19:02:10

[架构]接口行为的扩展

接口行为的扩展,经常面临这样的问题,之前已经定义好一个接口,且该接口已经在很多地方使用到,现在我们想让新增新方法。如下图所示,已经定义了接口IVedioMedia,已经有RM和Mpeg实现了它。现在如果在IVedioMedia接口中新增resize()方法,那么就要连同RM和Mpeg一同修改,这已经违反了open-close原则,即在添加新功能的同时,不修改原有的、已经存在的代码。这时候我们应...

2019-12-24 18:30:05

[基础概念]这次,彻底弄懂接口及抽象类

抽象类及其作用抽象类,顾名思义,即类的抽象。在介绍面向对象概念时,我们知道类是客观事物的抽象,而抽象类又是类的进一步抽象,该怎么理解呢?举个例子,我们定义若干个类 class BMW、class Benz、class Audi,分别对客观事物“宝马”、“奔驰”、“奥迪”三种汽车进行抽象,包含相关属性和行为(即方法)。但是我们知道,汽车都有通用的属性和行为,比如品牌、发动机、方向盘、轮胎...

2019-12-24 18:00:55

[设计模式]装饰、组合、职责链模式

模式介绍装饰模式:相当于是叠罗汉,将多个行为有序的串联起来,最终得到结果。(通过下一个行为装饰上一个行为) 组合模式:使得用户对单个对象和组合对象的使用具有一致性 责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。使用场景适用于一些有关联关系的类,进行互相调用。装饰模式D...

2019-12-22 18:28:05

[设计模式]一两句话的设计模式

创建型速记口诀: 单抽工建原单例:只需一个实例时考虑。要么没有,要么只有一个。 工厂方法:在允许不修改工厂类的前提下添加新类。 抽象工厂:当工厂方法无法满足多系列问题时,再重构为抽象工厂。提供相关性接口,无需具体指定 建造者:多个部件的建造实现相同,只是所需部件、建造顺序不同时考虑。构建与表示分离。 原型:在初始化信息不发生变化时考虑。重复利用现有实例的拷贝。结构型速记口诀:...

2019-12-21 18:32:01

[概念]PCM文件&WAV文件头

PCM简介PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏似的短暂起伏的电冲击),把这些脉冲的幅值按一定精度进行量化,这些量化后的数值被连续的输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程...

2019-11-27 12:30:09

[设计模式]工厂模式与抽象工厂模式

下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。简单工厂模式简单工厂模式不是 23 种设计模式里的一种,简而言之,就是有一个专门生产某个产品的类。比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。工厂模式工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。 戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。 生产哪...

2019-10-10 18:42:37

[基础概念]UML类之间的关系

类之间的关系类间关系有很多种,在大的类别上可以分为两种:纵向关系,横向关系。纵向关系就是继承关系。横向关系按照UML的建议大体可以分为四种: UML表示法 关系 依赖(Dependency) 虚线+箭头(--->) ...use a...用(为函数中的参数)...

2012-12-11 11:03:18

[RTMP协议]RTMP块头报文

RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。消息头MessageHeader消息类型:1byte,Message Type ID取值含义:A协议控制消息,Message Type ID = 1~6,主要用于协议内的控...

2019-08-05 16:43:39

[RTMP协议]RTMP设计思想

RTMP传输基本流程发送端把数据封装成消息(Message)。把消息分割成消息块(Chunk, 网络中实际传输的内容)。将分割后的消息块(Chunk)通过TCP协议发送出去。接收端:在通过TCP协议收到数据后, 先将消息块重新组合成消息(Message)。通过对消息进行解封装处理就可以恢复出数据。RTMP的突出优点是: 延时低,正常延时1~3秒,理想的话直播可控制在1秒...

2019-08-02 12:00:07

[RTMP协议]常用直播流地址

RTMP、RTSP、HTTP这三个协议都属于互联网TCP/IP五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用RTMP、RTSP。而点播用HTTP。播放软件推荐:VLC要播放视频直播流,或者测试一个直播视频地址是否可以使用。这里推荐VLC媒体播放器。功能强大且跨平台。支持Windows、MacOS、Linux、Android、iOS。...

2019-07-30 18:33:25

[OpenGL]Shader语言GLSL语言基础-限定符

存储限定符在声明变量时,应根据需要使用存储限定符来修饰,类似 C 语言中的说明符。GLSL 中支持的存储限定符见下表:限定符描述< none: default >局部可读写变量,或者函数的参数const编译时常量,或只读的函数参数attribute由应用程序传输给顶点着色器的逐顶点的数据uniform在图元处理过程中其值保持不变,由应用...

2019-07-19 16:46:55

[OpenGL]Shader语言GLSL语言基础-变量

OpenGL ES 的渲染管线包含有一个可编程的顶点阶段和一个可编程的片段阶段。其余的阶段则有固定的功能,应用程序对其行为的控制非常有限。每个可编程阶段中编译单元的集合组成了一个着色器。在OpenGL ES 2.0 中,每个着色器只支持一个编译单元。着色程序则是一整套编译好并链接在一起的着色器的集合。着色器 shader 的编写需要使用着色语言 GL Shader Language(GLSL),G...

2019-07-19 16:41:05

[C++基础]C++11匿名函数Lambda表达式

#include <iostream>using namespace std;int main() { []() { cout << "hello, world" << endl; }(); auto add = [](int a, int b)->int{ return a + b; }; int...

2019-07-17 18:44:36

[MQ]什么是消息队列?

什么是消息队列MQ(Message Queue)?消息(Message):传输的数据。队列(Queue):队列是一种先进先出的数据结构。消息队列从字面的含义来看就是一个存放消息的容器。消息队列可以简单理解为:把要传输的数据放在队列中。把数据放到消息队列叫做生产者从消息队列里边取数据叫做消费者一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的...

2019-06-22 22:18:58

[Lua]协调coroutine

协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈,局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。++线程与协同程序的主要区别在于++,一个具有多线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说,一个具有多个协同程序的程序在***任何时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显示地挂起时,它的执行才会暂停***。一、lua协程函...

2019-06-19 22:53:19

[设计模式]Strategy策略模式(二)

策略模式定义是:定义算法族,分别封装起来,让它们之间可以互相替换,算法的变化独立于使用算法的客户。我们来模拟一种情形来理解这句话。有一群鸭子,有各种颜色的鸭,他们有的会飞,有的不会飞,飞的姿态也更不相同。此时如果在每只鸭子里分别定义飞的姿态,那有成千上万中鸭子的时候就会累死。这时我们考虑使用设计模式来实现下它。设计原则中第一条:找出应用中可能需要变化之处,把它们独立出来。当然这里我们独立的就...

2019-06-17 22:41:06

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。