c++
链巨人
这个作者很懒,什么都没留下…
展开
-
C++ Openssl AES GCM 128bits代码示例,可wins10的visual studio 2017 中直接运行
C++ Openssl AES GCM 128bits代码示例,可wins直接运行使用vcpkg安装64bits的openssl,本人当前的openssl为openssl-1.1.1d版本,wins10系统,使用visual studio2017编辑器注意事项:如果使用Openssl 1.0的版本,需要使用EVP_CIPHER_CTX ctx;来定义ctx对象。具体看下面链接:https://github.com/openssl/openssl/issues/962执行结果:代码://原创 2021-02-02 20:50:20 · 3122 阅读 · 2 评论 -
使用Crypto++的AES GCM对称加密
这里记录使用Crypto++的AES GCM对称加密的代码片段,可直接执行运行环境:Windows, Visual Studio 2017需安装Crypto++库,可使用cvpkg工具直接集成该库到visual Studio 中:vcpkg install cryptopp:x64-windows代码:#pragma warning(disable : 4996)#include <stdio.h>#include <iostream>#include <原创 2020-09-29 22:02:20 · 2047 阅读 · 0 评论 -
使用Crypto++ ecdsa 进行签名和认证
这里记录使用Crypto++ ecdsa 进行签名和认证的代码片段,可直接运行。运行环境:Windows, Visual Studio 2017需安装Crypto++库,可使用cvpkg工具直接集成该库到visual Studio 中:vcpkg install cryptopp:x64-windows代码:#include <iostream>#include <cryptopp/eccrypto.h>#include <cryptopp/osrng.h&原创 2020-09-29 21:57:22 · 1326 阅读 · 0 评论 -
C++多线程实现生产者消费者模式
这里记录C++多线程实现生成者消费者模式。代码执行环境:wins Visual Studio 2017执行逻辑:生产者和消费者公用一个队列作为临界资源,当队列满时生产者暂停生成;当队列为空时,消费者暂停消费。使用锁来保证队列中数据的一致性。执行结果截图:#include<iostream>#include<vector>#include<thread>#include<queue>#include<mutex>#include&原创 2020-09-23 14:39:05 · 2448 阅读 · 1 评论 -
使用ZMQ实现服务端和客户端的消息传递和消息队列
这里使用ZMQ_PAIR的连接模式,不是ZMQ_REP和ZMQ_REQ。如果使用ZMQ_REP和ZMQ_REQ模式,一方接收到消息之后需要回复,才能再接收消息。这里我们使用ZMQ_PAIR的模式,服务器端可以不断接收client发来的消息,放到一个消息队列中,使用另一个线程处理消息队列中的数据。这样做的好处是,如果发送者的发送速度过快,我们就可以把消息缓存到这个队列中。同时,我们其它组件也可以将消息直接放到这个队列中,以让服务器来处理。下面代码的功能:client给server发送多个消息,server将原创 2020-09-23 11:06:00 · 3551 阅读 · 2 评论 -
一个c/c++分布式框架ZMQ或者ZeroMQ, 介绍和win下安装使用方法
ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接模式,如扇出、发布-订阅、任务分发、请求-应答等。ZMQ的快速足以胜任集群应用产品。它的异步I/O机制让你能够构建多核应用程序,完成异步消息处理任务。ZMQ有着多语言支持,并能在几乎所有的操作系统上运行。ZMQ是iMatix公司的产品,以LGPL开源协议发布。本人在这次的系统中选择了这个框架,理原创 2020-08-10 15:08:33 · 4298 阅读 · 1 评论 -
C++ float转char,float数组转char数组
byte就是字节的意思。char占用1个字节的存储空间;float占4字节的存储空间。即char和float是1:4的大小关系。#include <iostream>using namespace std;void floatToBytesLittle(float value, unsigned char*cSendBuff, int pos){ unsigned short i = 0; float floatVariable = value; unsigned char原创 2020-07-10 12:06:41 · 8889 阅读 · 0 评论 -
Visual Studio 2017工程项目的几个重要文件解析
一般的VS项目目录结构为:解决方案(solution)名字xx.sln 配置文件工程名字1xx.vcxproj 配置文件xx.vcxproj.user 配置文件xx.vcxproj.filters 配置文件工程名字2xx.vcxproj 配置文件xx.vcxproj.user 配置文件xx.vcxproj.filters 配置文件…在visual...原创 2019-03-23 17:07:53 · 2767 阅读 · 0 评论 -
在windows下基于visual studio2017和CMake的安装Google glog
这里简单记录安装google glog在windows下基于visual studio2017的安装过程。下载https://github.com/google/glog使用cmake编译,编译结果存放在一个目录下,可命名为glog-built。在该目录下生成glob.sln文件使用visual studio2017打开glob.sln文件选择build–&amp;amp;gt;buil...原创 2019-01-13 15:13:21 · 2764 阅读 · 0 评论 -
ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
FROM: http://blog.csdn.net/sptoor/article/details/6203376很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇。 如果你使用的作业系统是 Linux、Mac 或其他非 Windows 平台,你可以忽略这篇文章;如果你使用的作业系统是 Windows 平台,转载 2017-09-03 14:25:48 · 594 阅读 · 0 评论 -
Visual Studio 2017 第三方依赖设置,附加依赖项和附加库目录
Visual Studio 2017 第三方依赖。需要做的事情有:1、指定头文件所在目录。2、指定需要使用到的lib。3、指定lib文件夹,也就是代码的实现部分所在的目录。附加依赖项 是指输入项,如某个.LIB文件。 附加库目录 是你用 #pragma comment(lib,”a.lib”)的时候;此时就搜索相应的库目录,直到找到a.lib文件。添加到附加依赖项 :LIB文件被真正包含进来了。原创 2017-09-02 21:38:52 · 39338 阅读 · 0 评论 -
排列和组合简单的递归思路以及C++实现
本文将讲解如何通过递归的方法实现全排列和组合,会详细讲解递归的思路,最后还会给出c++实现的源码。先前学习数据结构和算法的时候一直没有弄明白它们的递归思路,今日遇到,细一思考,发现并没有之前那么难,于是把码下来,同时记下思路。排列先讲排列:比如A B C D 四个字母的全排列就是下面24种ABCD, ABDC, ACDB, ACBD, ADBC, ADCB, BCDA, BCAD, BDAC, BD原创 2017-08-21 23:38:10 · 1215 阅读 · 0 评论 -
深入理解指针以及二级指针(指针的指针)
前言:本文将讲解指针的定义、指针变量和普通变量的本质区别、一级指针和二级指针的关系以及如何通过二级指针修改一级指针所指向的内存。文末还附加了两个实例,帮助读者加深对二级指针的理解。本文试图通过图表的方式,通俗地讲解指针和二级指针,让读者对此有深入的理解。阅读本文大概需要15分钟的时间。原创 2017-08-11 12:05:43 · 7980 阅读 · 6 评论 -
C++
复制构造函数1、形式:X::X(x&) 或者X::X(const X&), 不允许有:X::X(X)的构造函数。 2、起作用的三种情况 (1)当用一个对象去初始化同类的另一个对象的时候。 (2)如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的复制构造函数将被调用。 (3)如果函数的返回值是类A的对象的时候,函数返回时,A的复制构造函数被调用。例子1:#include <iostr原创 2017-08-06 21:19:53 · 333 阅读 · 0 评论 -
c++ demo: 单词转换
程序功能为:给定一个string,将它转换成为另一个string。程序的输入是两个文件,第一个文件保存一些规则,用来转换第二个文件的文本。每条规则由两部分组成:一个可能出现在输入文本中的单词和一个用来替换它的短语。表达的含义是,每当第一个单词出现在输入中时,就将它替换为对应的短语。第二个输入文件包含要转换的文本。 本人刚刚开始学习C++,从简单的程序入手,循序渐进。本程序来自primer c++中原创 2017-07-09 12:29:04 · 1008 阅读 · 0 评论 -
c++之const用法
const的用法,特别是用在函数后面在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。 在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。看到const关键字,C++程序员首先想到的可能是con转载 2017-07-07 16:56:53 · 292 阅读 · 0 评论 -
C++中引用&的用法和应用实例
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅 是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖 引玉的作用。一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明转载 2017-06-26 16:05:06 · 548 阅读 · 0 评论 -
C++ demo:文本搜索以及'指针的引用'的思考
功能:本程序允许用户在一个给定的文件中查询单词。查询结果是单词在文件中出现的次数及其所在行的列表。如果一个单词在一行中出现多次,此行只列出一次。行会按照升序输出,即第7行会在第9行之前显示。思路: 使用vector来保存整个输入文件的一份拷贝。输入文件中每一行保存为vector中的元素。当需要打印一行时,可以用行号作为下标来提取行文本。 使用istringstream来将每行分解为单词原创 2017-07-11 22:08:43 · 469 阅读 · 0 评论