自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 设计模式之观察者模式

一、观察者模式的定义观察者模式是用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展二、观察者模式中的角色与职责Subject(被观察者或目标,抽...

2019-07-26 14:53:14 266

原创 设计模式之策略模式

一、策略模式的定义策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化二、策略模式中的角色和职责Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略Strategy(抽象策略类):它为所支持的算法声明了...

2019-07-25 14:53:16 199

原创 设计模式之命令模式

一、命令模式中的角色与职责Command(抽象命令类):抽象命令类一般是一个抽象类或接口,在其中声明了用于执行请求的 execute()等方法,通过这些方法可以调用请求接收者的相关操作ConcreteCommand(具体命令类):具体命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,它对应具体的接收者对象,将接收者对象的动作绑定其中。在实现 execute()方法时,将调用接收者对...

2019-07-23 16:10:09 208

原创 设计模式之模板方法模式

一、模板方法模式的定义定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤二、模板方法的角色与职责AbstractClass(抽象类):在抽象类中定义了一系列基本操作,这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法...

2019-07-22 14:50:12 150

原创 设计模式之适配器模式

一、适配器模式的定义将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作二、适配器的角色与职责Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类Adapter (适配器类) : 适配器可以调用另一个接口, 作为一个转换器, 对 Adaptee和Target进行适配,适配器类是适配器模式的核心...

2019-07-19 14:14:12 158

原创 设计模式之外观模式

一、外观模式中的角色与职责Facade(外观角色):为调用方, 定义简单的调用接口SubSystem(子系统角色):功能提供者。指提供功能的类群(模块或子系统)二、适用场景(1) 复杂系统需要简单入口使用(2) 客户端程序与多个子系统之间存在很大的依赖性三、示例代码#define _CRT_SECURE_NO_WARNINGS#include <iostream...

2019-07-18 16:33:25 147

原创 gcc的相关流程以及linux下的动静态库的使用

一、gcc的工程流程1、预处理:包括头文件的展开、宏定义替换、注释去除2、汇编:把C文件变成汇编文件3、编译:把汇编文件变成二进制文件4、链接:把各种xxx.o的二进制文件,组合在一起生成可执行文件二、gcc的常用参数-I::编译的时候指定头文件路径 -c:将汇编文件生成二进制文件,得到了一个.o文件 -o: 指定生成的文件的名字 -g:需要gdb调试的时候需要加上 ...

2019-07-18 08:49:13 139

原创 设计模式之装饰模式

一、装饰模式的定义装饰模式就是把要附加的功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择的、按顺序的使用装饰功能包装对象二、装饰模式的角色与职责Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。Conc...

2019-07-16 15:58:24 121

原创 设计模式之代理模式

一、代理模式的定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用二、模式中的角色和职责subject(抽象主题角色):真实主题与代理主题的共同接口RealSubject(真实主题角色):定义了代理角色所代表的真实对象Proxy(代理主题角色):含有对真实主题角色的引用,代理角色...

2019-07-12 09:10:17 123

原创 设计模式之单例模式

一、单例模式中的角色和职责Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的 getInstance()工厂方法,让客户可以访问它的唯一实例;为了防止在外部对其实例化,将其构造函数设计为私有;在单例类内部定义了一个 Singleton类型的静态对象,作为外部共享的唯一实例如何构建单例:一是单例模式的类只提供私有的构造函数二是类定义中含有一个该类的静态...

2019-07-10 10:54:16 217

原创 设计模式之抽象工厂

一、模式中的角色与职责抽象工厂(Abstract Factory)角色:它声明了一组用于创建一族产品的方法,每一个方法对应一种产品。具体工厂(Concrete Factory)角色:它实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。抽象产品(Abstract Product)角色:它为每种产品声明接口,在抽象产品中声明...

2019-07-09 10:09:30 150

原创 I2S协议总结

一、I2S总线接口I2S 总线接口主要有 4 个主要信号:1、SD:串行数据线,用于发送或接收两个时分复用的数据通道上的数据(仅半双工模式)2、LRCLK:字段选择线,也称帧时钟(LRCLK)线,表明当前传输数据的声道,不同标准有不同的定义。 LRCLK线的频率等于采样频率(FS)。3、BCLK:串行时钟线,也称位时钟(BCLK),数字音频的每一位数据都对应有一个 CK 脉冲,它的频率为...

2019-07-08 10:18:31 3593

原创 设计模式之工厂方法

一、工厂方法模式中的角色与职责抽象工厂(Abstract Factory)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。工厂(Concrete Factory)角色:具体工厂类是抽象工厂的一个实现,负责实例化产品对象。抽象产品(Abstract Product)角色:工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。具体产品(Concrete Product)角...

2019-07-08 09:22:55 146

原创 设计模式之简单工厂

一、模式中的角色与职责工厂(Factory)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。抽象产品(AbstractProduct)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。具体产品(Concrete Product)角色:简单工厂模式所创建的具体实例对象。二、适用场景1.、工厂类负责创...

2019-07-05 14:46:01 160

原创 设计模式中的主要原则

一、原则的目的高内聚,低耦合二、原则的主要分类1、单于职责原则:类的职责单一,对外只提供一种功能,而引起类变化的原因都应该只有一个。2、开闭原则:类的改动是通过增加代码进行的,而不是修改源代码3、迪米特法则:一个对象应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统的可维护性。例如在一个程序中,各个模块之间相互调用时,通常会提供一个统一的接口来实现。这样其他模块...

2019-07-05 10:33:38 161

原创 循环链表(链式存储)

1、定义链表节点以及表头数据结构typedef struct CircleLinkNode{ void* data; struct CircleLinkNode* next;}CircleLinkNode;typedef struct CircleLinkList{ CircleLinkNode* head; //头结点 CircleLinkNode*...

2019-05-06 09:28:49 949

原创 单向链表(链式存储)

1、定义链表节点以及表头数据结构typedef struct ListNode{ struct ListNode* next;}ListNode_t;typedef struct LinkList{ ListNode_t header; //头结点 int length; //链表长度}LinkList_t;2、链表的初始化LinkList_t *...

2019-04-23 11:21:56 390

原创 Bitmap位图数据结构总结(可应用于查找RTOS中优先级最高的任务)

1、定义一个位图数据结构,支持32位的位图typedef struct { uint32_t bitmap;}tBitmap;2、位图结构的初始化void tBitmapInit (tBitmap * bitmap) { bitmap->bitmap = 0;}3、位图结构的某个位的设置以及删除void tBitmapSet (tBitmap * bit...

2019-04-18 11:12:06 524 1

原创 操作系统抽象层OSAL之任务初始化及启动分析

一.OSAL任务初始化void osal_init_system(void){ OSAL_DISABLE_INTERRUPTS( );//关闭系统中断 osal_init_timer( ); //初始化定时器相关结构体 osal_init_task( ); //初始化任务相关结构体}1、关闭系统定时器中断函数OSAL_DISABLE_INTERRUPTS( )...

2019-04-15 15:26:53 800

原创 Nordic Mesh启动配置过程介绍(PB-ADV)

一.启动配置过程Provisioning用于向将要添加新设备提供它们加入网络所需的信息。在启动配置过程中,向新加入网络的设备提供一个网络密钥、一个单播地址和一个设备密钥,设备密钥用于provisioner和provisionee之间的私有通信(例如,在供应后配置设备时)。一个设备可以是provisioner也可以是provisionee二.启动配置总过程图初始化:初始化步骤对于p...

2019-04-15 13:35:26 3822 2

原创 BLE配对绑定总结---总结来自低功耗蓝牙协议总结

一.配对绑定的简介配对是找到并确定需要和自己通信的设备,也就是身份确定,而这一过程仅仅是由启动加密到得到短期秘钥(STK)为止; 而绑定是将长期秘钥(LTK)、 身份解析秘钥(IRK)和连接签名解析秘钥(CSRK)这 3 个密钥中的某个或者组合进行交换后,将交换的这些密钥存储到数据库中的过程。配对绑定过程只会发生在两个设备之间第一次连接,因为在第一次配对绑定过程中已经进行了密钥存储,如果这个存...

2019-04-11 09:44:38 8623

原创 TSL/SSL握手过程总结

一.TSL/SSL握手的目的身份验证:可以通过证书进行对身份进行验证 算法协商:通讯双方可以通过算法的协商出双方都支持的算法 秘钥协商:主要的密钥协商算法有两种RSA,、DH,我们使用的非对称加密的方式,目的是协商一个对称加密的秘钥,用于数据传输过程中二.TSL/SSL的Record报头1、类型Type:占一个字节,主要有一下类型Handshake(0x16)、Change Cip...

2019-04-10 15:03:08 836

原创 网络安全知识简单总结

一.网络中协议的缺陷1、ARP层的功能是实现IP跟MAC的转换,由于源主机是指定目的地址广播方式往外发送ARP请求,在局域网中所有的主机都可以收到,如果局域网中有主机伪装成目的主机向其发送了ARP响应告诉了它一个假的MAC地址。此时源主机后面正常通讯的数据都被其窃取了,这就是ARP欺诈2、IP层的功能实现数据路由转发,当一台主机的被木马入侵,木马可以在电脑中疯狂向外面没有存在的目的IP地址发...

2019-04-09 14:16:46 5379

转载 解密蓝牙mesh系列文章汇总(转载)

                写在前面:转自“蓝牙技术联盟”微信公众号,只为方便学习~相信小码哥和凯哥会理解的~(转载文章,如有不妥,通知后我会立即删除) 解密蓝牙mesh系列往期回顾:  1、解密蓝牙mesh系列 | 第一篇&...

2019-04-02 17:53:32 675

原创 Nordic Mesh点灯例程(二)之创建模型

一.模型的简介在蓝牙Mesh解决方案中,模型用于定义节点的功能。每个模型表示一组状态和行为,并定义用于与模型状态交互的消息。模型的一个例子是配置模型,它是所有mesh设备中必须的一个模型。此模型表示节点的配置(以各种状态的形式),并提供消息来设置或查询配置参数(行为)。本指南介绍了如何创建新模型的基础知识,您可以实现自己的特定的模型,该模型将使您的设备能够提供自定义状态和行为,而不是来自于已经...

2019-04-02 11:13:04 3074 2

原创 Nordic Mesh点灯例程(一)之点灯例程的介绍

一.点灯例程简介本例所基于的LED灯开关的来演示了mesh网络的主要组成部分。它由三个小例子组成:Light switch server:一个实现通用OnOff服务器模型的最小化服务器,该模型用于接收状态数据并控制板上LED 1的状态 Light switch client:一个最小的客户端,实现了四个通用的OnOff客户端模型的实例。当用户按下任何按钮时,一个OnOff消息将发送到配置...

2019-04-02 11:02:17 1991

原创 ESP8266接入百度天工物接入(二)---实现ESP8266上云

ESP8266通过MQTT协议接入百度云天工物,乐鑫官网已经有现有的例程,首先(1) 修改esp_mqtt_proj工程下的mqtt_config.h头文件里面的以下这些字段#define MQTT_HOST "192.168.1.100"#define MQTT_PORT 1883 #define MQTT_CLIENT_ID ...

2019-03-26 15:16:22 3748 4

原创 保证TCP可靠传输的机制

一.TCP的超时重传与RTT估计在TCP两端交互过程中,包含数据、确认的报文段有可能丢失,在发送端引入超时重传机制可以很好地解决报文丢失的问题。发送端为每个发送出去的报文设置一个超时定时器,当定时器溢出而报文的确认还没有返回,它就重传该报文段,超时间隔和重传的方式是提高TCP性能的关键,这些都与往返时间估计密切相关。往返时间(RTT)代表了某字节数据发出到对应确认返回其间的时间间隔,TCP会根...

2019-03-25 15:08:19 632

原创 USART串口通信接口

一.串口通讯协议简介1、RS232串口通讯结构图RS232标准串口主要用于工业设备直接通信 电平转换芯片一般有MAX3232,SP32322、标准的DB9公头和母头3、RS232电平跟TTL电平的区别4、USB转串口的通讯结构图USB转串口主要用于设备跟电脑通信 电平转换芯片一般有CH340、PL2303、CP2102、FT232 使用的时候电脑端需要安...

2019-03-22 16:40:49 2319

原创 低功耗蓝牙Mesh的系统架构

一.蓝牙Mesh架构在mesh架构协议栈底部,有一层名为蓝牙低功耗。实际上,这并非仅是mesh架构的一层,它属于蓝牙低功耗协议栈,提供基础无线通信功能,这些功能可为上层mesh架构所用。应该清楚的是,mesh系统依赖于蓝牙低功耗协议栈二.承载层由两类承载层,即广播承载层和GATT承载层1、广播承载层利用蓝牙低功耗的GAP广播和扫描功能来传送和接收mesh PDU2、GATT承载层...

2019-03-22 10:51:31 776

原创 低功耗蓝牙连接参数总结

一.连接事件1、在低功耗蓝牙建立连接后,所有的通信都是在connection event中发生,主从机可以在单次连接事件中进行多次数据传输2、从图中可以看出设备在建立连接后大部分时间都在sleeping中,这段情况下耗电量只有1ua,在Connection event中最高是10几个ma,这也是BLE为什么省电的原因3、在每个Connention Event中都必须由Master发起包...

2019-03-21 13:57:55 1557

原创 低功耗蓝牙MESH基础知识

一.MESH VS 点对点大多数蓝牙低功耗设备使用一对一简单点对点网络拓扑结构来进行相互间的通信,在蓝牙核心规格中,这称为“微微网”。想象一下,智能手机已经建立了与心率监测仪的点对点连接,并可借此传输数据。同样的智能手机也可以建立与其他设备的点对点连接,在这种情况下,智能手机可以直接与其他每台设备进行通信,但其他设备之间无法直接进行通信。相比之下,mesh网络具有多对多拓扑结构,每台设备都能够...

2019-03-21 10:06:40 3293

原创 IIC协议总结

一.IIC协议的简介IIC 通讯协议是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,现在被广泛地使用在系统内多个集成电路(IC)间的通讯二.IIC协议的特点总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。...

2019-03-20 16:21:25 808

原创 TCP的状态转换图

状态转换图1、虚线路径描述了客户端申请建立连接与断开连接的整个过程。在客户端通过发送一个SYN报文段,主动向服务器申请一个连接,在报文发出之后客户端进入SYN_SENT状态,等待服务器的ACK和SYN报文返回,当收到这个返回后,客户端对服务器的SYN进行确认,然后自身进入ESTABLISHED状态2、当客户端申请断开连接时,它发送FIN报文为服务器申请断开连接,当FIN发送后,客户端进...

2019-03-20 10:02:16 276

原创 BLE低功耗蓝牙入门

一.BLE vs BT/WIFI1、低功耗蓝牙BLE工作在跳频模式,共有40个通道 每个通道2MHZ2、低功耗蓝牙BLE广播通道:37 38 39 37对应的频率:2402MHZ 38对应的频率:2426MHZ 39对应的频率:2480MHZ3、低功耗蓝牙BLE一个纽扣电池可以工作一年之久4、低功耗蓝牙特点: Low Pow...

2019-03-19 14:59:06 2639 2

原创 TCP协议基础

一.TCP协议简介在传输层协议中,UDP只为应用程序提供了一种无连接的、不可靠传输服务。而在很多情况下,应用程序期望传输层能提供可靠的服务,在上层应用想把大量的顺序数据(例如一个文件)发送到另一台主机时,使用UDP会显得非常不方便。在对可靠性要求很高的场合下,使用TCP提供的传输性能是很合适的,TCP将两个进程间传递的数据看作数据流的形式,两个先后发出的TCP报文虽然在网络中也是互不相关的传输...

2019-03-19 14:06:11 512

原创 SPI协议总结

一.SPI协议简介SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在要求通讯速率较高的场合二.SPI接口的四线SS:从设备选择信号线,常称为片选信号线,也称为NSS、CS,每个从设备都有独立的这一条SS信号线,有多少个从设备,就有多少条片选信号线。SPI协议使用SS信号...

2019-03-19 11:02:47 613

原创 ESP8266接入百度天工物接入(一)---注册使用

一.注册百度云平台账号平台链接:https://cloud.baidu.com/campaign/purchase-2019/index.html?track=cp:npinzhuan|pf:pc|pp:npinzhuan-biaoti|pu:wenzineirong|ci:2019cgj|kw:2105176二.登陆并使用物接入平台找到产品选项下的全部产品中的物联网服务,如下图红色圈...

2019-03-18 16:10:06 3171

原创 UDP协议

一.UDP协议的简介UDP称为用户数据报协议,是一种无连接的、不可靠的传输协议,它只在低级程度上实现了传输层功能。UDP只是简单地完成数据从一个进程到另一个进程的交付,它没有提供任何流量控制机制,收到的报文也没有确认;在差错控制上,UDP只提供了一种简单的差错控制方法,即校验和计算,当UDP收到的报文校验和计算不成功时,它将丢弃掉这个报文。UDP协议的可靠性如此差,那为何还要使用它呢?首先,这...

2019-03-18 11:17:01 2179

原创 ICMP协议

一.ICMP协议的简介IP协议是一种面向无连接的数据报协议,它是一种不可靠的协议,它不提供任何差错检验。因此网际报文控制协议(Internet Control Message Protocol)ICMP出现了,ICMP协议用于IP主机、路由器之间传递控制消息,这里的控制消息可以包括很多种:数据报错误信息、网络状况信息、主机状况信息等,虽然这些控制消息虽然并不传输用户数据,但对于用户数据报的有效...

2019-03-15 15:57:54 18865

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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