2012年7月8日
摘要: 在我的电脑上一直都是同时安装着酷我和千千静听,用了这么久了感触挺深的!显然他们都是很好的音乐播放器很多地方都是相同的,下面提提不同的地方:千千静听是一款比较老的播放器了,就像vim一样越古老的东西就越强大、功能越完善,我喜欢用千千静听来播放本地音乐。这家伙支持随光标播放还支持比较多的功能如删除重复的列表。个人觉得酷我的在线功能比较的强大,因此我用这东西还在线听音乐和下载音乐。值得一提的是千千静听可以让mp3随身听(如ipod)的随机播放功能成为可能,mp3播放器是按照mp3的存储顺序的播放的那么如果想要实现随机播放只需要让mp3是随机存储的就行了。酷我的复制工具是作为一个插件使用的和播放列表毛 阅读全文
posted @ 2012-07-08 13:49 Junhv.W 阅读(443) 评论(0) 推荐(0) 编辑
  2012年6月28日
摘要: C++虚函数表机制的实现 阅读全文
posted @ 2012-06-28 22:36 Junhv.W 阅读(1248) 评论(0) 推荐(0) 编辑
  2012年6月27日
摘要: 如下为在控制台下显示移动方块#include <graphics.h>#include <conio.h>#define BITMASK(var,i) (var)&(1<<(i)) /*bitmap of boxes*/#define SIDE_LENGTH 30#define LEFTCOOR(m,n) (200+(n)*SIDE_LENGTH) /*left edge of each box*/#define TOPCOOR(m,n) (100+(m)*SIDE_LENGTH) /*top edge of each box*/#define RI 阅读全文
posted @ 2012-06-27 23:26 Junhv.W 阅读(1115) 评论(8) 推荐(0) 编辑
  2012年5月4日
摘要: 在linux中进程退出之后会有一个退出状态,可以通过$echo $?进行查看。如果说把进程比作一个人(病人和正常人)的话那么进程退出码就可以看做是病人的症状!挺好用的如果你发现执行某个命令或自己编写的代码生成的ELF文件发现毛都没发生过就可以通过该指令进行查看。那么不同的退查状态又说明进程发生了什么了呢?可以通过perror进行查看!下面是通过通过perror指令查看得到的所有的退出码的解析(en)。OS error code 0: Success OS error code 1: Operation not permitted OS error code 2: No such f... 阅读全文
posted @ 2012-05-04 10:20 Junhv.W 阅读(3754) 评论(0) 推荐(1) 编辑
  2012年4月30日
摘要: 最近几天一直在研究Bash编程下面是我写的一个小小的功能脚本:可以通过该命令来将指定文件的指定行的附近的10行显示出来,如果你使用过gdb就知道有个叫做list的命令因此我把它一直到shell中来了当然你可以通过cat来查看文件但是如果文件比较大呢你是不是要翻很多页,多麻烦是吧!下面提供代码:$cat list#! /bin/bash # name: list # usage: list 10 lines around the line as given if [ $# -eq 0 -o $# -eq 1 ] then echo -n "Usage: list [number] [f 阅读全文
posted @ 2012-04-30 11:20 Junhv.W 阅读(1797) 评论(0) 推荐(0) 编辑
  2012年4月8日
摘要: 虽然网上的vim插件安装的博文相当的多,但是还是自己经过N久摸索出来的比较的有成就感。当然最大的vim资源当然是官网了:http://www.vim.org/download.php,所谓神器也就只有圣者才能很好的驾驭,那么想成为一个圣者就应该认真的研究/doc文件了。对于插件ctags1.安装其实比较的简单因为可以可以从软件包中定位$sudo apt-get install ctags接下来当然是输入密码安装了,不过我在想window下的gvim呢,这不是蛋疼么?好的对于上面的方法我们直接忽略,来看看自己下载的tar归档文件时怎么整的。首先下载ctas文件:http://ctags.sour 阅读全文
posted @ 2012-04-08 17:04 Junhv.W 阅读(942) 评论(0) 推荐(0) 编辑
  2012年2月20日
摘要: 最近一直对内存管理比较的模糊,因此专门学习了一下,下面是我的一些心得和体会拿来和大家一起分享如有不同的见解期望大家的指点。我们都知道在C++内存管理中有5个分区(如有不知道的推荐阅读:http://www.cnblogs.com/qiubole/articles/1094770.html),也正因为种类太多才弄的比较的模糊。为了方便区分我这里只用了堆和栈来识别他们的功能,事实上也是这么回事,广义的栈是指那些系统自动申请和回收的内存空间只在他们相应的作用域内存在;堆是指那些使用new/delete操作符以及malloc()/free()函数手动申请和释放的动态内存空间。在C++中想要安全而随意的 阅读全文
posted @ 2012-02-20 14:16 Junhv.W 阅读(123) 评论(0) 推荐(0) 编辑
  2012年2月14日
摘要: reinterpret_cast <new_type> (expression) :该转换不考虑expression的类型相当于地址空间的从新分配,参见C++标准转换运算符reinterpret_cast。 typedef int (*FunctionPointer)(int); int value = 21; FunctionPointer funcP; funcP = reinterpret_cast<FunctionPointer> (&value); funcP(value); 这个过程编译器都成功的编译通过,不过一旦运行我们就会得到"EXC_ 阅读全文
posted @ 2012-02-14 19:06 Junhv.W 阅读(119) 评论(0) 推荐(0) 编辑
摘要: const_cast转换符是用来移除变量的const或volatile限定符const_cast就可以直接使用显示转换(int*)来代替:#include<iostream> using namespace std;int main() { const int a = 1; //a的值永远不变 const int* t = &a; //t的值永远不变,但是*t可能改变 int* b = const_cast<int*>(t);//效果和int* b = (int*)(t)一样 *b = 2; cout<<a<<"\t" 阅读全文
posted @ 2012-02-14 17:13 Junhv.W 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 在C++中类型转换的类型有:传统转换方式及用户自动转换、const_cast、reinterpret_cast、static_cast、dynamic_cast显然设置这样的语法当然是有他们自己无可替代的作用了,参见C++类型转换方式总结 。在C++中我觉得数据类型是一个比较抽象的概念,我不知道是不是可以这样说:凡是可以用typedef来重命名的类型都可以看成是数据类型typedef short Int16;typedef int Int32;typedef long int64;typedef int* pInt;typedef int& rInt;typedef const int 阅读全文
posted @ 2012-02-14 14:29 Junhv.W 阅读(197) 评论(0) 推荐(0) 编辑