C/C++编程语言
文章平均质量分 75
本专栏主要介绍C/C++编程语言的相关知识。
liitdar
一位热爱计算机科学技术的软件工程师
展开
-
数据库连接池的实现方法(MySQL+C++)
这里对数据库连接池的实现代码进行简单地总结。原创 2020-08-27 11:14:44 · 7423 阅读 · 7 评论 -
ZeroC IceGrid中继承Ice::Application类构建demo的方法
继承Ice::Application类构建IceGrid demo时,实际上是对外提供接口的Ice服务(即server)继承了Ice::Application类。在IceGrid框架工作时,直接调用了该server程序。而使用IceBox搭建IceGrid时,则是通过icebox命令间接地调用了Ice服务。原创 2019-08-21 17:19:32 · 586 阅读 · 0 评论 -
ZeroC IceGrid介绍
IceGrid是为Ice服务提供的一个定位的、活化的服务。原创 2019-08-21 17:19:27 · 6133 阅读 · 2 评论 -
ZeroC Ice中继承Ice::Application类构建demo的方法
Ice::Application”类封装了所有的初始化和终止操作,用户在使用Ice::Application类时,就不需要过分关注初始化及相关异常,而将重点放在服务代码的实现上。要使用Ice::Application的相关功能,需要继承Ice::Application类、并在派生类中对Ice::Application类中的纯虚方法run进行具体实现,最终的Ice服务接口都是在run方法定义的。原创 2019-08-21 17:19:22 · 1036 阅读 · 0 评论 -
使用libevhtp搭建HTTPS SERVER(双向验证身份)的方法
本文主要介绍使用libevhtp搭建一个HTTPS SERVER(双向验证身份)的方法,非加密的HTTP SERVER搭建方法,请点击本文将针对“双向验证身份”场景,介绍HTTPS SERVER的搭建方法。“单向验证身份”的场景,请点击。有的时候,客户端通过输入账号和密码向服务器端展示自己的身份的方式太过繁琐,尤其是在客户端并不是一个人而只是一个程序的时候。这种情况下,我们希望客户端与服务端双方都利用一个身份证(certificate)、通过SSL/TLS协议向对方展示自己的身份。原创 2019-08-21 17:19:06 · 1592 阅读 · 1 评论 -
使用libevhtp搭建HTTPS SERVER(单向验证身份)的
本文主要介绍使用libevhtp搭建一个HTTPS SERVER(单向验证身份)的方法。非加密的HTTP SERVER搭建方法,请点击本文将针对“单向验证身份”场景,介绍HTTPS SERVER的搭建方法。“双向验证身份”的场景,请点击。一般的HTTPS服务都是只需要客户端验证服务器的身份就可以了。例如,我们想访问银行的网站,我们首先需要确认要访问的这个网站确实是真实的银行网站,而不是一个界面类似的、用来诱骗我们输入银行账号和密码的钓鱼网站,这就是我们作为客户端对银行进行身份验证的过程;原创 2019-08-21 17:19:01 · 2147 阅读 · 1 评论 -
libevhtp介绍
libevhtp是libevent's httpd API的一个快速、灵活的替代品。通过使用libevhtp,我们可以很容易地创建速度极快、安全的HTTP服务器。原创 2019-08-21 17:19:36 · 6312 阅读 · 0 评论 -
使用libcurl编写HTTP客户端的方法
libcurl属于curl的一部分,描述如下:从GitHub上下载curl源码,编译安装之后,就可以使用libcurl了。此外,也可以直接使用yum安装libcurl。curl的源码中,附带了一些libcurl的使用示例,示例位置如下:可以参考libcurl提供的示例代码,编写HTTP客户端(或者其他HTTP程序)。原创 2018-08-14 15:48:07 · 2381 阅读 · 1 评论 -
使用libevhtp编写HTTP服务器的方法
本文主要介绍使用libevhtp编写HTTP服务器的具体方法,编写的HTTP服务器可以接收HTTP客户端发送的GET/POST请求,并获取相应的请求参数。说明:本文中使用的编程语言为C++编程语言。原创 2018-08-01 10:09:10 · 2053 阅读 · 1 评论 -
“3Sum”类问题介绍
3Sum”类问题,属于已排序的“Two Sum”类问题的升级版,都是给定一个已排序(升序或降序)的整型数组,然后在该数组中寻找若干个值,这些值的总和等于给定的target值。原创 2023-04-03 21:37:41 · 703 阅读 · 1 评论 -
计数排序(Counting Sort)算法介绍
Counting sort是一种基于给定范围数值的排序技术。该算法首先计算给定输入序列(如数组)中每个对象的数量,同时将对象数量值存储在临时数组的对应索引处,最后通过一系列算术操作计算出每个对象在输出序列中的位置。原创 2023-03-29 18:49:15 · 848 阅读 · 0 评论 -
C++编程语言STL之begin和end函数介绍
c.begin()形式:返回指向容器首元素的iterator;begin(array)或begin(c)形式:返回数组的头指针。c.end()形式:返回指向紧挨尾元素的元素的iterator;end(array)或end(c)形式:返回紧挨数组尾指针的指针。说明:对于end函数来说,给定范围的“终止点”并不包含在给定范围内,而是紧挨着范围内最后一个可用元素的元素。c: 包括begin成员函数/end成员函数的容器;array: 任意类型的数组。原创 2023-03-29 11:36:47 · 3387 阅读 · 0 评论 -
C++编程语言STL之sort函数介绍
sort函数是C++的STL提供的用于对vector或array(中元素)进行排序的函数。sort函数通常使用两个参数,第一个参数是vector或array中待排序的起始点;第二个参数以起始点为基准、加上待排序的长度得到的终止点。sort函数也有第三个参数,当我们想要对元素进行灵活地(如“降序”等)排序时,就可以使用第三个参数了。默认情况下,sort函数以升序排序元素。原创 2023-03-29 10:49:14 · 377 阅读 · 0 评论 -
“Two Sum”类问题介绍
对于“Two Sum”类问题,基本要求为:给定一个整数数组,在该数组中找到两个元素,这两个元素之和等于给定的数字(target),返回这两个元素的索引(下标)值。原创 2023-03-28 11:12:42 · 289 阅读 · 0 评论 -
C++编程语言STL之set及相关容器介绍
关联容器(associative-container)和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。虽然关联容器的很多行为与顺序容器相同,但其不同之处反映了关键字的作用。关联容器支持高效的关键字查找和访问。两个主要的关联容器类型为map和set。map中的元素是一些关键字-值(key-value)对:“关键字”起索引的作用,“值”则表示与索引相关联的数据。set中每个元素只包含一个关键字。原创 2023-03-27 20:55:16 · 482 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度介绍
算法(Algorithm)是指用来操作数据、解决程序问题的方法。对于同一个问题,使用不同的算法,也许最终得到的结果是相同的,但在执行该算法所需的时间和(存储)资源可能会有很大的区别,那么我们应该如何去衡量不同算法之间的优劣呢?目前主要是从算法所占用的“时间”和“空间”两个维度去进行评价。时间维度是指执行算法所消耗的时间,通常用“时间复杂度”来描述,空间维度是指执行算法需要占用的内存空间大小,通常用“空间复杂度”来描述。原创 2023-03-19 18:07:39 · 1146 阅读 · 0 评论 -
树的几种遍历方法介绍
与线性数据结构(如数组、链表、队列、栈)只有一种遍历逻辑方法不同,树可以通过不同的方法进行遍历。常见的树的遍历方法包括:中序遍历(InOrder Traversal)、前序遍历(PreOrder Traversal)及后序遍历(PostOrder Traversal)。原创 2023-03-14 17:04:32 · 3664 阅读 · 0 评论 -
斐波那契数列(Fibonacci sequence)及相关问题介绍
本文主要介绍斐波那契数列(Fibonacci sequence)的相关知识,同时通过示例代码介绍相关问题的解决方法。原创 2023-03-14 15:59:36 · 433 阅读 · 0 评论 -
C++编程语言STL之stack介绍
适配器(adaptor)是STL中的一个通用概念。容器、迭代器和函数都有适配器。本质上,适配器是一种机制,它能使某种事物的行为看起来像另外一种事物。容器适配器接受一种已有的容器类型,使其行为看起来像另外一种不同的(容器)类型。stack就是STL定义的一种顺序容器适配器,其中的数据是以LIFO(Last In First Out)的方式组织的。原创 2023-03-09 16:37:46 · 639 阅读 · 0 评论 -
C/C++编程语言中指针(pointer)介绍
本文主要介绍C/C++编程语言中指针(pointer)的相关知识,同时通过示例代码介绍C/C++编程语言中指针的常见用法。原创 2022-02-26 20:07:24 · 3934 阅读 · 0 评论 -
MySQL数据库编程(C++)介绍
本文利用MySQL++接口实现基于C++编程语言的MySQL数据库编程。原创 2019-08-21 17:17:10 · 23988 阅读 · 1 评论 -
C/C++编程语言中指针变量作为函数参数的方法
本文通过几个示例程序,介绍在C/C++编程语言中,将指针变量作为函数参数的方法。原创 2019-08-21 17:15:30 · 7498 阅读 · 1 评论 -
使用JsonCpp编写JSON封装程序的方法
本文主要介绍使用JsonCpp库,通过C++编程语言编写JSON封装程序的具体方法。原创 2018-08-14 16:26:33 · 2023 阅读 · 1 评论 -
C++编程语言中调用函数时分号数量的影响
本文主要介绍在C++编程语言中,调用函数时后接分号数量的影响。在C++编程语言中,调用函数时即使后接两个分号,也不会报错。先说结论:通过实际测试,发现。调用函数时即使后接两个分号。这说明C++编程语言中,语法规则太宽松了:)原创 2018-12-24 11:26:05 · 1393 阅读 · 1 评论 -
C++编程语言中stringstream类介绍
sstream>定义了三个类和,分别用来进行流的输入、输出和输入输出操作。本文以stringstream为主,介绍流的输入和输出操作。主要用来进行数据类型转换,由于使用string对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险,而且,因为传入参数和目标对象的类型会被自动推导出来,所以也不存在错误的格式化符号的问题。简单说,相比C编程语言库的数据类型转换,更加安全、自动和直接。原创 2018-09-10 23:20:54 · 224873 阅读 · 22 评论 -
C++编程语言STL之queue介绍
适配器(adaptor)是STL中的一个通用概念。容器、迭代器和函数都有适配器。本质上,适配器是一种机制,它能使某种事物的行为看起来像另外一种事物。容器适配器接受一种已有的容器类型,使其行为看起来像另外一种不同的(容器)类型。queue就是STL定义的一种顺序容器适配器,其中的数据是以FIFO(First In First Out)的方式组织的。原创 2018-09-08 14:41:49 · 2624 阅读 · 1 评论 -
模块化程序设计(多文件编程)介绍
模块化程序设计是指在进行程序设计时,将一个大程序按照功能划分为若干小程序模块,每个小程序(即模块)完成一个特定的功能,然后在这些小程序之间建立必要的联系,通过这些小程序的互相协作,实现整个大程序功能的程序设计方法。这里需要说明的是,模块化程序设计(开发)并非专指多文件编程。模块化程序设计(开发)的重点在于小功能模块的设计和协作。多文件编程只是将(一个或多个)“小程序模块”打包在单独的文件中,以文件的形式进行呈现,形成了多文件编程形式。本文重点介绍多文件编程的方法。原创 2019-08-21 17:17:51 · 7683 阅读 · 0 评论 -
GoogleTest测试框架介绍(一)
本系列文章主要介绍GoogleTest(也称“GTest”)测试框架的相关知识,同时通过一些示例程序介绍GoogleTest测试框架的使用方法。本文为系列文章的第一篇,主要介绍GoogleTest测试框架的相关知识。原创 2019-01-03 19:04:38 · 32829 阅读 · 0 评论 -
GoogleTest测试框架介绍(二)
本系列文章主要介绍GoogleTest(也称“GTest”)测试框架的相关知识,同时通过一些示例程序介绍GoogleTest测试框架的使用方法。本文为系列文章的第二篇,主要通过一些示例程序介绍GoogleTest测试框架的使用方法。原创 2019-01-03 20:09:29 · 15244 阅读 · 0 评论 -
C++编程语言中的值传递(pass-by-value)和引用传递(pass-by-reference)介绍
综合对比上述两种函数参数传递方式,可以看出在C++编程语言中,一般情况下使用“引用传递”方式会更好。int FunA(const string strTest) // 值传递int FunB(const string & strTest) // 引用传递,这里加了const关键字,为常引用。优选。原创 2019-01-07 08:51:32 · 3322 阅读 · 7 评论 -
C/C++编程语言中volatile关键字介绍
volatile关键字,最早出现于19世纪70年代,被用于处理MMIO(Memory-mapped I/O)带来的问题。在引入MMIO之后,一块内存地址既有可能是真正的内存,也有可能是映射的一个I/O端口。因此,读/写一个内存地址,既有可能是真正地操作内存,也有可能是读/写一个I/O设备。那么MMIO为什么需要引入volatile关键字呢?a = *p;// 语句1b = *p;// 语句2*p = a;// 语句3*p = b;// 语句4在上述代码片段中,指针“p”既有可能指向一个。原创 2019-01-08 10:59:39 · 5336 阅读 · 1 评论 -
C++编程语言中异常处理(try-catch-throw)介绍
C++编程语言中的异常是指在程序运行时发生的特殊情况,例如除数为“0”的情况。异常机制提供了一种转移程序控制权的方式。C++编程语言中的异常处理涉及到三个关键字trycatchthrow。throw:当问题出现时,通过使用throw关键字让程序抛出一个异常;try:关键字try块中的代码被称为保护代码,该段代码可能会抛出异常。try关键字后通常跟着一个或多个catch块;catch:在想要处理异常的地方,使用catch关键字捕获异常,并进行相关的异常处理。原创 2019-01-09 08:41:36 · 3048 阅读 · 1 评论 -
JsonCpp的常见用法
本文主要介绍JsonCpp的常见用法。引用GitHub上对于JSON和JsonCpp的介绍,内容如下:可以使用JsonCpp的isNull()函数,判断json的value是否为空。isNull()函数信息如下:示例代码(json_check_null.cpp)的内容如下:编译并执行上述代码,结果如下:根据上面的执行结果,可知:原创 2018-08-24 16:41:10 · 4291 阅读 · 1 评论 -
C++编程语言中类对象的赋值与复制介绍(三)
重载赋值运算符的返回值需要是对象的引用,以进行链式赋值(obj3 = obj2 = obj1);而重载拷贝构造函数因为属于构造函数的一种,所以不需要返回值;重载赋值运算符要释放掉对象自身的heap空间(如果存在的话),以避免内存泄漏;而重载拷贝构造函数无需如此,因为拷贝构造函数函数是在创建(并初始化)对象时调用的,对象此时还没有分配heap空间;如果在重载赋值运算符和重载拷贝构造函数都可以解决问题时,建议选择重载拷贝构造函数,因为后者貌似坑少一些:)。原创 2018-08-21 11:03:59 · 6054 阅读 · 1 评论 -
C++编程语言中类对象的赋值与复制介绍(二)
public:// 普通构造函数// 自定义的拷贝构造函数// 打印成员变量的值private:int main()// 创建并初始化对象obj1,此处调用了普通构造函数// 创建并初始化对象obj2,此处调用了自定义的拷贝构造函数return 0;编译并执行上述代码,结果如下:上述执行结果表明,通过调用自定义的拷贝构造函数,在创建对象obj2时,根据对象obj1的成员变量的值,完成了自定义的初始化过程。原创 2018-08-20 20:33:21 · 4413 阅读 · 12 评论 -
C++编程语言中模板(template)介绍
泛型编程是一种代码编写方式,通过使用泛型编程,可以编写出独立于任何特定类型的代码。模板是泛型编程的基础,是创建泛型函数或类的蓝图(公式)。C++的STL(Standard Template Library)容器及其迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如vector,我们可以定义许多包含不同类型元素的vector,比如:“vector ”或“vector ”。C++的模板包括函数模板和类模板。原创 2018-06-05 20:51:03 · 8030 阅读 · 0 评论 -
C++编程语言中string类介绍
string类是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和C语言的字符串之间有着良好的接口。原创 2019-08-21 17:21:17 · 310939 阅读 · 12 评论 -
C++编程语言中成员运算符介绍
点号运算符“.”和箭头运算符“->”用于引用类、结构体和共用体的成员。点号运算符应用于实际的对象;箭头运算符与一个指向对象的指针一起使用。int age;} stu;现要把值“liitdar”赋给对象stu的name成员,分别以点号运算符和箭头运算符实现。1. 使用点号运算符实现。使用具体对象名访问结构体(或类、共用体)的成员时,使用点运算符;而通过指针访问结构体(或类、共用体)的成员时,使用箭头运算符。原创 2019-08-21 17:20:28 · 5700 阅读 · 2 评论 -
C++编程语言中赋值运算符重载函数(operator=)介绍
首先介绍为什么要对赋值运算符“=”进行重载。某些情况下,当我们编写一个类的时候,并不需要为该类重载“=”运算符,因为编译系统为每个类提供了默认的赋值运算符“=”,使用这个默认的赋值运算符操作类对象时,该运算符会把这个类的所有数据成员都进行一次赋值操作。int b;int c;对这个类的对象进行赋值时,使用默认的赋值运算符是没有问题的。int b;int c;原创 2018-06-11 18:27:00 · 111831 阅读 · 34 评论 -
C++编程语言中重载运算符(operator)介绍
operator是C++的一个关键字,它和运算符(如“=”)一起使用,表示一个运算符重载函数,在理解时可将operator和待重载的运算符整体(如“operator=”)视为一个函数名。使用operator重载运算符,是C++扩展运算符功能的方法。使重载后的运算符的使用方法与重载前一致;扩展运算符的功能只能通过函数的方式实现。(实际上,C++中各种“功能”都是通过函数实现的)原创 2018-06-11 16:40:12 · 208057 阅读 · 22 评论