自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿

让漫天繁星在指尖随心闪耀

  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 我理解的C++

C++用了很多年了,昨天有机会和技术高手讨论了一下,感触很多,记录一下吧。一.编程语言C++这个小节是把C++作为Programming Language这个topic下面来讨论,C++有三个主要方面的语言特性:面向对象编程,函数式编程,模板编程。1.     面向对象编程这个应该是用的最多的方面了,说起来都是教科书上的封装,继承,多态。我个人理解面向对象威力最大的是封装,而面向对象引发出来的设计...

2018-04-27 12:55:15 816

翻译 像处理数据一样处理代码

只听Norvig说:“是,John,你有什么问题?”我记不清Lisp之父当时怎么问的了,但不超过十个词,就是问 Python是否能如Lisp那样优雅地像数据一样处理代码。“不,John,不行。”Norvig回答,然后静等麦卡锡继续发问。但是,老人什么也没有再说。怎么样像处理数据一样处理代码?(define (cons x y) (define (dispatch m) (c

2013-05-12 09:25:13 2613

转载 王垠的一些文章

无意中看到他的博客,感觉说的很好,早点看到就好了。以下是搜集的一些他的博客,按时间从旧到新:完全用linux工作写给支持和反对《完全用Linux工作》的人们清华梦的粉碎——写给清华大学的退学申请Cornell 感受我和Google的故事对博士学位说永别从工具的奴隶到工具的主人  (这篇学计算机的一定要看,真的写的非常好)他朋友对他的回

2013-01-21 07:43:47 7772

转载 The Devil's Guide to Debugging

1. Scatter output statements everywhere.2. Debug the program into existence.3. Never backup earlier versions.4. Don't bother understanding what the program should do5. Use the most obvious fix

2012-10-28 11:19:26 3039

翻译 video buffer里的属性

内存中从0xB8000h起始的一段地址叫做图像缓存(video buffer)。0xB8000开始的字符位于屏幕左上角,整个屏幕一共25行,80列。每个字符占用两个字节,前一个字节是ASCII码,后一个字节属性。属性如下表:BitUsageExample7Blinking06Background Red05Ba

2012-05-17 05:24:25 4779

转载 computer science themes

abstraction: hiding detailsuniversality: 1) way to make decisions; 2) way to keep track; 3) way to keep goingrecursive definitiondesign under constraintdesign under constraintliberal a

2012-04-06 09:17:01 2435

原创 linux编程之emacs

在linux下编程,有两个编辑器是肯定会听说的,vim和emacs,个人感觉这两个编辑器和IDE比也真是有过之而无不及啊。我自己先学了emacs,而且用起来很顺手,所以暂时也没学习vim的打算,这里只能说说emacs。当然不是说vim不好,关于这两个编辑器的口水已经够多了,我只能引用某个大牛的一句话:“emacs有的功能,vim都有,反之亦然。”其实只要能把活漂亮的干完,你喜欢用记事本也可

2012-04-01 09:33:34 21304

转载 Lisp the language

Born of LISPAt first,computers were invited to do numerical computing. But in order toperform numerical tasks efficiently, it had to be given importantnon-numerical capabilities(Herbert 1980). Whe

2012-03-30 03:07:59 2704

原创 关于C++的placement new和placement delete

昨天发贴提了个问题,今天总结在这。原帖点击进入,有兴趣可以看看,我呆会儿还会说。C++的new是语言自定义的操作符,这个操作符的行为包含两件事,而且你不能改变。第一件事:调用operator new分配内存。所以通常说的重载new函数其实重载的是operator new,你无法重载new。第二件事:调用你要new的对象的所属类的构造函数初始化第一步中分配的内存。这就是为什么你Obj

2012-03-27 01:03:49 9392 2

翻译 qt下的跨目录多工程编译

这里要编译的工程包含一个库和一个可执行文件。可执行文件依赖于库,所以要先编译库,编译后库放在lib目录里面,可执行文件放在bin目录里面。目录结构如下:.├── app│   ├── app.pro│   ├── appwindow.cpp│   ├── appwindow.h│   └── main.cpp├── bin├── complex.pro├── inclu

2012-03-23 02:07:54 13489 6

转载 keyboard buffer

// also as note for interruptWhen a key is either pressed or released, an interrupt is generated. On an ISA machine this interrupt is allotted, IRQ#1, which in turn is reported by the interrupt cont

2012-03-21 09:25:49 3195

原创 git命令

详细的git详解请参见另外一篇博客,我也是从那学习的,猛击进入=========华丽丽的分割线==========以下是个人memo :)同步远程服务器上的数据到本地: git fetch origin         // 3. git分支新建分支:git branch videoplay转移到新分支videoplay:git checkout videoplay合并vi

2012-03-12 07:02:22 3090

原创 C/C++的预编译和宏定义

预编译是整个编译过程的第一步,是g++ -E选项输出的结果。这个步骤处理的是源文件/头文件中的宏,宏指令常用的有以下几类:文件包含:#include宏定义:#define、#undef条件编译:#ifdef、#ifndef、#if、#elif、#else、#endif1. 文件包含 #include预处理会把要包含的文件的内容全部包含进来,比如下面这个文件prepro.cpp:

2012-02-24 09:36:51 9172

原创 linux编程之查看帮助

想要在linux下独挡一面的编程,有一技能必须掌握,那就是查看帮助。可能你习惯用google,百度来找帮助,但是使用下面的方法,获取信息更快,学习起来也更系统些。要查看一个命令的帮助有两个方法:命令 + --helpman + 命令这两种方式一般命令都会有其中一种形式,有些两种形式都有,而它们的输出也很类似,都会告诉你命令的用法和命令支持的选项,比如:g++ --hel

2012-02-21 11:16:27 4603

原创 编译器g++

g++是GNU编译工具集(GCC)中的一个组件,用来编译C++语言写的源文件。从C++源文件到可执行文件的编译过程,有如下几个步骤,g++提供了很多编译选项,可以让我们控制整个编译过程:预编译(g++选项 -E)结果直接输出到控制台编译 (g++选项 -S)结果保存为.s文件,汇编文件汇编 (g++选项 -c)结果保存为.o文件,目标文件(object file)链接 (g++选项

2012-02-20 11:47:31 11154

原创 linux编程之动起手来

有了一个linux环境以后,接下来要做的事情就是熟悉它。而那些bash命令显然满足不了我们的需求,于是,让我们真刀真枪在linux下编程序吧。第一个程序第一个程序当然是老掉牙的hello world了。打开心爱的linux的家:cygwin,接下来怎么新建文件,怎么写程序呀?这个问题的答案也是我推荐cygwin的一个原因,就是你可以在windows下用记事本或者你喜欢的IDE把程序写好

2012-02-19 09:35:16 7938

原创 几点学习linux编程的建议

我个人用了3、4年linux,从当初的小菜鸟到现在的大菜鸟,积累了一些经验,现在分享给大家,尤其是初学者。弄linux的环境大体有3种办法:在windows上安装cygwin在windows上安装虚拟机,再安装linux直接装linux,弄个双系统3种办法我都用过,目前我个人是双系统,但是对于初学者,我强烈推荐使用第一种方法,是的,极其强烈。原因很简单,就是cygwin安装简单,不

2012-02-18 08:58:54 41297 12

原创 不光是汇编开发指南

Linux 汇编语言开发指南写的挺不错的。

2012-02-15 01:02:33 2669

原创 多线程程序在内存中的分布

上一篇博客谈到了普通程序在内存中的分布,这篇博客谈谈文艺程序在内存中的分布。执行环境首先缕一下概念吧。在linux下,进程(process)和线程(thread)并没有什么区别,都是一种执行环境(context of execution, COE),在linux下统称为task。每个执行环境都有自己的状态,包括CPU状态,内存映射状态,权限状态(uid,pid)和各种各样的通信状态(打

2012-01-21 06:49:57 9278

原创 谈谈程序在内存中的分布

作为一个菜鸟,这个题目有点大,所以这篇博客缺点是可能不够深入,但应该还是很详细的,希望能对大家有所帮助。1.简介加初步分析在linux系统中,程序在内存中的分布如下所示:低地址.text.data.bss            heap(堆)      -->      unused   env高地址其中 :.

2012-01-15 12:04:10 9829 6

原创 库函数和系统调用

系统调用(system call)是操作系统内核提供的函数,在内核态运行(kernel mode),属于函数中的低等下人,终身代号9527,虽然低等,但是谁也离不开他们,因为离开他们就没办法和内核打交道了,没办法和内核打交道就什么都歇菜了。。。linux3.0.0-14的系统调用有346个,可以在源码的 linux-3.0/arch/x86/kernel/syscall_table_32.S文

2012-01-14 05:47:30 6516

原创 小问题集。。。

(edges:11362): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap",解决:安装gtk2-engines-pixbuf,ubuntu software center 里面有,也可以用命令安:suto apt-get install gtk2-engines-pixbuflinux下重启

2012-01-12 04:02:13 960

转载 ubuntu 11.10下装opencv2.3

ubuntu自带的软件中心里面的 opencv版本是2.1,但是我想装2.3,就在网上搜了下,有个貌似是个人的repository可以下载到。具体点击这里查看,下面贴的是那篇博客里面的内容和我自己的一点补充:OpenCV 2.3 packages for Ubuntu 11.10Read more about the OpenCV project:  * http://

2012-01-12 03:21:44 1529

原创 编译开源软件的一个问题----pkg-config找不到库

一般编译开源软件的第一步都是运行./configure,确定编译软件需要的命令或者库在系统中都能找到,然后再运行./make去编译。但是运行./configure有时候会报错,说需要的库找不到,而设置LD_LIBRARY_PATH后还是可能找不到库(如何设置参见这篇博客)。找不到库的原因是./configure里面调用了另外一个程序:pkg-config,这个程序负责在.pc后缀的文件中找

2012-01-12 00:46:28 2935

原创 关于linux下的库文件

先说说库文件是怎么来的吧。以C为例,我们写一个程序,一般都不会把所有的函数都写在一个文件里面,通常都是划分模块,然后一个模块若干个文件,然后在main文件里面调用这些模块。我这里用一个magic.c文件代替实际程序中的所有的文件,你就当这个magic.c文件非常神奇,你调用里面的magic()函数后,它会自动按你的想法把剩下的工作都完成。下面是两个文件:mian.cint main

2012-01-11 14:29:38 10493 8

原创 C调用汇编

例子:在C的main函数中调用汇编语言写的addone函数,把传入的参数加一然后返回。汇编里面首先要把用到的寄存器压栈,使用指令global使函数可以在其他文件中调用,顺便说一句,C中的static函数之所以只能在本文件中可用,就是编译后的汇编文件没有用global指令,汇编的返回值放在EAX寄存器中。汇编文件名是addone.asm,汇编方法在后面,内容如下:global add

2012-01-08 04:18:42 7612

原创 linux下的文件操作2

linux下的文件操作2之前讲了系统调用和库函数在文件操作方面的联系和区别,并以打开文件举了几个例子。打开文件后当然不是为了关闭文件,而是为了读取或者写入文件,所以现在整理一下文件的读写。系统调用提供的文件读写函数有:read, write 等,但是我们不用它们,麻烦,一般都使用库函数提供的文件读写函数(这里是C的库函数,其他的不熟)。先讲读取文件。库函数提供的文件读取函数大致能分三个

2011-12-27 12:25:12 1553

原创 Linux 下的文件操作

Linux 下的文件操作1. 使用系统调用Linux提供了一些系统调用(System Call) 来进行文件操作,包括:open, read, write, close, lseek, ioctl, etc. (PS:系统调用可以使用汇编语言调用)其他所有系统调用都定义在 unistd.h 中,只有open找不到,用下面的代码试了一下:int main(){ int fd;

2011-12-26 07:23:23 5911

原创 扩展gdb命令

在gdb中调试c++代码,代码中用到了stl的容器,要在gdb中显示容器对象的内容的命令比较冗长,如下所示:print *(farmers._M_impl._M_start)@5有一个名为farmers的vector, 显示容器对象farmers前5个元素。每次都写这个命令很烦,就自定义一个gdb命令,在一个文件(命名为gdb.conf)中定义一个自己的命令:defin

2011-12-23 05:08:28 1316

翻译 关于寄存器

这篇博客不错:点击进入这篇也不错:点击进入

2011-12-08 12:39:01 602

翻译 out of range的两个标志(flag)

out of range 有两个标志:carry 和 overflow无符号整数进行算术运算产生 out of range错误后会设置(set) carry flag。有符号运算设置(set) overflow flag。下面的栗子是一个字节整数的运算,无符号范围:0~255, 有符号范围:-128~127例子1:FFH + FFH最终结果:设置(set) carry fl

2011-11-04 10:52:58 1311

转载 一句话

A socket is a communication channel between two processes, usually (but not necessarily) running on different computers.The ideal library is small, fast, powerful, flexible, extensible, intuitive,

2011-11-04 03:41:38 530

原创 感觉比较有用的几个emacs命令

1. 在minibuffer 中运行一个命令M-! 然后输入命令,emacs 会打开一个名为*shell command output*的buffer来输出命令执行的结果。2. 使用一个buffer的region取代一个文件当做命令的输入先在一个buffer中选一个region。M-h (mark-paragraph) 或者C-Space/C-@标记一个region。然后M

2011-09-18 09:53:36 548

转载 closing

<br />The surface has barely been scratched. But the way forward is open.<br /> <br />2011-04-22  22:37:03

2011-04-23 10:36:00 735

原创 abstraction(engineering)

abstraction make things simple

2011-04-23 09:02:00 729

原创 haha

A CPU without an interrupt pin has been compared to a telephone without a bell.A processor with a one-at-a-time interrupt policy can be like a household with a single, occupied bathroom.

2011-04-20 09:04:00 634

转载 storage protocols

<br />1. When an n byte transfer is indicated by an address a, the memory bytes refered to are those at the addresses a, a+1, ...a+n-1. All architectures do this.<br />2. When an n byte number is stored in memory, its bytes are stored in order of significa

2011-04-15 11:54:00 723

原创 寄存器啊寄存器

爱情蒲公英演唱会上除了黄品源的歌真好听。

2011-04-13 09:44:00 661

转载 Socket

Socket的一个简介,包括建立socket连接server和client所有需要的函数以及一个小例子。

2011-04-03 11:58:00 737

原创 find和grep

shell 中超级有用的两个命令,find 和 grep.

2011-03-15 11:02:00 780

简单校园博客系统asp.net

校园博客系统,实现基本功能,写日志,添加标签,友站管理,上传,下载文件==

2008-09-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除