8 小麒麟666

尚未进行身份认证

暂无相关简介

等级
TA的排名 1w+

RabbitMQ C 客户端收发数据实例解析

rabbitmq-c客户端,github地址:https://github.com/alanxz/rabbitmq-crabbitmq-c是一个C语言操作的AMQP客户端库,用来与RabbitMQ broker进行交互Building and installing:需要:CMake2.6或以上版本1、下载安装包后解压,进入主目录,2、mkdir build && cd build ...

2018-03-02 18:42:48

RabbitMQ图解

RabbitMQ是一个消息队列软件,称为消息代理或队列管理器。简单地说, 这是一个可以定义队列的软件,应用程序可以连接到队列并将消息传输到队列中。消息可以包括任何类型的信息。 例如,它可以具有从另一个应用程序(可能在另一个服务器上)开始的进程/任务的信息,或者它可以只是一个简单的文本消息。队列管理器软件存储消息,直到接收应用程序连接并从队列中取出消息。然后接收应用程序以适当的方式处理消息。Rabb...

2018-02-23 19:43:58

C++11智能指针(六):unique_ptr介绍与例子

本节介绍下c++11提供的智能指针实现: std::unique_ptr<>什么是std::unique_ptrunique_ptr <>是c ++ 11提供的智能指针实现之一,用于防止内存泄漏。unique_ptr对象包含一个原始指针,并负责其生命周期。当这个对象被销毁的时候,它的析构函数会删除关联的原始指针。unique_ptr有重载的- >和*运算符,所以它可以...

2018-02-12 10:31:10

C++11智能指针(五):shared_ptr的循环引用的问题及weak_ptr

shared_ptr的主要优点是当不再使用时会自动释放相关的内存。但是如果我们不仔细使用shared_ptr,那么这个优势就会变成一个劣势。 我们来看看:假设我设计一个二叉树,并在其中包含一个指向左右子节点的指针。#include <iostream>#include <memory>class Node { int value; public: std::...

2018-02-12 10:30:27

C++11智能指针(四):创建shared_ptr对象

1、尽量不要使用相同的原始指针来创建多个shared_ptr对象,因为在这种情况下,不同的shared_ptr对象不会知道它们与其他shared_ptr对象共享指针。这样会造成什么样的问题?设想两个shared指针由相同的原始指针创建:int *rawPtr = new int();std::shared_ptr<int> ptr_1(rawPtr);std::shared_ptr...

2018-02-11 16:49:52

c++11智能指针(三):shared_ptr和指针

本节对比一下C++11智能指针的实现shared_ptr和普通的指针从以下几个方面比较:++,--和[]操作符相比于原始指针,shared_ptr只提供这些运算符:1) ->, *2) 比较运算符但是,shared_ptr不提供1) 指针运算比如+,-,++,--2) Operator []例子:#include <iostream>#include <memory&gt...

2018-02-09 11:53:27

c++11智能指针(二):shared_ptr和自定义的Deleter

本节讨论怎样使用 std::shared_ptr自定义Deleter.当一个shared_ptr对象超出作用域时,其析构函数被调用,在析构函数中,将其引用计数减1,如果引用计数的值变为0,则删除关联的原始指针。要删除析构函数中的内部原始指针,默认情况下,shared_ptr调用delete()函数,即delete Pointer;但是,我们在析构函数中并不总是要使用delete函数,还可能有其他的...

2018-02-06 17:48:30

C++11智能指针(一):shared_ptr介绍与实例

什么是std::shared_ptr<>?std::shared_ptr<>是c++11中引入的一种智能指针,它足够聪明,如果指针不在任何地方使用,就会自动删除指针。这可以帮助我们彻底消除内存泄露和悬挂指针的问题。shared_ptr和共享所有权它遵循共享所有权的概念,即不同的shared_ptr对象可以与相同的指针相关联,并且在内部使用引用计数机制来实现。每个shared...

2018-02-05 15:16:55

zookeeper C API 完整运行实例

介绍下每个组件代码流摘要Master:1、获取leadership前2、尝试创建主znode3、如果通过,则获取leadership4、连接丢失后,需要检查znode是否存在以及谁拥有它5、一旦确定他人拥有它,Watch主znode6、获取leadership后7、Get workers8、在worker list上设置一个watcher9、检查

2018-01-24 14:54:38

linux下使用zookeeper C API开发zookeeper应用的方法介绍

1、配置开发环境构建ZooKeeper本地库的最简单的方式是使用ant构建工具。在你解压缩的ZooKeeper发行包的目录中,有一个名为build.xml的文件,该文件包含了ant构建所需的构建步骤。你还需要用到automake、autoconf和cppunit这些工具,如果你使用Linux操作系统,需要确保这些工具在你的主机中可用。一旦安装了所有必需的工具,你可以采用以下方式构建ZooKeepe

2018-01-18 10:30:27

c++11多线程编程(十):packaged_task<>介绍与实例

本节讨论c++11中std::packaged_task的特性与使用方法std::packaged_taskstd::packaged_task是一个类模板,代表一个异步任务。封装了1、可调用实体,即函数,lambda函数或函数对象2、一个共享状态,通过关联的回调来存储返回的值或抛出的异常。假设我们有一个现有的函数从数据库中提取数据并返回,//从DB获取数据std

2017-12-27 10:36:35

c++11多线程编程(九):std::async介绍与实例

本节讨论下在C++11中怎样使用std::async来执行异步task。C++11中引入了std::async什么是std::asyncstd::async()是一个接受回调(函数或函数对象)作为参数的函数模板,并有可能异步执行它们.templatefuture::type> async(launch policy, Fn&& fn, Args&&...args);std

2017-12-27 10:33:37

C++Primer第五版中的c++11特性归纳(六)

五十一、通过定义类为final来阻止继承有时我们会定义这样一种类,我们不希望其他类继承它,或者不想考虑它是否适合作为一个基类。为了实现这一目的,C++11新标准提供了一种防止继承的方法,即在类名后面跟一个关键字final:class NoDerived final {/**/}; //NoDerived不能作为基类五十二、虚函数的override和final指示符在c++1

2017-12-21 15:19:18

C++Primer第五版中的c++11特性归纳(五)

四十一、auto不能用于分配数组虽然我们用空括号对数组中的元素进行值初始化,但不能在括号中给出初始化器,这意味着不能用auto分配数组。四十二、动态分配数组的列表初始化在新标准中,我们可以提供一个元素初始化器的花括号列表://10个int分别用列表中对应的初始化器初始化int *pia = new int[10]{0,1,2,3,4,5,6,7,8,9};//10个string,前4个用给定的...

2017-12-21 15:17:50

C++Primer第五版中的c++11特性归纳(四)

三十一、容器的非成员函数swap在新标准库中,容器既提供成员函数版本的swap,也提供非成员版本的swap。而早期标准库版本只提供成员函数版本的swap。非成员版本的swap在泛形编程中是非常重要的。统一使用非成员版本的swap是一个好习惯。三十二、容器insert成员的返回类型在新标准下,接受元素个数或范围的insert版本返回指向第一个新加入元素的迭代器。(在旧版本中,这些

2017-12-14 15:36:53

C++Primer第五版中的c++11特性归纳(三)

二十一、使用decltype简化返回类型定义如果我们知道函数返回的指针指向哪个数组,就可以使用decltype关键字声明返回类型。例如,下面的函数返回一个指针,该指针根据参数i的不同指向两个已知数组中的某一个int odd[] = {1,3,5,7,9};int even[] = {0,2,4,6,8};//返回一个指针,该指针指向含有5个整数的数组decltype(odd) *ar

2017-12-14 15:36:23

C++Primer第五版中的c++11特性归纳(二)

十一、vector对象的列表初始化c++11新标准提供了另外一种为vector对象的元素赋初值的方法,即列表初始化。此时,用花括号括起来的0个或多个元素值被赋给vector对象:vector v1 = {"a", "an", "the"}; //列表初始化vector v2 = ("a", "an", "the"); //错误 十二、容器的cbegin和cend函数begin和e

2017-12-10 14:52:19

C++Primer第五版中的c++11特性归纳(一)

C++Primer第五版对C++11的特性做了详细的介绍,现在对其做一个大致的归纳一、long long类型在C++11中,标准要求long long整型可以在不同平台上有不同的长度,但至少有64位。我们在写常数字面量时,可以使用LL后缀(或是ll)标识一个long long类型的字面量,而ULL(或ull、Ull、uLL)表示一个unsigned long long类型的字面

2017-12-10 14:45:18

c++11多线程编程(八):std::future , std::promise和线程的返回值

std::future对象可以和asych,std::packaged_task,std::promise一起使用。这篇文章集中讨论std::future和std::promise。我们经常会遇到需要得到线程返回结果的情况,现在的问题是我们如何实现。举个例子:假设在程序中,我们创建了一个压缩给定文件夹的线程,并且我们希望该线程能够返回新的zip文件的名称和大小。有两种实现方式:

2017-11-30 15:07:08

c++11多线程编程(七):条件变量说明

条件变量条件变量是一种用于在2个线程之间进行信令的事件,一个线程可以等待它得到信号,其他的线程可以给它发信号。在c++11中,条件变量需要头文件:#include 同时,条件变量还需要一个mutex锁条件变量实际上是如何运作的·线程1调用等待条件变量,内部获取mutex互斥锁并检查是否满足条件;·如果没有,则释放锁,并等待条件变量得到发出的信号(线程被阻塞),条

2017-11-23 10:41:38

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!