12 fengbingchun

尚未进行身份认证

从事于图形图像处理视频分析并行计算硬件加速算法优化等相关技术开发。

等级
TA的排名 75

More Effective C++35个改善编程与设计的有效方法笔记

ScottMeyers大师Effective三部曲:EffectiveC++、MoreEffectiveC++、EffectiveSTL,这三本书出版已很多年,后来又出版了EffectiveModernC++。这里是MoreEffectiveC++的笔记:1.指针与引用的区别voidprintDouble(constdoubl...

2019-11-09 19:36:51

通过libjpeg-turbo实现对jpeg图像的解码

之前在https://blog.csdn.net/fengbingchun/article/details/89715416中介绍过通过libjpeg-turbo接口实现将数据编码或压缩成jpeg数据并通过FILE的fwrite接口将其直接保存成*.jpg图像,当时用的是libjpeg的接口,其实还可以使用turbojpegapi的接口即tjCompress2实现对数据的编码,见下面的code:...

2019-10-31 14:22:49

通过Windows DShow获取设备名、支持的编解码及视频size列表实现

之前在https://blog.csdn.net/fengbingchun/article/details/102641967中介绍过通过DShow获取Camera视频的实现,即调用VideoCapture类。在OpenCV的VideoCapture类中并没有提供获取Camera设备列表、支持的编解码类型列表及支持的videosize列表接口,这里基于已有的VideoCapture类增加对这些的...

2019-10-29 19:21:59

Effective C++改善程序与设计的55个具体做法笔记

ScottMeyers大师Effective三部曲:EffectiveC++、MoreEffectiveC++、EffectiveSTL,这三本书出版已很多年,后来又出版了EffectiveModernC++。这里是EffectiveC++的笔记:1.视C++为一个语言联邦(ViewC++asafederationoflanguages)最简单的方法将C+...

2019-10-26 21:37:59

OpenCV代码提取:Windows上通过DShow获取Camera视频

在OpenCV3.1中获取视频的模块在videoio(videoinputandoutputmodule)中,调用VideoCapture类接口,除了videoio模块外还依赖core、highgui、imgproc、imgcodecs四个模块,而OpenCV2.4.13.6仅需要core、highgui、imgproc三个模块。3.1中的videoio模块其实是将2.4.13.6h...

2019-10-19 19:20:19

程序员的自我修养--链接、装载与库笔记:总结

《程序员的自我修养----链接、装载与库》这本书是2009年出版的,书中有些内容的介绍可能已经过时,已不再适用于现在的C/C++开发,而且书中展示的结果均是在32位机上进行的操作,这里全部是在64位进行的操作。这里是基于之前所有笔记的简单总结,笔记列表如下:编译和链接:https://blog.csdn.net/fengbingchun/article/details/88699951...

2019-10-06 14:49:33

程序员的自我修养--链接、装载与库笔记:系统调用与API

系统调用(SystemCall)是应用程序(运行库也是应用程序的一部分)与操作系统内核之间的接口,它决定了应用程序是如何与内核打交道的。无论程序是直接进行系统调用,还是通过运行库,最终还是会到达系统调用这个层面上。1.系统调用介绍什么是系统调用:在现代的操作系统里,程序运行的时候,本身是没有权利访问多少系统资源的。由于系统有限的资源有可能被多个不同的应用程序同时访问,因此,如果不加以保...

2019-10-05 19:31:25

程序员的自我修养--链接、装载与库笔记:运行库

1.入口函数和程序初始化程序从main开始吗?:操作系统装载程序之后,首先运行的代码并不是main的第一行,而是某些别的代码,这些代码负责准备好main函数执行所需要的环境,并且负责调用main函数,这时候你才可以在main函数里放心大胆地写各种代码:申请内存、使用系统调用、触发异常、访问I/O。在main返回之后,它会记录main函数的返回值,调用atexit注册的函数,然后结束进程。...

2019-10-05 12:57:23

程序员的自我修养--链接、装载与库笔记:内存

1.程序的内存布局现代的应用程序都运行在一个内存空间里,在32位的系统里,这个内存空间拥有4GB(2的32次方)的寻址能力。应用程序可以直接使用32位的地址进行寻址,这被称为平坦(flat)的内存模型。在平坦的内存模型中,整个内存是一个统一的地址空间,用户可以使用一个32位的指针访问任意内存位置。大多数操作系统都会将4GB的内存空间中的一部分挪给内核使用,应用程序无法直接访问这一段内存,这一...

2019-09-30 17:03:46

程序员的自我修养--链接、装载与库笔记:Windows下的动态链接

Windows下的PE的动态链接与Linux下的ELF动态链接相比,有很多类似的地方,但也有很多不同的地方。1.DLL简介DLL即动态链接库(Dynamic-LinkLibrary)的缩写,它相当于Linux下的共享对象。Windows系统中大量采用了这种DLL机制,甚至包括Windows的内核的结构都很大程度依赖于DLL机制。Windows下的DLL文件和EXE文件实际上是一个概念,...

2019-09-29 21:42:45

程序员的自我修养--链接、装载与库笔记:Linux共享库的组织

共享库(SharedLibrary)概念:其实从文件结构上来讲,共享库和共享对象没什么区别,Linux下的共享库就是普通的ELF共享对象。由于共享对象可以被各个程序之间共享,所以它也就成为了库的很好的存在形式,很多库的开发者都以共享对象的形式让程序来使用,久而久之,共享对象和共享库这两个概念已经很模糊了,所以广义上我们可以将它们看作是同一个概念。1.共享库版本共享库兼容性:共享库的开发...

2019-09-28 13:21:13

程序员的自我修养--链接、装载与库笔记:动态链接

1.为什么要动态链接静态链接诸多缺点,比如浪费内存和磁盘空间、模块更新困难等。内存和磁盘空间:静态链接的方式对于计算机内存和磁盘的空间浪费非常严重,特别是在多进程操作系统情况下。程序开发和发布:空间浪费是静态链接的一个问题,另一个问题是静态链接对程序的更新、部署和发布也会带来很多麻烦。一旦程序中有任何模块更新,整个程序就要重新链接、发布给用户。如果程序都使用静态链接,那么通过网络来更...

2019-09-21 21:30:05

C语言中select函数简介及使用

select函数用来检查套接字描述符(socketsdescriptors)是否已准备好读/写,提供了一种同时检查多个套接字的方法。Linux中select函数的声明在/usr/include/x86_64-linux-gnu/sys/select.h文件中,Windows下select函数的声明在WinSock2.h文件中,声明如下://Linuxintselect(intn...

2019-09-14 20:27:40

程序员的自我修养--链接、装载与库笔记:可执行文件的装载与进程

可执行文件只有装载到内存以后才能被CPU执行。1.进程虚拟地址空间程序和进程有什么区别:程序(或者狭义上讲可执行文件)是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件;进程则是一个动态的概念,它是程序运行时的一个过程,很多时候把动态库叫做运行时(Runtime)也有一定的含义。每个程序被运行起来以后,它将拥有自己独立的虚拟地址空间(VirtualAddressSp...

2019-09-13 15:06:15

gRPC简介及简单使用(C++)

gRPC是一个现代的、开源的、高性能远程过程调用(RPC)框架,可以在任何平台运行。gRPC使客户端和服务器端应用程序能够透明地进行通信,并简化了连接系统的构建。gRPC支持的语言包括C++、Ruby、Python、Java、Go等。gRPC默认使用Google的ProtocolBuffers,关于ProtocolBuffers的介绍可以参考:https://blog.csdn.net/f...

2019-09-08 13:35:47

在Windows和Linux上编译gRPC源码操作步骤(C++)

gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程。Windows7/10vs2103编译gRPC源码操作步骤:1.需要本机已安装Git、CMake、Perl、Go、yasm;2.依次执行如下命令:gitclonehttps://github.com/grpc/grpcgitcheckoutv1.23.xgitsu...

2019-09-07 21:36:06

C语言中access/_access函数的使用

在Linux下,access函数的声明在<unistd.h>文件中,声明如下:intaccess(constchar*pathname,intmode);access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可写(W_OK)、可执行(X_OK)权限。F_OK、R_OK、W_OK、X_OK这四种方式通过access函数...

2019-09-02 18:29:41

基于Hash的消息认证码HMAC简介及在OpenSSL中使用举例

HMAC(Hash-basedMessageAuthenticationCode):基于Hash的消息认证码,是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。HMAC运算利用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出。使用消息摘要算法MD2、MD4、MD5、S...

2019-08-31 20:36:55

对称加密算法AES简介及在OpenSSL中使用举例

高级加密标准(AES,AdvancedEncryptionStandard)由美国国家标准和技术协会(NIST)于2000年公布,它是一种对称加密算法,用来替代DES。AES也称为Rijndael算法,是由两个比利时密码学家VincentRijmen和JoahDaemen开发的,他们的姓氏作为这个加密的名字。严格来说,AES和Rijndael加密算法并不完全一样。关于DES的介绍可以...

2019-08-29 15:48:50

FFmpeg中可执行文件ffmpeg用法汇总

从https://ffbinaries.com/downloads下载最新的4.1版本的Windows64位FFmpeg,FFmpeg是一个快速的音频/视频转换工具,FFmpeg可以作为一个命令行程序单独使用。通过执行以下命令将FFmpeg信息重定位到ffmpeg_help.txt文件中便于查看,其内容如下,FFmpeg使用方法为:ffmpeg.exe[options][[infile...

2019-08-18 19:21:02

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力计划专属勋章
    原力计划专属勋章
    参与原力计划活动,成功进入英雄榜即可获得