自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

超越

寻找心中的那份自信

原创 [框架]PureMVC--Facade/通知源码

Façade MVC 元设计模式的核心元素在 PureMVC 中体现为 Model 类、View 类和 Controller 类。为了简化程序开发,PureMVC 应用了 Façade 模式。 Façade 是 Model、View 和 Controller 三者的“经纪人”。实际编写代码时你 并...

2020-12-01 23:57:26 13 0

原创 [框架]PureMVC--核心层源码

Model层说明 Model保存对Proxy对象的引用,Proxy负责操作数据模型,与远程服务通信存取数据。这样保证了Model层的可移植性。 module puremvc { //Model的作用就是保存proxy对象的引用 export class Model implemen...

2020-12-01 23:04:57 1 0

原创 [框架]PureMVC简介

分层 将一个复杂的程序进行层次划分。为每一层进行设计,每层都是内聚的而且只依赖与它的下层。采用标准的架构模式来完成与上层的松散关联。将所有与领域模型相关的代码都集中在一层,并且将它与用户界面层、应用层和基础结构层的代码分离。领域对象可以将重点放在表达领域模型上,不需要关心它们自己的显示、存储和管理...

2020-11-30 23:58:32 9 0

原创 [JS]事件循环怎么处理宏任务与微任务

new Promise((resolve) => { console.log('外层宏事件2'); resolve() }).then(() => { console.log('微事件1'); }).then(() => { con...

2020-10-24 14:54:38 39 0

原创 [JS]源码学习Promise

Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法...

2020-09-15 22:38:38 38 0

原创 [JS]彻底理解原型链

http://www.cnblogs.com/lidabo/archive/2012/12/04/2800921.html http://msdn.microsoft.com/zh-cn/library/cc485433(v=vs.71).aspx

2020-08-13 01:03:29 173 0

原创 [JS]彻底明白了原型

什么是原型对象? 原型的概念定义为:所谓原型就是指函数的prototype属性所引用的对象,这个对象就是原型。 原型的作用1:实现对象之间的数据共享。2.在es6之前,没有class的情况下,模拟面向对象,构造函数中放私有属性,原型上放公有属性,一般为方法。 function fn1() ...

2020-08-12 23:43:44 77 0

原创 [多线程]C++11多线程-条件变量(std::condition_variable)

互斥量(std::mutex)是多线程间同时访问某一共享变量时,保证变量可被安全访问的手段。在多线程编程中,还有另一种十分常见的行为:线程同步。线程同步是指线程间需要按照预定的先后次序顺序进行的行为。C++11对这种行为也提供了有力的支持,这就是条件变量。条件变量位于头文件condition_va...

2020-03-31 19:04:47 156 0

原创 [架构]MVC/MCP/MVVM三个框架模式

MVC框架模式 MVC是一种框架模式而非设计模式,GOF把MVC看作是3种设计模式:观察者模式、策略模式与组合模式的合体,而核心是观察者模式。​​​​​​​ MVC框架模式图角色说明模式说明当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知mod...

2020-03-23 17:29:40 641 0

原创 [多线程]C++11多线程用法整理

C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。应用C++11中的std::thread便于多线程程序的移值。 关联...

2020-03-17 23:30:11 157 0

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

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

2020-01-14 19:42:42 1627 0

原创 [iOS]苹果审核规则

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

2020-01-12 18:33:42 509 0

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

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

2020-01-12 00:16:08 157 0

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

生命周期三大循环 我们能监控Activity生命周期中的三个嵌套循环(monitor three nested loops in the activity lifecycle) 1.Activity的entire lifetime(全部的生命期)发生在调用onCreate()和调用onDest...

2019-12-26 19:02:10 657 0

原创 [架构]接口行为的扩展

接口行为的扩展,经常面临这样的问题,之前已经定义好一个接口,且该接口已经在很多地方使用到,现在我们想让新增新方法。 如下图所示,已经定义了接口IVedioMedia,已经有RM和Mpeg实现了它。现在如果在IVedioMedia接口中新增resize()方法,那么就要连同RM和Mpeg一同修改,...

2019-12-24 18:30:05 111 0

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

抽象类及其作用 抽象类,顾名思义,即类的抽象。 在介绍面向对象概念时,我们知道类是客观事物的抽象,而抽象类又是类的进一步抽象,该怎么理解呢? 举个例子,我们定义若干个类 class BMW、class Benz、class Audi,分别对客观事物“宝马”、“奔驰”、“奥迪”三种汽车进行抽象...

2019-12-24 18:00:55 110 0

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

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

2019-12-22 18:28:05 105 0

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

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

2019-12-21 18:32:01 119 0

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

PCM简介 PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏似的短暂起伏的电冲击),把这些脉冲的幅值按一定精度...

2019-11-27 12:30:09 165 0

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

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

2019-10-10 18:56:49 90 0

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

类之间的关系 类间关系有很多种,在大的类别上可以分为两种:纵向关系,横向关系。纵向关系就是继承关系。横向关系按照UML的建议大体可以分为四种: UML表示法 关系 依赖(Dependency) 虚线...

2019-09-27 15:12:50 2906 0

原创 [RTMP协议]RTMP块头报文

RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。 消息头MessageHeader 消息类型:1byte,Message ...

2019-08-05 16:43:39 709 1

原创 [RTMP协议]RTMP设计思想

RTMP传输基本流程 发送端 把数据封装成消息(Message)。 把消息分割成消息块(Chunk, 网络中实际传输的内容)。 将分割后的消息块(Chunk)通过TCP协议发送出去。 接收端: 在通过TCP协议收到数据后, 先将消息块重新组合成消息(Message)。 ...

2019-08-02 12:00:07 529 0

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

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

2019-07-30 18:33:25 17118 0

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

存储限定符 在声明变量时,应根据需要使用存储限定符来修饰,类似 C 语言中的说明符。GLSL 中支持的存储限定符见下表: 限定符 描述 < none: default > 局部可读写变量,或者函数的参数 const 编译时常量,或只读的函数参数 attribut...

2019-07-19 16:46:55 396 0

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

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

2019-07-19 16:41:05 182 0

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

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

2019-07-17 18:44:36 85 0

原创 [MQ]什么是消息队列?

什么是消息队列MQ(Message Queue)? 消息(Message):传输的数据。 队列(Queue):队列是一种先进先出的数据结构。 消息队列从字面的含义来看就是一个存放消息的容器。 消息队列可以简单理解为:把要传输的数据放在队列中。 把数据放到消息队列叫做生产者 ...

2019-06-22 22:18:58 6509 0

原创 [Lua]协调coroutine

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

2019-06-19 22:53:19 257 0

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

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

2019-06-17 22:41:06 84 0

原创 [cocos2dx]屏幕适配

由于各种智能手机的屏幕大小都不一致,会出现同一张图片资源在不同的设备分辨率下显示不一样的问题。为避免这样的情况,需要Cocos引擎能提供多分辨率的支持,也就是说要求实现这样的效果 —开发者不需要考虑程序实际运行在什么分辨率下而只需要制定设置好设计分辨率就行,接着引擎便会自动实现设计分辨率(Desi...

2019-06-16 19:45:52 287 0

原创 [设计模式]设计模式之依赖倒置原则

依赖倒置—依赖注入,控制反转 **如果一个类A的功能实现需要借助于类B,那么就称类B是类A的依赖, 如果在类A的内部去实例化类B,那么两者之间会出现较高的耦合, 一旦类B出现了问题,类A也需要进行改造,如果这样的情况较多, 每个类之间都有很多依赖,那么就会出现牵一发而动全身的情况, 程序...

2019-06-15 12:41:56 186 0

原创 [C++基础]虚继承实现原理

在C++中,我们会遇到virtual这个关键字,但是它有两种含义:虚函数和虚继承,它们两个是完全无相关的两个概念。 什么是虚继承 虚继承是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以...

2019-04-12 12:54:00 217 0

原创 [C++基础]虚析构函数

虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基本的...

2019-04-07 23:36:24 244 0

原创 [C++基础]多态虚函数表详解

C++相对其他面向对象语言来说,之所以灵活、高效。很大程度的占比在于其多态技术和模板技术。C++虚函数表是支撑C++多态的重要技术,它是C++动态绑定技术的核心。 多态对象创建及内存分布 假设有一个基类ClassA,一个继承了该基类的派生类ClassB,并且基类中有虚函数,派生类实现了基类的虚...

2019-04-02 14:22:18 230 0

原创 [C++基础]宏定义中操作符(#,##)的使用

# 和 ## 在宏定义(define)中经常可以看到,是预编译过程中的常用语句 ##是一个连接符号,用于把参数连在一起 #是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串 #define CONVERT(name) #name #define CAT(batman,...

2019-04-01 20:48:15 473 0

原创 [C++基础]强制转换运算符dynamic_cast

强制转换运算符是一种特殊的运算符,它把一种数据类型转换为另一种数据类型。强制转换运算符是一元运算符,它的优先级与其他一元运算符相同。 语法: dynamic_cast < new-type> ( expression )该运算符把expression转换成new-type类型的对象。...

2019-03-30 17:30:35 222 0

原创 [C++基础]对象内存分布--虚继承

virtual在C++中最大的功能就是声明虚函数和虚基类。虚拟继承是为了解决多重继承下公共基类的多份拷贝问题。 虚继承 虚继承解决了菱形继承中对派生类拥有多个间接父类实例的情况。虚继承的派生类的内存布局与普通继承很多不同,主要体现在: 虚继承的子类,如果本身定义了新的虚函数,则编译器为其生成...

2019-03-26 17:28:50 431 2

原创 [cocos2dx]Delegate委托设计模式

实现委托机制demo的情景描述: LayerA是一个层,里面有个sprite,一旦A被初始化,这个sprite就会执行一个action;LayerB是另一个层。我在LayerB中加入了LayerA,但是要等到A中的那个sprite的action执行完毕后,B再立刻执行另外一个方法。 问题来了,我怎...

2019-03-04 16:18:40 254 0

原创 [架构]我的MVC使用

在整个 GUI 编程领域,MVC模式是GUI界面开发的指导模式,基于表现层分离的思想把程序分为三大部分:Model-View-Controller,呈三角形结构。Model是指数据以及应用程序逻辑,View是指 Model的视图,也就是用户界面。这两者都很好理解,关键点在于Controller的角...

2019-02-26 17:49:24 188 0

提示
确定要删除当前文章?
取消 删除