- 博客(34)
- 收藏
- 关注
原创 Windows下glog的编译和使用
最近在项目中使用了glog库控制log的输出,在此记录下glog库的编译和使用的过程。首先我们来看如何编译glog1.从github上下载glog的源码。我们这里将源码下载到文件夹E:\3PartyLibrary下。2.然后使用cmake-gui生成vs解决方案。如下图所示。3.cmake的过程中需要注意图中6个用红色框框起来的部分。第一个是源码路径,选择我们代码存放的位置。第二个是生成解决方案的路径,我们在源码同级目录下创建一个文件夹,命名为glog-master-build。
2020-07-01 20:43:25 2978 1
原创 Visual Studio 常用扩展插件
最近整理了一下我的VS中常用的几个扩展插件,作以记录。1.Highlight all occurrences of selected word这个插件能够将当前文档中相同单词全部高亮。这个插件还有深色主题版,名字是Highlight all occurrences of selected word(for dark themes)2.End of the Line这个插件能够标识出行尾是CRLF还是LF,即使用的是Windows的换行符还是Linux的换行符。3.Line Endin
2020-07-01 17:48:57 1651
原创 树莓派的网络配置
经过了一个多月的等待,树莓派4B终于到货了。拿到手之后首先就是向SD卡中写入系统,上电启动。然后就是使用putty远程连接到树莓派(主要是资金有限,要不然就给树莓派配一套显示器鼠标键盘了,所以只能使用putty访问树莓派了。。。)。本文对如何使用putty连接到树莓派做以记录。1. 配置树莓派开启SSH树莓派的系统刚写到SD卡时是默认不开启SSH服务的。想要开启树莓派的SSH服务,最简单...
2019-09-15 20:05:15 3468
原创 Git首次配置
好久没有更新博客了,因为去年换了新工作,工作微忙,再加上比较懒,就一直没有写博客。因为最近新发布了树莓派4,准备入手玩一玩,就配置了Git,准备管理些代码。因为在这台电脑上是首次配置Git环境,所以写此博客记录下配置过程以及从github上下代码时遇到的问题。第一步:下载并安装git。Git是在官网下的,官网的网址是https://git-scm.com/。直接点击右侧的Downl...
2019-07-21 23:16:09 852 1
原创 MPlayer移植到arm开发板
今天用了一天的时间将mplayer移植到arm开发板上,移植过程中遇到各种问题,在此做以记录。mplayer版本:1.0rc2Ubuntu版本:12.04 64位移植过程:1、su获取root权限;2、解压mplayer;3、在解压的目录中mkdir output,作为安装目录;3、./configure配置。具体如下:./configure --enable-cross-compile \ ...
2018-06-14 19:56:01 2900
原创 多线程编程——线程间共享数据(临界区&互斥锁)
线程间共享数据的方法:1、全局对象;2、堆对象(动态创建的对象);任何时刻只允许一个线程对共享资源进行访问的方法:1、临界区(Critical Section);(首选)2、互斥锁(Mutex);临界区和互斥锁的区别: MutexCritical Section性能和速度慢(Mutex是内核对象,执行相关函数时
2018-01-14 13:57:01 1313
原创 多线程编程——信号量的第二种应用_允许有限的线程同时访问临界资源
本例中定义了一个信号量,该信号量只允许最多两个访问者同时对资源进行访问。而程序中有三个访问者,因此第三个访问者就要等前两个访问者结束后才能进行访问。与信号量的第一种应用(同步)不同的是,同步应用中,信号量的初始值是0,而本应用中,信号量的初始值为2,即允许同时访问资源的最大线程数。#include #include #include #include HANDLE hSemaph
2018-01-14 13:52:53 347
原创 多线程编程——线程间的通知机制(二)信号量
上一篇文章介绍了线程间通知机制的第一种方法,轮询方式。本文介绍线程间通知机制的第二种方法,使用信号量的方式。例:生产者向buffer中放入物品,放入物品后通知消费者有物品放入,消费者收到通知后去buffer中取物品并处理。(这也就是所谓的同步。同步的概念:a任务一直等待信号量,b任务定时释放信号量,完成同步功能)因为涉及到线程间共享数据,所以这里也要加上互斥锁。#include
2018-01-14 13:39:45 648
原创 多线程编程——线程间的通知机制(一)轮询
多线程编程中,有时需要线程之间相互通讯,例如生产者生产出产品后,需要通知消费者来取。这时就涉及到了线程间的通知机制。常用的线程间通知机制有两种,一种是轮询,另一种是信号量。本文介绍轮询方式,下一篇文章介绍信号量方式。所谓轮询机制就是说,当生产者生产出产品后,将产品放入buffer中,同时消费者不断地检测这个buffer是否有产品,如果有则取出,如果没有则继续不断地检测该buffer。下面通
2018-01-14 13:25:50 1852
原创 多线程编程——线程的创建
创建线程有两个函数可以使用:1、_beginthreadex()2、CreateThread()说明:1、前者是Mulit-Threads C Runtime库中的函数,后者是Windows API 库中的函数。2、前者是对后者的封装。3、前者使得每个线程都将拥有自己专用的一块内存区域来供标准C运行库中所有有需要的函数使用。4、如果线程中调用了C Run Time
2018-01-14 13:23:45 208
原创 UDP receive 代码
本代码为使用UDP协议接受信息的代码。#include #include int main(){ printf("接收方:port=9001...\n"); SOCKET sock; sockaddr_in local;//本地ip和端口 sockaddr_in remote;//远端ip和端口,先不用管,接收到信息后自动为其赋值 int addr_len = sizeo
2018-01-14 13:13:44 1338
原创 UDP send 代码
这里列出了两种方法,第一种是不指定本地端口号和ip,第二种是指定本地端口号和ip。首选第二种。方法一:#include #include int main(){ printf("发送方:\n"); SOCKET sock; sockaddr_in remote;//远端地址 int addr_len = sizeof(sockaddr_in); char buf[1
2018-01-14 13:10:42 2354
原创 TCP server 代码
本代码为tcp服务器端的C++代码,代码实现的功能是接受客户端的请求,当客户端发送来的信息时,回复“OK”字符串。服务器端工作原理:服务器首先开启一个socket,并一直监听这个socket。这时,程序在accept处阻塞。当有请求过来时,就会accept成功。accept成功后会返回一个新的socket,这个新的socket负责服务器与这个客户端的通讯。这时主线程新建一个子线程,并将
2018-01-14 13:07:37 516
原创 TCP client 代码
本代码为tcp客户端C++代码,代码功能是向服务器端发送"help me"字符串,如果服务器端有相应,就会向客户端回复一段字符串。因为客户端和服务器的程序都运行在本机上,因此,服务器的IP设置为本机IP即127.0.0.1,服务器的端口为9555。下面是客户端程序的代码。/*client*/#include #include #include #pragma comment(lib
2018-01-14 12:59:53 819
原创 JSON之——使用cJSON库
本文通过简单示例展示使用cJSON库进行JSON构造和解析的方法。构造的json字符串为:{"num":0,"str":"teststring"}#include #include "cjson\cJSON.h"#include #include using namespace std;int main(){ //构造 cJSON *json = cJSON_Cre
2018-01-13 17:16:52 2387
原创 JSON之——jsoncpp库
本文使用jsoncpp库,进行JSON的构造和解析的操作。本文构造的JSON字符串为:{"extra":null,"id":1001,"login":true,"name":"xiaoming"}一、构造Json::Value req;req["id"] = 1001;req["name"] = "xiaoming";req["login"] = true;req["extra
2018-01-13 16:29:04 512
原创 tinyxml(三)——简单的生成和解析示例
#include #include using namespace std;#include "../tinyxml/tinyxml.h"int test1(){ TiXmlDocument xml_doc; /*建立*/ //a TiXmlElement* xmlElemA = new TiXmlElement("A"); TiXmlText* xmlTextA = ne
2018-01-13 16:18:29 245
原创 tinyxml(二)——XML文件的解析
被解析的文件为test.xml,文件内容如下: AAA xiaoming 200801 解析该文件的C++程序如下:#include #include "../tinyxml/tinyxml.h"int main(){ // 解析xml TiXmlDocument xml_doc; if(!xml_doc.Load
2018-01-13 16:11:59 734 1
原创 tinyxml(一)——XML文件的生成
#include #include using namespace std;#include "../tinyxml/tinyxml.h"int test1(){ TiXmlDocument xml_doc; // 添加XML声明 xml_doc.LinkEndChild(new TiXmlDeclaration( "1.0", "GBK", "" )); // 添加根元
2018-01-13 16:04:53 633
原创 Linux笔记(7)-文件的压缩、打包与备份
一、压缩1、gzip(速度快,效果低)压缩命令:gzip [-ctv#] 文件名解压命令:gzip -d 文件名2、bzip2(速度中,效果中)压缩命令:bzip2 [-ckzv#] 文件名解压命令:bzip -d 文件名3、xz(速度慢,效果高)压缩命令:xz [-tlkc#] 文件名解压命令:xz -d 文件名二、打包打包命令:tar [-z/j/J
2017-07-24 10:59:58 457
原创 Linux笔记(6)-文件与目录管理
本文只列出文件与目录管理的基本命令及其功能,以便于查找。一、目录相关操作cd [相对路径或绝对路径] #变换目录pwd [-P] #显式目前的目录mkdir [-mp] 目录名称 #创建新目录rmdir [-p] 目录名称 #删除空目录二
2017-07-20 16:28:11 220
原创 Linux笔记(5)-文件权限
注:本文内容摘取至《鸟哥的Linux私房菜》一、文件属性命令:ls -al该命令能够显示出当前目录中所有文件的属性。文件属性的示意图如下所示:1、文件类型权限文件类型权限由10个符号组成,第一个表示文件类型,第二~四个表示文件拥有者的权限,第五~七个表示文件所属群组的权限,第八~十个表示其他人的权限。①第一个符号,即文件类型可以是以下五种中的一种:d
2017-07-17 17:07:29 443
原创 Linux笔记(4)-root权限与普通权限之间的切换
一、普通权限切换到root权限方法1:①命令:su该命令是切换当前的用户到root用户,输入该命令后会提示输入密码,这时要输入root密码。切换root后,不改变当前环境变量。②命令:su - 或 su - root该命令是切换当前的用户到root用户,输入该命令后会提示输入密码,这时要输入root密码。切换root后,会将环境变量变成root的家目录。方法2:命令:s
2017-07-17 10:51:00 757
原创 Linux笔记(3)-求助指令man和info
--help:使用方法:指令 --help基本上,如果是指令,那么通过--help就可以获取到该指令的选项和参数说明。man(manual简写):使用方法:man 指令功能:获取该指令的man page。使用方法:man -f 指令功能:获取与该指令有关的所有说明文档。使用方法:man -k 关键字功能:通过关键字查找说明文档,只要文档名或文档内
2017-07-17 08:56:48 309
原创 Linux笔记(2)-目录树结构
注:本文整理至网络/:根目录(点击“计算机”进入的就是这个目录),每一个文件和目录都从根目录开始;只有root用户具有该目录下的写限权。/bin:用户二进制文件,包含二进制可执行文件,用户使用的命令通常位于这里;/boot:引导加载程序文件;/dev:设备文件,包含连接到系统的任何设备;/etc:系统管理和配置文件;/home:主目录(家目录)。比如
2017-07-14 14:58:16 418
原创 matlab函数编译成库供C++调用(非常详细)
MATLAB具有着很高的计算性能,一些算法用MATLAB很容易实现,而用C++很难实现,如果想在C++中调用MATLAB编写的函数,可以将该函数编译成库文件,之后在C++中对其进行调用。本文详细讲解如何将MATLAB函数编译成库,并在C++中进行调用。方法可行,本人亲测。第一步、
2017-07-06 17:03:36 29608 33
原创 关于3D-HEVC中的SDC编码方式
在阅读3D-HEVC的相关文献时,经常会读到SDC这种编码方式,有的文献将其写成“Simplified Depth Coding”,也有的文献将其写成“Segment-wise DC Coding”。这部分一直令我很晕,因此趁今天有时间,就对关于SDC的提案进行了查找和研究并在此进行一个简单的总结。关于SDC的发展过程是这样的:SDC是在JCT3V的第二次会议中被首次提出的,当时的名称
2016-11-26 19:28:57 1225
原创 关于3D-HEVC中的Single Depth Intra Mode以及Depth Intra Skip Mode
最近在阅读有关3D-HEVC的论文时,经常会看到“Single Depth Mode”(SDM)这个模式,因此特意查找了一下相关资料,在此简单的做下笔记。参考文献是一篇JCT3V的提案,SDM模式就是在这个提案中被提出的:“Single depth intra mode for 3D-HEVC”,Yi-WenChen, Jian-Liang Lin,,JCT3V-H0087。这种模式是在编
2016-11-25 19:31:16 1146
原创 帧间预测:视频内容与最佳预测模式之间的关系(总结)
声明:本文大部分内容摘取至《基于H.264的视频编码处理技术与应用》(科学出版社,贾克斌、刘鹏宇、吕卓逸、邓智玭编著)一书。如有侵犯版权问题,请通知,本人立即删除。最近对H.264的编码框架进行整理和复习,在阅读《基于H.264的视频编码处理技术与应用》一书时,发现其中叙述“帧间预测模式和视频内容之间的相关性”一部分总结的非常好,特摘取过来,作为笔记。帧间预测过程中,最
2016-11-11 16:17:34 1967
原创 ffmpeg-3.1.5音频播放代码
本文代码在雷博的基础上进行了略微修改,实现播放音频的功能。使用ffmpeg-3.1.5 + SDL2雷博的代码链接:http://blog.csdn.net/leixiaohua1020/article/details/38979615修改了两个地方:(1)使用了新版本的ffmpeg API。(2)更改了部分变量的赋值,使程序能够适应各种音频序列。代码还不是完全理解,先记录下来。
2016-11-08 10:30:24 842
原创 ffmpeg-3.1.5视频+音频解码代码
之前文章中的代码只能解码视频数据,本文在之前的基础上加入了解码音频数据部分。与之前只能解码视频的代码相比,本文代码增加了audioCodecCtx和audioCodec的处理部分、循环解码音频流的部分、和音频输出文件的设置部分。解码后的音频为PCM格式,可以使用“audacity”软件进行分析。上代码。#include extern "C"{#include "include
2016-11-06 21:55:24 411
原创 ffmpeg-3.1.5视频解码代码
本文介绍利用ffmpeg-3.1.5编写最简单的视频解码的代码。对于使用ffmpeg进行解码的代码在网上已经有很多,例如最经典的雷博的代码:http://blog.csdn.net/leixiaohua1020/article/details/47068015由于新版本的ffmpeg中的函数和旧版本的函数有较大区别,因此本文列出了利用最新版的ffmpeg编写视频解码的代码。本代码只能解
2016-11-06 19:18:55 1370
原创 ffmpeg-3.1.5的配置
本文介绍ffmpeg的配置过程。1.下载include文件、lib文件和dll文件。先进入ffmpeg的官网:点击打开链接,不要直接点击页面上最大的那个“download”,而是点击左侧标签中的Download,再点击“Get the packages”中的windows图标,此时在图标下面会出现“Windows Builds”字样,点击进入之后会看到有三种包可以下载,分别是Sta
2016-11-06 18:30:51 768
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人