C++
文章平均质量分 60
Azure小诶
这个作者很懒,什么都没留下…
展开
-
为Source Insight添加TODO、FIXME等注释标签的高亮
在程序中加入TODO、FIXME等特殊的注释标签有助于提高代码编写效率,特别是多人协作的情况下。一般用法如下: TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。 FIXME: + 说明: 如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。 XXX:原创 2017-09-29 20:13:33 · 4977 阅读 · 0 评论 -
基于pthread的C++阻塞队列模板类的实现
在多线程处理数据时,常用生产者/消费者模型,而在这两者之间存在着一个仓库,通常使用阻塞队列实现。 阻塞队列即消费者发现队列为空时,阻塞在读取操作之前;生产者写入队列时,通知消费者解除阻塞状态,处理新的数据。这样即保证了操作的实时性,又避免了频繁轮询造成的不必要CPU消耗。 java中自带阻塞队列的实现,c++中则没有。在此使用pthread库的互斥量和条件变量实现一个简单的阻塞队列,并用模板进行原创 2017-09-01 17:55:50 · 1208 阅读 · 0 评论 -
Unix网络编程学习日记(五):基于epoll与管道的socket客户端
这又是一个不成熟的想法。为了尽可能减少对多线程、进程的依赖,减少内存占用,将之前的客户端程序中“发送”和“接收”线程合二为一,尝试使用非阻塞模式socket配合I/O复用实现socket客户端。不过,查阅资料后发现I/O复用更适合用于服务器程序而不是客户端。 其中很重要的一个原因是,使用I/O复用模型时需要对流进行监控,动态调用流对应的处理程序。对于一个简单的客户端程序,动态接收服务器发来的消息很原创 2017-09-01 14:50:20 · 634 阅读 · 0 评论 -
Unix网络编程学习日记(四):基于select的单线程半双工socket客户端的实现
select()和pselect()允许程序监控多个文件描述符,等待一个或多个文件描述符变为I/O操作的“就绪”状态。一个“就绪”状态的文件描述符被认为可以接受内核提供的IO操作,比如不被阻塞地“read()”。 有趣的是,Unix的标准输入/输出也是一类文件描述符,可以和socket描述符同时被监听。所以,可以用select监听socket和stdin,保证实时接收网络数据的同时又不阻塞住键盘输原创 2017-08-15 09:02:30 · 441 阅读 · 0 评论 -
Unix网络编程学习日记(三):多进程全双工socket客户端的实现
多进程实现全双工socket客户端原创 2017-08-08 19:58:49 · 754 阅读 · 0 评论 -
Unix网络编程学习日记(二):多线程全双工socket客户端的实现
简单的多线程socket客户端的实现原创 2017-08-08 19:40:00 · 983 阅读 · 0 评论 -
Unix网络编程学习日记(一):半双工非阻塞socket客户端的实现
socket编程I/O模型简述,和一个简单的socket客户端的实现原创 2017-08-08 19:31:13 · 598 阅读 · 0 评论 -
在Linux下编译OpenCV_Contrib
在Linux下编译OpenCV_Contrib最近做人脸识别项目的时候,发现在OpenCV3包中包含了人脸检测算法所需的CascadeClassifier,但不含识别算法所需的FaceRecognizer。使用官网例程时,编译器会提示缺少opencv2/contrib/contrib.hpp。 查询资料后得知, 人脸识别等算法模块由于不够稳定,在OpenCV3版本中,被放在了OpenCV_Cont原创 2017-03-03 14:26:05 · 3472 阅读 · 0 评论 -
《Effective C++》笔记
从C转向C++条款1:尽量用const和inline而不用#define少用define定义某个常量。在调试时编译器永远不会看到被define的那个数据,影响调试效率。应将“#define PI 3.14”改为“const double PI = 3.14”,性能相差无几,在类型安全上更可靠。但是注意,若要定义一个指针型常量,需要写两个const,比如const char * const auth原创 2016-06-26 00:12:30 · 530 阅读 · 0 评论 -
NDK编译器由gcc改为clang造成的STL兼容性问题
最近做NDK项目时,遇到了个很让人恼火的问题,调用动态库时,一旦API参数使用了STL容器,就无法链接。报错类似 undefined reference to ‘Func(std::__1::vector&)’ 反复检查API文档与自己的程序,并未发现参数不一致的情况。检查库的依赖关系,也一切正常。最后使用 arm-linux-androideabi-nm -D -C...原创 2018-03-23 18:59:32 · 6051 阅读 · 0 评论