随笔分类 -  C++

摘要:c++11 中的 shared_from_this() 来源于 boost 中的 enable_shared_form_this 类和 shared_from_this() 函数,功能为返回一个当前类的 std::share_ptr,使用方法如下: #include<memory> class Te 阅读全文
posted @ 2021-04-24 15:50 WindSun 阅读(1388) 评论(0) 推荐(1)
摘要:tuple元组 tuple是一个元组容器,可以用于函数返回多个值, 一个tuple元组可以有任意数量的成员 tuple的两种初始化方式: tuple<int, int> t1(1, 2); tuple<int, int> t2{1, 2}; make_tuple用于生成tuple对象,和pair和m 阅读全文
posted @ 2020-09-15 00:18 WindSun 阅读(848) 评论(0) 推荐(1)
摘要:C++函数种类 C++中的函数种类很多: 函数 函数指针 Lambda函数 bind创建的对象 仿函数(重载了函数调用运算符的类) 但这些函数可能共享一种调用方式。调用形式指明了调用返回的类型以及传递给调用的实参类型。比如:int(int, int); 使用function std::functio 阅读全文
posted @ 2020-06-10 00:52 WindSun 阅读(2484) 评论(0) 推荐(1)
摘要:参数绑定 如果一个函数只在一两个地方操作,使用Lambad很方便,如果在很多地方操作,编写多次相同的Lambda函数就很不方便,需要定义函数。但是,定义的函数又不能完全代替能捕捉局部变量的Lambda函数,所以就出现了bind函数。 bind函数是C11标准库的函数,需要添加头文件(g下加-std= 阅读全文
posted @ 2020-06-09 00:23 WindSun 阅读(1519) 评论(0) 推荐(0)
摘要:gdb 中step、next与finish的区别 step 就是单步执行,遇到子函数就进入并且继续单步执行;在其他调试其中相当于step into命令,作用是移动到下一个可执行的代码行。如果当前行是一个函数调用,则调试器进入函数并停止在函数体的第一行。step可以帮助初步揭开代码位置的谜团,例如:函 阅读全文
posted @ 2020-04-27 11:06 WindSun 阅读(8896) 评论(0) 推荐(2)
摘要:编译protobuf 首先下载protobuf源代码 使用cmake,配置相关路径和配置 注意选择生成动态链接库,在windows上最好勾选动态链接库,否则会出现很多麻烦 点Generate,生成VS的工程文件。 然后打开vs,选择release或debug 点击解决方案直接右键选择生成解决方案即可 阅读全文
posted @ 2020-03-29 20:59 WindSun 阅读(4054) 评论(0) 推荐(0)
摘要:下载 protobuf "下载地址" 使用wget下载,或者手动下载好FTP传到Linux上 在Linux 64位环境下进行编译 我下载的是protobuf all 3.11.4.tar.gz 包 首先解压 进入解压目录 安装 protobuf 此时可能会遇到报错,如:autoreconf: com 阅读全文
posted @ 2020-03-22 01:49 WindSun 阅读(3156) 评论(0) 推荐(0)
摘要:windows下安装Protobuf 首先需要 "下载源代码" 下载如下cpp版本 解压后得到一个目录,等下CMake会用到 如果你电脑没有CMake,需要去官网 "下载" 双击打开下载解压后的 现在,选择刚才解压的目录,和构建输出目录 然后选择Configure 选择你的VS版本,然后finish 阅读全文
posted @ 2020-03-21 22:44 WindSun 阅读(8232) 评论(1) 推荐(0)
摘要:前言 翻译查阅外网资料过程中遇到的比较优秀的文章和资料,一是作为技术参考以便日后查阅,二是训练英文能力。 此文翻译自 "Protocol Buffers 官方文档 Developer Guide 部分" protocol buffers 介绍 protocol buffers 是一种语言无关、平台无 阅读全文
posted @ 2020-03-21 01:39 WindSun 阅读(3441) 评论(0) 推荐(0)
摘要:Base64 "\[原文链接\]" 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么,Base64到底起到什么作用呢? 在参数传输的过程中经常 阅读全文
posted @ 2020-02-27 16:07 WindSun 阅读(2687) 评论(0) 推荐(0)
摘要:前言 TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的长度,因此在应用层能很好的将不同的数据报文区分开,从而避免粘包和拆包的问题。而 阅读全文
posted @ 2020-02-16 15:52 WindSun 阅读(959) 评论(0) 推荐(0)
摘要:一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。 write write函数原型: write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回 1. 并设置errno变量. 阅读全文
posted @ 2020-02-11 22:40 WindSun 阅读(1602) 评论(0) 推荐(0)
摘要:前言 我们知道结构体内存对齐字节可以通过 pragma pack(n) 的方式来指定。 但是,有没有想过一个问题,某些时候我想4字节对齐,有些时候我又想1字节或者8字节对齐,那么怎么解决这个问题呢? 此时, pragma pack(push) 和 pragma pack(pop) 以及 pragma 阅读全文
posted @ 2020-02-11 20:04 WindSun 阅读(4886) 评论(0) 推荐(0)
摘要:在makefile中经常会看到这些选项,gcc默认会在程序当前目录、path路径中查找所需要的材料 如何给gcc添加我们自己的原材料(头文件,库等) I (注意是大写的i) 给gcc添加自定义的头文件的路径 例如:我的头文件目录是myinclude L 给gcc添加额外的搜索库的路径 例如 :有一个 阅读全文
posted @ 2020-02-09 01:39 WindSun 阅读(6203) 评论(0) 推荐(1)
摘要:前言 今天安装 "spdlog" ,一个快速得C++日志库,按照文档步骤,不料出现了一堆错误,像c++: internal compiler error: Killed (program cc1plus)等一堆,刚开始以为环境有问题,弄了一会还是不行,查了一下才知道,是物理内存太小,需要swap分区 阅读全文
posted @ 2020-02-09 00:16 WindSun 阅读(384) 评论(0) 推荐(0)
摘要:类的功能 Task (任务基类) 该类主要实现一个任务类 virtual int doWork() = 0; TaskQueue (任务队列) 该类主要针对任务的存储、删除、撤回等状态做管理 ThreadPool (线程池) 整个线程池的核心业务处理类 代码 Task.h TaskQueue.h T 阅读全文
posted @ 2020-02-03 20:55 WindSun 阅读(1864) 评论(0) 推荐(0)
摘要:JsonCPP安装 安装 scons 下载地址 : http://sourceforge.net/projects/scons/files/scons/2.1.0/scons 2.1.0.tar.gz/download 百度网盘 : https://pan.baidu.com/s/1tW57c9s3 阅读全文
posted @ 2020-01-02 22:46 WindSun 阅读(2304) 评论(0) 推荐(0)
摘要:模板特化 在将萃取机制之前,先要说明模板特化 当有两个模板类,一个是通用泛型模板,一个是特殊类型模板,如果创建一个特殊类型的对象,会优先调用特殊的类型模板类,例如: 运行结果: 萃取机制 现在举一系列例子来说明萃取机制 现在有两个类,需要完成相同的功能GetSum返回求和值 总结 萃取机制在STL中 阅读全文
posted @ 2019-09-03 00:47 WindSun 阅读(623) 评论(0) 推荐(0)
摘要:new operator 我们平时使用的new是new操作符(new operator),就像sizeof一样是语言内置的,不能改变它的含义,功能也是一样的 比如: 相当于 new操作符总是做两件事: 1.调用相应的operator new分配内存 2.调用相应的构造函数 如下代码: operate 阅读全文
posted @ 2019-09-02 12:33 WindSun 阅读(1099) 评论(0) 推荐(0)
摘要:什么是多态 顾名思义就是同一个事物在不同场景下的多种形态。 静态多态 我们以前说过的函数重载就是一个简单的静态多态,静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合适的函数可以调用就调,没有的话就会发出警告或者报错。 动态多态 动态多态:它是在程序运行时根据基类的 阅读全文
posted @ 2019-09-02 10:28 WindSun 阅读(2178) 评论(0) 推荐(0)

博客已停更,文章已转移,点击访问