什麼是堆(Heap)和棧(Stack)?

一直以來,對堆棧這玩意兒有點模模糊糊的感覺…. 但最近Google了二者的區別,還真是受益匪淺~對編譯流程又有了進一步了瞭解….呵呵~ 大家經常會把堆棧這個詞掛在嘴邊,這個是個習慣叫法啦…實際上是指棧…堆是堆,棧是棧,不能把堆當成了棧,不能把棧當成了堆. ==! 感覺好像在講相聲(暴汗).. 我們這裡講的堆是一段內存區域… 它按照類似鏈表的方式對數據進行存儲,地址是由低向高增长;堆实际上還是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权。而這裡說的棧則是一段按照後進先出(LIFO)對數據進行操作的內存存儲區域,地址是由高向低减少的;棧也是指一種後進先出(LIFO)的數據結構…注意這裡的堆區與棧區,跟二者的數據結構不可相提並論. 下面是一位前輩進行的詳細分析,例子非常簡單,也便於編程新手理解(就是我啦)。

一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 – 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
Continue reading “什麼是堆(Heap)和棧(Stack)?”

Google搜索原理论文[转]

这篇文章中,我们介绍了google,它是一个大型的搜索引擎(of a large-scale search engine)的原型,搜索引擎在超文本中应用广泛。Google的设计能够高效地抓网页并建立索引,它的查询结果比其它现有系统都高明。这个原型的全文和超连接的数据库至少包含24’000’000个网页。我们可以从http://google.stanford.edu/ 下载。

设计搜索引擎是一项富有挑战性的工作。搜索引擎为上亿个网页建立索引,其中包含大量迥然不同的词汇。而且每天要回答成千上万个查询。在网络中,尽管大型搜索引擎非常重要,但是学术界却很少研究它。此外由于技术的快速发展和网页的大量增加,现在建立一个搜索引擎和三年前完全不同。

本文详细介绍了我们的大型搜索引擎,据我们所知,在公开发表的论文中,这是第一篇描述地如此详细。除了把传统数据搜索技术应用到如此大量级网页中所遇到的问题,还有许多新的技术挑战,包括应用超文本中的附加信息改进搜索结果。

本文将解决这个问题,描述如何运用超文本中的附加信息,建立一个大型实用系统。任何人都可以在网上随意发布信息,如何有效地处理这些无组织的超文本集合,也是本文要关注的问题。

1 绪论
Web给信息检索带来了新的挑战。Web上的信息量快速增长,同时不断有毫无经验的新用户来体验Web这门艺术。人们喜欢用超级链接来网上冲浪,通常都以象Yahoo这样重要的网页或搜索引擎开始。大家认为List(目录)有效地包含了大家感兴趣的主题,但是它具有主观性,建立和维护的代价高,升级慢,不能包括所有深奥的主题。基于关键词的自动搜索引擎通常返回太多的低质量的匹配。使问题更遭的是,一些广告为了赢得人们的关注想方设法误导自动搜索引擎。我们建立了一个大型搜索引擎解决了现有系统中的很多问题。应用超文本结构,大大提高了查询质量。我们的系统命名为google,取名自googol的通俗拼法,即10的100次方,这和我们的目标建立一个大型搜索引擎不谋而合。 Continue reading “Google搜索原理论文[转]”

VPS 新手教程(搭建LNMP篇)

本篇以“VPS 新手教程(SSH篇)”為基礎:http://suika.in/how-to-use-ssh/

購買了VPS之後,大多數人都會傾向於兩種用途,有些是搭建網站,有些呢,就是利用VPS來搭建VPN了(還可以用SSH來凹牆,詳細看這:http://suika.in/firefox-tunnelier-tutorial/)不過如果你的VPS性能比較好的話,只用作VPN就浪費咯~ 其他的一些非主流用途就不太清楚了.

今天,就說說如何搭建個網站運行環境吧….顧名思義,要讓你個網站運作起來,一定要為其搭建一個運行的環境,包括服務器程式、數據庫、脚本语言引擎等等。目前應用較為多的是LNMP.. 在互联网服务器架构中 LNMP指的是:Linux(操作系統)+Nginx(服務器程式)+MySQL(數據庫程式)+PHP(腳本語言引擎), 還有另一種LAMP(Linux+Apache+MySQL+Perl/PHP/Python)由于Nginx拥有超越Apache的卓越性能,LNMP正在逐渐取代LAMP. 要想知道更詳細,Google之~

我的系統是CentOS, 搭建LNMP 用的是貓言貓語的一键安装包(其實就是一堆指令序列,有點類似於Windows下的Bat文件,批處理腳本.)~ 使用一鍵安裝包,非常快捷方便。強烈推薦! http://imcat.in/lnmp/

1.登陸了SSH之後,下面直接複製貓言貓語的過程了~ 並針對新手做一些相應的解釋~好吧,其實我也是個新手..(下面的指令,如果仔細看過上一篇文章留下的鏈接的話,就會覺得很簡單啦~)嫌輸入麻煩,並且是使用putty登陸SSH的話,可以直接右鍵複製粘貼之.不過,希望還是自己手動輸入吧,加深指令的印象和理解~ Continue reading “VPS 新手教程(搭建LNMP篇)”