随笔分类 - C/C++
C/C++ 精典
摘要:RapidJSON 的坑--允许Object对象存在相同的key,且key为数字时序列化报异常 测试代码如下: 1 void show(rapidjson::Document& doc) 2 { 3 printf(" for iterator\nMemberCount:%d\n", doc.Memb
阅读全文
摘要:0.Poco 依赖和前置 Poco 的编译需要依赖 cmake v3+ ,c++ 17,生成 MySQL/MariaDB 的库 还依赖 MySQL/MariaDB 开发包 所以先要升级 cmake v3, gcc v7.5 1. 升级 cmake 传送门(CentOS7升级cmake v3.10.2
阅读全文
摘要:lua绑定C++对象—luna模板 绑定C++对象到lua,每个类需要写大量的代码,从类的元表创建、方法注册到实例创建,都需要自己重复写类似的代码。 如果涉及N个不同类,会有大量重复的代码,能否创建一个模板类,把这些重复的代码进行简化,通过模板的方式绑定成不同的类? 下面的luna<T>就是完成这样
阅读全文
摘要:lua对象调用—用 "." 与 ":" 调用表中函数时的区别 写这篇帖子之前,我看过许多关于绑定C++对象到Lua中的文章。总结一下他们的做法,用到元表、注册表、以及一些表中函数操作的一些基础知识以及相关的细节。相信大家对Lua的表一点也不陌生,Lua表是个神奇的东西(本质上就是hash表),可以当
阅读全文
摘要:起因是把之前写的类中的 mutex 使用了(之前注释掉了没用到这个变量); 或者说添加了一个 mutex 变量, 然后 这个类有嵌套在了 其类的 map 中使用, 然后 编译 就报错 ` C2280 XXX:XXX(const XXX &) 尝试引用已删除的函数 C2280 XXX::operato
阅读全文
摘要:首先要说明的是: linux 下 比较方便可以得到 崩溃时的调用栈,win下 比较难办 1. linux 获取调用栈 代码奉上: 1 #include <execinfo.h> //在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈 2 #include <fcntl.h
阅读全文
摘要:最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了 只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下:
阅读全文
摘要:window 下生成NodeJs(v8.9.3) 的 VS2015 解决方案node.sln 使用步骤 也可以参照 github: https://github.com/nodejs/node/blob/master/BUILDING.md#windows-1 1. 从 github 同步 http
阅读全文
摘要:项目本来是为Linux下运行做的,但是客户环境需要在windows下运行,幸好用的一些库是跨平台的。 于是用vs2015编译。 然后就发现在2008上却运行时库,装了2015的运行时库后, 在运行,就出现 0x0000007b 的错误, 网上搜了各种讨论解决方法,都没有搞好,都准备放弃了。 后来 ,
阅读全文
摘要:map,vector 等容器内容的循环删除问题(C++) map,vector等容器的循环删除不能用普通的方法删除: 类似的方式,会出错的,不信你调试试试 :) 这里使用了一个` iterator` 的一个自增/自减 ,来巧妙的实现了, 删除当前的`iterator,` 但是又给当前的`iterat
阅读全文
摘要:Linux 获取本机IP、MAC地址用法大全 输出: (更多参考:Linux 获取本机IP、MAC地址用法大全) windows下,详情见:http://www.cnblogs.com/lzpong/p/6137652.html
阅读全文
摘要:恰巧今天调试程序遇到时间戳问题, 于是又搜了搜关于取时间戳,以及时间戳转字符串的问题, 因为 time() 只能取到秒(win和linux) 想试试看能不能找到 至少可以取到毫秒的, 于是, 就找到 了 c++11 标准库: std::chrono 然后做了实验, 测试了下,代码如下 1. wind
阅读全文
摘要:这里的T指的是一种数据类型,可以是int、long、doule等基本数据类型,也可以是自己类型的类型class。单独的一个const你肯定知道指的是一个常量,但const与其他类型联合起来的众多变化,你是不是就糊涂了?下面我们一一来解析。 const T 定义一个常量,声明的同时必须进行初始化。一旦
阅读全文
摘要:项目中用到了智能指针,但是要在智能指针指向的类中获取此类的shared_ptr指针传给其引用的类,结果出现了问题, 测试代码如下: (包括错误解释) 结论: 在赋值过程中,用形如 的方式取得本指针的shared_ptr指针,会产生新的shared_ptr指针,,,而不是你想要的那个指针(类外定义的那
阅读全文
摘要:咳咳。C++11 加入了线程库,从此告别了标准库不支持并发的历史。然而 c++ 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池、信号量等。线程池(thread pool)这个东西,在面试上多次被问到,一般的回答都是:“管理一个任务队列,一个线程队列,然后每次取一个任务分
阅读全文
摘要:使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中嵌入TinyWeb服务,响应特定path,或输出内部运行状态,或触发某个动作,如此一来,用户(或开发
阅读全文
摘要:多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为了省时间一般都是任由这个内存泄漏发生. 当然也可以经过复杂的设计,由一个监控线程来统一删除, 但这样
阅读全文
摘要:windows下获取IP地址的两种方法; 一种可以获取IPv4和IPv6,但是需要WSAStartup; 一种只能取到IPv4,但是不需要WSAStartup; 如下: 方法一:(可以获取IPv4和IPv6) 方法二:(只能取到IPv4) Linux下,详见:http://www.cnblogs.c
阅读全文
摘要:今天心血来潮, 下载了 v8,,然后就想着用vs编译 但是大家都苦恼的是 v8并不直接提供 vs用的项目文件和解决方案(.sln) 于是,在网上搜来搜去, 折腾来折腾去的; 终于一点一点的尝试, 可以执行 python gypfiles\gyp_v8.py -Dtarget_arch=x64 但是网
阅读全文
摘要:多线程调试之痛 调试器(如VS2008和老版GDB)往往只支持all-stop模式,调试多线程程序时,如果某个线程断在一个断点上,你的调试器会让整个程序freeze,直到你continue这个线程,程序中的其他线程才会继续运行。这个限制使得被调试的程序不能够像真实环境中那样运行--当某个线程断在一个
阅读全文