- 博客(132)
- 资源 (10)
- 收藏
- 关注
原创 两个类相互包含引用的问题--类前向声明
1、背景编程中遇到如下错误:使用不完全类型**以及**前向声明。查找相关资料后发现是类的前向声明(forward declaration)问题:在程序中声明一个类后,此类是一个不完全类型(incompete type),即已知此类是一个类型,但不知道包含哪些成员。不完全类型只能以有限方式使用,不能定义该类型的对象。不完全类型只能用于定义指向该类型的指针及引用,或者用于声
2015-06-01 15:22:40
1093
原创 c++ string总结
要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件using std::string;using std::wstring;或using namespace std;下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。string和wstring的用法是一样的,
2015-02-09 15:36:36
826
原创 epoll详解(转)
什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。
2015-01-28 15:25:30
815
原创 c++的一些开源库(待补充修改)
C++开源库,欢迎补充。C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如A
2015-01-28 14:14:29
912
原创 3DsMax导出插件编写-(1)环境搭建
为3D开发人员,特别是3D引擎开发人员,经常会接触到各种三维模型的数据。虽然说3dsmax已经可以导出很多格式的模型,不过总是不一定合适自己用。所以总有一种想自己写一个导出插件,让3dmax导出自己想要的数据格式。这里为大家介绍一下怎样为3dmax写导出插件的第一步:怎样配置vs和maxSdk。这里你需要的东西有两个:1、一个完整版的3dsMax。2、一个Visual Stud
2015-01-19 11:53:45
4094
原创 c++拷贝构造函数、赋值运算符=重载、深拷贝与浅拷贝
关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符摘要: 在面向对象程序设计中,对象间的相互拷贝和赋值是经常进行的操作。 如果对象在申明的同时马上进行的初始化操作,则称之为拷贝运算。例如: class1 A("af"); class1 B=A; 此时其实际调用的是B(A)这样的浅拷贝操作。 如果对象在
2015-01-17 14:12:48
1285
原创 关于编码问题以及不同平台编码及string与编码的关系
说明:这里简要说明一下不同平台的编码不同,c语言中的char *与编码的关系这些问题,及对通常困扰的乱码问题做个总结一。编码二。ANSI、ascll、utf8、unicode等说明三。windows、linux平台的编码说明四。字符串与平台、编码的关系
2015-01-16 19:12:12
1736
原创 c/c++原子锁应用(跨平台)
前言:今天在修改amf库时发现两个函数,InterlockedIncrement()、InterlockedDecrement(),查资料知道这是关于原子锁的,而这是windows下的系统函数,那么对应的linux下也应该有此函数了......一.windows下的原子锁。。。。(待续)二.linux下的原子锁进化2.1网上先是找到了atomic_t ,atomic_inc
2015-01-10 17:44:18
2875
原创 typedef-------typedef void (*sighandler_t)(int)的区别
typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);此处由于加了typedef自定义了一个新类型sighandler_t,所以第二行的函数原型看起来顺眼多了,形式跟int func(char c, int i)无异,但是如果看不懂typedef语句,这两句
2015-01-08 15:51:38
759
原创 c++模板
1.什么是模板假设现在我们完成这样的函数,给定两个数x和y求式子x^2 + y^2 + x * y的值 .考虑到x和y可能是 int , float 或者double类型,那么我们就要完成三个函数:int fun(int x,int y);float fun(float x,float y);double fun(double x,double y);并且每个fun函数内部所要
2014-12-25 17:07:14
668
原创 c++运算符重载2
上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题。++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又是完全不同的(q前置运算符:先加1,再赋值;后置运算符:先赋值,再加1)。那么要怎么重载它们,才可以有效的区分开来呢?今天我就来说说C++中是怎么处理前置运算符和后置运算符的重载的。以及介绍一下插入运
2014-12-18 17:05:40
742
原创 c++运算符重载1
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的。这一系列我将主要讲解C++中有关运算符重载方面的内容。在每一个系列讲解之前,都会有它的一些基础知识需要我们去理解。而运算符重载的基础就是运算符重载函数。所以今天主要讲的是运算符重载函数。 1.运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行
2014-12-18 16:40:19
740
原创 关于openssl加解密文件的几个API
今天心血来潮突然想搞搞openssl了,趁着端午小假,刚好有空可以鼓捣孤岛自己喜欢的东西,出去东奔西跑的实在太造孽了,还是宅起来给自己充充电吧。下载openssl最新代码1.0.1g,修复了“心血漏洞”那个版本。编译安装那些小儿科的东西就不再浪费笔墨了,如果出现头文件或者库文件之类的错误,请在本人博客里寻找相关文章,应该主要集中在动态库那几篇博文。反正我在自己虚拟机里安装的时候是妥妥滴。
2014-12-04 08:34:08
3859
原创 fread与read的区别(文件io补充)
这里有一个我们经常提出的问题就是fread,read的区别。(当然这两个分别代表了操作文件系统的两套不同的函数,包括open,read, write, seek 等)。一.他们的区别就是一个(read)是UNIX 中的系统调用,是类UNIX系统,提供给程序员操作文件的接口(要不然你如何操作文件?);而另外一个则是C语言提供的读取文件的函数库,自然这个函数库(ANSI)的实现是以对应的系统调用为
2014-10-09 16:01:21
2985
1
原创 1.C与c++文件IO
一. C与c++文件IO1.1文件类型:ASCII文件和二进制文件首先我不保证文件类型只有这两种。但理解这两种文件对学习文件IO操作非常重要。1.1.1ASCII文件ASCII文件也就是文本文件,每个字节存放一个ASCII代码,代表一个字符。可以使用任何编辑器打开,如记事本或者UE等,打开就是你能看懂的字符。比如姓名"richard"就会存储为7个字节,每个字节分别为对应字母的AS
2014-10-09 15:29:39
1375
原创 linux下apache+openssl配置记录
最近在研究linux下的apache-ssl配置,写点个人小心得,新人发博,敬请见谅。 软件环境 Apache Httpd 2.2.29 (http://httpd.apache.org ) OpenSSL 1.0.1h (http://www.openssl.org/source )SSL-Tools (http://www.openssl.org/contrib/s
2014-09-29 09:49:11
2050
原创 wbservice理解
一、序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是
2014-09-22 16:47:35
2122
原创 linux串口编程总结
串口本身,标准和硬件 †串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代;而原来用以连接网络的串口则被以太网替代,
2014-09-18 14:29:01
1138
原创 c++11线程之条件变量condition_variable(二)
题目:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。采用C++11实现:[cpp] view plaincopyprint?#include #include #include #include using names
2014-08-21 16:00:07
1372
原创 c++11线程之条件变量condition_variable(一)
题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。[cpp] view plaincopyprint?#include #include #include #include using namespace std; mutex m; co
2014-08-21 14:51:39
1339
原创 c++xml解析之tinyxml2
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
2014-08-20 11:10:13
904
原创 C++IO之文件操作
前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制。那今天我将继续介绍关于C++中的流操作内容——文件IO操作流fstream。并会着重讲解C++是如何对文件进行操作的。 文件指存放在外部介质上的数据的集合。大家都知道操作系统是以文件为单位来对数据进行管理的。因此如果你要查找外部介质的数据,则先要按文件名找到指定文件,然后再从文件中读取数据,如果要
2014-08-12 16:24:23
852
原创 c++IO之预定义格式控制
在C语言里,我们可以通过函数printf和scanf来进行格式化控制。而在C++中仍然包含了前者,但还提供了以下两种格式控制的方法:(1)使用流成员函数进行格式控制;(2)使用预定义操作符进行格式控制。下面我来一一介绍: 1.流成员函数主要是指ios类(流基类)中的,分别有:(1).设置状态标志流成员函数setf一般格式:long ios::setf(long flags),调用格式
2014-08-11 12:42:41
804
原创 c++IO之标准设备操作流
每种语言系统都会提供IO操作的类库,用于对预定义类型数据进行输入输出的操作。C++也是如此,它是以字节流的形式实现的。在输入操作时,字节流从输入设备(键盘、磁盘)流向内存;在输出操作时,字节流由内存流向输出设备(显示器、打印机);字节流可以是ASCII字符、二进制数据、图形图像、音频视频等信息。文件和字符串也可以看成是有序的字节流,又称为文件流和字符串流。C++的编译系统自带一个面向对象的输入输出
2014-08-11 11:02:38
1208
原创 linuxc多线程参数传递
#include #include struct stu { int age; char *name; char *num;}; void thread1(void){ int i; for(i=0;i { printf("This is a pthread1.\n");
2014-08-08 10:47:28
1426
原创 linuxc线程信号-pthread_cond_wait理解
pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了的话,那我们就漏掉了这个条件。因为这个线程还没有放到等待队列上,所以调用pthread_cond_wait前要先
2014-07-17 15:21:45
916
原创 pthread_count_t与pthread_mutex_t的运用
#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/pthread_cond_t cond = PTHREAD_COND_INITIALIZER;/*初始化条件变量*/void *thread1(void *);void *thread2(void *)
2014-07-17 15:09:11
911
原创 linuxc_线程锁pthread_mutex_t
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用宏PTHRE
2014-07-17 10:52:07
1268
原创 openssl交叉编译记录
本次任务是要完成嵌入式Linux下对openssl程序的支持。 我的开发环境:ARM9开发板 和 嵌入式Linux操作系统。装有Linux系统(我的是ubuntu9.04)的PC机一台。串口和串口连接线。串口调试软件:minicom。交叉编译工具:arm-unknown-linux-gnu-gcc 下载最新版本的openssl-1.0.0: http://www.op
2014-07-02 14:14:17
1306
原创 linux c中的僵尸问题
给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存使用量等等)。如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程)。继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态)。 但通常情况下,我们是
2014-06-04 09:15:51
810
原创 linux下arm平台Qt编译环境搭建与解析
一.概述: 我们知道QTcreator,这只是个IDE,他包括了一个编译器--qmake.这两者的关系与codeblocks和g++的关系一样,首先要明白这些。 而我们在linux下搭建arm平台的QT编译环境,主要的是要使用适合arm的qmake,正如我们编译在arm上使用c++程序时要用arm-none-linux-gnueabi-g++一样。而qmake只是我们使用的
2014-04-24 10:01:30
4259
原创 arm安装dropbear_轻量级ssh2
个人感觉嵌入式中是不需要dropbear的,因为busybox中没有ssh,自己编译麻烦,不如使用telnet(busybox内包含)方便。而要传文件的话使用busybox带的ftpd即可。开发时为了方便可以安装openssh,这样控制端与文件传输就都有了。 准备zlib-1.2.3.tar.gz 点击进入下载地址dropbear-0.52.tar.gz 点击进入下载地址
2014-04-16 13:27:43
2258
原创 arm上安装openssh
1. 下载需要的源码: mkdir -p ~/arm/fs ;mkdir -p ~/arm/source 下载zlib: wget -c http://www.zlib.net/zlib-1.2.3.tar.gz 下载ssl: wget -c http://www.openssl.org/source/openssl-0.9.8d.tar.gz 下载ssh:
2014-04-16 11:26:26
2843
原创 ubuntu12.04下qt4.7.4移植详解
gcc编译器版本:gcc version4.3.2 (Sourcery G++ Lite 2008q3-72)宿主机版本:Ubuntu 10.04 LTSQtCreator版本:QtCreator2.6.1交叉编译依赖库:tslib1.4Qt版本:qt-everywhere-opensource-src-4.7.4虚拟机版本:Vmware 7.1.4qmake移植Qt其
2014-04-02 15:34:34
1422
原创 linuxc多进程与外部程序调用(转载)
最近在学习linux环境高级编程,多进程编程算是编程中的最重要的一个部分了,本文让我学习和明白了很多,所以转载过来。让更多想多线程编程的人学习。只有顶到首页才能让更多的人学习。文章摘要: 多线程程序设计的概念早在六十年代就被提出,但直到八十年代中期,Unix系统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。本文我们将介绍在Linux下编写多进程和多线程
2014-03-28 09:57:57
3271
1
原创 c++文件操作总结
一.概括:C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 二.打开文件:对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文
2014-03-26 10:29:10
1006
原创 linux下关于服务端断开后客户端自动退出的问题
问题描述:谢了一个客户端和服务端,正常运行后,客户端不断向服务端发送消息,当服务端跟客户端断开连接或者把服务端关闭后,客户端会再发送一次消息后自动退出。而有些情况我们不希望这种情况发生。原因分析:简单的说就是服务端关闭后,客户端给服务端发送了一条信息,服务端已经关闭,则客户端收到信息,产生SIGPIPE信号,这个信号告诉进程关闭,我们要做的就是捕获这个信号让它按自己的意愿进行解决方法:
2014-03-25 16:47:00
3476
原创 跟我一起写makefile(4)
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目
2014-03-18 15:06:17
887
原创 跟我一起写makefile(3)
一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持
2014-03-18 14:21:36
831
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人