自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

原创 服务端升级为select模型处理多客户端

文章目录1 服务端升级为select模型处理多客户端1.1 概述1.2 服务端实现 1 服务端升级为select模型处理多客户端 1.1 概述 之前我们的设计是服务端与客户端1对1的阻塞模式网络程序,我们这里对服务端进行升级,引入select模型,使得服务端有能力处理多个客户端。 Socket的...

2020-05-30 11:22:28 167 0

原创 Shell中常用的通配符

文章目录1 Shell中常用的通配符 1 Shell中常用的通配符 通配符共有3个: “*”,“?”,“[]” * - 用于匹配文件名中任意长度的字符串; ? - 只匹配一个字符; [] - 用于匹配所有出现在方括号内的字符。可以使用短线- “-”来指定字符集范围。如:ls text[1-3...

2020-05-29 17:10:13 106 0

原创 列的完整性约束

文章目录1 设置列的完整性约束1.1 设置表字段的主键约束(PRIMARY KEY,PK)1.2 设置表字段的外键约束(FOREIGN KEY,FK)1.3 设置表字段的非空约束(NOT NULL, NK)1.4 设置表字段唯一约束(UNIQUE,UK)1.5 设置表字段值自动增加(AUTO_IN...

2020-05-29 15:01:33 262 0

原创 命令解释器的设计及实现

文章目录1 命令解释器的设计及实现 1 命令解释器的设计及实现 命令解释器的实现较为简单,流程简单归纳为: 打印命令提示符 读取一行字符串 解析命令,执行操作,必要时打印结果 主要实现了如下命令: 实现代码如下: cli.h: /** * @brief 命令解释器设计 * @detail...

2020-05-29 10:36:37 444 0

原创 网络报文的数据格式定义和使用

文章目录1 网络报文的数据格式定义和使用1.1 概述1.2 服务端实现1.3 客户端实现 1 网络报文的数据格式定义和使用 1.1 概述 上次我们的代码使用了结构化的网络消息,但是只能发送指定的数据格式的数据,无法完成交互。因此,我们需要定义网络报文的数据格式。 网络数据报文的格式定义: 报文有...

2020-05-28 17:17:53 294 0

原创 MySQL中的二进制类型

文章目录1 MySQL中的二进制类型1.1 二进制类型概览1.2 binary和varbinary类型1.3 bit类型1.4 blob类型1.5 实战建议 1 MySQL中的二进制类型 1.1 二进制类型概览 二进制数据和文本数据在mysql 中的最大区别在于: 二进制类型存储原始的二进制数据...

2020-05-28 16:26:07 214 0

原创 发送结构化的网络消息

文章目录1 发送结构化的网络消息1.1 概述1.2 服务端实现1.3 客户端实现 1 发送结构化的网络消息 1.1 概述 我们之前都是采用纯字符串网络消息,特点如下: 优点:处理简易命令方便快捷。 缺点:传递大量数据是字符串解析消耗大。 企业中的应用方式: JSON、XML、自定义格式的字符...

2020-05-27 17:33:09 183 0

原创 建立能够持续请求的CS网络程序

文章目录1 建立能够持续请求的CS网络程序1.1 概述1.2 服务端代码1.3 客户端代码 1 建立能够持续请求的CS网络程序 1.1 概述 我们在上一次的代码基础,建立能够持续请求的CS网络程序: 1.2 服务端代码 server.cpp: #include <iostream> ...

2020-05-27 17:13:53 78 0

原创 MySQL中的enum和set类型

文章目录1 enum类型2 set类型 1 enum类型 ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下: 属性名 ENUM('值1', '值2', …, '值n') 其中,“属性名”参...

2020-05-27 16:24:34 125 0

原创 MySQL中的Text类型

文章目录1 MySQL中的Text类型 1 MySQL中的Text类型 TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其长度和存储空间的对比下表所示: 各种TEXT类型的区别在于允许的长度和存储空间不同。因此,在这几种TEXT类型中,...

2020-05-27 16:01:04 402 0

原创 MySQL中的char和varchar类型

文章目录1 MySQL中的char和varchar类型 1 MySQL中的char和varchar类型 CHAR类型和VARCHAR类型都在创建表时指定了最大长度,其基本形式如下: 字符串类型(M) 其中,“字符串类型”参数指定了数据类型为CHAR类型还是VARCHAR类型;M参数指定了该字符...

2020-05-27 15:38:50 117 0

原创 MySQL中的日期和时间类型

文章目录1 MySQL中的日期和时间类型 1 MySQL中的日期和时间类型 日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型。其中,YEAR类型表示年,DATE类型表示日期,TIME类型表示时间,DATETIME和TIMESTAMP表示日期和时间。下面...

2020-05-27 15:12:56 116 0

原创 MySQL中的浮点数类型和定点数类型

文章目录1 MySQL中的浮点数类型和定点数类型 1 MySQL中的浮点数类型和定点数类型 数据表中用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型)。定点数类型就是DECIMAL型。下面从这三种类型的字节数、取值范围等方面进行对比,如下...

2020-05-26 17:41:14 128 0

原创 MySQL中的整数类型

文章目录1 MySQL中的整数类型1.1 整数类型简介1.2 整数类型的附带属性 1 MySQL中的整数类型 1.1 整数类型简介 整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT...

2020-05-26 17:22:44 186 0

原创 MySQL中表的操作

文章目录1 表的创建2 表的查询 在MySQL数据库中,表是一种很重要的数据库对象,是组成数据库的基本元素,由若干个字段组成,主要用来实现存储数据记录。表的操作包含创建表、查询表、修改表和删除表,这些操作是数据库对象的表管理中最基本也是最重要的操作。 1 表的创建 基本语法: CREATE TA...

2020-05-26 16:51:39 153 0

原创 MySQL中数据库的操作

文章目录1 MySQL中数据库的操作1.1 创建数据库1.2 查看数据库1.3 选择数据库1.4 删除数据库1.5 数据库的命名规范 1 MySQL中数据库的操作 像文件一样,我们可以随时对数据库执行如下操作: 创建数据库。 查看数据库。 选择数据库。 删除数据库。 1.1 创建数据库 创建数...

2020-05-26 15:59:20 138 0

原创 数据库中的关系模型

文章目录1 数据库中的关系模型 1 数据库中的关系模型 关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 核心概念: 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一...

2020-05-26 15:45:04 310 0

原创 MySQL服务的启动与停止

文章目录1 Windows下MySQL服务的启动与停止2 控制台登陆MySQL命令 1 Windows下MySQL服务的启动与停止 图形化界面启动: 右击“计算机”,在快捷菜单中选择“管理”命令,打开“计算机管理”对话框。也可以执行“开始”|“控制面板”|“管理工具”|“服务”来启动服务。 命令行...

2020-05-25 17:34:41 101 0

原创 主流数据库介绍

文章目录1 主流数据库介绍2 MySQL的优势 1 主流数据库介绍 主流数据库简介: 当今市面上的数据库产品众多,每种数据库都有自己的优势和缺点,或出于数据库的性能和易用性考虑,或出于商用和开源考虑,如何选择自己合适的数据库产品,成为重中之重! 主要的数据库产品有如下几种: Oracle - 作为...

2020-05-25 15:17:41 168 0

原创 shared_ptr和weak_ptr使用介绍

文章目录1 shared_ptr使用介绍1.1 shared_ptr使用介绍1.2 shared_ptr的使用陷阱 1 shared_ptr使用介绍 1.1 shared_ptr使用介绍 熟悉了unique_ptr 后,其实我们发现unique_ptr 这种排他型的内存管理并不能适应所有情况,有很...

2020-05-23 13:56:56 104 0

原创 unique_ptr使用介绍

文章目录1 unique_ptr使用介绍1.1 unique_ptr的特性1.2 unique_ptr常用方法介绍 1 unique_ptr使用介绍 1.1 unique_ptr的特性 我们先来看下unique_ptr的特性: 基于排他所有权模式:两个指针不能指向同一个资源。 无法进行左值uni...

2020-05-23 13:41:09 116 0

原创 简易TCP客户端和服务端的实现

文章目录1 客户端的实现2 服务端的实现 1 客户端的实现 用Socket API建立简易TCP客户端: 1.建立一个socket。 2. 连接服务器 connect。 3. 接收服务器信息 recv。 4. 关闭socket closesocket。 实现代码如下: #include <i...

2020-05-23 10:32:51 187 0

原创 波形生成设计

文章目录1 波形生成设计 1 波形生成设计 功能非常简单,直接上代码: WaveGen.h: /** * @brief 波形生成器实现 * @details * @author 01课堂 李述铜 http://01ketang.cc * @date 2017-06-01 * @versi...

2020-05-22 13:53:44 392 0

原创 auto_ptr使用介绍

文章目录1 auto_ptr使用介绍 1 auto_ptr使用介绍 auto_ptr 是c++ 98定义的智能指针模板,其定义了管理指针的对象,可以将new 获得(直接或间接)的地址赋给这种对象。当对象过期时,其析构函数将使用delete 来释放内存! 使用建议: 尽可能不要将auto_ptr ...

2020-05-22 10:11:10 81 0

原创 Windows下Socket库的初始化和关闭

文章目录1 Windows下Socket库的初始化和关闭 1 Windows下Socket库的初始化和关闭 windows下使用Socket比较特殊,使用前我们需要对socket库进行初始化,使用完我们需要对socket库进行关闭,完成相应的清理动作。 首先看一下代码: #include <...

2020-05-22 09:43:34 242 0

原创 Socket基础API介绍

文章目录1 Socket基础API介绍 1 Socket基础API介绍 我们先来看下使用Socket API建立简易TCP服务端和客户端的步骤: 用Socket API建立简易TCP服务端: 建立一个socket。 绑定接受客户端连接的端口 bind。 监听网络端口 listen。 等待接受客户...

2020-05-22 09:25:52 154 0

原创 外部IO驱动设计

文章目录1 外部IO驱动设计 1 外部IO驱动设计 此部分驱动较为简单,主要是调用硬件驱动库对寄存器读写。 由于这些库的代码执行速度很快,就没有必要采用互斥信号量等实现保护,直接采用开关中断来保护更有效率。 实现代码如下: extio.h: /** * @brief 外部IO设计 * @det...

2020-05-21 17:48:15 69 0

原创 串口驱动设计

文章目录1 串口驱动设计 1 串口驱动设计 串口发送或者接收,各自实现了一个"管道"。对于任意管道,一端写入数据,另一端读取数据。或者可以理解为一方生产,一方消费,即所谓的"生产-消费者模型"。 以串口数据发送为例,该驱动完成任务与发送中断之间的通信。 通...

2020-05-21 15:53:41 113 0

原创 按键驱动设计

文章目录1 按键驱动设计 1 按键驱动设计 硬件结构如下: 按键驱动综合使用了软定时器 + 状态机 + 邮箱数据通信。 软定时器负责周期性地调用按键检测扫描函数。 状态机负责处理按键按下、弹起等状态的判断与处理。 邮箱负责处理定时器扫描任务与调用驱动的任务之间的按键值数据通信。 驱动初始化后...

2020-05-21 14:51:22 180 0

原创 实践案例说明

文章目录1 实践案例说明 1 实践案例说明 完成的功能如下: 系统功能设计图: 参考资料: 手把手教你学用嵌入式操作系统

2020-05-20 11:22:27 119 0

原创 多任务的协同

文章目录1 多任务的协同1.1 任务之间的关系1.2 实例 1 多任务的协同 1.1 任务之间的关系 松散任务组合: 一对一关系: 一对多关系: 多对一关系: 通信机制: 1.2 实例 示例代码如下: /** * @brief tOS应用示例 * @details * @auth...

2020-05-20 11:16:48 207 0

原创 并行搜索

文章目录1 并行搜索1.1 并发的基本概念1.2 并行搜索 1 并行搜索 1.1 并发的基本概念 所谓并发是在同一实体上的多个事件同时发生。并发编程是指在在同一台计算机上“同时”处理多个任务。 要理解并发编程,我们必须要理解如下一些基本概念: 计算机就像一座工厂,时刻在运行,为人类服务。它的核心...

2020-05-20 10:52:19 102 0

原创 穷举搜索

文章目录1 穷举搜索1.1 穷举搜索的概念1.2 应用实例 1 穷举搜索 1.1 穷举搜索的概念 穷举法(枚举法)的基本思想是:列举出所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的全部解答。它利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检查...

2020-05-20 09:17:54 173 0

原创 二分查找

文章目录1 二分查找 1 二分查找 二分查找法实质上是不断地将有序数据集进行对半分割,并检查每个分区的中间元素。再重复根据中间数确定目标范围并递归实行对半分割,直到中间数等于待查找的值或是目标数不在搜索范围之内! 实现代码如下: #include <stdlib.h> #include...

2020-05-20 09:14:24 105 0

原创 查找的基本概念

文章目录1 查找的定义2 数组和索引 1 查找的定义 查找: 又称检索或查询,是指在查找表中找出满足一定条件的结点或记录对应的操作。 查找表: 在计算机中,是指被查找的数据对象是由同一类型的记录构成的集合,如顺序表,链表、二叉树和哈希表等。 查找效率: 查找算法中的基本运算是通过记录的关键字与给定...

2020-05-20 09:08:39 117 0

原创 空闲任务的配置

文章目录1 空闲任务的配置 1 空闲任务的配置 空闲任务: 空闲任务工作: 空闲任务注意事项: 示例: /** * 进入低功耗模式 */ void targetEnterSleep (void) { #ifdef HAL_STM32 PWR_EnterSTOPMode(PWR_R...

2020-05-19 15:51:51 83 0

原创 任务的优先级配置

文章目录1 任务的优先级配置 1 任务的优先级配置 优先级的概念: 优先级配置: 参考资料: 手把手教你学用嵌入式操作系统

2020-05-19 15:29:57 141 0

原创 中断事件分离处理

文章目录1 中断事件分离处理 1 中断事件分离处理 首先看一下任务和中断的协同机制: 我们可以采用常驻模式进行处理: 这样的话就是由任务全权处理事件: 我们可以提出事件分离处理的解决方案,如下: 演示代码如下: /** * @brief tOS应用示例 * @details * @...

2020-05-19 15:15:54 141 0

原创 排序算法的对比分析

文章目录1 各种排序算法的对比分析 1 各种排序算法的对比分析

2020-05-19 14:45:37 49 0

原创 快速排序

文章目录1 快速排序 1 快速排序 快速排序的思想: 每次选取第一个数为基准数; 然后使用“乾坤挪移大法”将大于和小于基准的元素分别放置于基准数两边; 继续分别对基准数两侧未排序的数据使用分治法进行细分处理,直至整个序列有序。 快速排序示例: 代码实现: int partition(int...

2020-05-19 14:44:08 69 0

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