
C/C++
yingge2016
这个作者很懒,什么都没留下…
展开
-
C/C++将函数名放到字符串中
用宏的方式封装__func_函数。原创 2023-01-11 14:27:31 · 263 阅读 · 0 评论 -
C++14读写锁demo-读写操作都在子线程中
unsigned long getTime(){ chrono::system_clock clock; int64_t s = chrono::duration_cast( clock.now().time_since_epoch()).count(); return s;}原创 2022-11-02 16:05:45 · 217 阅读 · 0 评论 -
C++14读写锁demo
shared_timed_mutex sLock;shared_lock slk(sLock); //创建读锁unique_lock ulk(sLock); //创建写锁原创 2022-11-02 14:11:57 · 418 阅读 · 0 评论 -
C++11线程封装
下面是我对线程的封装.子线程可以设置执行函数,可以阻塞子线程,可以唤醒子线程,可以设置子线程while循环函数的休眠时间。这例子可以用来学习C++11多线程,也可以直接拿来使用。欢迎加我公众号与我交流。#ifndef SMART_THREAD_H#define SMART_THREAD_H#include <string>#include <thread>#include <condition_variable>#include <mu原创 2021-01-29 10:32:12 · 881 阅读 · 1 评论 -
C++11线程池库及测试demo
C++11添加了线程实现,但是没有实现线程池,所以网上检索到一个比较靠谱的线程池实现。下面demo是对线程池的封装及测试,对于学习C++11多线程以及使用线程池都很有帮助。作者博客也对该线程池的实现做了详细的说明和讲解。https://www.cnblogs.com/lzpong/p/6397997.html多线程库代码地址https://github.com/lzpong/threadpool.git我的测试demo地址,threadpool_demohttps:...原创 2021-01-27 15:35:49 · 523 阅读 · 0 评论 -
加密算法-对称加密-AES加密
1.加密算法知识学习工作中经常遇到数据需要加密的情况,于是通过网络学习了一下数据加密的基本知识。八大加密算法解析 - 馥欣科技的文章 - 知乎 https://zhuanlan.zhihu.com/p/215280725因为我遇到的应用场景需要把算法封装到SDK中,所以选定了对称加密中的AES算法。高级加密标准(英语:Advanced EncryptionStandard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标...原创 2021-01-21 15:09:38 · 681 阅读 · 1 评论 -
日志类Logger-easyloggingpp封装及应用
之前介绍过第三方开源库easyloggingpp,下面介绍我封装的一个logger类,方便使用。1.类源码//logger.h#ifndef LOGGER_H#define LOGGER_H#include "easylogging++.h"#define logde LOG(DEBUG)#define loger LOG(ERROR)#define logfa LOG(FATAL)class Logger{public: explicit Logger().原创 2021-01-21 14:31:47 · 1229 阅读 · 0 评论 -
封装继承多态
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。继承,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。多态,接口的多种不同的实转载 2017-11-24 17:35:51 · 273 阅读 · 0 评论 -
类似策略模式,Qt实现动态函数调用
类似策略模式,Qt实现动态函数调用#ifndef LISTBASEWIDGET_H#define LISTBASEWIDGET_H#include #include #include static const int MAX_PTR=10;//基类class BaseWidget:public QWidget{ Q_OBJECTpublic: expl原创 2017-12-18 15:07:38 · 898 阅读 · 0 评论 -
C++11中std::move的使用
std::move is used to indicate that an object t may be "moved from", i.e. allowing the efficient transfer of resources from t to another object. In particular,std::move produces an xvalue expression th转载 2018-02-03 23:31:49 · 2087 阅读 · 1 评论 -
mqtt-vs2015编译paho
推荐两篇博文,实测可行。[MQTT什么鬼?第四讲:编译Paho C Windows客户端](http://www.brixbot.com/coding/mqtt-04-build-paho-c-for-windows/)[Paho -物联网 MQTT C Cient的实现和详解](http://www.cnblogs.com/homejim/p/8196763.html)...原创 2019-03-13 21:44:06 · 2035 阅读 · 0 评论 -
win10/mingw4.8.2编译log4cplus
0.平台信息win10 x64mingw w64 4.8.2log4cplus 2.0.41.下载源码下载log4cplus源码下载catch-master 源码,复制到src/catch目录下下载threadpool源码,复制到src/threadpool目录下catch和threadpool库都要到log4cplus仓库中下载。2.cmake 配置打开cmake gui...原创 2019-05-21 17:46:17 · 1508 阅读 · 7 评论 -
安装vs2010后原先的vs2015某些功能不能使用,xcopy命令也找不到
介绍:工程的使用bat脚本来打开执行的,其中执行了xcopy命令将几个第三方库拷贝到输出目录中,并且设置使用vs2015打开sln文件。问题现象:安装vs2010后原先的vs2015某些功能不能使用,xcopy命令也找不到。解决方法:vs2010在系统环境变量path中,添加了几个新安装软件的路径,将其中几个删除,重启电脑,再次运行工程脚本,就能打开了。原因分析:不清楚。微软大法好...原创 2019-09-29 11:52:41 · 444 阅读 · 0 评论 -
More Effective C++小结
1、仔细区别pointer和references 不论pointer或是references都使你间接参考其它对象。 没有所谓的null reference。一个reference必须总代表某个对象。 如果你有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表)任何对象,那么你应该使用pointer,因为你可以将指针设为null。换个角度转载 2017-12-12 09:39:59 · 293 阅读 · 0 评论 -
Effective C++总结
1.让自己习惯C++01.视C++为一个语言联邦C++高效编程守则视状况而变化,取决于你使用C++的哪一部分02.尽量以const、enum、inline替换#define对于单纯常量,最好以const对象或enum替换#define对于形似函数的宏,最好改用inline函数替换#define03.尽可能使用const将某些东西声明为const可帮助转载 2017-12-11 21:25:44 · 172 阅读 · 0 评论 -
struct结构在声明时对其中的某一项进行初始化
这个方法巧妙地运用了C++对于Struct功能的拓展。灵感来源于下:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struc原创 2015-12-20 15:30:25 · 1216 阅读 · 0 评论 -
在Eclipse中运行C++程序出现"Launch failed. Binary not foud"和"Program file not Specified"的问题
办公室电脑XP下用eclipse建立一个test工程,本想使其可以在XP下的eclipse下运行起来!但在装了MinGW后,却不能像家里的eclipse环境一样,可以顺利run起来。不管怎么设置,要么出现"Launch failed. Binary not foud"问题,要么出现"Program file not Specified"问题;初始以为是MinGW的问题,因为转载 2016-06-20 22:49:24 · 995 阅读 · 0 评论 -
逻辑运算符
一、逻辑运算符: 包括:1。&&逻辑与 2。||逻辑或 3。!逻辑非 逻辑运算符用于对包含关系运算符的表达式进行合并或取非 对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释 请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成= =是错误的。 假设一个程序在同时满足条件a 条件的代码。转载 2015-03-05 10:58:52 · 1404 阅读 · 0 评论 -
【C++专题】static_cast, dynamic_cast, const_cast探讨
http://www.cnblogs.com/chio/archive/2007/07/18/822389.html点击打开链接转载 2014-12-04 10:53:02 · 372 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时转载 2014-11-24 11:29:52 · 409 阅读 · 0 评论 -
C/C++基本数据类型
C/C++基本数据类型学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。 ANSI C/C++基本数据类型:转载 2014-11-24 10:13:54 · 450 阅读 · 0 评论 -
槽函数C+11 Lambda 表达式如何理解
connect(timer, &QTimer::timeout, [=]() { static int sec = 0; lcdNumber->display(QString::number(sec++)); });connect(button, &QPushButton::clicked, [=]() { timer->原创 2014-10-17 10:13:33 · 977 阅读 · 0 评论 -
GB2312 GBK UTF-8的区别
GB2312 GBK UTF-8的区别GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。GBK转载 2014-10-10 17:12:13 · 493 阅读 · 0 评论 -
共享内存
转载:http://www.cnblogs.com/skyme/archive/2011/01/04/1925404.html共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。转载 2017-11-04 22:32:05 · 214 阅读 · 0 评论 -
指向字符串的指针
int main(){ char *treeData="ABDH#K###E##CFI###G#J##"; printf("treeData[2]:%c\n",treeData[2]); printf("*(treeData+2):%c\n",*(treeData+2)); return 0;}输出为:treeData[2]:D*(treeData原创 2017-11-14 19:33:50 · 382 阅读 · 0 评论 -
C++ 全局变量 静态变量 全局函数 静态函数
1. static 变量静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。2. 静态局部变量静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义 它的生存期为整个转载 2017-11-06 16:43:21 · 3831 阅读 · 0 评论 -
引用参数与引用返回值
经常看到这样的声明:T& func(T& t),这种声明和T func(T t)有什么区别?书上的解释是为了提高效率,究竟是如何提高效率的呢?内部执行了什么操作?本文通过8个小例子对引用参数和引用返回进行了一次彻底的排查。 首先看一下在类的成员函数中的引用参数和引用返回值:类定义class A{ public: int x;转载 2017-12-11 18:06:34 · 1322 阅读 · 0 评论 -
String实现
class String{ friend ostream&operator<<(ostream &,String&);public: String(const char *str=NULL); String(const String&other); String&operator=(const String&other); String operator+(const转载 2017-11-13 20:59:24 · 184 阅读 · 0 评论