自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

木子皿--啥都不会的菜鸟

努力学习,希望有朝一日能够从事后台服务器开发相关工作!

原创 单线程与多线程网络程序架构简介

文章目录1 单线程与多线程网络程序架构简介1.1 服务端单线程处理多客户端1.2 服务端多进程多端口处理多客户端1.3 服务端多线程单端口分组处理多客户端1.4 服务端多线程多端口分组处理多客户端 1 单线程与多线程网络程序架构简介 1.1 服务端单线程处理多客户端 1.2 服务端多进程多端口处...

2020-06-30 16:26:47 82 0

原创 添加高精度计时器测量处理能力

文章目录1 添加高精度计时器测量处理能力 1 添加高精度计时器测量处理能力 这里我们为服务端添加高精度计时器来测量处理能力,这里使用C++11提供的库来实现。 CELLTimeStamp.hpp: #ifndef _CELLTimestamp_hpp_ #define _CELLTimestamp...

2020-06-30 15:54:45 131 0

原创 设计回顾

文章目录1 设计回顾 1 设计回顾 命令行交互: 解释任务与监控任务: 事件检测: 总体结构: 参考资料: 手把手教你学用嵌入式操作系统

2020-06-30 14:54:27 3592 0

原创 TCP编程模型

文章目录1 TCP编程模型 1 TCP编程模型 先来看一下socket整体框架图: 如下为TCP通信模型: TCP客户端和服务器示例代码: demo_tcp_server.c: #include <stdio.h> #include <stdlib.h> #inclu...

2020-06-30 14:16:16 130 0

原创 socket基础

文章目录1 socket基础1.1 万物皆文件1.2 如何创建socket1.3 bind函数介绍 1 socket基础 1.1 万物皆文件 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。 套接字允许应用程序将I/O插入到网络...

2020-06-30 14:08:25 83 0

原创 文件映射操作类的实现

文章目录1 文件映射操作类的实现 1 文件映射操作类的实现 mmap_file_op.h: #ifndef QINIU_LARGEFILE_MMAPFILE_OP_H_ #define QINIU_LARGEFILE_MMAPFILE_OP_H_ #include "common.h&...

2020-06-30 09:00:50 97 0

原创 网络通信协议基础

文章目录1 TCP/IP协议2 TCP/IP寻址3 数据包封装过程 1 TCP/IP协议 看一下经典的TCP/IP协议分层: 2 TCP/IP寻址 IP地址: TCP/IP 使用 32 个比特或者 4 组 0 到 255 之间的数字来为计算机编址。 每组数字必须在 0 到 255 之间,并由...

2020-06-29 17:55:40 90 0

原创 常见的物联网通信协议

文章目录1 TCP2 UDP3 HTTP4 MQTT5 CoAP6 LwM2M 1 TCP TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。 特点: 面向连接 可靠通信方式 基于流的方式 缺点: 花销大 设备必须时刻保持连接状态(功耗大) 消耗时间比较久 2 UDP 用户数...

2020-06-28 14:29:51 126 0

原创 物联网架构

文章目录1 物联网架构1.1 USN 框架1.2 M2M架构 1 物联网架构 1.1 USN 框架 研究人员在描述物联网的体系框架时,多采用国际电信联盟ITU-T的泛在感应器网络体系结构作为基础。该体系结构分为传感器网络层、泛在传感器网络接入层、骨干网络层、网络中间件层和USN网络应用层。 1.2...

2020-06-28 14:19:54 301 0

原创 物联网组网技术

文章目录1 WiFi2 蓝牙3 ZigBee4 2G/4G/5G5 NB-IoT6 LoRa7 各种组网技术对比8 网关的概念 1 WiFi Wi-Fi的发明人是悉尼大学工程系毕业生Dr John O’Sullivan领导的一群由悉尼大学工程系毕业生组成的研究小组 。 优点: 设备可以接入互联网...

2020-06-28 14:10:42 698 0

原创 物联网技术的发展历史及关键技术

文章目录1 物联网技术的发展历史及基本概念1.1 物联网技术的发展历史1.2 物联网技术的基本概念2 物联网技术的 1 物联网技术的发展历史及基本概念 1.1 物联网技术的发展历史 上世纪90年代,麻省理工学院教授凯文•艾什顿在口红内置RFID,通过无线网络接收数据,被誉为物联网之父。 2005...

2020-06-28 13:56:18 550 0

原创 突破Windows下select64的限制

文章目录1 突破Windows下select64的限制 1 突破Windows下select64的限制 在实际测试中发现当select中超过64时便无法收发数据,这个目前没有找到原因,我也想不明白。由于FD_SETSIZE的默认值为64,所以我们最多只能加入64个fd。服务端出了1个监听sock,...

2020-06-28 10:22:21 66 0

原创 监控任务设计

文章目录1 监控任务设计1.1 概述1.2 代码实现 1 监控任务设计 1.1 概述 监控任务用于监控CPU利用率、管脚状态,然后在串口中报告状态。示例较简单,也可以做得更为复杂些。系统结构图如下: 监控任务设计: 虽然监控任务基本上也是周期性去检查各个状态;但是系统中没有使用软定时器去周期检查...

2020-06-20 11:54:43 77 0

原创 外部事件的处理

文章目录1 外部事件的处理1.1 概述1.2 代码实现 1 外部事件的处理 1.1 概述 系统中要监控和管理两个事件,一是按键事件;二是多个外部中断事件。我们通过事件标志组来进行处理。 1.2 代码实现 button.h: /** * @brief 按键驱动 * @details * @a...

2020-06-20 10:27:15 126 0

原创 文件操作的封装

文章目录1 文件操作的封装1.1 代码实现 1 文件操作的封装 为了更加方便对文件进行操作,我们这里对系统提供的API进行封装。主要实现在file_op.h和file_op.cpp中。 1.1 代码实现 file_op.h: #ifndef QINIU_LARGE_FILE_OP_H_ #defi...

2020-06-19 16:05:17 90 0

原创 粘包的原因分析及解决

文章目录1 粘包的原因分析2 客户端解决粘包的问题3 服务端解决粘包的问题 1 粘包的原因分析 先看一下数据收发的示意图: 我们之前每次只处理一帧数据,如果接收端的处理速度力和发送端的发送速度不匹配就会导致接收缓冲区满的情况,这种情况下就会出现缓冲区溢出的情况,导致网络阻塞。在实际的测试中,发现...

2020-06-17 17:38:15 129 0

原创 封装server

文章目录1 封装server1.1 概述1.2 代码实现 1 封装server 1.1 概述 对server的分装和对client的封装很类似。 1.2 代码实现 MessageHeader.hpp: #ifndef _MessageHeader_hpp_ #define _MessageHead...

2020-06-16 10:35:26 84 0

原创 函数的后置返回类型

文章目录1 函数的后置返回类型 1 函数的后置返回类型 在C++11中引入了函数的后置返回类型,这种写法允许我们把函数返回类型放到函数名字之后,有利于返回类型很长时使得代码看起来很清晰。 对于函数的后置返回类型,前面以auto开始,表示函数返回类型放到参数列表之后,而放在参数列表之后的返回类型是通...

2020-06-12 13:44:26 114 0

原创 封装Client

文章目录1 封装Client1.1 概述1.2 封装Client 1 封装Client 1.1 概述 为了更方便的使用client的功能,我们这里把Client相关代码进行封装。 1.2 封装Client 封装后主要有如下三个文件: MessageHeader.hpp: enum CMD { ...

2020-06-10 10:24:45 107 0

原创 nullptr

文章目录1 nullptr 1 nullptr nullptr是C++11中新引入的关键字,主要用来表示控制针,数据类型为:std::nullptr_t。使用nullptr能够避免在整数和指针之间发生混淆。 首先看一下NULL和nullptr的类型: cout << typeid(NU...

2020-06-09 15:56:23 117 0

原创 表索引

文章目录1 索引概述 1 索引概述 基本概念: 日常生活中,我们经常会在电话号码簿中查阅“某人”的电话号码,按姓查询或者按字母排序查询; 在字典中查阅“某个词”的读音和含义等等,以快速的找到特定记录。在这里,“姓”和“字母”都可看作是索引, 而按“姓”或者“字母”查询则是按索引查询! 索引...

2020-06-09 15:07:18 140 0

原创 for语句新特性

文章目录1 范围for语句 1 范围for语句 范围for语句用于遍历一个序列,直接看如下代码: int v[]{ 1, 2, 3, 4, 5, 6, 7 }; for (auto val : v) // 数组v中的每个元素会被一次拷贝到变量val中 { cout << ...

2020-06-09 15:01:10 100 0

原创 auto自动类型推断

文章目录1 auto 1 auto auto在C++11之前是自动变量的含义(栈变量,局部变量),在C++11后赋予其新的作用:自动类型推断。 auto可以在声明变量的时候根据初始值的类型自动为此变量选择匹配的类型(声明时要赋予初值,也就是初始化)。 auto自动类型推导发生在编译期间,所以使用...

2020-06-08 16:19:52 99 0

原创 将服务端移植到Linux和MAC OS

文章目录1 将服务端移植到Linux和MAC OS1.1 概述1.2 服务端代码实现 1 将服务端移植到Linux和MAC OS 1.1 概述 这里我们将服务端移植到Linux和MAX OS,差异很小,直接上代码即可。 1.2 服务端代码实现 #ifdef _WIN32 #define WIN3...

2020-06-06 10:52:00 111 0

原创 淘宝文件系统文件映射原理及实现

文章目录1 文件系统映射原理1.1 文件映射应用场景1.2 文件映射相关函数介绍 1 文件系统映射原理 1.1 文件映射应用场景 主要应用场景如下: 进程间共享信息。 实现文件数据从磁盘到内存的映射,极大的提升应用程序访问文件的速度。 1.2 文件映射相关函数介绍 作用:将一个文件或者其它对象...

2020-06-04 14:14:27 136 0

原创 淘宝文件系统大文件结构

文章目录1 淘宝文件系统大文件结构1.1 设计思路1.2 大文件存储结构图1.3 哈希链表简介 1 淘宝文件系统大文件结构 1.1 设计思路 主要有如下几个核心要点: 以block文件的形式存放数据文件(一般64M一个block),以下简称为“块”,每个块都有唯一的一个整数编号,块在使用之前所用...

2020-06-04 14:03:10 139 0

原创 将客户端移植到Linux和MAC OS

文章目录1 将客户端移植到Linux和MAC OS1.1 概述1.2 客户端移植代码 1 将客户端移植到Linux和MAC OS 1.1 概述 我们这里把将客户端移植到Linux和MAC OS,由于Linux和MAC OS都是从Unix继承而来,所以两者关于socket部分操作接口完全相同。我们只...

2020-06-02 10:52:03 192 0

原创 项目背景介绍及文件系统基本概念简介

文章目录1 项目背景介绍2 文件系统基本概念简介2.1 文件系统接口2.2 存储的基本单位 1 项目背景介绍 根据淘宝2016年的数据分析,淘宝卖家已经达到900多万,有上十亿的商品。每一个商品有包括大量的图片和文字(平均:15k),粗略估计下,数据所占的存储空间在1PB 以上,如果使用单块容量为...

2020-06-01 16:01:20 203 0

原创 Linux下配置Smba服务器

文章目录1 Linux下配置Smba服务器 1 Linux下配置Smba服务器 Ubuntu安装Samba 服务器: 确认安装: dpkg -l | grep samba 安装: sudo apt-get install samba samba-common 卸载: sudo ...

2020-06-01 15:33:20 135 0

原创 为客户端加入输入线程

文章目录1 为客户端加入输入线程1.1 概述1.2 客户端实现 1 为客户端加入输入线程 1.1 概述 为了能让客户端处理我们的输入,我们需要为客户端加入输入线程。 1.2 客户端实现 #define WIN32_LEAN_AND_MEAN #include<windows.h> #...

2020-06-01 14:42:06 115 0

原创 客户端升级为select模型

文章目录1 客户端升级为select模型1.1 概述1.2 客户端代码实现1.3 服务端代码实现 1 客户端升级为select模型 1.1 概述 这里我们为了让客户端有时间去处理其它业务逻辑,因此我们需要在客户端也引入select模型。 1.2 客户端代码实现 #define WIN32_LEAN...

2020-06-01 14:23:33 123 0

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