![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程感悟
buluzhai
这个作者很懒,什么都没留下…
展开
-
龙树传
龙树入雪山,一老比丘以c,c++,java授之。龙树诵受爱乐,不日皆通。即起骄慢,自言:“C++中,津途甚多。编程虽妙,以理推之,故有未尽。未尽之中,可推而演之,以悟后学“。欲以无所推屈,表一切智相。菩萨见其如此,惜而愍之,即接入海,以Lisp无量妙法授之。龙树即得诸经一相,深入无生,三忍具足。...原创 2010-12-18 11:48:08 · 213 阅读 · 0 评论 -
(zz)UNIX/LINUX 平台可执行文件格式分析
本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF ...原创 2011-03-07 19:03:27 · 164 阅读 · 0 评论 -
关于目标文件的一些笔记
目标文件中的内容至少有编译后的机器指令代码、数据。除了这些内容以外,目标文件中还包括了链接时所须要的一些信息,比如符号表、调试信息、字符串等。一般目标文件将这些信息按不同的属性,以"节"(Section)的形式存储,有时候也叫"段"(Segment),在一般情况下,它们都表示一个一定长度的区域,基本上不加以区别,唯一的区别是在ELF的链接视图和装载视图的时候。程序源代码编译后的机器指令经常...原创 2011-03-01 17:19:11 · 91 阅读 · 0 评论 -
c语言函数的可变参数
在C语言中,有一个方法可以使用可变参数,可变参数是指,函数的有一些参数不是必要的。一些编程语言中,这些参数通常有一些默认值。比如C++中的可变参数[code="c"]int myFunc(int a, int b, int ab=0){ if (ab==0){ return a+b; }else{ return a+b+ab; }}[/code]在my...2011-01-19 09:59:24 · 110 阅读 · 0 评论 -
fork函数
要理解fork(),首先需要懂得c程序和进程的概念:c程序组成部分如下:Text segment,正文段,由CPU执行的及其指令部分,可共享,通常是只读.Initialized data segment, 初始化数据段,包含程序中需要明确赋初值的变量.Uninitialized data segment, 非初始化数据段,对应于初始化数据段,又称bss段(block sta...原创 2011-04-28 13:36:12 · 137 阅读 · 0 评论 -
TCP连接和电话系统
建立TCP连接就好比一个电话系统[Nemeth 1997]。socket函数等同于有电话可用。bind函数是在告诉别人你的电话号码,这样他们可以呼叫你。listen函数是打开电话振铃,这样当有一个外来呼叫到达时,你就可以听到。connect函数要求我们知道对方的电话号码并拨打它。accept函数发生在被呼叫的人应答电话之时。由accept返回客户的标识(即客...原创 2011-04-21 14:45:21 · 147 阅读 · 0 评论 -
Eval和Apply
Before we apply a function we must first evaluate its arguments.这一点常常是编程语言的神秘所在。在SICP的封面,EvalApply是被画作一个阴阳的图案。AlanKay说他可以在一页纸上写出最强大的编程语言,主要说的也是Eval和Apply。如果你觉得简单就是美,你完全可以定义一个图灵完备的语言,仅仅通过一个数组和“减1...原创 2011-01-03 09:00:57 · 590 阅读 · 0 评论 -
Facebook的架构
从各种文章来源来看,我理解的Facebook架构如下1:web前端用PHP来写的。再用Facebook的HipHop转换成C++代码,使用g++编译。提供了一个高性能的模板系统和web逻辑执行层。2:业务逻辑使用Thrift做成服务。一些服务根据不同情况使用php,c++,java来实现。也有可能使用其他语言。3:用java写的服务没有使用一些企业级的框架服务。4:...原创 2011-04-19 10:34:48 · 245 阅读 · 0 评论 -
一切都是文件
处理器是文件,硬盘是文件,键盘是文件,鼠标是文件,电池也是文件。USB是文件,显示器是文件。对于linux kernel来说,所有硬件都被看做文件。你可以对他们进行读和写。这些硬件可以在/dev目录下找到虚拟文件。他们的状态被保存在/proc目录下。查看cpu$ cat /proc/cpuinfoprocessor : 0vendor_id ...原创 2011-04-17 21:48:35 · 149 阅读 · 0 评论 -
结构化程序理论
结构化程序理论是程序设计语言理论的一个结果。他是说所有可计算函数都可以用三种方式组合子程序来实现。这三种控制结构是1:序列,执行一个子程序,然后执行另外一个子程序。2:分支,通过布尔变量的值选择执行两个程序中的某一个。3:重复,不断执行一个子程序,知道某个变量的值为true.计算机科学家大都认为这个理论是Corrado Böhm和 Giuseppe Jacopini 196...原创 2010-12-23 11:23:34 · 291 阅读 · 0 评论 -
使用yql过滤hacker news的信息
[code="sql"]select * from html where url="http://news.ycombinator.com/" and xpath='//tr/td/a[substring(@href,1,4)="http"][@href!="http://ycombinator.com"]'[/code][url]http://developer.yahoo.c...原创 2010-12-20 11:12:34 · 123 阅读 · 0 评论 -
关于函数指针
函数指针 首先要理解以下三个问题:(1)C 语言中函数名直接对应于函数生成的指令代码在内存中的地址,因此函数名可以直接赋给指向函数的指针;(2)调用函数实际上等同于"调转指令+参数传递处理+回归位置入栈",[color=red][b]本质上最核心的操作是将函数生成的目标代码的首地址赋给CPU 的PC 寄存器[/b][/color];(3)因为函数调用的本质是跳转到某一个...原创 2011-03-29 09:25:17 · 85 阅读 · 0 评论