博客园 - Geek_Ling
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=682821
2019-06-11T01:48:13Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
feed.cnblogs.com
https://www.cnblogs.com/yanlingyin/p/4161053.html
The Triumph Of Bio-logic - Geek_Ling
理性技术的局限机械逻辑人造机械的构成逻辑,比如说钟表的制作原理。是一种可被人类掌握的,可推演的理论。生物逻辑一个有机系统的构成逻辑。比如说草原、细胞、大脑等这些系统的存在所依托的逻辑,我们成为生物逻辑。这是一种系统层面的控制技术,涉及多个变量和多个复杂因素,是维持一个复杂系统的法则。简单的理论不足以...
2014-12-13T02:47:00Z
2014-12-13T02:47:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】理性技术的局限机械逻辑人造机械的构成逻辑,比如说钟表的制作原理。是一种可被人类掌握的,可推演的理论。生物逻辑一个有机系统的构成逻辑。比如说草原、细胞、大脑等这些系统的存在所依托的逻辑,我们成为生物逻辑。这是一种系统层面的控制技术,涉及多个变量和多个复杂因素,是维持一个复杂系统的法则。简单的理论不足以... <a href="https://www.cnblogs.com/yanlingyin/p/4161053.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/p/3405735.html
那些年看过的书 - Geek_Ling
My Writing 最近看了许多人洋洋洒洒的文笔、那些读了让人浑身舒服的文字。无端的也开始羡慕起非写作来,能写出让人读之畅快的文字,何尝不是一件非常与意义的事。严格来说,真正是的写作之于我应该是大三才开始的。当时看了一些博客,很多人都强调写作的重要性(当然,这里强调的更多是技术写作)后来忍不住就在博客园,写了一些技术博客,就这样,渐渐的喜欢上了技术写作。 对于技术协作,我的标准是:将其清晰、简单、通俗的描述出来,以至于对这个领域没有什么了解的人可以看懂。本着这样的原则,现在的我对于技术协作,也不是很陌生了。About Books 可能是由于技术写作的经历,使得我对文字的审美也发生变化:...
2013-11-03T16:22:00Z
2013-11-03T16:22:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】My Writing 最近看了许多人洋洋洒洒的文笔、那些读了让人浑身舒服的文字。无端的也开始羡慕起非写作来,能写出让人读之畅快的文字,何尝不是一件非常与意义的事。严格来说,真正是的写作之于我应该是大三才开始的。当时看了一些博客,很多人都强调写作的重要性(当然,这里强调的更多是技术写作)后来忍不住就在博客园,写了一些技术博客,就这样,渐渐的喜欢上了技术写作。 对于技术协作,我的标准是:将其清晰、简单、通俗的描述出来,以至于对这个领域没有什么了解的人可以看懂。本着这样的原则,现在的我对于技术协作,也不是很陌生了。About Books 可能是由于技术写作的经历,使得我对文字的审美也发生变化:... <a href="https://www.cnblogs.com/yanlingyin/p/3405735.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/08/04/2617209.html
Linux 文件操作总结 - Geek_Ling
文件是linux中的一个重要概念。在Linux中,一切(几乎一切)都是文件。简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作。对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式下的文件操作。博文的主要内容如下:Linux 中的文件文件访问-库函数文件访问-系统调用库函数标准 I/O 库/proc文件系统1 Linux中的文件1.1概念按照普通的定义,文件不过是一堆数据,在往下说,就是存储器中的0101。。。而我们这里讨论的文件有了更广的定义。
2012-08-04T01:38:00Z
2012-08-04T01:38:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】文件是linux中的一个重要概念。在Linux中,一切(几乎一切)都是文件。简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作。对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式下的文件操作。博文的主要内容如下:Linux 中的文件文件访问-库函数文件访问-系统调用库函数标准 I/O 库/proc文件系统1 Linux中的文件1.1概念按照普通的定义,文件不过是一堆数据,在往下说,就是存储器中的0101。。。而我们这里讨论的文件有了更广的定义。 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/08/04/2617209.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/05/05/2480267.html
说说计算机中的异常 - Geek_Ling
开篇异常这个名词应该大家都不陌生,很多人都听说过。系统调用知道吧?其实系统调用也是一种异常。但是具体的什么是异常呢?他在计算机中有什么作用?他是如何工作,如何被我们利用的?我想很多人都还不都是很清楚。、了解异常有诸多好处,可以让你更好的理解操作系统和应用程序的交互,更好的理解并发等。所以今天就简单的来说一下异常。注:本博文图片来源《Computer system-A Programmer's Perspective》什么是异常为了便于理解,我就不按照书本来了啊,异常可以这样理解:计算机执行一个连续的指令序列,如:a1,a2,a3,,,ak,这些指令执行的时候是顺序执行的,相邻的两条指令
2012-05-05T01:53:00Z
2012-05-05T01:53:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇异常这个名词应该大家都不陌生,很多人都听说过。系统调用知道吧?其实系统调用也是一种异常。但是具体的什么是异常呢?他在计算机中有什么作用?他是如何工作,如何被我们利用的?我想很多人都还不都是很清楚。、了解异常有诸多好处,可以让你更好的理解操作系统和应用程序的交互,更好的理解并发等。所以今天就简单的来说一下异常。注:本博文图片来源《Computer system-A Programmer's Perspective》什么是异常为了便于理解,我就不按照书本来了啊,异常可以这样理解:计算机执行一个连续的指令序列,如:a1,a2,a3,,,ak,这些指令执行的时候是顺序执行的,相邻的两条指令 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/05/05/2480267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/04/23/2466141.html
linux系统调用和库函数调用的区别 - Geek_Ling
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:
2012-04-23T03:04:00Z
2012-04-23T03:04:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四: <a href="https://www.cnblogs.com/yanlingyin/archive/2012/04/23/2466141.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html
词法分析器的实现 - Geek_Ling
开篇编译,简单的说,就是把源程序转换为可执行程序。从hello world 说程序运行机制里面简单的说明了程序运行的过程,以及一个程序是如何一步步变成可执行文件的。在这个过程中,编译器做了很多重要的工作。对底层该兴趣的我,自然的,也就迫切想搞清楚编译的内部实现,也就是编译的原理。这篇文章主要说的是编译器前端,词法分析器的原理,最后会给出一个词法分析器的简单实现。介绍编译简单的说,就是把源程序转化为另一种形式的程序,而其中关键的部分就是理解源程序所要表达的意思,才能转化为另一种源程序。可以用一个比喻来说明问题:人A和人B想要交谈,但是他们都不知道彼此的语言,这就需要一个翻译C,同时懂得A和B的语
2012-04-17T04:25:00Z
2012-04-17T04:25:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇编译,简单的说,就是把源程序转换为可执行程序。从hello world 说程序运行机制里面简单的说明了程序运行的过程,以及一个程序是如何一步步变成可执行文件的。在这个过程中,编译器做了很多重要的工作。对底层该兴趣的我,自然的,也就迫切想搞清楚编译的内部实现,也就是编译的原理。这篇文章主要说的是编译器前端,词法分析器的原理,最后会给出一个词法分析器的简单实现。介绍编译简单的说,就是把源程序转化为另一种形式的程序,而其中关键的部分就是理解源程序所要表达的意思,才能转化为另一种源程序。可以用一个比喻来说明问题:人A和人B想要交谈,但是他们都不知道彼此的语言,这就需要一个翻译C,同时懂得A和B的语 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/04/16/2441979.html
对快速排序的简单分析 - Geek_Ling
开篇在实际的过程中,总需要对一些数据进行排序,在众多的排序算法中,快速排序是较为常用的排序算法之一。而网上对于快速排序的中文资料还不是很全。写这篇博文主要记录一些自己对于快速排序的了解,以及对快速排序的性能的分析。我将在这里记录下我对快速排序的认识和学习过程 ,用尽可能简单明了的叙述来阐述我的理解。快速排序基于算法中很重要的思想是 分治。所以会先介绍一下分治思想,然后对算法原理进行介绍,接着会分析算法的性能并对算法作进一步的讨论。注:为了便于说明问题,本博文中会用到部分《introduction to algorithm》中的图片。关键词:快速排序、分治、递归“大事化小”——从分治说起分治?分
2012-04-16T02:22:00Z
2012-04-16T02:22:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇在实际的过程中,总需要对一些数据进行排序,在众多的排序算法中,快速排序是较为常用的排序算法之一。而网上对于快速排序的中文资料还不是很全。写这篇博文主要记录一些自己对于快速排序的了解,以及对快速排序的性能的分析。我将在这里记录下我对快速排序的认识和学习过程 ,用尽可能简单明了的叙述来阐述我的理解。快速排序基于算法中很重要的思想是 分治。所以会先介绍一下分治思想,然后对算法原理进行介绍,接着会分析算法的性能并对算法作进一步的讨论。注:为了便于说明问题,本博文中会用到部分《introduction to algorithm》中的图片。关键词:快速排序、分治、递归“大事化小”——从分治说起分治?分 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/04/16/2441979.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/03/27/2419304.html
C中的循环是如何实现的 - Geek_Ling
开篇几乎每种程序设计语言的语法中都会有语句的循环,跳转。像最为熟知的C语言便有 for 、 while 、 do---while 等等。这些循环一般都很容易理解和使用,对于程序中逻辑的实现也很有帮助。只是很多人不曾知道,这些循环、跳转在计算机内部、在底层是如何实现的,于是在出现问题时还是没有好的解决办法,或者是虽然写出来程序,对于内部的逻辑,却还是隔了一层迷雾。比如有人对这样一个问题:for( i=0 ; i< 10 ; i++){printf(”%i“,i);}for语句里面的 i++ 是什么时候执行的呢? 当循环开始时,是先执行括号里的 i++ 还是printf(”%i“,i)? 也
2012-03-27T07:05:00Z
2012-03-27T07:05:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇几乎每种程序设计语言的语法中都会有语句的循环,跳转。像最为熟知的C语言便有 for 、 while 、 do---while 等等。这些循环一般都很容易理解和使用,对于程序中逻辑的实现也很有帮助。只是很多人不曾知道,这些循环、跳转在计算机内部、在底层是如何实现的,于是在出现问题时还是没有好的解决办法,或者是虽然写出来程序,对于内部的逻辑,却还是隔了一层迷雾。比如有人对这样一个问题:for( i=0 ; i< 10 ; i++){printf(”%i“,i);}for语句里面的 i++ 是什么时候执行的呢? 当循环开始时,是先执行括号里的 i++ 还是printf(”%i“,i)? 也 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/03/27/2419304.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html
从hello world 说程序运行机制 - Geek_Ling
开篇学习任何一门编程语言,都会从hello world 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。hello world 这些信息是如何通显示器过显示的?cpu执行的代码和程序中我们写的的代码肯定不一样,她是什么样子的?又是如何从我们写的代码变成cpu能执行的代码的?程序运行时代码是在什么地方?她们是如何组织的?程序中的变量存储在什么地方?函数调用是怎样是现的?这篇文章将简单的讨论程序的运行机制开发平台隐藏的过程每一种语言都有自己的开发平台,我们的程序大
2012-03-05T05:16:00Z
2012-03-05T05:16:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇学习任何一门编程语言,都会从hello world 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。hello world 这些信息是如何通显示器过显示的?cpu执行的代码和程序中我们写的的代码肯定不一样,她是什么样子的?又是如何从我们写的代码变成cpu能执行的代码的?程序运行时代码是在什么地方?她们是如何组织的?程序中的变量存储在什么地方?函数调用是怎样是现的?这篇文章将简单的讨论程序的运行机制开发平台隐藏的过程每一种语言都有自己的开发平台,我们的程序大 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/27/2369120.html
我认识的线程 - Geek_Ling
开篇1、背景之前的很长一段时间里,随着加工工艺的发展,cpu的处理速度一直在提升,基本上每18个月就会翻倍。直到04年cpu主频达到了4.0GH以来,这种规律似乎已经失效,原因是人们在制造cpu的工艺方面已经达到了物理极限。除非技术有本质突破,才能进一步提高cpu的处理速度。然而需要处理的数据量并没有因此而停止增长,其中的一个方法就是采用多核、并行处理技术。这会成为并且正在成为未来发展的趋势。要理解并行技术,对线程有一定的了解是很必要的。这篇博客主要说一下自己对线程的看法,这只是从简单的角度来看问题,入门级文章,笔者认知有限,有不足之处还望不吝指正。2、我的想法关于并发编程,我觉得如果能有一种
2012-02-27T02:18:00Z
2012-02-27T02:18:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇1、背景之前的很长一段时间里,随着加工工艺的发展,cpu的处理速度一直在提升,基本上每18个月就会翻倍。直到04年cpu主频达到了4.0GH以来,这种规律似乎已经失效,原因是人们在制造cpu的工艺方面已经达到了物理极限。除非技术有本质突破,才能进一步提高cpu的处理速度。然而需要处理的数据量并没有因此而停止增长,其中的一个方法就是采用多核、并行处理技术。这会成为并且正在成为未来发展的趋势。要理解并行技术,对线程有一定的了解是很必要的。这篇博客主要说一下自己对线程的看法,这只是从简单的角度来看问题,入门级文章,笔者认知有限,有不足之处还望不吝指正。2、我的想法关于并发编程,我觉得如果能有一种 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/27/2369120.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/15/thinkingincache.html
对缓存的思考【续】——编写高速缓存友好代码 - Geek_Ling
开篇上一篇博文对缓存的思考——提高命中率详细介绍了高速缓存的组织结构,并通过实例说详细明了cpu从高速缓存中取数据的过程,对于缓存的工作机制应该有了清晰的认识。这篇博文就来简单讨论以下对于缓存在实际开发中的应用,这里将告诉你如何让你的程序充分利用该缓存,即如何编写高速缓存友好的代码。提示:如果高速缓存的运行机制还没有清晰的认识,请参照前面文章。注1:关于文中提到的局部性的相关知识参照:局部性原理浅析——良好代码的基本素质注2:这是一个系列的文章,收录在程序性能优化注3:文章知识有些地方不容易理解,所以用心才能看完噢。“用空间换时间”在搞算法的时候经常能听到这种说法,算法研究中通常要考虑算法的时
2012-02-15T07:20:00Z
2012-02-15T07:20:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇上一篇博文对缓存的思考——提高命中率详细介绍了高速缓存的组织结构,并通过实例说详细明了cpu从高速缓存中取数据的过程,对于缓存的工作机制应该有了清晰的认识。这篇博文就来简单讨论以下对于缓存在实际开发中的应用,这里将告诉你如何让你的程序充分利用该缓存,即如何编写高速缓存友好的代码。提示:如果高速缓存的运行机制还没有清晰的认识,请参照前面文章。注1:关于文中提到的局部性的相关知识参照:局部性原理浅析——良好代码的基本素质注2:这是一个系列的文章,收录在程序性能优化注3:文章知识有些地方不容易理解,所以用心才能看完噢。“用空间换时间”在搞算法的时候经常能听到这种说法,算法研究中通常要考虑算法的时 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/15/thinkingincache.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/14/2348980.html
对缓存的思考——提高命中率 - Geek_Ling
开篇编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。前两篇博文局部性原理浅析介绍了程序的局部性原理,如何写出局部性良好代码。提高程序性能、何为缓存讨论了存储器层次结构,计算机内部的存储结构、缓存的概念,简单的介绍了缓存的工作机制。建议先阅读前两篇博文,虽然他们之间联系不大,在前面也有一些对本文的铺垫。而且,这是一个系列的文章。旨在优化程序性能。这篇博文主要介绍的是缓存的组织、工作原理。拨开迷雾,让你更加清晰的认识缓存。通用缓存结构回顾在提高程序性能、何为缓存中
2012-02-14T00:28:00Z
2012-02-14T00:28:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。前两篇博文局部性原理浅析介绍了程序的局部性原理,如何写出局部性良好代码。提高程序性能、何为缓存讨论了存储器层次结构,计算机内部的存储结构、缓存的概念,简单的介绍了缓存的工作机制。建议先阅读前两篇博文,虽然他们之间联系不大,在前面也有一些对本文的铺垫。而且,这是一个系列的文章。旨在优化程序性能。这篇博文主要介绍的是缓存的组织、工作原理。拨开迷雾,让你更加清晰的认识缓存。通用缓存结构回顾在提高程序性能、何为缓存中 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/14/2348980.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/12/2347757.html
提高程序性能、何为缓存——从存储器结构说起 - Geek_Ling
开篇上一篇博文局部性原理浅析——良好代码的基本素质中对程序局部性有了一个简单的介绍。基本上已经知道了如何编写有良好局部性的代码。但是为什么有良好局部性的代码就能有良好的运行效率,这个问题将在这篇博文中给出解答。至于存储器内部的组织实现,将在下篇文章中叙述。存储器层次结构我们知道,计算机里的存储器有:硬盘、主存、高速缓存(其中又有一级高速缓存、二级高速缓存等等)、在往上就是寄存器。存储器在计算机内部的组织方式如下图所示:相信上图大家并不陌生。wiki对The memory hierarchy 的介绍的时候也有此图。我们发现,越往上,存储器的容量越小、成本越高、速度越快。为什么会出现这样的结构呢?
2012-02-12T04:20:00Z
2012-02-12T04:20:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇上一篇博文局部性原理浅析——良好代码的基本素质中对程序局部性有了一个简单的介绍。基本上已经知道了如何编写有良好局部性的代码。但是为什么有良好局部性的代码就能有良好的运行效率,这个问题将在这篇博文中给出解答。至于存储器内部的组织实现,将在下篇文章中叙述。存储器层次结构我们知道,计算机里的存储器有:硬盘、主存、高速缓存(其中又有一级高速缓存、二级高速缓存等等)、在往上就是寄存器。存储器在计算机内部的组织方式如下图所示:相信上图大家并不陌生。wiki对The memory hierarchy 的介绍的时候也有此图。我们发现,越往上,存储器的容量越小、成本越高、速度越快。为什么会出现这样的结构呢? <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/12/2347757.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/11/2347116.html
局部性原理浅析——良好代码的基本素质 - Geek_Ling
开篇一个优秀的程序、优美的代码,一般都具有良好的局部性。简洁、高效是每个程序员的追求。了解程序的局部性,能编写出更高效的代码。因为有良好局部性的程序能更好的利用缓存。不过这方面的只是将在以后的文章中介绍。这篇文章就简单的介绍以下程序的局部性原理。什么是局部性局部性通常有两种形式:时间局部性(temporal locality)时间局部性指的是:被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。空间局部性(spatial locality)如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。(这样说过于理论了些,在下面的论述中会有例子说明)数据引用局部性例子是最好说明问题的途径
2012-02-11T13:48:00Z
2012-02-11T13:48:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇一个优秀的程序、优美的代码,一般都具有良好的局部性。简洁、高效是每个程序员的追求。了解程序的局部性,能编写出更高效的代码。因为有良好局部性的程序能更好的利用缓存。不过这方面的只是将在以后的文章中介绍。这篇文章就简单的介绍以下程序的局部性原理。什么是局部性局部性通常有两种形式:时间局部性(temporal locality)时间局部性指的是:被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。空间局部性(spatial locality)如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。(这样说过于理论了些,在下面的论述中会有例子说明)数据引用局部性例子是最好说明问题的途径 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/11/2347116.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/06/2339842.html
说说哪本书是对程序员最有影响、每个程序员都该阅读的书? - Geek_Ling
网上有很多关于程序员必读的书单,感觉都不是很有代表性。今天无意看到了一篇总结还算不错的书单。和园友们分享。以下书单中提到的书看过一部分,给我的感觉是经典就是经典。读过之后确实得到了很多东西,它们都潜在的影响着我。透过书更能感受到的是一种思想,理性,透过经典,能得到质的升华。另如果园友有好书、何不一起分享进步以下是原文:哪本书是对程序员最有影响、每个程序员都该阅读的书?国外知名网站stackoverflow上有一个问题调查:哪本书是对程序员最有影响、每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书《Code
2012-02-06T04:17:00Z
2012-02-06T04:17:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】网上有很多关于程序员必读的书单,感觉都不是很有代表性。今天无意看到了一篇总结还算不错的书单。和园友们分享。以下书单中提到的书看过一部分,给我的感觉是经典就是经典。读过之后确实得到了很多东西,它们都潜在的影响着我。透过书更能感受到的是一种思想,理性,透过经典,能得到质的升华。另如果园友有好书、何不一起分享进步以下是原文:哪本书是对程序员最有影响、每个程序员都该阅读的书?国外知名网站stackoverflow上有一个问题调查:哪本书是对程序员最有影响、每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书《Code <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/06/2339842.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/02/04/Programoptimization.html
浅析代码优化 - Geek_Ling
开篇相信有过编码经验的人都知道,程序的正常运行,只是最基本的要求。更多的,还要考虑程序的性能,运行效率,组织结构,和重用性等等。今天将简单的讨论一下如何优化程序性能。要写出高效的程序,可能多数初学者想到的是在程序中用合适的算法和数据结构。这确实是一中提高程序性能的主要方法。而这里要讨论的是另一种方法,也是很多人都忽略但确实很重要的方法。也是我们这篇文章的主题:如何编写出编译器能有效优化的源代码。编译器优化的局限性没有万能的东西,编译器也一样。现代编译器都会对源代码进行优化,以提高程序的性能。比如linux下的GCC编译器就能控制优化的等级,优化等级高,对应的程序性能好。对于给定的代码,编译器并
2012-02-04T15:24:00Z
2012-02-04T15:24:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇相信有过编码经验的人都知道,程序的正常运行,只是最基本的要求。更多的,还要考虑程序的性能,运行效率,组织结构,和重用性等等。今天将简单的讨论一下如何优化程序性能。要写出高效的程序,可能多数初学者想到的是在程序中用合适的算法和数据结构。这确实是一中提高程序性能的主要方法。而这里要讨论的是另一种方法,也是很多人都忽略但确实很重要的方法。也是我们这篇文章的主题:如何编写出编译器能有效优化的源代码。编译器优化的局限性没有万能的东西,编译器也一样。现代编译器都会对源代码进行优化,以提高程序的性能。比如linux下的GCC编译器就能控制优化的等级,优化等级高,对应的程序性能好。对于给定的代码,编译器并 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/02/04/Programoptimization.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/01/15/2322640.html
启发式搜索技术A*【译】 - Geek_Ling
开篇这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索。标题上写的是翻译,只是觉得原文讲解的思路很清晰。这篇文章整体构思和原文相差不多,只是有些地方有小的改动,我想的是用更容易理解的方式、更简洁的把A*算法的思想呈现出来。文章中出现的词openlist,closelist我觉得用原文会更好故没有翻译,在文中会有解释。原文地址http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/a-pathfinding-for-beginners-r2003各位也可以直接参考原文。网上关于A*算法的文章还
2012-01-15T10:17:00Z
2012-01-15T10:17:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索。标题上写的是翻译,只是觉得原文讲解的思路很清晰。这篇文章整体构思和原文相差不多,只是有些地方有小的改动,我想的是用更容易理解的方式、更简洁的把A*算法的思想呈现出来。文章中出现的词openlist,closelist我觉得用原文会更好故没有翻译,在文中会有解释。原文地址http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/a-pathfinding-for-beginners-r2003各位也可以直接参考原文。网上关于A*算法的文章还 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/01/15/2322640.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2012/01/13/deadlocks.html
对死锁的思考【2】/thinking in deadlocks - Geek_Ling
上一篇对死锁的思考【1】介绍了什么是死锁,对于每种类型一个资源和多个资源的检测,这里会介绍一下如何从死锁中恢复死锁的避免死锁的预防说明:这不是一篇专业性的文章,只是力求让读者能理解、知道什么是死锁。如果想要更具体深入的知识还需要查阅相关文献。从死锁中恢复抢占性恢复从字面上看,抢占性恢复就是强制把已经被占有的资源强制拿过来,分配给需要他的进程,而达到解除死锁的目的。在不通知持有资源进程的情况下,将资源强制占用,用完后又还给进程,这和资源本身的特性有关。即有的资源是不可抢占的。比如说一个正在刻录光盘的光驱,在它完成之前是不可抢占的。回滚技术简单的说,就是再检测到死锁的时候设法回到还没发生死锁的状态
2012-01-13T12:45:00Z
2012-01-13T12:45:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】上一篇对死锁的思考【1】介绍了什么是死锁,对于每种类型一个资源和多个资源的检测,这里会介绍一下如何从死锁中恢复死锁的避免死锁的预防说明:这不是一篇专业性的文章,只是力求让读者能理解、知道什么是死锁。如果想要更具体深入的知识还需要查阅相关文献。从死锁中恢复抢占性恢复从字面上看,抢占性恢复就是强制把已经被占有的资源强制拿过来,分配给需要他的进程,而达到解除死锁的目的。在不通知持有资源进程的情况下,将资源强制占用,用完后又还给进程,这和资源本身的特性有关。即有的资源是不可抢占的。比如说一个正在刻录光盘的光驱,在它完成之前是不可抢占的。回滚技术简单的说,就是再检测到死锁的时候设法回到还没发生死锁的状态 <a href="https://www.cnblogs.com/yanlingyin/archive/2012/01/13/deadlocks.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2011/12/29/thinkingindeadlocks.html
对死锁的思考【1】/thinking in deadlocks - Geek_Ling
开篇死锁是操作系统中的重要概念,和操作系统中的其他重要概念一样,对它的正确理解将帮助你写出更加高效、优秀的程序。这里没有晦涩的定义,只有易懂的描述和生动的例子。相信你看了之后会有所收获。什么是死锁简单的说,死锁就是电脑里的硬件资源或者软件资源不够用了。为什么会有这种情况呢?比如说A占有资源m,请求资源n。B占有资源n请求资源m。进程A和B都会因为请求不到自己的资源而睡眠。下面将进一步介绍。更形象的描述-死锁建模:为了能对死锁进行更好的分析,我们为死锁建模。就是用一个有向图来表示进程和资源的使用情况,圆形节点表示进程,方形节点表示资源。资源指向进程的边表示该进程占有该资源,进程指向资源表示进程请
2011-12-29T15:19:00Z
2011-12-29T15:19:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】开篇死锁是操作系统中的重要概念,和操作系统中的其他重要概念一样,对它的正确理解将帮助你写出更加高效、优秀的程序。这里没有晦涩的定义,只有易懂的描述和生动的例子。相信你看了之后会有所收获。什么是死锁简单的说,死锁就是电脑里的硬件资源或者软件资源不够用了。为什么会有这种情况呢?比如说A占有资源m,请求资源n。B占有资源n请求资源m。进程A和B都会因为请求不到自己的资源而睡眠。下面将进一步介绍。更形象的描述-死锁建模:为了能对死锁进行更好的分析,我们为死锁建模。就是用一个有向图来表示进程和资源的使用情况,圆形节点表示进程,方形节点表示资源。资源指向进程的边表示该进程占有该资源,进程指向资源表示进程请 <a href="https://www.cnblogs.com/yanlingyin/archive/2011/12/29/thinkingindeadlocks.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/yanlingyin/archive/2011/12/26/Depth-firstsearch.html
图的深度优先搜索/Depth-first search/C++ - Geek_Ling
图是一种常见的数据结构,深度优先和广度优先搜索都是常用的算法,这篇博文先介绍深度优先搜索。和往常一样的,我会用朴实的语言来介绍它,所以只要认真看一定能理解。开始会先介绍下图的表示方法,如果已经掌握了大可跳过。图的表示要表示一个图G(V,E)有两种常见的表示方法,邻接矩阵和邻接表。这两种方法可用于有向图和无向图。对于稀疏图,常用邻接表表示,它占用的空间|E|要小于|V|*|V|。邻接表:图G(V,E)的邻接表表示由一个包含V列表的数组Adj组成,其中的每个列表对应于V中的一个顶点,对于v中的任意一个点u,灵界表Adj[u]包含所有满足条件(u,v)属于E的点v,也就是Adj[u]中包含所有和u相
2011-12-26T03:10:00Z
2011-12-26T03:10:00Z
Geek_Ling
https://www.cnblogs.com/yanlingyin/
【摘要】图是一种常见的数据结构,深度优先和广度优先搜索都是常用的算法,这篇博文先介绍深度优先搜索。和往常一样的,我会用朴实的语言来介绍它,所以只要认真看一定能理解。开始会先介绍下图的表示方法,如果已经掌握了大可跳过。图的表示要表示一个图G(V,E)有两种常见的表示方法,邻接矩阵和邻接表。这两种方法可用于有向图和无向图。对于稀疏图,常用邻接表表示,它占用的空间|E|要小于|V|*|V|。邻接表:图G(V,E)的邻接表表示由一个包含V列表的数组Adj组成,其中的每个列表对应于V中的一个顶点,对于v中的任意一个点u,灵界表Adj[u]包含所有满足条件(u,v)属于E的点v,也就是Adj[u]中包含所有和u相 <a href="https://www.cnblogs.com/yanlingyin/archive/2011/12/26/Depth-firstsearch.html" target="_blank">阅读全文</a>