![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
cpp
cpp
conetwo
csdn
展开
-
Protobuf的RPC框架原理
链接: 基于Protobuf的简单RPC框架实现原理.链接: protobuf基本用法详解.转载 2021-11-23 17:31:47 · 328 阅读 · 0 评论 -
在Ubuntu环境下使用vcpkg
https://blog.csdn.net/CHYabc123456hh/article/details/109557324转载 2021-11-14 13:54:25 · 1596 阅读 · 0 评论 -
现代CMake的使用(转)
现代CMake的设计理念和使用:.现代CMake项目中的依赖管理:.转载 2021-11-06 21:50:48 · 138 阅读 · 0 评论 -
条件变量的pthread_cond_wait/wait
条件变量的wait转载 2021-11-04 17:14:49 · 81 阅读 · 0 评论 -
C++变参模板类
C++变参模板类:转载 2021-11-04 15:54:27 · 233 阅读 · 0 评论 -
C++11可变模版参数的妙用
链接:.转载 2021-11-04 09:16:18 · 67 阅读 · 0 评论 -
C++11 信号槽 signal/slot / boost::signals::signal的使用方法
链接: .转载 2021-10-21 23:16:58 · 449 阅读 · 0 评论 -
Protobuf serialize到char*,(C++)
Protobuf 序列化到char*,便于在网络传输。链接: link.转载 2021-08-15 17:11:41 · 297 阅读 · 0 评论 -
Thrift实践(转)
链接: link转载 2021-08-12 17:54:44 · 68 阅读 · 0 评论 -
Log4Qt 使用笔记(转)
链接: link.转载 2021-08-09 14:46:15 · 89 阅读 · 0 评论 -
服务端处理事件的两种模式--Reactor和Proactor (转载)
服务端处理事件的两种模式–Reactor和Proactor链接: link.转载 2021-03-26 16:54:05 · 89 阅读 · 0 评论 -
redis异步实现订阅和发布(C++)
发布订阅模式订阅、取消订阅和发布实现了发布/订阅消息范式,发布者不是计划发送消息给特定的订阅者。而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的。示例使用libevent库、boost库、 hiredis库等,因为是基于异步的发送和接收,需要回调函数来返回确认相关的信息。发布者模块// redis_publisher.h封装了hiredis,实现消息发布给redis的功能。#ifndef REDIS原创 2021-03-22 16:25:39 · 3011 阅读 · 0 评论 -
C++操作redis
一般使用的就是hiredis这个库文件,在hiredis上封装一层,封装成面向对象的方法。redis.h#ifndef _REDIS_H_#define _REDIS_H_#include<stdio.h>#include<iostream>#include<string>#include<hiredis/hiredis.h>using namespace std;class Redis{public: Redis(){} ~Re原创 2021-03-22 10:21:39 · 400 阅读 · 0 评论 -
ZeroMQ---推拉模式
概述推拉模式,PUSH发送,send。PULL方接收,recv。PUSH可以和多个PULL建立连接,PUSH发送的数据被顺序发送给PULL方。比如你PUSH和三个PULL建立连接,分别是A,B,C。PUSH发送的第一数据会给A,第二数据会给B,第三个数据给C,第四个数据给A。一直这么循环。最上面是产生任务的 分发者 ventilator中间是执行者 worker下面是收集结果的接收者 sink代码Ventilator.cpp#include <zmq.h>#include &l原创 2021-03-17 16:50:04 · 730 阅读 · 0 评论 -
ZeroMQ---订阅发布模式
概述ZeroMQ的订阅发布模式是一种单向的数据发布,当客户端向服务端订阅消息之后,服务端便会将产生的消息源源不断的推送给订阅者。一个发布者,多个订阅者的关系(1:n),当发布者数据变化时发布数据,所有订阅者均能够接收到数据并处理,这就是发布/订阅模式。发布者使用PUB套接字将消息发送到队列中,订阅者使用SUB套接字从队列中源源不断的接收消息。新的订阅者可以随时加入,但之前的消息是无法收到的。已有的订阅者可以随时退出。订阅者还可以增加“过滤器”用来有选择性的接收消息。代码pub.cpp#incl原创 2021-03-17 15:03:39 · 670 阅读 · 0 评论 -
ZeroMQ---请求回应模式01
ZeroMQZeroMQ简述zeromq是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ 把通讯的需求看成四类。其中一类是一对一结对通讯,用来支持传统的 TCP socket 模型,但并不推荐使用。常用的通讯模式只有三类:请求回应模型。由请求端发起请求,并等待回应端回应请求。请求端和回应端都可以是 1:N 的模型。通常把 1 认为是 server ,N 认为是 Client 。ZeroMQ 可以很好的支持路由功能原创 2021-03-16 19:38:49 · 291 阅读 · 0 评论 -
Linux编程中的坑-C++中exit和return的区别
https://blog.csdn.net/weixin_34148456/article/details/85900320?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-3转载 2020-06-17 10:57:06 · 224 阅读 · 0 评论 -
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值https://blog.csdn.net/wyyzsl212328/article/details/23860785欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本...转载 2020-04-20 20:29:45 · 148 阅读 · 0 评论 -
异常类以及noexcept
异常类型之定义了一个名为what的成员函数,该函数没有任何参数,返回值是一个指向c风格的字符串const char *exception头文件定义了最通用的异常类exception. 它只报告异常的发生,不提供任何额外信息。stdexcept头文件定义了几种常见的类型new头文件定义了bad_alloc异常类型type_info头文件定义了bad_cast类型原创 2016-08-19 22:05:17 · 298 阅读 · 0 评论 -
C++虚基类, 虚继承
共享的基类子对象称为虚基类,在这种继承机制下,不论虚基类在继承体系中出现多少次在派生类中都只包含唯一一个共享的虚基类子对象。 使用虚基类: 派生列表中添加virtual :clsaa Raccoon : public virtual ZooAnimal { }class Bear : virtual public ZooAnimal { }class Panda: publ...原创 2016-10-30 22:43:33 · 300 阅读 · 0 评论 -
c++的内存分配
string *sp= new string|("a value"); string *arr = new string[10];new表达式调用名为operator new( 或operator new[])的标准库函数。该表达式分配一块足够大原始的未命名的内存空间以便存储特定内存的对象(或对象的数组),编译器运行相应的构造函数以构造这些对象并为其传入初始值,对象分配空间并构造原创 2016-11-02 19:29:58 · 187 阅读 · 0 评论 -
返回函数的指针
要想返回一个函数的指针,最简单的方法是使用类型别名: using F = int (int *, int); using PF = int ( * ) (int *, int);将auto和decltype用于函数指针类型: string::size_type sumLength(const string &, const string &); decltype(sumLength) *原创 2016-08-20 21:38:42 · 328 阅读 · 0 评论 -
C++中ECMAScript正则表达式
例如:1, \{d}表示单个数字, \{d}{n}表示n个数字的序列, \{d}{3}匹配3个数字的序列2, 在方括号中的字符集表示匹配这些字符中任意一个, [-. ]匹配一个短横线,一个点或一个空格(点在括号中没有特殊含义)3, 后接'?'的组件是可选的,\{d}{3} [-. ]? \{d}{4} ,表示开始是3个数字,后接一个可选的短横线或空格,然后是4个数字4, 类似c...原创 2016-10-22 14:26:36 · 1845 阅读 · 0 评论 -
C++ 运行时类型识别
运行时类型识别由两个运算符实现:typeid运算符,用于返回表达式的类型;dynamic_cast 运算符,用于将基类的指针或引用安全的转换成派生类的指针或引用这两个运算符用于某种类型的指针或引用时,如果该类含有虚函数,运算符将使用指针或者引用的动态类型。dynamic_cast运算符:dynamic_cast<type*>(e); // e是一个有效指针dyna...原创 2016-11-02 20:19:43 · 831 阅读 · 0 评论 -
weak_ptr
weak_ptrweak_ptr 它指向一个由shared_ptr管理的对象,将一个weak_ptr 绑定到shared_ptr不会改变shared_ptr的引用计数。最后一个指向对象的shared_ptr被销毁,对象就会被释放。原创 2017-12-24 14:36:22 · 169 阅读 · 0 评论 -
c++11获取异步任务结果,std::packaged_task和std::future
如果我们的主线程A希望新开辟一个线程B去执某个我们预期的任务并返回结 果。这时候,线程A可能正在忙其他的事情,无暇顾及B的结果,所以我们会很自然的希望能够在某个特定的时间获得线程B的结果。在 C++11 的 std::future之前,通常的做法是:创建线程A,在线程A启动任务 B,当准备完毕后发送一个事件,并将结果保存在全局变量中。主函数线程A正在做其他的事情,当需要结果的时候,调用一个线...原创 2018-07-27 16:14:47 · 785 阅读 · 0 评论 -
C++中类的前置声明与使用头文件区别(转载)
类的前置声明与使用头文件区别添加链接描述原创 2019-09-08 17:48:35 · 321 阅读 · 0 评论