MongoDB简史

发表于 4年以前  | 总阅读数:495 次

说到现代 Web 应用程序开发,不得不提到 MongoDB。如果你是一名全栈程序员,每天都会跟 MERN 打交道,其中 M 指的就是 MongoDB。MongoDB 开源社区版为大量的 Web 应用程序提供支持。从 2007 年开始,MongoDB 走过了漫长的道路。它是 MongoDB 公司的主要产品,这家公司市值已经超过 100 亿美元。与很多产品一样,在线广告是推动 MongoDB 愿景和发展的关键催化剂。MongoDB 的故事很有趣,在本文中,我将带你一起探索 MongoDB 的发展之旅。

1 开端:大型数据库想法的萌芽

MongoDB 的故事开始于 2007 年。1995 年,Dwight Merriman 和 Kevin O'Connor 创办了著名的在线广告公司 DoubleClick。不久后,Kevin Ryan 也加入了这个团队 (Dwight 和 Kevin 后来共同创办了 5 家公司——Gilt、10gen、Panther Express、ShopWiki 和 Business Insider)。DoubleClick 很快就大获成功,几年之内,它的广告流量达到了每秒 40 万条。当时的关系型数据库技术还没有预料到会有如此大规模的流量。配备如此规模的关系数据库需要大量的资金和硬件资源。因此,Dwight(他是当时的 CTO) 和他的团队开发了自定义数据库实现来扩展 DoubleClick,以应对流量的激增。

2003 年,Eliot Horowitz 在大学毕业之后加入 DoubleClick 的研发部门,成为一名软件工程师。两年后,他离开了 DoubleClick,和 Dwight 一起创办了 ShopWiki。他们都意识到,他们在一次又一次地解决同样的水平伸缩性问题。因此,2007 年,Dwight、Eliot 和 Kevin Ryan 一起创办了一家叫作 10gen 的新公司。10gen 专注于提供一个带有自有应用程序和数据库栈的 PaaS 托管解决方案。10gen 很快引起了风险投资人 Albert Wenger(Union Square Ventures) 的注意,他向 10gen 投资了 150 万美元。以下是 Albert Wenger 在 2008 年写的有关 10gen 投资的文字:

今天,我们很高兴地宣布,我们将为一支特立独行的团队提供支持,也就是 10gen 的一班天才们。他们汇聚了构建互联网规模系统的经验,比如 DART、Panther Express CDN,广泛参与了开源活动,包括 Apache 软件基金会。他们正在为云计算构建一个开源技术栈,包括一个应用服务器和一个数据库,它们都是基于现代硬件能力和构建 Web 站点或服务的经验从头开始开发的。应用服务器最初支持服务器端 JavaScript 和 Ruby(实验性的)。数据库采用了一种有趣的设计来存储对象,这种设计在快速随机访问和高效的集合扫描之间做出了平衡。

Albert 所说的“采用了有趣的设计的数据库”实际上指的就是 MongoDB。从 2007 年到 2009 年,这个新数据库迅速发展。Dwight 第一次提交的 MongoDB 代码可以在这里看到。

https://github.com/mongodb/mongo/commit/e73188b5512c82290a4070af4afddac20d0b981e

MongoDB 的核心引擎是用 C++ 开发的。之所以把这个数据库叫作 MongoDB,是因为他们想用它来为一些典型的应用场景 (如内容服务) 提供海量数据的存储服务。最初,这个团队只有 4 名工程师 (包括 Dwight 和 Eliot),并只专注于 MongoDB 数据库。他们的商业理念是通过开源免费下载的方式来发布数据库,并在这个基础上提供商业支持和培训服务。

MongoDB 1.0 于 2009 年 2 月发布。最初的版本提供了一种具有文档模型、索引和基本复制功能的查询语言,还提供了实验版的分片功能,但生产版本的分片集群功能在一年后发布的 1.6 版本中才有。

以下是 Dwight 对于“Mongo 是否适用于高度可伸缩系统”的问题的回答:

在水平伸缩方面,可以使用自动分片功能来构建大型的 MongoDB 集群。现在是 alpha 版,但如果你的项目才刚刚启动,那么当你需要它的时候,它可能已经生产就绪了。

2 MongoDB 早期的设计哲学

在早期,MongoDB 的基本设计原则如下:

  • 快速和简单的数据模型,实现更快的编程——支持 CRUD 的文档模型。
  • 使用熟悉的编程语言和格式——JavaScript/JSON。
  • 无模式文档——方便敏捷迭代开发。
  • 为了快速开发和更易于伸缩,只提供必要的功能,没有连接和跨集合的事务。
  • 支持简单的水平伸缩和持久性 / 可用性 (复制 / 分片)。

在 2011 年的一次“NoSQL 以及为什么我们要开发 MongoDB”的 ZendCon 演讲中,Dwight 详细介绍了这些原则。大约在 42 分钟的时候,还出现了一个有关复制和分片之间区别的讨论。随着代码的成熟和 MongoDB 成为主流,这些原则当中有很多都被明显淡化了。最新的 MongoDB(从 4.2 开始)可以在一定程度上支持连接,甚至是支持分布式事务!

https://youtu.be/hOOQJpGu1kY?t=2408

3 什么是 MongoDB?

在详细讲述 MongoDB 的历史和发展历程之前,我们先简单地了解一下 MongoDB!

MongoDB 是一个基于文档的 NoSQL 数据库。它可以在所有主流平台上运行 (Windows、Linux、Mac),并且可以免费下载它的开源版本。MongoDB 将数据实体存储在集合中,存储的每一个数据块都是 JSON 格式。例如,如果一个用户提交了一个在线订单,该订单的全部细节 (订单号、订单项、收获地址等) 将保存在一个 JSON 文档中,然后将其保存到“customer_order”集合中。

MongoDB 还附带了一个控制台客户端,这是一个功能齐全的 JavaScript 环境,你可以用它添加、删除、编辑或查询数据库中的文档数据。

4 MongoDB 架构

下面是 MongoDB 服务器主要组件的架构视图。

MongoDB 目前为 13 种编程语言提供了驱动程序,包括 Java、Node.JS、Python、PHP 和 Swift。存储引擎 MMAPv1 从 4.2 版本开始就被移除了。加密存储引擎只在商业版中提供。

MongoDB 的美妙之处在于它的开源免费社区版为你提供了这些能力:

  • 一个简单的单机实例就可以满足大多数小型应用程序的需求。
  • 一个多机实例可以为大多数商业应用程序提供持久性 / 高可用性。
  • 一个具有水平伸缩能力的大型集群 (分片集群) 可以处理非常大的数据集和大量的查询。MongoDB 提供了自动化基础设施,用于实现分布式的数据分布和处理。

下面的这些图表演示了各种运行 MongoDB 实例的方式。

5 单服务器 / 容错设置

对于小型应用程序,单台服务器就足以满足频繁的数据备份需求了。如果需要容错,可以使用副本集。在容错配置中,通常有 3 个或更多的 MongoDB 实例。这些实例当中只有一个作为主实例,如果它发生故障,其他两个辅助实例中的一个将成为主实例。这些实例中的数据都是一样的。

6 具有水平伸缩能力的分片集群

对于同时要求具备水平伸缩能力和容错能力的大型数据库,需要使用 MongoDB 分片集群。从下图可以看出,一个容错分片集群推荐的最小机器数量是 14 台!每一个容错副本集只处理数据的一个子集,数据分区是由 MongoDB 引擎自动完成的。

在下载最新版本的 MongoDB(4.4) 并解压缩之后,你会发现它只包含以下三个主要文件:

  • mongo——MongoDB Shell,使用基于 JavaScript 的命令与服务器发生交互。
  • mongod——运行 MongoDB 的主文件,可以作为单个数据库实例、分片集群的成员或分片集群的配置服务器运行。
  • mongos——一个路由器应用程序,用在具有水平伸缩能力的数据库服务器集群中。

在 Mac 上,这 3 个可执行文件的总大小约为 150MB。对于任意类型的 MongoDB 部署,都只需要这几个组件!在一个软件膨胀的世界里,这是一种很受欢迎的变革!这种简单和优雅让 MongoDB 变得强大而可靠。

7 MongoDB 的演化史 (2009 年——2020 年)

MongoDB 1.0 是在 2009 年 2 月发布的,提供了大部分基本的查询功能。MongoDB 1.2 是在 2009 年 12 月发布的,引入了 map-reduce,支持大规模数据处理。在看到 MongoDB 的巨大潜力之后,10gen 公司迅速壮大了团队。MongoDB 1.4(2010 年 3 月) 引入了后台索引创建,MongoDB 1.6(2010 年 8 月) 引入了一些主要特性,比如用于水平伸缩的分片、具备自动故障转移能力的副本集以及对 IPv6 的支持。

到了 2012 年,10gen 有 100 名员工,公司开始提供 24/7 服务。MongoDB 2.2 版本 (2012 年 8 月) 引入了聚合管道,可以将多个数据处理步骤组合成一个操作链。到了 2013 年,10gen 拥有 250 多名员工和 1000 多名客户。为了挖掘商业潜力,10gen 更名为 MongoDB 公司,专注于数据库产品。MongoDB 2.4 版本 (2013 年 3 月) 在 Mongo Shell 中引入了文本搜索和谷歌的 V8 JS 引擎等增强功能。除了 2.4 之外,还发布了 MongoDB 企业版,提供了监控和安全集成等附加功能。

MongoDB 早期版本的一个主要问题是它用来保存和管理磁盘数据的存储引擎相对较弱。于是,MongoDB 公司进行了第一笔收购,收购了 WiredTiger 公司。这家公司有超级稳定的存储引擎产品 WiredTiger。MongoDB 拿下了这家公司的开发团队和产品,以及首席架构师 Michael Cahill(也是 Berkeley DB 的架构师之一),让他担任存储工程总监一职。WiredTiger 是一个高效的存储引擎,使用了各种编程技术,如风险指针(hazard pointer)、无锁算法、快速锁存(fast latch)和消息传递,与其他引擎相比,WiredTiger 可以在每个 CPU 内核上执行更多的任务。为了最小化磁盘开销和 I/O,WiredTiger 使用了紧凑的文件格式和压缩(可选)。

MongoDB 的下一个主要版本是 3.0(2015 年 3 月),其中包含了新的 WiredTiger 存储引擎、可插拔存储引擎 API、增加了 50 个副本集限制和安全改进。同年,Glassdoor 将 MongoDB 公司列为最佳的雇主之一。同年晚些时候又发布了 3.2 版本,支持文档验证、部分索引和一些主要的聚合增强。

2017 年,微软发布了多模型 NoSQL 数据库服务 CosmosDB,作为微软 Azure 云平台的一部分。它提供了与 MongoDB 3.2 的协议兼容性,针对 MongoDB 3.2 的查询也可以在 CosmosDB 上运行,这加快了开发人员采用 CosmosDB 的速度。

截止 2016 年,MongoDB 公司拥有 500 多名员工,数据库的下载量超过 2000 万次。2017 年 10 月,MongoDB 公司上市,市值超过 10 亿美元。MongoDB 3.6 在一个月后 (2017 年 11 月) 发布,为多集合连接查询、变更流和使用 JSON 模式进行文档验证提供了更好的支持。MongoDB 3.6 是微软 Azure CosmosDB 截至 2020 年 8 月能够支持的最新版本。

2018 年,MongoDB 公司斥资 6800 万美元收购了 mLab,这是 MongoDB 公司的第二笔收购。当时,mLab 在云端提供 MongoDB 服务 (DBaaS),并拥有大量的客户。云计算是未来,MongoDB 公司迅速收购并集成了 mLab,将其作为 MongoDB Atlas 云平台的一部分。然后,他们通过改变开源版本的许可条款来限制更多的 DBaaS 竞争者出现!

MongoDB 开源社区版和高级企业版都使用了相同的底层引擎。这意味着任何人都可以使用社区版,然后基于社区版提供付费的云服务。对于 MongoDB 公司来说,它们的云产品 MongoDB Atlas 就多了很多直接竞争者。因此,在 2018 年 10 月,MongoDB 公司将社区版的许可从 GNU AGPLv3 (AGPL) 更改为服务器端公共许可 (SSPL)。许可中有一个条款用来防止未来 SaaS 竞争对手使用 MongoDB 并提供他们自己的 SaaS 版本:

如果您将本程序的功能或修改版本作为服务提供给第三方,必须将服务源代码通过网络下载的方式免费提供给所有人。

这是一个由 MongoDB 公司自己提出的许可条款,并声称兼容 OSI。不过,该条款后来在开放源码计划 (OSI) 的审批过程中被撤回,不过开源版本的 MongoDB 仍然采用 SSPL 许可。

到了 2018 年,MongoDB 公司拥有 1000 多名员工。下一个主要版本 MongoDB 4.0(2018 年 6 月) 提供了跨文档事务处理能力。这是一个重要的里程碑,MongoDB 已经为高数据完整性需求做好了准备。

云生态系统在快速增长,不久后,MongoDB 公司意识到他们需要发展成一个成熟的云平台,而不只是提供数据库服务。2019 年,MongoDB 公司进行了第三笔收购,以 3900 万美元收购了云计算移动数据库公司 Realm。有意思的是,MongoDB 最初也是一种 PaaS 托管解决方案,而 12 年之后,它又回到了同样的方向。同年,MongoDB 公司发布了带有分布式事务支持的 MongoDB 4.2。

截至 2020 年 8 月,MongoDB 社区版版本是 4.4。值得注意的是,MongoDB 数据库工具可以单独下载。MongoDB 4.4 包含了一些主要的特性增强,比如多集合联合聚合、复合哈希分片键和对冲读(Hedged Read)/ 镜像读。

8 现在的 MongoDB

截至 2020 年,MongoDB 的全球下载量达到了 1.1 亿次。MongoDB 公司目前有 2000 多名员工,有超过 18000 名付费客户,其中有很多客户同时使用 MongoDB Atlas 和 MongoDB 企业版。截至 2020 年 8 月,MongoDB 社区版版本是 4.4。大多数大公司在内部的一些场景中使用社区版。MongoDB 社区版仍然是开源的,除了一些关键特性外,它与 MongoDB 企业版差不多。

MongoDB 企业版 (每个服务器每年的费用在 1 万美元左右) 提供了以下这些附加功能:

  • 内存存储引擎——适用于需要快速数据访问而不需要持久存储的场景。
  • 审计——数据库管理员在部署时跟踪系统活动。
  • 身份验证和授权——支持 Kerberos 身份验证和 LDAP 身份验证和授权。
  • 加密——WiredTiger 引擎提供了一个原生加密选项。默认是 AES256,使用 OpenSSL。

除了社区版,MongoDB 公司还提供了以下这些产品:

  • MongoDB Database Tools——命令行工具集合,包括导入 / 导出 (mongodump、mongorestore 等) 和诊断工具 (mongostat、mongotop)。
  • MongoDB 企业服务器——企业版,提供额外的安全和审计功能。
  • MongoDB Atlas——基于云的 SaaS 版服务器。
  • Atlas Data Lake——一个基于云的数据湖工具,由 MongoDB 查询语言提供支持,可以通过 MongoDB Atlas 和 AWS S3 查询和分析数据。
  • Atlas Search——一个基于云的全文搜索引擎,基于 MongoDB Atlas。
  • MongoDB Realm——一个为移动应用提供后端服务的托管云服务。
  • MongoDB Charts——一个云工具,用于创建 MongoDB 数据的可视化表示。
  • MongoDB Compass——可下载的 GUI 工具,用于连接 MongoDB 数据库和查询数据。
  • MongoDB Ops Manager——用于在自定义基础设施上部署、备份和扩展 MongoDB 的管理平台。
  • MongoDB Cloud Manager——云版本的 Ops 管理器。
  • MongoDB Connectors——为其他平台 / 工具提供的用于连接 MongoDB 的驱动程序。

9 前方的道路

由于在 SSPL 许可方面存在争议,开发者社区中有一些人对 MongoDB 生态系统持谨慎态度。投资者还面临着围绕生态系统创收的压力。如果你把 2008 年版和 2020 年版的 MongoDB 主页放在一起看,这一点就显而易见 (见下图)。MongoDB 社区版下载页面实际上也列出了企业版中才有的特性!

另外,MongoDB 公司还面临来自云供应商的激烈竞争。MongoDB 公司面临的主要问题是数据存储只是企业应用程序的一部分,如果没有一个令人信服的全栈云服务,在未来可能很难与云供应商竞争。

Eliot Horowitz (MongoDB 的关键人物) 于 2020 年 7 月离开了公司。尽管他还在担任顾问的角色,但 MongoDB 的产品仍存在一些风险,比如焦点被弱化、减少对免费社区版的支持或进一步修改许可条款。

10 写在最后

MongoDB 是一个围绕开源技术产品成功创办一家公司的完美案例,也是在产品生命周期中如何选择正确时机转向的绝佳例子。MongoDB 的简单性和较小的安装体积可以在不增加很多开销的情况下构建复杂的系统。我希望 MongoDB 公司在未来几年继续为社区版提供支持。

英文原文 https://www.quickprogrammingtips.com/mongodb/mongodb-history.html

本文由哈喽比特于4年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/1_yRkm2ZuD7NFIaMXzrYjQ

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  237231次阅读
vscode超好用的代码书签插件Bookmarks 2年以前  |  8065次阅读
 目录