自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS API函数集合

第一章 任务portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters,unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask );pvTaskCode:参数pvTaskCode 只一个指向任务的实现函数的指针p

2021-07-01 11:02:00 236

原创 排序之C++类的封装

简单排序冒泡排序// 冒泡排序//#include <iostream>using namespace std;class Buffle{public: Buffle(); ~Buffle();public: static void sort(int *arr, int size); static bool compare(int num1, int num2); static void exch(int *arr, int i,

2020-07-30 20:44:25 380 3

原创 C++堆排序

HeapSort.hpp#ifndef HEAPSORT_HPP#define HEAPSORT_HPP#include <iostream>using namespace std;#include <cstring>template<class T>class HeapSort{public: HeapSort(); ~HeapSort();public: static void sort(T *source, in

2020-07-20 08:08:12 105

原创 C++实现堆类

heap.hpp#ifndef HEAP_HPP#define HEAP_HPPtemplate<class T>class Heap{public: Heap(); Heap(int capacity); ~Heap();public: int size(); void insert(T t); T delMax();private: bool less(int i, int j); void exc

2020-07-18 17:43:07 217

原创 C++泛型二叉查找树的API设计

binarytree.hpp节点类与二叉树类的设计//节点类template <class Key, class Value>class Node{public: Node(); ~Node();public: Node<Key, Value>* left; Node<Key, Value>* right; Key key; Value value;};//二叉类template<class Key

2020-07-09 07:57:15 192 3

原创 C++链表实现符号表

SymbolTabel.hpp#pragma once#include <iostream>using namespace std;template <class T1, class T2>class Node{public: Node<T1, T2>* next; T1 key; T2 value;};template <class T1, class T2>class SymbolTabel{public: Symb

2020-06-14 19:20:54 393

原创 C++链表实现队列

//queue.hpp#pragma once#include <iostream>using namespace std;template <class T>class Node{public: Node<T>* next; T data;};template <class T>class Queue{public: Queue(); ~Queue(); bool isEmpty(); int size();

2020-06-13 11:57:03 518

原创 C++栈解决括号匹配与逆波兰表达式

自定义栈模板类:stack.hpp#pragma once#include <iostream>using namespace std;template <class T>class Node{public: Node<T>* next; T data;};template <class T>class Stack{public: Stack(); ~Stack(); bool isEmpty(); int si

2020-06-12 15:11:38 132

原创 linux网络编程必备

协议从应⽤的⻆度出发,协议可理解为“规则”,是数据传输和数据解释的规则 数据的发送⽅和接收⽅要严格遵照这些规则(这些规则肯定是之前就定好的) 例如:第⼀次发送⽂件名,第⼆次传输⽂件⼤⼩,第三次发送⽂件内容 ---- FTP 协议的雏形 试想:如果双⽅不遵照这个规则,就会出现数据混乱网络网络程序设计模式C/S模式传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。B/S模式浏览器(broswer)/服务器(serve

2020-05-14 19:02:47 149

原创 linux系统编程必备

守护进程概念:守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。 守护进程是个特殊的孤儿进程,这种进程脱离终端步骤:创建子进程,父进程退出(必须) 所有工作在子进程中进行形式上脱离了控制终端在子进程中创建新会话(必须) setsid()函数 使子进程完全独立出来,脱离控制改变当前目录为根目录(不是必须)

2020-05-14 19:00:55 147

原创 STL常用算法浅析

遍历void test01(){ vector<int> v1; for(int i = 0; i < 5; i++) v1.push_back(10); for_each(v1.begin(), v1.end(), [](int val){cout << val << " ";}); cout <...

2020-04-02 23:37:24 115

原创 谓词与适配器

谓词返回值为bool的普通函数或仿函数//一元谓词void test01(){ vector<int> v; int i = 0; for(i = 0; i < 5; i++) v.push_back((i + 1) * 10); for_each(v.begin(), v.end(), [](int val){cout &...

2020-04-01 22:36:58 81

原创 C++必备知识

指针和引用的区别内联函数未完待续

2020-04-01 11:59:44 186

原创 C++容器API浅析

vector/*3.2.4.2 vector常用赋值操作assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。assign(n, elem);//将n个elem拷贝赋值给本身。vector& operator=(const vector &vec);//重载等号操作符swap(vec);// 将vec与本身的元素互换。*/void...

2020-03-31 22:43:03 149

原创 string用法浅析

string的构造 和 赋值/*3.1.2.1 string 构造函数string();//创建一个空的字符串 例如: string str;string(const string& str);//使用一个string对象初始化另一个string对象string(const char* s);//使用字符串s初始化string(int n, char c);//使用n个字符c初...

2020-03-28 20:26:19 134

原创 linux线程之退出状态与退出清理

pthread_setcancelstate pthread_setcanceltype#include <stdio.h>#include <pthread.h>#include <unistd.h>void *thread_cancel(void *arg){ //取消类型 pthread_setcancelstate(PTHRE...

2020-03-24 21:55:41 248

原创 C++运算符重载实例化mystring

运算符重载[],==,!=,>,<,>=,<=,+,=,+=,<<,>>mystring.h#ifndef MYSTRING_H#define MYSTRING_H#include <iostream>using namespace std;class MyString{public://构造 MyStr...

2020-03-24 21:51:24 237

原创 线程的创建、等待与分离

前言:为什么要用线程线程和进程比较调度:线程是 CPU 调度和分派的基本单位。拥有资源:进程是系统中程序执行和资源分配的基本单位。 线程自己一般不拥有资源(除了必不可少的程序计数器,一组寄存器和栈),但它可以去访问其所属进程的 资源,如进程代码段,数据段以及系统资源(已打开的文件,I/O 设备等)。系统开销:同一个进程中的多个线程可共享同一地址空间,因此它们之间的同步和通信的实现也变...

2020-03-22 11:17:22 122

原创 C++类的前向声明

两个类头文件相互调用或前向声明看以下代码class str;class name1;class name1{public: name1() {}private: str aa;};class str{public: name2() {}private: };当先定义的类中有后定义的类的对象成员时,就会产生前向声明产生的错误当分...

2020-03-21 00:12:48 142

原创 static与类

static 修饰成员变量class Data{public: int num;//普通成员变量 static int data;//静态成员变量(类内声明)};//定义的时候 不需要加staticint Data::data=100;//类外定义+初始化void test01(){ //data是静态成员变量 是属于类 可以通过类名称::直接访问 ...

2020-03-19 23:38:34 126

原创 new delete浅析

普通变量void test01(void){ int *p = NULL; p = new int(100); cout << "*p = " << *p << endl; delete p;}数组void test02(void){ int *arr = NULL; arr = new int[5...

2020-03-19 23:30:04 76

原创 进程通信之共享内存

共享内存读写shm_write.c//int shmget(key_t key, size_t size, int shmflg)//功能:创建或打开一块共享内存//参数????IPC键值// size:共享内存大小// shmflg:位或权限位// IPC_CREAT:创建// IPC_EXCL:检测是否存在//返回值:成功...

2020-03-18 22:40:20 91

原创 类的构造和析构函数

构造和析构语法构造函数语法:构造函数函数名和类名相同,没有返回类型,连void都不可以,但可以有参数,可以重载析构函数语法:析构函数函数名是在类名前面加”~”组成,没有返回类型,连void都不可以,不能有参数,不能重载class Data{public: int num;public: //构造函数(无参的构造) Data() { n...

2020-03-18 20:12:49 165

原创 C++类实例化对象

长方形类案例#include <iostream>using namespace std;class Rectangl{public: void Init(int X, int Y, int Width, int Height) { m_x = X; m_y = Y; m_width = Width; ...

2020-03-17 23:14:08 113

原创 C++三大特性,面向对象与面向过程

封装,继承,多态封装:把客观的事务抽象成一个类(将数据和方法打包在一起,加以权限的区分,达到保护并安全使用数据的目的)继承:继承所表达的是类之间相关的关系,这种关系使得对象可以继承另外一类对象的特征和能力目的:避免公用代码的重复开发,减少代码和数据冗余。多态:多态 多态性可以简单地概括为“一个接口,多种方法”,字面意思为多种形态。程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念...

2020-03-17 23:11:59 360

原创 进程通信之消息队列

创建消息队列//key_t ftok(const char *pathname, int proj_id)//功能:由系统分配消息队列IPC键值//参数:路径名,项目ID//返回值:成功key,失败-1//int msgget(key_t key, int msgflg)//功能:创建消息队列,消息队列不存在创建消息队列//参数:IPC键值// msgflg:IPC_CRE...

2020-03-17 23:07:18 85

原创 进程通信之管道

无名管道无名管道适用于父子进程或兄弟进程之间的通信pipe//pipe(int *fd);//参数:数组,fd[0]读,fd[1]写//返回值:成功0,失败-1//利用无名管道通信往往是父进程创建管道,子进程继承无名管道文件描述符//read读数据默认阻塞//write写数据,缓冲区满阻塞//关闭所有读端,向管道写数据,写进程会收到SIGPIPE信号而退出//fcntl(fd,...

2020-03-17 17:37:55 145

原创 信号集 信号阻塞集

信号集相关函数//信号集//类型:sigset_t//sigemptyset(sigset_t *set);//功能:创建空的信号集//返回值:成功0,失败-1//sigismember(sigset_t *set, int num);//功能:判断信号num是否存在于信号集set//返回值:存在1,不存在0,失败-1//sigaddset(sigset_t *set, int ...

2020-03-15 21:00:13 223

原创 发送信号

kill//fork可以返回两个值//父进程中,fork返回子进程的ID,子进程中返回0//pid:可能选择有以下四种//功能:杀死进程//参数:进程号,kill -l// 1. pid大于零时,pid是信号欲送往的进程的标识。// 2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。// 3. pid等于-1时,信号将送往所有调用进程有权给其发送...

2020-03-15 20:56:15 263

原创 atexit wait waitpid system

atexitatexit:注册清理函数当前进程结束后按照注册的反顺序执行注册的函数#include <stdio.h>#include <unistd.h>void fun1(void){ printf("a\n");}void fun2(void){ printf("b\n");}void fun3(void){ prin...

2020-03-14 19:04:50 86

原创 exec家族

exec家族l:list,列表,需要指定目录c:容纳,将参数容纳到指针数组p:PATH到PATH目录下寻找可执行程序#include <stdio.h>#include <unistd.h>#include <stdlib.h>//exec家族,进程号不变,只替换可执行程序的内容int main(int argc, char *argv[])...

2020-03-14 18:32:19 89

原创 linux创建子进程

创建子进程方法fork创建单个子进程#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main(int argc, char *argv[]){ int var = 10; pid_t pid; //创建子进程,如果返回-1则失败,如果返回0则子进程...

2020-03-14 18:28:21 153

原创 系统调用文件读写

头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include...

2020-03-14 18:17:28 380

原创 gdb和makefile

gdbgdb 可执行文件进入gdbl:查看代码l .c:20 查看20行l .c:fountion() 查看函数再按下l,往下列出下边内容按下回车继续执行b 22 在22行打个断点b 15 if i == 15//条件断点i b //查看断点信息start:执行一步n单步调试c:继续执行直到断点s:进入函数体内部p j:打印j的值ptype j:查看j的类型dis...

2020-03-05 22:58:43 130

原创 文件上

知识点2【文件】1、文件的存取过程缓冲区的目的:提高存取效率 磁盘使用寿命2、磁盘文件的分类0-2物理上 所有的磁盘文件都是 二进制存储,以字节为单位 顺序存储。逻辑上的文件分类:文本文件:基于字符编码的文件二进制文件:基于值编码的文件总结:(重要)3、文件指针注意:不要关系FILE的细节 只需要 会用FILE 定义指针变量就行:FILE *fp=NULL;(了解)4...

2020-03-04 23:31:34 243

原创 文件

知识点1【文件的格式化操作】0-11、fprintf 文件的写操作void test03(){HERO hero[]={{“德玛西亚”,80, 60},{“盲僧”,90, 80},{“小法”,40, 85},{“小炮”,50, 90}};int n = sizeof(hero)/sizeof(hero[0]);FILE *fp = NULL;int i=0;fp = f...

2020-03-04 23:30:27 266

原创 结构体利用深拷贝解决浅拷贝的问题

#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{ int num; char *name;}DATA;void test01(){ DATA data1; DATA data2; data1.num = 100; data1.name = (ch...

2020-03-03 20:42:56 125 1

原创 C语言字符串操作

拷贝比较组包解包等#include <stdio.h>#include <string.h>#include <stdlib.h>int main(int argc, char *argv[]){ char str[] = "hello"; char dst[100] = "ddddddddddd"; int n = 0; char* ptr...

2020-03-03 19:54:59 149

原创 linux命令

不全1.快捷键history:历史命令ctrl + p:历史命令向上滚动ctrl + n:历史命令向下滚动ctrl + b:往后移动ctrl + f:往前移动ctrl + a:行首ctrl + e:行尾ctrl + h:删除光标前边ctrl + d:删除光标后边tab: 填充命令/路径清屏:ctrl + l/clear2.目录结构/bin:常用命令/boot...

2020-03-03 19:52:01 114

原创 链表

插入删除遍历查询释放逆序排序#include "link.h"enum command {link_clear, link_insert, link_delete, link_print, link_search, link_free, link_rever, link_sort, link_quit};//打印菜单void link_print_menu(void){ syste...

2020-03-03 19:48:16 127

空空如也

空空如也

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

TA关注的人

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