随笔分类 - c++
摘要:我们知道选项 l是指定要链接的库,但是如果有多个库的时候,哪个放前面哪个放后面呢? 结论:被别的库使用的库,放在使用它的库的后面 使用下面的代码,验证一下 shell $ g++ 01.cc lmuduo_net lmuduo_base std=c++11 pthread 最佳方案:编译时把mudu
阅读全文
摘要:c/c++ 学习互助QQ群:877684253 本人微信:xiaoshitou5854
阅读全文
摘要:为什么标准库里要有traits? 我们先回忆一下,标准库提供的算法的一些特征: 参数一般包括iterator。 要根据iterator的种类,和iterator包装的元素的类型等信息,来决定使用最优化的算法。 比如如果是vector的iterator,那么就可以使用+, 操作; 如果是list的it
阅读全文
摘要:c++ 模板类,方法返回值类型是typedef出来的,或者是auto,那么此方法在类外面如何定义? 比如方法max1的返回值是用typedef定义出来的mint,那么在类外如何定义这个方法呢? 尝试1: 尝试1的结果:编译不过,提示不能识别mint 尝试2: 尝试2的结果:依然编译不过 尝试3: 在
阅读全文
摘要:stl源码学习(版本2.91) list 一,阅读list()构造函数的收获 1,默认构造函数的作用和被调用的时机 stl_alloc.h stl_construct.h 从以上的stl list源码可以看出: list的构造函数list(),只开辟了node的内存空间,并没有构造node里的dat
阅读全文
摘要:c++ 模板特化与局部特化 模板的由来是要处理泛化,也就是任何类型都可以处理。但是泛化的同时,如果针对某种特殊的类型,又更加效率的处理方法。c++提供针对特殊的类型,可以定义不同的处理方法。针对某种特殊类型去处理的方式就叫做特化。 特化分全部特化和局部特化 全部特化: 通过上面的例子可以看出,可以针
阅读全文
摘要:Qt在window下的环境变量PATH的配置 路劲: C:\Qt\Qt5.6.0\5.6\mingw49_32\bin C:\Qt\Qt5.6.0\Tools\mingw492_32\bin 发布Qt程序,如何找到缺少的dll 1,去目录:C:\Qt\Qt5.6.0\5.6\mingw49_32\b
阅读全文
摘要:mysql connector c++ 1.1 API初步体验 1,常用的头文件 2,创建连接 3,选择要使用的database的名字 4,设置连接的属性,例子是设置连接的字符集 5,判断连接是否建立成功 7,执行查询语句 c++ sql::Statement stmt; sql::ResultSe
阅读全文
摘要:mysql connector c++ 1.1 安装 前提:boost安装完毕 注意:8.0版本的源码用此方法,编译不过。所以要编译8.0的同学请绕行。 1,下载源码 2,进入下载下来的文件夹 3,由于下载下来不是1.1版本,切换成1.1版本 4,执行cmake,指定boost的安装路径 5,执行m
阅读全文
摘要:qt md5加密,base64编码解码 md5加密 c++ QByteArray data = "12121221"; data += "asdfas"; QByteArray rels = QCryptographicHash::hash(data, QCryptographicHash::Md5
阅读全文
摘要:qt 网络库使用介绍 在.pro文件中,要手动添加network模块:QT += network 有三个核心类, QNetworkAccessManager: 发送get或者post请求。 用get方法或者post方法发送get/post请求 参数是QNetworkRequest,返回值是QNetw
阅读全文
摘要:c++ 多态,就是利用了一个二级指针(指针数组),数组里的每个元素都指向了,用virtual修饰的成员函数。 既然提到了指针,那就让我们用内存地址来证明一下吧。 为了证明,我们必须要取到成员函数的首地址。利用下面的函数取得成员函数的地址 调用上面函数的方法: 1,首先我们先看看非多态的成员方法的内存
阅读全文
摘要:查看有没有安装MySQL: dpkg l | grep mysql 安装MySQL: apt install mysql server apt install mysql client apt install libmysqlclient dev 安装完成之后可以使用如下命令来检查是否安装成功: n
阅读全文
摘要:system v 共享内存 建立:进程与共享内存的关联关系 key_t key:16进制的非0数字。 一般有两种方式设置它。 第一种:调用fotk函数 第二种:直接使用IPC_PRIVATE 注意:如果两次调用ftok函数时,参数都一样,那么得到的key_t key是一样的,所以shmget函数的返
阅读全文
摘要:一, "管道PIPE" 二, "FIFO通信" 三,mmap通信 创建内存映射区。 函数mmap:打开一个文件,指定一个文件的区域,作为一个区域,映射到内存中,以后就直接操作那个内存,就能够实现进程间的通信。因为是内存操作,所以速度最快。 addr:固定NULL length:拿出文件中的多长的一段
阅读全文
摘要:进程间通信:IPC概念 IPC:Interprocess Communication,通过内核提供的缓冲区进行数据交换的机制。 IPC通信的方式: pipe:管道(最简单) fifo:有名管道 "mmap:打开一块共享的内存(速度最快)" "本地套接字:最稳定" "信号:携带信息量最小" 共享内存
阅读全文
摘要:静态库的用法 静态库的文件名 libxxx.a 对应windows的.lib文件 做静态库的命令: 使用静态库: 注意: L的作用是告诉gcc你的libxxx.a放在了哪个目录里; l的作用是告诉gcc使用哪个静态库。 举个例子,目录结果如下: head.h add.c sub.c mul.c 步骤
阅读全文
摘要:ttcp 是干啥的:测试2台机器间的网络传输性能 "wiki" 功能如下图: 对应的视频是: 4.回顾基础的Sockets API.mkv 5.TTCP代码概览.mkv 6.使用TTCP进行网络传输性能测试.mkv 代码: "github" 准备事项: 安装boost库, "安装方法" 编译方法
阅读全文
摘要:read,write函数深入理解 1,服务端的write函数,可以指定发送数据的长度(第三个参数length) 2,客户端的read函数,可以指定收取数据的长度(第三个参数length) 问题来了,假设要发送的数据的总长度为20,服务端调用write函数时,是放在循环里调用,每次发送的长度设置为1,
阅读全文
摘要:模板函数的重载 普通函数可以重载,模板函数也可以重载,但规则复杂 有下面2个函数,名字相同,返回值相同就,参数不同,符合重载。 调用1 c++ std::string s("hi"); const std::string sp = &s; std::cout 所以推导出规则2:同样精准的话,更特殊的
阅读全文