Google‘s BigTable 原理

Google‘s BigTable 原理 (翻译)

来源:优快云作者:accesine9602005-08-31出处:pcdog.com

<!-- google_ad_client = "pub-1572879403720716"; google_alternate_color = "F5FAFA"; google_ad_width = 468; google_ad_height = 15; google_ad_format = "468x15_0ads_al_s"; google_ad_channel ="3984443469"; google_color_border = "F5FAFA"; google_color_bg = "F5FAFA"; google_color_link = "000000"; google_color_url = "F5FAFA"; google_color_text = "000000"; //--> <iframe width="468" scrolling="no" height="15" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&amp;dt=1189502584330&amp;lmt=1188830280&amp;alt_color=F5FAFA&amp;format=468x15_0ads_al_s&amp;output=html&amp;correlator=1189502584329&amp;channel=3984443469&amp;url=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Fdevelop-tools%2F2005%2F08%2Fb067929.html&amp;color_bg=F5FAFA&amp;color_text=000000&amp;color_link=000000&amp;color_url=F5FAFA&amp;color_border=F5FAFA&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Faq%3Dt%26oq%3D%26complete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26q%3Djeff%2Bdean%2Bgoogle%26btnG%3DGoogle%2B%25E6%2590%259C%25E7%25B4%25A2%26meta%3Dlr%253Dlang_zh-CN%257Clang_zh-TW&amp;cc=100&amp;ga_vid=1291650157.1189502584&amp;ga_sid=1189502584&amp;ga_hid=375073220&amp;flash=9&amp;u_h=1200&amp;u_w=1920&amp;u_ah=1150&amp;u_aw=1920&amp;u_cd=24&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=10&amp;u_nmime=98" name="google_ads_frame"></iframe>

Google's BigTable <nobr onmousemove="kwM(2);" onmouseout="kwL(event, this);" onmouseover="kwE(event,2, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key2">原理</nobr> (翻译)

<!-- google_ad_client = "pub-1572879403720716"; google_ad_width = 336; google_ad_height = 280; google_ad_format = "336x280_as"; google_ad_type = "text_image"; google_ad_channel ="2957605308"; google_alternate_ad_url ="http://www.pcdog.com/js/336.htm"; google_color_border = "F5FAFA"; google_color_bg = "F5FAFA"; google_color_link = "1F3A87"; google_color_url = "0000FF"; google_color_text = "000000" google_language = 'zh-CN'; //--> <iframe width="336" scrolling="no" height="280" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&amp;dt=1189502586596&amp;hl=zh-CN&amp;lmt=1188830280&amp;alternate_ad_url=http%3A%2F%2Fwww.pcdog.com%2Fjs%2F336.htm&amp;prev_fmts=468x15_0ads_al_s&amp;format=336x280_as&amp;output=html&amp;correlator=1189502584329&amp;channel=2957605308&amp;url=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Fdevelop-tools%2F2005%2F08%2Fb067929.html&amp;color_bg=F5FAFA&amp;color_text=000000&amp;color_link=1F3A87&amp;color_url=0000FF&amp;color_border=F5FAFA&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Faq%3Dt%26oq%3D%26complete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26q%3Djeff%2Bdean%2Bgoogle%26btnG%3DGoogle%2B%25E6%2590%259C%25E7%25B4%25A2%26meta%3Dlr%253Dlang_zh-CN%257Clang_zh-TW&amp;cc=100&amp;ga_vid=1291650157.1189502584&amp;ga_sid=1189502584&amp;ga_hid=375073220&amp;flash=9&amp;u_h=1200&amp;u_w=1920&amp;u_ah=1150&amp;u_aw=1920&amp;u_cd=24&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=10&amp;u_nmime=98" name="google_ads_frame"></iframe>
题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。

------ 编者

官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的<nobr onmousemove="kwM(5);" onmouseout="kwL(event, this);" onmouseover="kwE(event,5, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 0px dotted; text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key5">系统</nobr>。这种系统适合处理半结构化的数据比如 RSS 数据源。 以下发言 是 Andrew Hitchcock 在 2005 年10月18号 基于: Google 的工程师 Jeff Dean 在华盛顿大学的一次谈话 (Creative Commons License).


首先,BigTable 从 2004 年初就开始研发了,到现在为止已经用了将近8个月。(2005年2月)目前大概有100个左右的<nobr onmousemove="kwM(8);" onmouseout="kwL(event, this);" onmouseover="kwE(event,8, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key8">服务</nobr>使用BigTable,比如: Print,Search History,Maps和 Orkut。根据<nobr onmousemove="kwM(10);" onmouseout="kwL(event, this);" onmouseover="kwE(event,10, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key9">Google</nobr>的一贯做法,内部开发的BigTable是为跑在廉价的PC机上设计的。BigTable 让Google在提供新服务时的运行成本降低,最大限度地利用了计算<nobr onmousemove="kwM(0);" onmouseout="kwL(event, this);" onmouseover="kwE(event,0, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key0">能力</nobr>。BigTable 是建立在 GFS ,Scheduler ,Lock Service 和 MapReduce 之上的。

每个Table都是一个多维的稀疏图 sparse map。Table 由行和列组成,并且每个存储单元 cell 都有一个时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动情况。在他的例子中,行是URLs ,列可以定义一个名字,比如:contents。Contents 字段就可以存储文件的数据。或者列名是:”language”,可以存储一个“EN”的语言代码字符串。

为了<nobr onmousemove="kwM(1);" onmouseout="kwL(event, this);" onmouseover="kwE(event,1, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key1">管理</nobr>巨大的Table,把Table根据行分割,这些分割后的数据统称为:Tablets。每 个Tablets大概有 100-200 MB,每个机器存储100个左右的 Tablets。底层的架构是:GFS。由于GFS是一种分布式的文件系统,采用Tablets的机制后,可以获得很好的负载均衡。比如:可以把经常响应 的表移动到其他空闲机器上,然后快速重建。

Tablets在系统中的存储方式是不可修改的 immutable 的SSTables,一台机器一个日志文件。当系统的内存满后,系统会压缩一些Tablets。由于Jeff在论述这点的时候说的很快,所以我没有时间把听到的都记录下来,因此下面是一个大概的说明:

压缩分为:主要和次要的两部分。次要的压缩仅仅包括几个Tablets,而主要的压缩时关于整个系统的压缩。主压缩有<nobr onmousemove="kwM(7);" onmouseout="kwL(event, this);" onmouseover="kwE(event,7, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key7">回收</nobr>硬盘空间的功能。Tablets的位置实际上是存储在几个特殊的BigTable的存储单元cell中。看起来这是一个三层的系统。

客户端有一个指 向METAO的Tablets的指针。如果METAO的Tablets被频繁使用,那个这台机器就会放弃其他的tablets专门支持METAO这个 Tablets。METAO tablets 保持着所有的META1的tablets的记录。这些tablets中包含着查找tablets的实际位置。(老实说<nobr onmousemove="kwM(4);" onmouseout="kwL(event, this);" onmouseover="kwE(event,4, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key4">翻译</nobr>到这里,我也不太明白。)在这个系统中不存在大的瓶颈,因为被频繁调用的数据已经被提前获得并进行了缓存。

现在我们返回到对 列的说明:列是类似下面的形式: family:optional_qualifier。在他的例子中,行:www.search-analysis.com 也许有列:”contents:其中包含html页面的代码。 “ anchor:cnn.com/news” 中包含着 相对应的url,”anchor:www.search-analysis.com/” 包含着链接的文字部分。列中包含着类型信息。

(翻译到这里我要插一句,以前我看过一个关于万能数据库的文章,当时很激动,就联系了作者,现在回想起来,或许google的 bigtable 才是更好的方案,切不说分布式的特性,就是这种建华的表结构就很有用处。)

注 意这里说的是列信息,而不是列类型。列的信息是如下信息,一般是:属性/规则。 比如:保存n份数据的拷贝 或者 保存数据n天长等等。当 tablets 重新建立的时候,就运用上面的规则,剔出不符合条件的记录。由于设计上的原因,列本身的创建是很容易的,但是跟列相关的功能确实非常复杂的,比如上文提到 的 类型和规则信息等。为了优化读取速度,列的功能被分割然后以组的方式存储在所建索引的机器上。这些被分割后的组作用于 列 ,然后被分割成不同的 SSTables。这种方式可以<nobr onmousemove="kwM(3);" onmouseout="kwL(event, this);" onmouseover="kwE(event,3, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key3">提高</nobr>系统的性能,因为小的,频繁读取的列可以被单独存储,和那些大的不经常访问的列隔离开来。

在一台机器上的所有的 tablets 共享一个log,在一个包含1亿的tablets的集群中,这将会导致非常多的文件被打开和写操作。新的log块经常被创建,一般是<chmetcnv unitname="m" sourcevalue="64" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">64M</chmetcnv>大小,这个GFS的块大小相等。当一个机器down掉后,控制机器就会重新发布他的log块到其他机器上继续进行处理。这台机器重建tablets然后询问控制机器处理结构的存储位置,然后直接对重建后的数据进行处理。

这个系统中有很多冗余数据,因此在系统中大量使用了压缩<nobr onmousemove="kwM(6);" onmouseout="kwL(event, this);" onmouseover="kwE(event,6, this);" oncontextmenu="return false;" target="_blank" onclick="return kwC();" style="border-bottom: 1px dotted rgb(102, 0, 255); text-decoration: underline; color: rgb(102, 0, 255); background-color: transparent;" id="key6">技术</nobr>。

Dean 对压缩的部分说的很快,我没有完全记下来,所以我还是说个大概吧:压缩前先寻找相似的 行,列,和时间 数据。

他们使用不同版本的: BMDiff 和 Zippy 技术。

BMDiff 提供给他们非常快的写速度: 100MB/s – 1000MB/s 。Zippy 是和 LZW 类似的。Zippy 并不像 LZW 或者 gzip 那样压缩比高,但是他处理速度非常快。

Dean 还给了一个关于压缩 web 蜘蛛数据的例子。这个例子的蜘蛛 包含 2.1B 的页面,行按照以下的方式命名:“com.cnn.www/index.html:http”.在未压缩前的web page 页面大小是:45.1 TB ,压缩后的大小是:4.2 TB , 只是原来的 9.2%。Links 数据压缩到原来的 13.9% , 链接文本数据压缩到原来的 12.7%。

Google 还有很多没有添加但是已经考虑的功能。

1. 数据操作表达式,这样可以把脚本发送到客户端来提供修改数据的功能。
2. 多行数据的事物支持。
3. 提高大数据存储单元的效率。
4. BigTable 作为服务运行。
好像:每个服务比如: maps 和 search history 历史搜索记录都有他们自己的集群运行 BigTable。
他们还考虑运行一个全局的 BigTable 系统,但这需要比较公平的分割资源和计算时间。

原文地址:
http://blog.youkuaiyun.com/accesine960/archive/2006/02/09/595628.aspx

http://blog.outer-court.com/archive/<chsdate year="2005" month="10" day="23" islunardate="False" isrocdate="False" w:st="on">2005-10-23</chsdate>-n61.html

Android Studio中把llama.cpp编译Android .so 本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型 阅读详情

相关推荐

别再手动转格式了!用Java+LibreOffice命令行实现Word批量转PDF(附Docker部署避坑指南)

本文详细介绍了如何利用Java和LibreOffice命令行实现企业级Word批量转PDF的自动化解决方案,包括多线程优化、Docker化部署及常见问题排查。通过代码示例和实战经验,帮助开发者高效处理文档转换需求,提升工作效率并避免常见陷阱。

552

Google’s BigTable 原理

官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。 以下发言 是 Andrew Hitchcock 在 2005 年10月18号 基于: Google 的工程师 Jeff Dean 在华盛顿大学的一次谈话 (Creative Commons Licens...

182

TPC好像是这么回事儿

TPC(Transmit Power Control)发送功率控制,本觉得就是控制一下发送功率,原理很简单,但看原版协议死活每搞懂什么意思,恼羞成怒!!!! 后来又看了一些贴子和cisco的相关功能介绍,再回头看协议,好像是这么一回事: 1、所谓TPC,是AP控制STA的发送功率的一种手段。在802.11d中,已定义了使用Country Element传递区域无线通信规定的信道和最大发送功率信息: 通过获取这些信息,STA可以确定自己应该遵守什么规则,可以用什么发送功率在哪些信道上通信。 2

两只勤劳的蜜蜂 8630

Google‘s BigTable 原理 (翻译)

Google's BigTable 原理

weixin_42382926的博客 251

LabVIEW事件结构避坑指南:为什么你的‘确定按钮’事件有时会失灵?

本文深入探讨了LabVIEW事件结构中'确定按钮'事件失灵的常见原因及解决方案。从事件队列机制到事件类型选择,详细分析了事件丢失的五大原因,包括事件处理耗时过长、事件类型选择不当等,并提供了优化登录界面案例的实用建议。掌握这些技巧可显著提升LabVIEW用户界面的响应可靠性。

weixin_42548888的博客 355

MT25QL256完整操作指南:从ID读取到4KB扇区擦除(附华大SPI例程)

本文提供了MT25QL256 NOR FLASH在华大MCU上的完整驱动开发指南。内容涵盖从SPI初始化、器件ID读取、状态寄存器查询,到核心的页编程和4KB扇区擦除操作,并分享了构建健壮驱动框架、处理跨页写入及常见调试问题的实战经验。

tt34567的博客 886

云计算期末复习:从IaaS到PaaS,这些高频考点你掌握了吗?

本文系统梳理了云计算期末复习的核心脉络,从IaaS、PaaS、SaaS三层服务模型的责任边界,到Google三驾马车(GFS、MapReduce、Bigtable)的技术基石,再到AWS核心服务(如EC2、S3、Dynamo)的实战架构与CAP理论应用,最后深入解析了虚拟化这一云化能力的根基。文章旨在帮助读者构建完整的知识体系,精准把握分布式存储、计算一致性等高频考点。

xxx12的博客 571

从零开始学习AI人工智能本体论:概念与实战

本文旨在为初学者提供一个全面而易于理解的人工智能本体论入门指南。我们将覆盖从基本概念到实际应用的全过程,帮助读者理解本体论在AI系统中的核心作用。核心概念与联系:介绍本体论的基本概念和原理核心算法与操作步骤:详细讲解本体构建和推理方法项目实战:通过实际案例展示本体论的应用实际应用场景:探讨本体论在不同领域的应用未来发展趋势:展望本体论在AI领域的前景本体论(Ontology): 在AI中,指对特定领域概念及其关系的明确形式化描述。

AI智能探索者的博客 868

bigtable和gfs_具有Bigtable,Blobstore和Google Storage的GAE存储

由于它们一直在转储字节,因此很容易理会磁盘驱动器和它们上的文件系统。 编写文件时,除了位置,权限和空间要求之外,您无需考虑太多其他内容。 您只需构造一个java.io.File即可开始工作; 无论您是台式计算机,Web服务器还是移动设备, java.io.File工作原理都相同。 但是,当您开始使用Google App Engine(GAE)时,这种透明性或缺乏透明性很快就会变得很明显。 在G...

cusi77914的博客 598

国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题2(含答案)

国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) ...

无名何许人的博客 1万+

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

阿里云推出国内首个集成“快思考”与“慢思考”能力的 Qwen3-8B 大语言模型,以80亿参数和 128K 上下文支持,重塑AI应用边界并助力开发者高效部署

以微薄之力,予他人些许温暖. 2万+

Google's BigTable 原理

Google’s BigTable 原理 (翻译)     题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。                                                 欢迎订阅作者微博  —— 编者 官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用

melon的博客 352

UG NX二次开发(C++)-库缺少需要的入口点的原因与解决方案

在UG NX二次开发过程中,有时会遇到形形色色的bug,比如有个读者其采用UG NX二次开发(C++)时,遇到“库缺少需要的入口点”这个问题,看了一下他发给我的源代码,感觉有必要讲一下UG NX二次开发(C++)遇到此类问题的可能情况与解决方法。自然,这是博主的经验之谈,有不足之处还请在评论区讨论。

GimiGimmy 2201

Google’s BigTable

Google's BigTable 原理 (翻译)     题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。                                                 欢迎订阅作者微博  ------ 编者 官方的 Google Reader blog 中有对BigTable 的解释。这是Google

lvtao201099的博客 283

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Google"s BigTable

Google"s BigTable 原理 (翻译) Google's BigTable 原理 (翻译) 题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。    ------ 编者   官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化

Hello world! 383

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Google三篇论文如何奠定大数据基石:GFS、MapReduce与BigTable解析

分布式系统是处理海量数据的核心技术架构,其核心思想是通过软件定义的方式,将多台普通服务器组织成统一的计算与存储资源池。其基本原理在于采用分而治之的策略,将大规模任务分解为可并行处理的子任务,并通过冗余副本、故障自动恢复等机制实现高可靠性。这一技术价值在于能够以低廉的硬件成本,构建出可水平扩展、容错能力强的大型数据处理平台,广泛应用于互联网搜索、日志分析、推荐系统等场景。其中,以GFS为代表的分布式文件系统解决了海量数据的存储问题,而MapReduce编程模型则简化了分布式计算的开发。本文聚焦于奠定现代大数据

weixin_30673611的博客 365

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Google Bigtable文章终于出炉

关于Google Bigtable的资料一直就只有Jeff Dean去年在华盛顿大学做的那个演讲的视频,听力水平一般的看起来还是挺辛苦的。 现在好了,这次Jeff总算是总结出了一篇文章,放到了Google papers里面。终于可以下载下来,再打印出来慢慢研究了。这篇文章即将发表在11月份于西雅图召开的OSDI'06上,从时间上看还是很新的。 这样,整个Google海量数据管理...

weixin_30783913的博客 141

Google's BigTable 原理 (翻译)

Google's BigTable 原理 (翻译) 题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。 ------ 编者 官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。 以下发言 是 Andr...

技术代码资料库 99

[MapReduce] Google三驾马车:GFS、MapReduce和Bigtable

  声明:此文转载自博客开发团队的博客,尊重原创工作。该文适合学分布式系统之前,作为背景介绍来读。   谈到分布式系统,就不得不提Google的三驾马车:Google FS[1],MapReduce[2],Bigtable[3]。   虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文。而且,Yahoo资助的Hadoop也有按照这三篇论文的开源Java实现:Hado...

weixin_30432579的博客 519

MapReduce/GFS/BigTable三大技术资料

出处:MapReduce/GFS/BigTable三大技术资料 首先是在孟岩博客中发现以下内容: Google的三大核心技术MapReduce、GFS和BigTable的论文都已经被翻译成高质量的中文;三篇论文的链接地址如下: MapReduce:http://blog.youkuaiyun.com/active1001/archive/2007/07/02/1675920.aspx GFS:http...

有趣的人生 一半是山川湖海 一半是初心情怀 432

分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable

分布式系统漫谈一 —— Google三驾马车: GFS,mapreduce,Bigtable   谈到分布式系统,就不得不提Google的三驾马车:Google fs[1],Mapreduce[2],Bigtable[3]。 虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文。而且,Yahoo资助的Hadoop也有按照这三篇论文的开源Java实现:Ha

duxingxia356的专栏 1261

【数据结构】基于比较的排序算法 - 交换排序

本文介绍交换排序中的冒泡排序与快速排序。冒泡排序通过相邻元素比较交换,实现升序,时间复杂度最坏为O(N²),空间复杂度O(1),稳定且适合小规模有序数据。快速排序采用分治思想,以基准值划分区间,平均时间复杂度O(N log N),空间复杂度O(log N),但不稳定,实际应用中性能优异,可通过随机基准、小区间优化等提升效率。

careathers的博客 366
上一篇: 声明函数指针并实现回调
下一篇: MySQL Proxy - 官方的MySQL连接池和代理工具
wapysun
博客等级 码龄19年 14粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值