- 博客(11)
- 资源 (4)
- 收藏
- 关注
原创 基于Linux的多线程安全队列
<br />线程队列头文件 threadqueue.h<br />#ifndef THREADQUEUE_H_ .#define THREADQUEUE_H_ #include <pthread.h> #include <iostream> using std::cout; using std::endl; const int QUEUESIZE = 20; template<class Object> class Thr
2010-12-30 11:37:00 4413 1
转载 MP3文件格式解析
<br />最近做的一个项目,移植libmad到micro2440上,使用QT写一个界面,来作为madplay的前端,播放mp3,关于libmad的介绍就不多说了,还有madplay,一直没有办法获取歌曲的时间长度,刚开始想到了使用开源的库taglib或者libid3tag,后来taglib没有移植成功,放弃了移植库的这个想法,然后找资料去了解MP3的文件格式,自己来计算时间长度,下面是找到的关于MP3文件格式的资料<br />总体来讲就是<br />时间=文件长度/每帧长度*0.026s<br />每帧长
2010-12-26 13:36:00 5202 1
原创 Qt同时支持触摸屏和USB鼠标
<br />在/etc/profile中添加环境变量<br />export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mouse0"<br />刚开始只写了export set QWS_MOUSE_PROTO=TSLIB:/dev/input/event0<br />所以只会支持触摸屏<br />只有在插上了USB鼠标后才会在input下产生设备节点mouse0<br /> <br />QWS_MOUSE_PR
2010-12-22 20:46:00 5459 1
原创 Linux安装madplay以及设置共享库连接
首先再在所需的四个文件,分别是zlib-1.2.3.tar.gzlibid3tag-0.15.1b.tar.gz ,用来获取媒体文件的tag,保存了一些曲目信息libmad-0.15.1b.tar.gz ,解码库madplay-0.15.2b.tar.gz ,应用程序源码包按照上面的顺序进行解压缩,源码包就到网上下载好了,我这里也有~~Mkdir /root/Qtmp3tar –xzvf libid3tag-0.15.1b.tar.gz –C /root/Qtmp3tar –xzvf libmad-0.1
2010-12-20 19:06:00 2772 1
原创 二叉树的三种遍历方法(递归和非递归)
<br />二叉树类的头文件“树.h”<br />#include<iostream>#include<stack> //STL#include<queue>using namespace std;class Tree{public: Tree *Left; Tree *Right; char data; Tree(); //成员函数 void CreateTree(Tree* &node); //递归的遍历二叉树 void PreOrderV
2010-12-17 13:53:00 3254 2
原创 进一步了解vfork()函数
<br />在《UNIX环境高级编程》一书的第八章中,有一道课后习题如下:<br />回忆图7-3典型的存储空间布局。由于对应于每个函数调用的栈帧通常存储在栈中,并在调用 vfork后,子进程运行在父进程的地址空间中,如果不是在main函数中而是在另一个函数中调用vfork,以后子进程从该函数返回时,将会发生什么情况?<br />作者Rich Stevens是一位大师,留下这么一题必有其深意,于是结合《深入理解计算机系统》中的知识,写了个程序验证了下,受益良多。<br /> 首先回忆下程序运
2010-12-12 23:16:00 2882 4
原创 C++的虚伪
<br />虚基类<br /> 当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为 <br />虚基类<br />虚基类. <br /> 在继承中产生歧义的原因有可能基类是继承类继承了基类多次,从而产生了多个拷贝,即不止一次的通过多个路径继承类在内存中创建了基类成员的多份拷贝。虚的基本原则是在内存中只有基类成员的一份拷贝。这样,通过把基类继承声明为虚拟的,就只能继承基类的一份拷贝,从而消除
2010-12-11 01:03:00 1447
原创 由fork()和vfork()回忆下OS的内存管理
<br />使用fork产生的子进程复制了父进程的代码段和数据段,<br />我们现在假定在父进程中有一个变量var,初始值为88<br />子进程也有一个var,初始值也是88,修改子进程的var,父进程的var并不改变<br />而且父进程和子进程的代码段和数据段是完全一样的,<br />所以父进程和子进程中var的逻辑地址也是完全一样的,<br />{<br />逻辑地址实际上是段内偏移量,就是该变量在该进程空间中数据段的偏移量<br />要求得他的物理地址,要根据操纵系统的段式内存管理方法,来求得他
2010-12-09 11:46:00 1421 1
原创 程序员,对自己好点吧!
<br />昨天在Google图片中输入“程序员”,搜索到的第一张图片是这样的<br /><br />一位平头兄桌上两台笔记本一台台式机。其中的一台中显示是某个论坛的页面【估计正在回答某个问题】、中间那台正在启动Eclipse【要开始写Java程序了】、平头兄的目光此时盯在台式机的显示器上【应该是正在远程或者是某个虚拟机】,旁边还有一本打开的书…<br />图片的名字是“真正的程序员就应该这样”,程序员就应该这样么? <br />是谁规定程序员就应该是这样的,本来是应该四个人做的事情让一个程序员做,难道程序
2010-12-07 23:41:00 2056
转载 编程带给我的习惯
<br />1. 编程已给我带来很多坏习惯,编程也每天在继续给我新增更多的坏习惯。当然有些习惯和编程无关了。下面这些习惯尽管我也很想改掉,但已根深蒂固。<br /> * a. 在天地万物中,去发现多态、继承和模式;<br /> * b. 用十六进制代码中的像素和颜色来解释某东西的大小;<br /> * c. 在日常交谈中用代码相关的抽象术语。<br /><br />2. 我现在认为256这个数字非常完美。但非程序员不明白这个,有时候让我措手不及。<br />编者评:1024呢?<br />3. 我在看
2010-12-07 23:05:00 1130
原创 C++的重写,重载,重定义
1. 重写 (override): 父类与子类之间的多态性。子类重新定义父类中有相同名称和参数的虚函数。1) 被重写的函数不能是 static 的。必须是 virtual 的,或者是 override 的 ( 即函数在最原始的基类中被声明为 virtual , c++ 中没有 override) 。2) 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型)3) 重写函数的访问修饰符可以不同。尽管 virtual 是 private 的,派生类中重写改写为 public,protected
2010-12-03 15:08:00 8174
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人