自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编码之路

世之奇伟,瑰怪,非常之观常在于险远向人之所罕至焉。

  • 博客(168)
  • 资源 (1)
  • 收藏
  • 关注

原创 SDL2.0-播放音频

文章目录1. 播放原理2. 流程3. `API`4. 完整示例1. 播放原理设置音频选项,如采样率,通道数等,设置回调函数当我们播放音频数据时,SDL会不断调用这个回调函数,并要求它填充一定数量的字节的音频数据到音频缓冲区当调用SDL_OpenAudio时,将打开音频设备并将其返回给另一个AudioSpec结构体2. 流程初始化初始化SDL根据参数(SDL_AudioSpec)打开音频设施循环播放数据播放音频数据延时等待播放完成3. API打开音频设施in

2020-08-28 16:08:35 1431

原创 SDL2.0-播放YUV文件

文章目录1. 基本流程2. `API`介绍3. Demo1. 基本流程初始化初始化SDL创建窗口创建渲染器创建纹理渲染设置纹理的数据绘制要显示的内容将缓冲区的内容渲染到窗口,显示清理销毁渲染器销毁窗口退出SDL2. API介绍SDL_Init 初始化int SDL_Init(Uint32 flags)flags:SDL_INIT_TIMER: 定时器SDL_INIT_AUDIO: 音频SDL_I

2020-08-28 16:04:17 285

原创 SDL2.0-简介

文章目录1、安装SDL2、事件处理3、DemoSDL,“Simple DirecMedia Layer”,是一套跨平台的多媒体开发库。用于游戏开发中的多媒体处理,比如视频渲染,音频播放,鼠标/键盘控制等。对外提供统一的接口,内部会根据不同的平台调用底层的API。这里我们主要分析播放音频和视频的接口。1、安装SDL官网 http://www.libsdl.org/使用:windows可以直接下载sdl的头文件,lib和dll。使用时,需要包含头文件和库文件,运行时需要dll文件。linux平台

2020-08-28 15:59:55 2004

原创 如何正确使用C中的可变参数

C语言中不定参数个数的处理方法声明存放的位置 va_list va;开启 va_start迭代获取 va_arg结束清理 va_end示例:#include <stdio.h>#include <stdarg.h>double sum(int, ...);int main(){ double s, t; s = sum(3, 1...

2019-09-18 17:49:00 191

原创 cJSON源码分析3-核心解析算法

解析函数对于字符串,调用cJSON_Parse解析为一个cJSON对象CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);parser_buffer为存解析的字符串,使用parse_buffer.//解析的缓存typedef struct{ const unsigned char *content; //字符串内容 ...

2019-08-24 16:06:24 701

原创 cJSON源码分析2-接口

文章目录类型判断函数声明实现原理创建函数声明具体分析添加函数接口添加到数组添加到对象删除接口具体分析获取接口具体分析类型判断函数声明//这一系列函数检查item的type是不是某一类型CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);CJSON_PUBLIC(cJSON_bool) cJSON_IsFal...

2019-08-24 15:04:23 463

原创 cJSON源码分析1-基础

文章目录宏定义调用方式版本类型定义cJSON结构bool值定义内存管理最大深度HOOK宏定义调用方式stdcall: C++标准调用方式。参数从右向左依次压入堆栈.由被调用函数自己来恢复堆栈,称为自动清栈。函数名自动加前导下划线,后面紧跟着一个@,其后紧跟着参数的大小。cdecl调用方式又称为C调用方式,是C语言缺省的调用方式。参数从右向左依次压入堆栈.由调用者恢复堆栈,称...

2019-08-24 15:03:00 766

原创 cJSON介绍及使用demo

文章目录JSON简介JSON的形式JSON示例cJSON简介使用示例JSON简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。JSON的两种结构:“名称/值”对的集合(A collection of name/value pairs)。值的有序列表(An ordered list of val...

2019-08-23 17:16:58 1880

原创 C++并发编程指南2

文章目录线程管理基础启动线程等待线程向线程函数传递参数转移线程所有权多个thread对象之间转移函数返回thread对象thread作为参数传递多个线程并等待结束运行时决定线程数量标识线程线程管理基础每个程序至少有一个线程:执行main()函数的线程,其余线程有其各自的入口函数。线程与原始线程(以main()为入口函数的线程)同时运行。如同main()函数执行完会退出一样,当线程执行完入口函数...

2019-08-19 14:30:19 152

原创 C++并发编程指南1

文章目录并发计算机领域的并发并发的途径为什么要使用并发关注点分离提高性能什么时候不使用并发C++并发性能一个简单的C++多线程程序并发两个或多个独立的活动同时发生。计算机领域的并发并发:单个系统里同时执行多个独立的任务。对于只有一个处理器的计算机:同一时刻只能执行一个任务,当它在多个任务切换执行时,可以看成多个并行任务在执行,仍然称为并发。对于多核计算机:可以真正做到任务同时执行,称为...

2019-08-19 11:09:58 242

原创 OpenGL03-显示窗口

在windows中,使用GLFW创建窗口的流程如下:包含头文件#include "GLFW/glfw3.h"#pragma comment(lib, "glfw3.lib")初始化窗口glfwInit()配置GLFW glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //OpenGL 3.3 glfwWindowHint(GLFW...

2019-04-15 16:36:45 512 1

原创 OpenGL02-创建窗口.md

OpenGL窗口在绘制图像之前,需要创建一个OpenGL上下文(Context)和一个用于显示的窗口。这些创建窗口的操作与特定的系统相关,OpenGL将这些操作抽象出来,我们需要自己创建窗口,并定义OpenGL上下文以及处理用户输入。在Windows上,使用GLFW库提供窗口和上下文渲染。GLFW下载GLFW库,地址:https://www.glfw.org/download.html, ...

2019-04-15 15:58:25 129

原创 OpenGL01-初识

什么是OpenGLOpenGL本身并不是一个API(Application Programming Interface, 应用程序编程接口),它仅仅是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定。核心模式早期...

2019-04-15 15:37:40 204

原创 SRS源码分析-连接建立

初始化st协程库state-threads协程库在使用时需要初始化IO复用类型,并初始化。srs_error_t srs_st_init(){ //在linux上设置为epoll() if (st_set_eventsys(ST_EVENTSYS_ALT) == -1) { return srs_error_new(ERROR_ST_SET_EPOLL, "s...

2018-11-05 17:49:23 1708

原创 SRS源码分析-读写类SrsStSocket

关键类SrsStSocket封装了socket的读写操作,将负责将数据发送给对端(send)以及读取对端发送过来的数据(read)。继承关系为:相关源码如下://使用协程的TCPclass SrsStSocket : public ISrsProtocolReaderWriter{private: // The recv/send timeout in ms. // ...

2018-11-05 17:16:54 892

原创 SRS源码分析-协程相关类

SRS中使用协程库state-thread(ST), 在使用时对其进行了封装,保证使用方便。这种封装方法和使用thread库比较类似。在SRS中,st封装所在的文件为:srs_app_ast.hpp/cppISrsCoroutineHandlerHandle接口实现如下,每一个需要使用ST-coroutine的类都需要实现这个接口。这个接口中有一个cycle()函数,在具体的类中执行任务以及...

2018-11-01 18:37:48 3307

原创 SRS启动流程

main函数main函数所在文件为main/srs_main_server.cpp中。该文件定义了一些全局变量:_srs_log:全局的log文件_srs_context:全局的context文件。是一个SrsThreadContext类,这个类使用map来存放协程指针到id的映射关系。std::map&lt;srs_thread_t, int&gt; cache;_srs_confi...

2018-11-01 18:10:05 4043

原创 SRS介绍.md

简介SRS(Simple RTMP Server)是一款开源的流媒体服务器,使用C++开发,文档详细,代码清晰。官网介绍如下:SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS还支持将接入的RTMP流进行各种变换,譬如将RTM...

2018-11-01 17:34:01 21575

原创 Linux安装cmake

最近编译leveldb发现cmake版本要求为3.9以上版本,故重新安装新版本的cmake.下载cmake 3.12.0 tar -xvf cmake-3.12.0.tar.gz 解压,进入cmake文件夹 tar -xvf cmake-3.12.0.tar.gz cd cmake-3.12.0/ 编译 sudo ./bootstrap &amp;&am...

2018-08-10 10:29:11 2526

原创 迭代器概念及traits编程技法.md

前言迭代器作为一个抽象概念,在程序设计中并没有直接对应于这个概念的实物。在设计模式中,iterator模式定义为:提供一种方法,能使之依序巡防某个容器所含元素,而无须暴露该容器的内部表达方式。3.1 迭代器设计思维–STL关键所在STL的核心思想:将容器和算法分离,彼此独立设计,然后用迭代器将两者撮合。3.2 迭代器是一种智能指针指针最常见的行为是内容提领(derefence)和成员访问(membe

2017-08-29 15:26:15 428

原创 腾讯2017暑假笔试题-查找二叉树的根

/*腾讯2017暑假笔试题-查找二叉树的根对于一个高度为k的满排序二叉树,给定k和三个数,找到这三个数的最小根节点*/#include <iostream>#include <vector>#include <algorithm>using namespace std;//v中3个已经排序过的元素int Help(int lo, int hi, vector<int>& v){

2017-04-04 11:45:50 538

原创 腾讯2017暑假实习笔试题-字符串编码

/*腾讯2017数据实习笔试题-字符串编码输入:16的倍数的字符串输出:编码后的结果例子输入:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl输出:00000010 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop0000002

2017-04-04 11:23:32 592

原创 大数运算-模拟

对于大数加法,减法和乘法都可以用模拟的方法来解决,对于除法(一直做减法),要使用加法和减法。大数乘法/*Leetcode 43. Multiply StringsGiven two numbers represented as strings, return multiplication of the numbers as a string.Note:The numbers can be a

2017-03-17 16:36:47 693

原创 Trie树(字典树)

Trie树(字典树)什么是Trie树Trie树是一种树形结构,用来统计和排序大量的字符串。优点是可以最大限度减少无畏的字符串比较,查询效率高。它插入和查询的时间复杂度都为O(k),其中k为key的长度。 Trie树是以空间换时间。用字符串的公共前缀来降低查询时间开销以达到提高效率的目的。Trie树的三个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上

2017-03-03 17:12:22 502

原创 并查集(UnionFind)

为什么引入并查集并查集的引入是为了解决动态连通问题。在动态连通场景中解决给定的两节点,判断它们是否连通,如果连通,不需要给出具体路径。(而对于要给出具体路径的问题可以采用DFS).什么是并查集在计算机科学中,并查集是一种树型的数据结构,其保持着用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。一般该数据结构定义了两种操作: - Find:确定一个元素属于哪个子集 - Unio

2017-03-02 16:01:35 303

原创 poj1611-并查集

/*poj 1611题目大意:0号学生感染了,和他一组的人也会感染,然后这些人在所在的其他组的人也会感染。那么现在求被感染的总人数。多组输入:第一行为学生数,组数接下来的每一组中第一个为学生的个数,后面为学生序号输出:计算被感染的总人数解题思路:并查集。用一个数组nums表示每一组中的人数,对每一组的人合并,并计算nums[0]即为被感染总数*/#include <iostream>

2017-03-02 16:00:18 294

原创 leetcode 257. Binary Tree Paths

/*leetcode 257. Binary Tree PathsGiven a binary tree, return all root-to-leaf paths.For example, given the following binary tree: 1/ \2 3\ 5All root-to-leaf paths are:["1->2->5", "1->3"]题

2017-02-24 10:53:18 313

原创 leetcode 101. Symmetric Tree

/*leetcode 101. Symmetric TreeGiven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric:1/ \2 2/ \ /

2017-02-23 10:52:55 239

原创 leetcode 112. Path Sum

TreeInclude.h:测试用#ifndef _TREE_INCLUDE_H_ #define _TREE_INCLUDE_H_#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;// 节点数据结构struct TreeNode{ int va

2017-02-23 10:22:54 198

原创 leetcode 111. Minimum Depth of Binary Tree

头文件在http://blog.csdn.net/charles1e/article/details/56479700/*leetcode 111. Minimum Depth of Binary TreeGiven a binary tree, find its minimum depth.The minimum depth is the number of nodes along the

2017-02-22 19:51:43 248

原创 leetcode 110. Balanced Binary Tree

头文件在http://blog.csdn.net/charles1e/article/details/56479700/*leetcode 110. Balanced Binary TreeGiven a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree

2017-02-22 18:54:07 270

原创 leetcode 404. Sum of Left Leaves

/*leetcode 404. Sum of Left LeavesFind the sum of all left leaves in a given binary tree.题目大意:求二叉树左叶子节点之和解题思路:1. 递归,遇到左叶子节点就求和2. BFS。*/#include "TreeInclude.h"#include <queue>class Solution1 {p

2017-02-22 16:42:14 207

原创 leetcode 107. Binary Tree Level Order Traversal II

头文件在http://blog.csdn.net/charles1e/article/details/56479700/*leetcode 107. Binary Tree Level Order Traversal IIGiven a binary tree, return the bottom-up level order traversal of its nodes' values. (ie

2017-02-22 15:55:51 260

原创 leetcode 501. Find Mode in Binary Search Tree

头文件说明:该头文件为一些简单是二叉树操作,提交leetcode时不需要,只是为了本地测试而已~#ifndef _TREE_INCLUDE_H_ #define _TREE_INCLUDE_H_#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;// 节点数据

2017-02-22 09:53:03 607

原创 leetcode 327. Count of Range Sum

/*leetcode 327. Count of Range SumGiven an integer array nums, return the number of range sums that lie in [lower, upper] inclusive.Range sum S(i, j) is defined as the sum of the elements in nums bet

2017-02-21 21:09:43 469

原创 leetcode 315. Count of Smaller Numbers After Self

/*leetcode 315. Count of Smaller Numbers After SelfYou are given an integer array nums and you have to return a new counts array. The counts array has the property where counts[i] is the number of sm

2017-02-14 11:28:02 277

原创 C++ priority_queue(优先队列)使用

优先队列:优先队列是一个容器,允许对数时间插入的代价,常熟市建的最大值(或者最小值)。 使用STL的std::priority_queue需要包含头文件queue定义如下:template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::val

2016-12-16 20:46:03 2640

原创 poj3253-贪心选择

/*por3242-Fence Repair题目大意:给定一个木条,锯成指定要求的长度,每锯一次花费是被锯成的两段长度之和。求最小的花费。解题思路:将小木条合并成一个大木条,贪心。每次都选取最小的长度合并。求最小的时候用优先队列。*/#include <cstdio>#include <queue>#include <vector>#include <iostream>#pragma

2016-12-16 20:44:45 506

原创 leetcode 240. Search a 2D Matrix II

/*leetcode 240. Search a 2D Matrix IIWrite an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted in ascending fr

2016-11-30 15:12:31 241

原创 LevelDB源码分析9-MemTable

Memtable中存放内存中的key-value,其提供了写入,删除以及读取k-v记录的接口。leveldb在插入时要保证key的顺序性,因此Memtalbe的核心数据结构是一个skip-list,Memtalbe只是一个接口类。Memtalbe为上层调用提供接口。class MemTable { public: // MemTables are reference counted. The

2016-11-30 11:14:55 481

数据结构与算法分析:C语言描述_原书第2版_高清版

数据结构与算法分析:C语言描述_原书第2版_高清版

2016-04-26

空空如也

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

TA关注的人

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