首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    搜索引擎中的URL散列

    散列(hash)也就是哈希,是信息存储和查询所用的一项基本技术。在搜索引擎中网络爬虫在抓取网页时为了对网页进行有效地排重必须对URL进行散列,这样才能快速地排除已经抓取过的网页。最理想的状态是对联网上所有的网页都分配一个哈希地址,可想而知这是一个相当宠大的数字,但实际上往往是无法做到这一点。虽然google、百度都是采用分布式的机群进行哈希排重,但实际上也是做不到所有的网页都分配一个唯一散列地址。但是可以通过多级哈希来尽可能地解决,但却要会出时间代价在解决哈希冲突问题。所以这是一个空间和时间相互制约的问题,我们知道哈希地址空间如果足够大可以大大减少冲突次数,所以可以通过多台机器将哈希表根据一定的特征局部化,分散开来,每一台机器都是管理一个局部的散列地址。

    03

    看得见的与看不见的 - 计算机科学里的 trade-off

    政府或企业的每一个决策、每一次行动,甚至不经意间的个人行为都可能会对现实生活中造成影响,其中有些影响是立马可以感受到的,是看得见的,而有些影响是第一时间很难感受到的,是看不见的。经济学里有一个很经典的例子是来说明看得见和看不见的影响,商店主人的儿子把商店的橱窗打破了,然后商店的主人花钱请玻璃工师傅把橱窗修复了,然后玻璃工师傅拿到了修复的费用,在某种程度上,这笔修复的费用使整个资金链运转起来,商店的橱窗修复了,玻璃工师傅有了收入,这是看的见的影响。同样的,还有看不见的影响,商店主人原本可以用这笔钱去创造更大的价值,比如购进新的货物、让商店更好看,然而因为橱窗的打破这笔钱没有了。

    02

    java中程序,进程和线程的区别

    马克-to-win:程序,进程和线程的区别是什么?这个问题比较抽象难理解,但又非常重要。我并不想给出一大堆抽象的学术解释,那样只能误国误民。所以我先给大家举一个例子。马克-to-win: 2000年的时候,我比较爱用ie的老版本。当时我喜欢边上网边下载很多东西,比如很多MP3同时下。我发觉如果我打开一个ie,之后用file/new,new出很多窗口来,边看网页,边下载很多mp3的话,如果有一个下载崩溃的话,所有的ie窗口就同时都崩溃了,包括网页和所有的下载窗口。马克-to-win:后来我就学聪明了,我打开两个ie。一个ie用来浏览网页。另一个ie,file/new出很多新的窗口。这样如果下载出问题了,下载的ie会崩溃。但浏览网页的ie依旧完好的工作。在上述例子当中,ie就是一个应用程序,后来我打开两个ie,就是打开两个进程。这两个进程,在内存中分别占有不同的代码空间。马克-to-win:所以一个进程崩溃不影响另外一个。后来从其中一个ie, file/new出很多个新窗口。每一个窗口就是一个线程,线程在内存当中是没有自己的代码空间的。它只能依附于进程存在。马克-to-win:所以,这个进程当中的一个线程窗口崩溃了,所有依附于这个进程的线程窗口就都崩溃了。相对于进程来讲,线程非常轻量,非常节省资源。我经常同时打开二十个窗口,下载各种音乐mp3。反正是线程,不占资源。马克-to-win:线程在内存当中没有自己的代码空间。只有程序计数器。一个线程可能执行到所依附进程的1000行,另一个线程,可能执行到第99行,这两个线程,虽然依附于同一个主进程,但他们各自执行各自的,相互不影响。马克-to-win:仔细揣摩我上面说的故事,你就会理解,程序,进程和线程的区别。给点抽象的话:程序是硬盘上的一个文件,是一个机器代码和它的数据的集合。进程是程序在内存上的一次运行活动,占代码空间。线程是依附于进程,靠程序计数器能独立运行,轻量独立运行单元。

    01
    领券