- 博客(12)
- 收藏
- 关注
原创 C++的一些基本算法举例
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include<string> #include<vector> #include<algorithm> #include <map> #include <list> int main(void) { std::vector<in..
2021-05-14 15:22:49
195
原创 c++ 的重要特殊关键字
const关键字 常量是固定值,在程序执行期间不会改变 int *const p; // 指针是常量,指向的值可以发生改变(const pointer to int) const int p; //p是常量,无法发生改变 const int *p; // p的值(指针)可以发生改变,指向的值不能发生改变(pointer to const int) const int *const p; // 指针和值都不能发生改变(const pointer to const int) ...
2021-05-12 15:06:19
202
原创 简单线程池的实现
1. 简单版本的 #include <iostream> #include <cstdlib> #include <cstdio> #include <string> #include<vector> #include<algorithm> #include <map> #include <queue> #include <sys/types.h> #include <unistd.h>
2021-05-12 11:20:50
137
原创 C++小技巧
C++重点知识小技巧 带多态性质的 bass classes 应该声明一个virtual析构函数,如果class带有任何virtual函数,它就应该拥有一个virtual析构函数。 classes的设计目的不是作为base classes使用,或不是为了具备多态性,就不应该声明virtual析构函数,会增加额外的内存空间 析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下他们(不传播)或结束程序 ...
2021-05-11 17:24:04
174
原创 TCP拥塞窗口调优方法
拥塞控制主要是四个算法:1)慢启动,2)拥塞避免,3)拥塞发生,4)快速恢复。 这里不讲原理,原理谷歌一下有很多讲的非常好的 这里只讲一下自己在tcp传输大数据的时候进行的一些网络调优,流量控制的操作。 虚拟机的拥塞控制算法默认选择的是cubic, 用这个tcp_congestion_control字段控制。 1.禁用慢启动, echo "0" > ecp_slow_stat_after_idle; 设置0可以让tcp一直保持在高速传输状态的拥塞窗口。 2.设置cwnd的初始值 ..
2021-04-22 09:29:57
1078
原创 I420转NV12格式
分享一个自己写的I420转NV12的函数 yuv420图片格式主要有I420、YV12、NV12、NV21这几种, 通常NV12、NV21常常使用在手机端的编码,属于YUV420SP; YUV420SP表示UV交错排列成为一个平面,和Y一共为两平面 YUV420P是UV顺序排列,一共三个平面 void yuvI420ToNV12(uint8_t *I420, uint8_t *NV12, int width, int height) { int ySize = width * heigh
2021-04-20 20:32:08
1703
原创 C++的STL之安全队列
C++的STL是线程不安全的,如果想要在多线程中使用的话需要加锁, 这里简单封装了如下四个接口 入队操作 阻塞式等待 非阻塞式等待 判断是否为空 代码如下所示: #include <thread> #include <mutex> #include <condition_variable> template<typename T> class ThreadSafeQueue { public: ~ThreadSafeQueue() =
2021-04-14 16:53:42
457
原创 H264数据类型
SPS 00 00 00 01 67 PPS 00 00 00 01 68 I帧 00 00 00 01 65 P帧 00 00 00 01 61 H264裸流数据一般是IDR帧 + P帧;实际写MP4文件时候只需要提前把SPS、PPS写入到媒体信息中就可以了,mdat只需写入I和P帧的数据。H264帧区分很明显,不用做其它处...
2020-01-04 19:25:16
359
原创 select()函数的定时器实现
#include<sys/time.h> #include<unistd.h> int select(int maxfd, fd_set *rdset, fd_set *wrest, fd_set *exset, struct timeval *timeout); maxfd:描述需要监视最大文件描述符+1 rdset:监视的可读文件描述符的集合 rdset:监视的...
2020-01-04 14:46:41
1594
原创 MP4文件格式总结
mp4文件作为视频监控的主流媒体文件,框架结构也不算复杂,主要由一系列的box组成,这里简单解析一下。 查看mp4文件的软件:MP4 Reader. 1.mp4文件的总体结构 2.各组成分析 ftyp :file type box 存储文件类型 mdat :media data box 存储媒体的具体内容 moov:movie box 存储媒体的信息 这三个是一个M...
2020-01-04 10:55:37
1043
原创 基于G-sensor的计步解决方案
基于G-sensor的计步解决方案一、 计步模型特征 G-sensor可以检测三轴加速度(单位g),静止的时候只检测重力加速度一个G;人在步行的时候,相对于运动姿态会产生相应方向加速度。 图1 步行姿态示意图 如图1所示,步行的时候主要运动方向是前进方向和垂直方向,呈现周期...
2018-04-24 11:19:55
4581
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人