C/C++
joekuang
我的个人站点:www.14en.com,欢迎访问。
展开
-
单例模式中静态类成员变量初始化问题
最近做一个项目,C++语言,使用到了单例模式做设计。在具体编写代码时,使用了静态成员变量和静态函数。代码如下:class Camera{ private: //(省略若干代码) static Camera* pCamera ; //(省略若干代码) public: //(省略若干代码) static Camera* getInstance() { if(p原创 2015-10-15 10:31:53 · 4106 阅读 · 0 评论 -
linux socket的select函数例子
使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。首先生成一个叫sock_fd的socket描述符,用于监听端口。将sock_fd和数组fd_A中不为0的描述符放入select转载 2015-10-28 16:40:19 · 581 阅读 · 0 评论 -
关于子目录源码文件编写makefile文件
在编写代码时,为了防止一个目录下代码文件过多,可能会采用子目录来存放代码文件。这时候,在编译的过程中,就需要对子目录的文件进行编译,其中涉及到头文件和源文件的处理。对于头文件来说,需要增加头文件目录引用。对于C/C++文件,makefile中系统定义了CFLAGS和CXXFLAGS来指定头文件引用目录,故对于C文件,可在makefile中增加如下语句:CFLAGS += -I./dir/原创 2015-10-12 22:56:37 · 550 阅读 · 0 评论 -
起个名字好难:关于变量命名的思考与总结
最近半年多,随着编写代码工程变大,代码行数也在增加。类名、函数形参、成员变量名、全局变量等等开始变得混淆不清,自己也有时搞不清变量的意义、作用域等等。故,在网上翻阅了大牛们关于变量命名的一些文章,思考并总结了,写下了这篇关于代码中变量命名的文章。希望与所有与我有共同困惑的人共勉。一、语法过关 在所有关于语言类入门书籍中,一般最开始就会提到关于命名的语法规则,C++的语法规则大致如下:转载 2015-10-09 20:44:08 · 977 阅读 · 0 评论 -
使用opencv训练问题及解决办法
在Windows下安装好opencv2.4.9之后,在"xxx/build/x64/vc10/bin"下有训练中要用到的可执行程序opencv_xxxx.exe等四个可执行程序。注意,由于本人为win7 64bits系统,安装了VS2010,故使用该目录下的可执行程序。 当使用自带程序进行人脸检测训练时,遇到一些问题,整理如下:1.训练中途,程序突然终止,提示"OpenCV Erro原创 2015-10-19 18:00:23 · 5904 阅读 · 3 评论 -
互斥锁与条件变量(基于控制输出面试题的思考)
昨天笔试唯品会时,遇到一道编程题: 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。’ 当时看到这道题时,就想到了要使用互斥锁和条件变量。奈何,没有深入了解过,只能干瞪眼。回来之后,在网上查了查资料,也找到了相关题目,故整理这篇文章,算是学习笔记吧。 代码转载 2015-09-14 22:20:21 · 968 阅读 · 0 评论 -
基于开源库jsoncpp的json字符串解析
json(JavaScript Object Notation)是一种轻量级高效数据交换格式。相比于XML,其更加简洁,解析更加方便。在实习期间,我负责的程序模块,多次使用到json进行数据传输。由于之前只对json稍稍了解,而且不熟悉项目组使用的开源json解析库,故在编码过程中效率很低,而且还出现过bug。虽然,最后项目组的事情比较顺利的完成了,但感觉自己对json的编解码熟悉仍然不够,故翻阅原创 2015-09-13 22:58:58 · 9602 阅读 · 0 评论 -
make编译出现'\241'错误
昨天从word文档里复制了一段代码,粘贴到了cpp文件里。当通过make命令进行编译时,出现了几十条关于’\241’的错误,具体见下图。 后来,上网查了下资料主要是由于代码中存在特殊字符所导致的。可通过如下两个办法解决: 1.将代码粘贴到txt文档中,去除格式; 2.如果步骤1仍然没有解决问题,则可通过手动重新键入所有空格,或者通过复制替换按钮,将代原创 2015-07-11 15:04:07 · 1093 阅读 · 0 评论 -
使用GDB在ARM上进行开发调试
一、安装GDB及GDB server 1.1 GDB简介 GDB调试环境由宿主机GDB和目标开发板的GDB server共同构成,两者通过串口或TCP连接。使用GDB标准串行协议协同工作,实现对目标机的系统内核和上层应用的监控和调试功能。 GdbServer是GDB的一个组件,但通常不随发行版本的GDB一同发布,需要用户自行编译GDB的源代码包得到相应的GDB和GDBServe原创 2015-05-24 18:23:20 · 2422 阅读 · 0 评论 -
正确释放Vector的内存
今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问。博主采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:“vector 的 clear 不影响 capacity , 你应该 swap 一个空的 vector。”开始并不知道回复者在说什么,于是在谷歌上搜索 vector swap clear 发现已经有类似的问题转载 2015-06-08 17:16:47 · 482 阅读 · 0 评论 -
pthread多线程资源回收策略
在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,我实现方式比较傻,死循环等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。 Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,转载 2015-06-17 16:52:28 · 1175 阅读 · 0 评论 -
基于海思开发板进行OPENCV交叉编译时的问题
之前一直在摸索,为什么使用海思3515官方提供的编译器在对opencv进行交叉编译时会出现各种莫名其妙的错误。后来买了一块3520D的开发板,商家为我提供了新版的SDK,编译器版本升级为4.4.1。当我用新版的编译器再进行交叉编译时,竟然一路顺畅,很容易地就完成了整个编译过程。再回过头来,反省之前遇到的各种问题,发现其实最大的问题出在编译器版本上。在旧版的SDK里,编译器版本为gcc 3.4.3,原创 2015-04-08 20:57:03 · 2405 阅读 · 0 评论 -
C/C++中的日期和时间 TIME_T与STRUCT TM转换
摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1转载 2015-10-30 11:27:44 · 668 阅读 · 0 评论