编程-C++
C++编程语言
goodluckcwl
有价值、有影响力的研究
展开
-
C动态分配内存
malloc分配内存时不初始化,calloc分配内存并进行初始化。原创 2015-11-13 13:56:52 · 288 阅读 · 0 评论 -
C++实践(五)C++实现认证算法:基于SHA-512的HMAC
基于SHA-512的HMAC算法SHA是使用最广泛的Hash函数。其家族有SHA-1,SHA-2(包括SHA-256/SHA-384/SHA-512)。SHA1与SHA2都使用了同样的迭代结构和模算术与二元逻辑操作。在本实验中,我们采用SHA-512。SHA-512算法SHA-512的逻辑算法的输入为长度小于128位的信息(实际实现中我们假定输入的信息长度小于64位), ...原创 2018-03-14 12:38:36 · 6164 阅读 · 4 评论 -
C++实践(四):C++实现AES-CMAC算法
AES-CMACAES-CMAC使用了高级加密标准作为组分。为了产生一个消息认证码,CMAC需要一个密钥,消息message及消息的长度length作为输入,输出是消息认证码。 AES-CMAC的核心是CBC-MAC。对于待加密消息M,应用CBC-MAC算法。在CMAC操作中有两种情况: 如果输入消息长度等于Block的整数倍,最后的Block M_n需要先于K1异或再进行处理; 如果输...原创 2018-03-14 12:16:28 · 12522 阅读 · 14 评论 -
C++实践(三):C++实现加密算法AES
本篇主要讲2015年写的加密算法。包括:AES,AES-CMAC,HMAC,基于RSA与HMAC的数字签名算法。当时大概写了2天。哈哈!AES算法AES是一个对称加密标准,用以取代DES的商业应用。其分组长度为128位,192位或者256位。 AES不同于典型的Feistel结构,在每一轮都使用代替和混淆来将整个数据分组作为一个单一的矩阵处理。对AES-128来说,输入的密钥被扩...原创 2018-03-14 12:06:49 · 23378 阅读 · 11 评论 -
C++实践(二)C++实现基于curl的RTSP通信
这篇记录我在2015年的时候写的一个从远程摄像头服务器读取视频流的工作。先介绍RTSP通信部分。RTSP协议RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控...原创 2018-03-14 11:48:48 · 5825 阅读 · 7 评论 -
C++实践(一)C++实现前馈神经网络
本篇主要讲2016年的时候写的一个神经网络,顺便复习以前的知识。需求想实现一个前馈神经网络,基于C++,性能会比较好。主要是因为当时Caffe等库依赖太多了,又没有其他开源的好用,顺便复习下C++。架构设计在现行的神经网络库里,Caffe采用以层为单位的抽象,优点是逻辑清晰,实现简便,但是需要手动实现梯度计算;而Tensorflow是以计算图为基础,封装好了每个算子,采用这...原创 2018-03-14 11:32:08 · 908 阅读 · 0 评论 -
STL源码剖析(三)迭代器
迭代器的设计思维STL的中心思想: 把数据容器和算法分开,彼此独立设计,最后以迭代器把他们胶合在一起。迭代器是一种智能指针主要讲实现迭代器需要做哪些工作:包括重载operator*和operator->。 要设计容器的迭代器,必须要了解容器的细节,所以迭代器的开发工作是和容器一起的。交由容器设计者设计。迭代器相应类型(associated type)难题 假...原创 2018-03-20 01:29:13 · 193 阅读 · 0 评论 -
STL源码剖析(二)空间配置器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...原创 2018-03-20 01:25:24 · 141 阅读 · 0 评论 -
STL源码剖析(一)STL简介
最近看了一点《STL源码剖析》这本书,觉得写得很不错,写个博客记录下。 本篇主要介绍STL的历史、意义。STL简介STL是C++的一个标准程序库,其具有划时代的意义。因为STL包含了先进的技术和编程思想。STL价值在于:STL提供了一套极具实用的组件,并带来了高层次的、以泛型为基础的系统化、条理化的软件组件分类学STL是一个抽象的概念库,这些抽象概念包含:迭代器、二元函数、序...原创 2018-03-20 01:23:46 · 293 阅读 · 0 评论 -
const限定符
const对象一旦创建不可更改其值,必须初始化。引用和const对常量的引用:如果对象是常量,只能把一个常量引用绑定到这个对象。指针和const指向常量的指针:这样的指针不会改变指针指向对象的值。 常量指针:指针是对象,若把指针定义为常量,则它必须初始化,一旦初始化完则指针的值不能发生改变,也就是指针的存放的对象的地址不能发生变化。 int x = 1; int *con...原创 2018-03-09 16:14:28 · 135 阅读 · 0 评论 -
指针和引用的区别
引用引用是对象的另一个名字,在定义引用时,程序把引用和它的初始值绑定在一起,一旦初始化完成,无法令引用绑定到另一个对象,因此引用必须初始化。为引用赋值,实际上是把值赋给引用绑定的对象。获取引用的值,实际上是获取了引用绑定对象的值。因此,引用作为参数,传进来的是原始的对象而不是其拷贝。引用本身不是对象指针指针本身就是一个对象,允许拷贝和赋值void* 指针:可以指向任...原创 2018-03-09 15:52:47 · 122 阅读 · 0 评论 -
C++学习
explicit关键字explicit关键字用来禁止隐式类型转换。原创 2016-07-18 12:23:39 · 256 阅读 · 0 评论 -
使用C++网络库libcurl
libcurl使用问题记录libcurl库的初始化和关闭curl_global_init()和curl_global_cleanup()。这两个函数并不是线程安全的。所以只能在主线程中进行一次的初始化和清除。curl_easy_perform一直阻塞很长时间没返回解决办法: 设置超时:curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30L)libcurl库使用总结转原创 2016-06-21 00:23:32 · 566 阅读 · 0 评论 -
使用C++视频播放器库libvlc
libvlc简介vlc是一个开源的视频播放器,并提供了库供二次开发,其视频解码库是ffmpeg,网络库是live555。原创 2016-06-28 14:06:34 · 3354 阅读 · 0 评论 -
C++项目使用的开源库记录
日志库:log4cplus网络库:libcurlxml库:tinyxml多媒体库:lib555视频解码库:ffmpeg原创 2016-03-19 11:30:08 · 325 阅读 · 0 评论 -
使用C++日志库log4cplus
用vs2015编译log4cplus,无法使用原创 2016-03-21 13:48:41 · 476 阅读 · 0 评论 -
C++实践(六):基于RSA与HMAC的数字签名算法及其原理
RSARSA算法的步骤如下:1、选择两个不同的大素数p与q 2、计算n=p*q 3、计算∅(n)=(p-1)(q-1) 4、选择整数e gcd(e, ∅(n))=1 1基于RSA与HMAC的数字签名算法及其原理数字签名是一种认证机制,它使得消息的产生者可以添加一个起签名作用的码字。通过计算消息的Hash值并使用产生者的私钥加密Hash值来生成签名。签名保证了消息来源和...原创 2018-03-14 12:45:44 · 3735 阅读 · 0 评论