自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IOT物联网小镇

专注于:Linux 操作系统、物联网等领域的嵌入式开发。

  • 博客(7)
  • 资源 (12)
  • 收藏
  • 关注

原创 代码安全性和健壮性:如何在if和assert中做选择?

道哥的第 023 篇原创 文章目录一、前言二、assert 断言assert 是一个宏,不是一个函数三、if VS assert1. 使用 if 语句来检查2. 使用 assert 断言来检查3. 你喜欢哪一个?4. assert 的本质5. if-else 的本质6. 我喜欢的版本五、总结一、前言我们在撸代码的时候,经常需要对代码的安全性进行检查,例如:指针是否为空?被除数是否为 0?函数调用的返回结果是否有效?打开一个文件是否成功?对这一类的边界条件进行检查的手段,一般都是..

2021-02-27 16:55:13 1052

原创 物联网网关开发:基于MQTT消息总线的设计过程(下)

道哥的第 022 篇原创文章目录一、前言二、与云平台之间的 MQTT 连接三、Proc_Bridge 进程:外部和内部消息总线之间的桥接器1. mosquitto 的 API 接口2. 利用 UserData 指针,实现多个 MQTT 连接四、总结一、前言在上一篇文章中物联网网关开发:基于MQTT消息总线的设计过程(上),我们聊了在一个物联网系统的网关中,如何利用 MQTT 消息总线,在嵌入式系统内部实现多个进程之间的相互通信问题。这个通信模型的最大几个优点是:模块之间解耦合;各模块之间.

2021-02-24 08:30:52 1901 2

原创 物联网网关开发:基于MQTT消息总线的设计过程(上)

道哥的第 021 篇原创文章目录一、前言二、网关的作用2.1 指令转发2.2 外网通信2.3 协议转换2.4 设备管理2.5 边沿计算(自动化控制)三、网关内部进程之间的通信3.1 网关中需要哪些进程3.2 MQTT消息总线3.3 Topic 的设计3.4 与 DBUS 总线的对比四、网关与云平台之间的通信五、总结一、前言在上一篇中,我们聊了在一个嵌入式系统中,如何利用MQTT消息总线在各进程之间进行通信,文章链接:《我最喜欢的进程之间通信方式-消息总线 》。这样的通信模型,我之前已经在多个项目.

2021-02-24 08:28:55 1955 3

原创 我最喜欢的进程之间通信方式-消息总线

道哥的第 020 篇原创文章目录一、Linux 系统中的进程之间通信(IPC)二、基于 Socket 通信的优点1. 跨主机,具有伸缩性2. 操作系统会自动回收资源3. 可记录、可重现4. 跨语言三、MQTT 消息总线1. MQTT 是一个通信的机制2. MQTT 的实现3. 在 MQTT 之上,设计自己的通信协议四、嵌入式系统中如何利用 MQTT 消息总线1. 一个嵌入式系统的通信框架2. 稍微复杂一点的通信模型五、Mosquitto: 一个简单的测试代码1. 直接通过 apt 来安装、测试2. 通.

2021-02-16 14:01:07 1333

原创 提高代码逼格的利器:宏定义-从入门到放弃

道哥的第 019 篇原创文章目录一、前言二、预处理器的操作1. 宏的生效环节:预处理2. 条件编译3. 平台预定义的宏三、宏扩展1. 最常见的宏2. 与函数的区别四、符号:\# 与 \#\#1. #: 字符串化2. ##:参数连接五、可变参数的处理1. 参数名的定义和使用2. 可变参数个数为零的处理六、奇思妙想的宏1. 日志功能2. 利用宏来迭代每个参数3. 动态的调用不同的函数4. 动态创建错误编码与对应的错误字符串七、总结一、前言一直以来,我都有这样一种感觉:当我学习一个新领域的知识时,如果其.

2021-02-06 22:12:53 1136

原创 推荐一个阅读代码、文档的利器:屏幕贴图工具

这是道哥的第018篇原创文章目录一、你是怎么阅读 PDF 文件的?二、几种可能的方法三、屏幕贴图神器 Snipaste四、总结一、你是怎么阅读 PDF 文件的?作为已经软件开发人员,阅读代码或者 PDF文件是家常便饭的事情。假设有这样一个场景:你在看第 100 页的内容时,想回过头去看一下第 20 页的图片,你一般是如何操作?这篇文章为你推荐一个利器:Snipaste,如果你已经在使用这个非常顺手的工具软件了,下面的内容就可以不用看了,听听音乐享受人生去。二、几种可能的方法方法1用鼠标滚轮.

2021-02-04 08:28:33 969

原创 利用C语言中的setjmp和longjmp,来实现异常捕获和协程

这是道哥的第 017 篇原创文章目录一、前言二、函数语法介绍1. 最简示例2. 函数说明3. setjmp:保存上下文信息4. longjmp: 实现跳转5. setjmp:返回类型和返回值三、利用 setjmp/longjmp 实现异常捕获四、利用 setjmp/longjmp 实现协程1. 什么是协程2. 线程中的生产者和消费者3. 协程中的生产者和消费者4. C 语言中的协程实现五、总结一、前言在 C 标准库中,有两个威力很猛的函数:setjmp 和 longjmp,不知道各位小伙伴在代码中.

2021-02-02 10:55:15 996

Stunnix-CXX-Obfus-4.7-Linux-trial.zip

这是用于C/C++源代码级别的混淆工具,不是二进制混淆。官网的下载特别特别慢,因此在这里提供一下,给需要的开发者。

2020-03-10

Git2.25.0.1.zip

Git2.25.0.1.zip是在 windows系统中使用的版本管控工具,在我们的开发过程中大部分是使用这个工具进行代码版本的管控。但是官网下载的速度太慢,所以在这里提供一下。

2020-02-04

cmake-3.15.6-win64-x64.msi

cmake-3.15.6-win64-x64.msi 是在windows下进行开发时大部分需要的构建工具,但是官网下载的太慢太慢,所以在这里提供一下,确认可用。

2020-02-04

CppPluginSample1.tgz

1. 实现原理。 因为工作需要使用C++插件的开发形式,于是调研了目前的实现方式和思路,本质上就是在一个插件管理模块,使用容器(map)存储所有注册的插件名称和构造函数。 注册的过程可以使用代码,也可以使用XML配置的方式。在应用程序需要某个插件对象的时候,直接通过传递插件的名称作为参数,从插件管理模块中获取一个创建好的插件对象。 2. 实例代码 我一共写了2个demo,这一个是按照上面的思路实现的,比较简单、基础。解压后,直接在命令行使用 make 一下就可以得到可执行文件。 另外一个demo过会再上传,本质原理是一样,但是没有使用插件管理模块,而是在每一个插件接口中,使用静态成员容器来保存实现了本接口的所有插件信息,当应用程序需要插件时,调用该插件实现的接口中的静态函数即可。

2019-09-20

ZWave实战入门-完全自己总结整理的基本知识

这是我自己在刚入门ZWAVE设备开发时,自己总结的文档,包括了ZWAVE最基本的知识。

2019-04-04

ZWave 700 系列 Z-Wave Roadmap 700 Series - Asia Forum_B2B_V3.pdf

这个PDF描述了在ZWave 700系列的产品的一些基本情况,已经路线图,很有参考价值。

2019-04-03

iOS开发指南:从零基础到App Store上架-第2章

iOS开发指南:从零基础到App Store上架 第2章 由于全新问题,只能分开传。

2014-09-14

iOS开发指南:从零基础到App Store上架-第一章

iOS开发指南:从零基础到App Store上架 第一章 由于权限问题,只能分开上传。

2014-09-14

在虚拟机中直接使用liveCD

在练习LFS的过程中,对各种依赖的版本需求和宿主机的版本要求,相关性是很大的。这里提供一个有效的步骤去使用兼容的虚拟机,将会大大提高LFS的创建流程。

2014-07-15

DL-LFS开始之前.txt

在练习LFS时,很多朋友遇到一些版本兼容的问题,而且这些问题是最能打击新手的自信心的,在开始LFS之前,了解一些相关的必要知识,将会避免很多问题。

2014-07-15

LFS-BOOK-6.3.pdf

非常详细、非常接底气的LFS参考资料,按照里面的提示流程走一遍,将会大大增强自己对linux操作系统的理解。

2014-07-15

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

TA关注的人

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