- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 我的开源项目miniRTSP
概述: 产生做这个开源项目的原因,一来是对rtsp协议有浓厚的兴趣,二来是在项目中,使用到live555开源项目的rtspserver,发现其性能有点差强人意,不但代码框架复杂难以理解,且只支持单线程,虽然比较稳定,但在实时性能上,对于有较高要求的用户,难以满足要求。 miniRTSP旨在架构简单,多线程,且支持实时流和文件流。 ...
2020-07-23 22:06:49
928
1
原创 C++容器的介绍和使用
容器是用来存储和组织数据的类模板容器-顾名思义就是拿来装东西的。你可以装标准的基本数据类型,如int,double,string等、也可以装复杂的自定义类型,例如class 定义的类的对象,对象指针等复合类型的数据。C++ stl标准库提供了多种容器,每种容器都有特定的用途和性能特点。对于map,set,multimap,multiset,当对顺序有要求时候,选择这些,对顺序无要求时候,可以选择带unordered_前缀的容器,以提高性能。
2024-05-27 00:34:23
1742
原创 C++ 注释配置记录
cpp /*! * @class %{CurrentDocument:FileName} * * @brief * * * @author: myy * @date: %{CurrentDate:yyyy-MM-dd} %{CurrentTime:hh:mm} * @note: 说明 */ 头文件 /*! * @file: %{CurrentDocument:FileName} * *
2021-10-14 12:08:45
276
原创 Linux 标准I/O与文件I/O操作一篇就懂了
目录一、概述二、API介绍以及使用例程2.1 什么是标准IO以及文件IO简介2.2 两种I/O的区别2.3 什么是文件描述符2.4 操作API的区别三、标准I/O操作API使用总结3.1 打开文件3.2 读操作3.3 写操作3.4 随机存取3.5 关闭四、文件I/O操作的使用API总结4.1 打开文件4.2 读文件4.3 写文件4.4 随机存取4.5 关闭文件 一、概述 本文主要从介绍Linux 标准I/O操作以及文件I/O操作的主要区别以及使用方法,读完本文,即可以掌握两者之间的区别,也会使用他们在L
2021-01-03 20:00:31
1891
原创 Linux 多线程编程
目录 一、概述 二、 多线程的运用 2.1 线程的创建 2.2 线程属性设置 2.2.1 线程绑定 2.2.2 线程分离 2.2.3 线程数据处理 2.3.4 互斥锁 2.3.5 信号量 2.3.6 条件变量 三、 多线程编程总结 一、概述 本文主要总结Linux 中的多线程编程。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选 线程? 使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在 ux 系统下,启动一个
2020-12-30 23:07:31
359
原创 Linux 网络编程理解总结
一、网络分层模型总结 应用层:处理用于程序的逻辑 传输层:为两台主机上的应用程序实现端到端的通信 网络层:实现数据包的选路和转发 数据链路层 :实现网卡接口驱动,处理二进制数据在物理媒介上的传输 二、TCP/UDP 2.1. 传输层协议主要有TCP和UDP,二者有较大的区别:TCP相对于UDP的特点:面向连接、字节流和可靠传输 2.2 TCP连接过程 需要三次握手,client 给server 发起连接请求,server 回复client表示同意连接,client再回复server 确认连接。 2.3
2020-12-30 21:34:24
242
原创 C面向对象与设计模式(一)
目录 一、概述 二、C++在类上的实现 2.1 什么是this 指针? 2.2 面向对象的三大特性 三、用C实现面向对象的三大特性 3.1 封装 3.2 继承 3.3 多态 四、总结 一、概述 在做嵌入式软件开发过程中,当模块越来越多,代码越来越复杂,采用常规的的面向过程方法,容易使得代码混乱。通过合理的运用抽象、封装、继承和多态,更好的组织程序,从而很好地应对这种复杂性。C语言虽然是一门面向过程的语言,但我们知道,面向对象和面向过程是两种编程泛型,是一种解决问题的方法,...
2020-12-08 23:38:03
457
原创 C++知识一篇就够了(二)
一、概述 上篇介绍了C++在非面向对象上的扩充,这篇主要介绍其在面向对象方面的基本引用,一说起面向对象,面试官常常问的就是C++的特点是啥?可能我们会张口就来,封装、继承、多态,但不知道具体到底是个啥。 什么是类与对象呢,可能教材上比较官方的说法就是:类似现实世界中一类事物的抽象,对象是类的具体化。说白了,就是一类对象可称为一个类,比如:人、动物、树木…都算是类,就“人”这个类来说,张三,李四、王五都是这个类的一个实例化即对象,换句话说类是抽象的一类事物,对象是具体存在的东西… 二、基本语法 2.1 类与对
2020-12-06 23:21:06
143
原创 C++知识一篇就够了(一)
一、概述 之所以想写这篇小记,主要是因为最近有个学妹突然问我一些C++的基础概念,竟一时不知道怎么回答。想想刚毕业时候,这些概念性的东西都是信手拈来,现在工作两年了,反而概念模糊了,瞬间感觉就不好了。工作中虽然一直使用着C++,虽说对于这门语言不能说是精通,但作为一种工具,至少应付工作没出现过什么大问题。但确实很多概念性的东西,慢慢遗忘,有种张三丰问张无忌有没有记住武功的感觉,这么说其实只是想表达一下,妹子,妹子,学长不是个渣渣,只是太厉害了,嘿嘿! 开个玩笑,博大精深的C++,作为一名渣渣程序员,我时刻都
2020-12-03 22:12:09
424
1
原创 物联网简易开发框架
一、概述 近来因为做了MCU相关的开发,每换一次芯片,即使是相同的业务,也需要重写一次代码,对此,倍感煎熬,于是抽象出了了一个开发框架,以简化移植的难度。见链接:https://blog.youkuaiyun.com/daichanzhang9734/article/details/108268241 但这种方式仅仅能完成在同一设备上的开发,于是我在此基础上,从新设计了一个框架,Eeasy IOT Development FrameWork(EID) 基于此框架,可以简单地将另一个设备的某个模块当做本设备的模块来访.
2020-11-05 14:39:41
812
原创 C格式输入输出总结
概述: 每次用到格式输入输出时候总是忘记,需要查询使用,这里简单总结下: 1. int scanf(const char *format, ...); 2. int fscanf(FILE *stream, const char *format, ...);//指定输入流 3. int sscanf(const char *str, const char *format, ...);//指定缓存区 1. scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,
2020-08-27 23:07:16
255
原创 单片机简易开发框架
在开发MCU相关业务中,觉得功能复用性太差,于是自己搞了Framwork,这样一次开发之后,之后每次换MCU芯片,只需要完成底层适配层的适配,不用修改业务层的东西。架构如下:
2020-08-27 20:36:51
6281
1
原创 freeRTOS一次玄学崩溃问题解决
问题描述: 在基于freeRTOS的Apollo3 mcu开发过程中,遇到了一个特别奇怪的崩溃问题,通过崩溃时候的堆栈定位到了造成崩溃的原因,是因为调用function1时候,传入的指针是非法的,用的时候指针越界导致奔溃。 于是通过堆栈开始分析调用function1的所有task,分别分析入口的参数,即传人的指针,发现都无异常。那function1中那个非法的指针从何而来? 继续定位,甚至发现崩溃时候的function1,似乎没有任何task调用,那他为什么会调到function1呢,继续分析调试,发现上一
2020-08-07 08:27:19
1635
原创 github删除错误提交记录导致的下载过慢
概述: 我们在提交代码到github 中,有时候因为失误提交了较大的文件,虽然之后删除了,但是在git中仍然会有记录,以保证版本.此时如果在从github下载该仓库的带代码,会比较慢.同时如果我们又不想要之前的所有提交记录,可采用本文所总结的方法: 1. 拉去一个新分支用于操作: git checkout --orphan new_branch 2. 将所有文件添加到缓冲区 git add -A 3. 提交代码 git commit -am "commit message" 4. 删除主分支,并将新分
2020-08-04 23:37:45
302
原创 Linux C++的list的使用总结
一、概述 list就是C++封装好的双链表,本文主要是记录其具体的使用方法,包括需要包含的头文件,如何定义,每一个成员函数的使用方法。最后以一个demo来展示如何使用list的方法。要使用list,需要包含#include 二、定义 list<int> b; //创建一个空的list list<int> c(5); ...
2020-04-08 17:49:33
1950
原创 Androd入门,认识程序入口
介绍Android 项目程序的入口在哪里,程序怎么运行的;建立一个项目后,各个文件夹有什么作用以及如何使用等等。以下这篇文章对于入门还不错: https://www.cnblogs.com/mingjiatang/p/5978538.html ...
2020-03-24 15:03:34
243
原创 tar: 由于前次错误,将以上次的错误状态退出
tar 解压失败 tar: tar -zxvf ./jdk-8u221-linux-x64.tar.gz /usr/lib/javaSE tar: 由于前次错误,将以上次的错误状态退出 解决方式: tar -zxvf ./jdk-8u221-linux-x64.tar.gz -C /usr/lib/javaSE -C 切换到指定目录 因为不是在当前文件夹解压的,要去别的文件夹解压,所...
2019-08-22 11:47:39
3620
转载 c++接口类实现
欢迎转载,转载请注明原文地址:https://blog.youkuaiyun.com/netyeaxi/article/details/80724557 C++中如何定义接口类? 首先给接口类下了定义:接口类应该是只提供方法声明,而自身不提供方法定义的抽象类。接口类自身不能实例化,接口类的方法定义/实现只能由接口类的子类来完成。 而对于C++,其接口类一般具有以下特征: 1.最好不要有成员变量,但可以有静态...
2019-07-01 13:44:24
2708
原创 在vim编辑器使用程序跳转功能方法记录
一、安装ctags 在终端输入: sudo apt-get install exuberant-ctags 回车后输入密码,即可安装完毕; 二、新建tags文件 在自己的项目源文件文件夹打开终端,并上执行如下命令: ctags -R . 此时可以在文件夹中看到一个ctags文件,即表示程序索引新建完毕,接下来就是如何使用了。 三、使用方法 打开程序 转到定义:Ctrl+] 返回:Ctrl+T ...
2019-03-27 15:40:20
288
转载 多线程关键函数记录
*1.函数 int pthread_attr_init(pthread_attr_t attr); 功能:初始化一个线程属性对象 参数:@attr 线程属性结构体指针变量 返回值:0 - 成功,非0 – 失败 线程属性: 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。 调用pthread_attr_init之后,pthread_...
2019-03-27 11:47:28
200
转载 vector的使用
使用vector,需添加头文件#include, 要使用sort或find,则需要添加头文件#include。 为了简化书写,需在.h中增加using namespace std; 1.vector的初始化及赋值 std::vector nVec; // 空对象 std::vector nVec(5,-1); // 创建了一个包含5个元素且值为-1的vector std::vectors...
2019-03-26 11:37:11
238
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅