chrome插件源码(Chrome插件源码)
本文目录一览:
- 1、如何在谷歌浏览器上安装插件
- 2、求Chrome谷歌浏览器的扩展插件 实现360Chrome 360极速浏览器的功能
- 3、八个提高效率的VSCode必备扩展插件
- 4、python selenium chrome启动浏览器带插件 报错
- 5、如何将 Chrome 变成开发利器,开发者们在用这些插件
- 6、如何只生成 chrome.sln 工程文件以便编译 chromium
如何在谷歌浏览器上安装插件
在谷歌浏览器上安装插件的具体步骤如下:
1、首先打开谷歌浏览器,进入到浏览器页面中,点击打开右上角的三个点。
2、然后在弹出来的窗口中点击打开更多工具中的“扩展程序”。
3、然后在弹出来的窗口中点击打开“加载已解压的扩展程序”。
4、然后在弹出来的窗口中点击打开想要安装的插件文件夹就可以了。
求Chrome谷歌浏览器的扩展插件 实现360Chrome 360极速浏览器的功能
1、只能用ie tab,这个东西没有360chrome的双核好用,很多activex插件不能用,而且框架也不能和chrome整合。
2、鼠标手势可以用mouse stroke,不过没有360自带的好用,很多https页面不能启动。
3、貌似没有这个扩展。可以是google开发的“toolbox”扩展实现双击关闭标签。
4、是“默认在新标签页打开”吗?这个chrome没有貌似没这个扩展。
360chrome的附加功能都是内置的,修改了程序内部的源代码,而不是通过google开放的api以及编写扩展来实现的,所以有些东西是没办法取代的,只能用360或者世界之窗急速或者chrome plus。
八个提高效率的VSCode必备扩展插件
Visual Studio Code 是用于构建当前 Web 应用程序的源代码编辑器。它是一个免费的开源管理器。它支持可用于 Web 应用程序改进的各种增强功能。这里是提高工作效率的10个必备VSCode 扩展:
1. 代码拼写检查器
一个基本的拼写检查器,适用于驼峰式代码。
此拼写检查器的目标是帮助捕获常见的拼写错误,同时将误报数量保持在较低水平。
2. Compareit
Compareit 扩展可帮助您比较两个文件,您可以从当前项目和计算机或剪贴板上的其他目录中进行选择。
3. stepsize
有时您会遇到技术债务或其他应该修复的技术问题。您可能没有时间立即修复它,但您想让它可见并提出问题。
Stepsize 允许您为代码添加书签、直接从编辑器跟踪技术债务以及创建 TODO。它还允许您与您的团队成员协作进行维护和重构工作。
直接从 VSCode 报告技术债务
4. WakaTime
WakaTime 允许您查看从您的编程活动自动生成的指标、见解和时间跟踪。
您将准确了解编码花费的时间,因为它会在您开始和停止输入时自动跟踪,并提供项目、文件、分支、提交/PR、功能等的详细指标。
5. Quokka.js
Quokka.js 是用于快速 JavaScript / TypeScript 原型设计的开发人员生产力工具。运行时值会在您键入时更新并显示在您的代码旁边。它使 JavaScript / TypeScript 的原型设计、学习和测试速度更快。
6. Chrome 调试器
在 Chrome 浏览器或任何其他支持 Chrome 调试器协议的目标中调试您的 JavaScript 代码
7. 剪贴板 历史
保留复制项目的 历史 记录,并在需要时重新粘贴。
8. 配置文件切换器
允许您在您创建的不同配置文件之间切换。此扩展允许您表征各种设置配置文件,而无需在它们之间进行太多拉伸切换。
以上插件下载:八个提高效率的VSCode必备扩展插件
python selenium chrome启动浏览器带插件 报错
①:路径的“\”换成“/”,防止转义符出错
②:左边的没有添加驱动的绝对路径。虽然selenium.py的源码里有写默认路径,但是这个默认路径下是没有驱动的,得自己下载放进去。而且就算下载了放进去,这个默认路径也会报找不到驱动的错,最好是直接写上绝对路径
如何将 Chrome 变成开发利器,开发者们在用这些插件
你的网站正常运转。现在我们来让它运转的更快。网站的性能由页面载入速度和代码执行效率决定。一些服务可以让你的网站载入更快,比如压缩和CDN,但是让代码执行的更快你要做的事情。代码中很小的改动都可能对性能造成巨大的影响。快速灵活的网站和可怕的“无响应脚本”对话框可能只有几行代码的差别。这篇文章告诉你如何通过用Chrome开发者工具(ChromeDeveloperTools)找到这几行关键的代码。设置一个基线我们来看一个简单的“颜色排序器”应用,这个应用展示了一个由各种颜色构成的网格,你可以拖拽这些颜色进行混合。每一个点都是一个div标签加上一些让它看起来是圆的的CSS。生成这些颜色是需要技巧的,所以我借助了”MakingAnnoyingRainbowsinJavascript”。页面载入的很快,但还是花费了一些时间,在渲染之前还闪了一下。是时候对这个页面进行性能分析让它更快了。在开始做性能优化的时候要设置一个基线,来明确这个页面的速度到底怎样。这个基线可以让你知道自己是否做了优化并帮助你权衡利弊。在这片文章里我们要使用chrome开发者工具。性能分析器(profiler)是chrome开发者工具的一部分,点击小扳手下面的工具菜单就可以打开它。Firebug也有一些性能评测工具,但是webkit内核的浏览器(chrome和safari)在对代码进行性能分析和展示时间线方面是最棒的。Chrome还提供一种很棒的事件跟踪工具,叫做speedtracer。在时间线(timeline)标签下开始记录,载入页面然后停止记录,这样就设置了一个基线。(打开chrome开发者工具,点击“时间线”标签,然后点击窗口底部圆形的黑色“记录”图标开始记录)。chrome是很智能的,只有页面开始载入的时候才会开始记录。我记录了三次然后取了平均值,以防我的电脑在第一次测试的时候运行的很慢。我的平均基线,也就是从第一个请求到页面全部渲染结束所花费的时间是1.25秒。这个时间不是太长,但是对于这样一个小的页面来说也不算好。我想让代码执行的更快,但是我并不知道是什么让它慢下来的。性能分析器(profiler)帮助我找到原因。创建一个Profile时间线(timeline)告诉我们代码运行花费的时间,但是并没有帮助我们知道代码运行的时候发生了什么。我们可以做一些改动然后不断的测每次代码运行的时间,但这是盲目的。profiles给我们提供了更好的方法。profiler告诉我们哪些函数的执行占用了大部分时间。让我们切换到chrome开发者工具的“Profiles”标签页开始性能测试,这里一共提供了三种类型的性能测试。1、javascriptcpu性能测试显示javascript占用了多少CPU2、css选择器性能测试显示处理CSS选择器占用的CPU3、堆栈快照显示javascript对象的内存占用情况我们想要javascript代码执行的更快,所以我们进行CPU性能测试。我们开始性能测试,刷新页面然后停止。通过性能分析首先知道很多函数在执行。“颜色排序器”使用了jQuery和jQueryUI,来处理些管理插件和解析表达式之类的事情。我发现列表最顶端的是decimalToHex和makeColorSorter两个函数。这两个函数占用了CPU13.2%的时间,这是做优化的好地方。我们可以点击函数调用旁边的“下一个”箭头来查看完整的函数调用堆栈。后,可以看到decimalToHex是被makeColorSorter调用的,makeColorSorter是通过$(document).ready调用的。代码如下$(document).ready(function(){makeColorSorter(.05,.05,.05,0,2,4,128,127,121);makeSortable();});弄清楚这两个函数是哪里调用的,也就弄清楚了让颜色可以排序并不是最大的性能问题。通常情况下性能问题都是由多余的排序操作造成的,但是在我的代码中相比与排序增加DOM元素花费了时间。我想要让这些函数执行的更快,但是首先我想要将我的改动区隔开。在页面载入过程中会发生很多事情,我不想要这些影响到我的性能分析。区隔问题我做了第二个版本,这个版本中“颜色排序器”在我点击按钮之后才载入,而不是在documentready的时候载入。这就把文档载入的过程分离出去,让我可以只对颜色分类进行性能测试。调完性能之后我可以立刻改回去。让我们调用新的函数testColorSorter并把它绑定到一个可点击的按钮上。functiontestColorSorter(){makeColorSorter(.05,.05,.05,0,2,4,128,127,121);makeSortable();}Clickme在我们进行性能分析之前改变应用可能导致意外的结果。这个改动看起来很安全,但是我还是要重新运行性能检测器来看看我是不是无意中改变了什么。我会开始一次新的性能分析,点击应用中的按钮然后停止。我首先注意到decimalToHex函数的载入只占用了4.23%的时间。这是代码执行花费时间最多的地方。我们创建一个新的基线来看看这个方案对代码有多大的优化。有些事件在我点击按钮之前有触发了,但是我只关注从我点击鼠标到浏览器渲染“颜色排序器”花费的时间。鼠标在390毫秒时点击,渲染事件在726毫秒处被触发。726减去390得到我的基线336毫秒。和第一个基线一样我重复了3次来取平均值。这时,我知道如何获得并且得到了代码确切的运行时间,我们已经准备好开始解决问题了。让代码更高效性能分析器只告诉我们哪个函数造成的问题,所以我们要查看下函数的源码来了解函数做了些什么。functiondecimalToHex(d){varhex=Number(d).toString(16);hex=“00”.substr(0,2-hex.length)+hex;console.log(‘converting’+d+‘to’+hex);returnhex;}“颜色排序器”中的每一个颜色点都有一个16进制的色彩值,例如#86F01B和#2345FE.这些值表示一种颜色中红,绿,蓝三原色各自的数值。例如的背景色是#2456FE,代表红色的值是36,绿色的值是86,蓝色的是254,每一个数值必须是0到255之间的。decimalToHex函数把这用RGB值表示的颜色转化为页面中我们使用的16进制颜色。这个函数十分的简单,但是我还是留下了一个可以去掉的调试代码console.log在那里。decimalToHex函数还在数字之前加上了补位。这是很重要的一点,因为有些10进制数字对应的是1个16进制数字。比如十进制中的10对应着16进制中的C,但是在CSS中需要一个两位数。为了让这个进制换算更快速,我们让这段代码不是那么泛化。我知道每个需要补位的数字长度都为1,所以我们可以这样重写这个函数。functiondecimalToHex(d){varhex=Number(d).toString(16);returnhex.length===1?‘0’+hex:hex;}第三个版本的“颜色排序器”只有在需要补位的时候才改变字符串,并且不用调用substr函数。有了这个新函数,运行时间是137毫秒。再次对代码进行性能测试,可以发现decimalToHex函数只占用了总时间的%0.04,到了列表的下部。我们还可以发现占用CPU最多的函数是jQuery的e.extend.merge。我不知道这个函数的作用,因为代码是压缩过的。我可以使用开发版本的jQuery,但是我发现这个函数是被makeColorSorter调用的。所以下一步我们先让这个函数执行的更快。减小改动“颜色排序器”中的多彩颜色是用过正弦曲线生成的。在光谱中设置一个中心点,然后以一定的偏移来创建这个曲线。这就把颜色变成了一个“彩虹模型”。我们还可以通过改变红绿蓝三原色的使用频率来改变颜色。functionmakeColorSorter(frequency1,frequency2,frequency3,phase1,phase2,phase3,center,width,len){for(vari=0;ilen;++i){varred=Math.floor(Math.sin(frequency1*i+phase1)*width+center);vargreen=Math.floor(Math.sin(frequency2*i+phase2)*width+center);varblue=Math.floor(Math.sin(frequency3*i+phase3)*width+center);console.log(‘red:’+decimalToHex(red));console.log(‘green:’+decimalToHex(green));console.log(‘blue:’+decimalToHex(blue));vardiv=$(‘’);div.css(‘background-color’,‘#’+decimalToHex(red)+decimalToHex(green)+decimalToHex(blue));$(‘#colors’).append(div);}}我们要去掉console.log函数。这些调用非常的糟糕,因为每次执行都会调用decimalToHex函数,这意味着decimalToHex函数会被多调用2倍的次数。这个函数大幅度的改变了DOM结构。每次循环,都向id为colors的div中添加一个新的div。这就让我怀疑这就是e.extend.mergefunction做的事情。用性能分析器做一个小实验就可以搞清楚。我想要一次把所有的div添加进去,而不是在每个循环中添加一个新的div。创建一个变量来存储数据,然后在最后一次性添加进去。functionmakeColorSorter(frequency1,frequency2,frequency3,phase1,phase2,phase3,center,width,len){varcolors=“”;for(vari=0;ilen;++i){varred=Math.floor(Math.sin(frequency1*i+phase1)*width+center);vargreen=Math.floor(Math.sin(frequency2*i+phase2)*width+center);varblue=Math.floor(Math.sin(frequency3*i+phase3)*width+center);colors+=‘’;}$(‘#colors’).append(colors);}这个小改动意味着DOM只在添加所有div的时候做一次改变。用时间线进行测试,我们发现从点击到渲染花费了31毫秒。这个dom变动,使得第四个版本的运行时间降低了86%。我可以再次打开性能分析器(profiler),发现e.extend.merge函数占用了很少的时间,在列表中已经看不到它了。我们还可以完全移除decimalToHex函数让代码更快一点。因为CSS支持RGB颜色,所以我们不需要把他们转换到16进制。现在我们可以这样写makeColorSorter函数。functionmakeColorSorter(frequency1,frequency2,frequency3,phase1,phase2,phase3,center,width,len){varcolors=“”;for(vari=0;ilen;++i){varred=Math.floor(Math.sin(frequency1*i+phase1)*width+center);vargreen=Math.floor(Math.sin(frequency2*i+phase2)*width+center);varblue=Math.floor(Math.sin(frequency3*i+phase3)*width+center);colors+=‘’;}$(‘#colors’).append(colors);}第五个版本的执行只用了26毫秒而且代码行数从28行减少到18行。在你的应用中进行Javascript性能分析实际工作中的应用要比“颜色排序器”复杂的多,但是做性能分析要遵循同样的基本原则1、设置一个基线,这样你就知道你是从何处开始的。2、把问题从应用的其他代码隔离出来。3、在一个可控的环境下进行优化,频繁的使用时间线(timelines)和性能分析器(profiles)还有一些性能优化的准则1、从最慢的部分开始,这样在时间优化上可以得到最大的提升。2、控制环境。如果你换了电脑或者做了任何大的改动,都要设置新的基线。3、多次分析以防你电脑的异常导致得到不正确的结果。每个人都想要他的网站更快,你必须开发新的功能,但是新的功能通常会让网站更慢。所以花费时间来做性能优化是有价值的。性能分析和优化使得最终版颜色分类器的执行时间减少了92%。你的网站可以变快多少?英文原文:ZackGrossbart,编译:伯乐在线——王筱文章来源:伯乐在线注:相关网站建设技巧阅读请移步到建站教程频道。
如何只生成 chrome.sln 工程文件以便编译 chromium
一,编译之前的准备。
1) 了解代码组织结构。
Chrome source非常庞大,并且在其主目录下还包含有工具和组件,任何一个工具和组件也附带有其源代码。首先得熟悉这些源代码的组织结构,在中包含如下子目录:releases,曾经发布过的chrome源代码的正式版本;trunk,当前最新的源代码。由于releases中的代码比较旧,这里就不做说明了,只说明trunk的结构。在trunk下面有3个重要的目录,deps包含了chrome编译和运行所需要的全部组件的代码。src里面包含的则是chrome的主程序的代码,tools包含的是下载和配置编译所需要的第三方工具的压缩包和源代码,其中就有svn和python这2个比较重要的工具,后面再详细介绍。暂时做这样一个简单的介绍,因为其组织结构比较负责,以后再作补充斧正。
2)如何下载和同步源代码。
首先谈谈下载:
1,最简单的方法是从chrome官网上直接下载源代码压缩包,地址是。
2,或者采用svn从这个地方heckout,这要求你先在本地建一个源代码的主目录。
3,另外一个办法则是采用google提供的一个部署工具depot_tools。虽然这几种办法都可下载完整的源代码,但目前的情况是:chrome基于Visual Stdio 2005 进行编译,如果顺利完成编译工作,自然少不了sln文件,较早的源代码中包含有现成的sln和vcproject文件,但后来做了修改,这些文件被抛弃掉,Google自己开发了一种脚本工具叫做GYP,这个工具采用python编写,GYP采用了自定义的一套规则,用于生成各种工程文件。而关键的python则包含于depot_tools中,因此不论采用什么方法下载的代码,都得下载depot_tools这个工具,以获得必须的工程文件。
depot_tools位于 下面,包括一个目录和一个zip格式的压缩包。
3)关于编译器
前面提到Chrome采用Visual Stdio 2005进行编译,根据的说明,需进行如下操作正常编译
a, 安装Visual Studio 2005.
b, 安装Visual Studio 2005 Service Packe 1.
c, 安装Visual Studio Hotfix 947315.
d, 如果是vista系统,还需安装Visual Studio 2005 Service Packe 1 Update for Windows Vista.
e, 安装Windows 2008 SDK,如果是Visual Studio 2008则不需要这一步。
f, 配置Windows 2008 SDK,使2008 SDK成为首选开发库,以获得一些新功能和特性。办法是在开始-程序-Microsoft Windows SDK v6.1 Visual Studio Registration Windows SDK Configuration Tool,选择make current按钮。也可以在VS里面手动配置include和libary路径,效果是一样的。
二,如何配置工程文件
1,如果是采用depot_tools,那么从代码下载到生成sln文件会自动完成。其步骤是
(1)下载depot_tools到本地存储,假设位于d:/depot_tools.
(2)将d:/depot_tools添加到系统环境变量中。
(3)创建一个源代码根目录,假设为 d:/chrome,目录不得包含空格。
(4)在命令行下切换当前目录到d:/chrome。
(5)执行命令 gclient config ,该命令会首先下载svn和python分别到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。
(6)执行命令 gclient sync 这个命令会调用svn同步源代码。这个过程会比较漫长。全部完成之后全部源代码就保存在d:/chrome里面。未编译的代码大约有4个G左右,过程将十分漫长。这样获得的源代码已经包含所有的工程文件,可直接打开。
重点说明一下gclient,它实际上是一个批处理文件,它主要做了如下一些事情,首先设置环境变量,如代码根目录,工具根目录等。其次调用win_tools.bat从服务器下载svn和python。最后调用python.exe对Chrome.gyp进行解析生成所有工程文件。
另外需要说明的是,gclient sync的过程非常漫长,根据命令行的提示来看总共需要同步67个项目(不是工程),期间可能会因为一些原因导致错误而退出这个过程,需要继续调用sync。比如网络出现故障svn会多次进入sleep状态然后重试,如果多次失败就会报错退出,还有的情况是某些子目录的属性问题无法同步,可根据提示进行操作。还有个目前新出现的问题,下面2个目录“src/webkit/data/layout_tests/LayoutTests”和“src/third_party/WebKit/LayoutTests”的源代码是从src.webkit.org签出来的,但是这个网站目前存在问题无法签出代码, 需要屏蔽掉这2个目录,由于里面是测试代码,即使丢弃也不会影响整个工程的编译,方法是打开trunk下面的.gclient文件,向里面添加如下内容
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests":None,
},
这样svn就能完成代码的同步了。最后gclient会调用depot_tools/python_bin/python.exe 对 src/build/gyp_
chromium进行处理,这样就得到了所有的sln和vcproject文件。
2,如果是下载的代码压缩包或者checkout的代码,代码目录里面没有sln文件,这个时候需要调用命令行进入源代码根目录,然后执行命令 gclient runhooks --force,命令执行后会直接对Chrome.gyp进行解析,生成sln文件。
在实际下载过程中,最开始的时候我用TortoiseSVN从 checkout源代码,但是得到的代码只有几百兆,执行gclient runhooks --force命令后也没有找到sln文件,具体原因未知,不建议使用此方式。而直接下载代码压缩包的方式没有尝试过,不知道是否可行。因此最稳妥的方法还是使用depot_tools来部署和处理源代码。
三 编译工程
启动Visual Studio 2005打开 src/chrome/browser/chrome.sln,或者打开src/build/all.sln,如果打开的是chrome.sln里面包含480个工程,而all.sln则包含507个工程,一些09年的编译说明提到有300左右的工程,可见chrome的代码变动比较大。对整个解决方案进行编译,打开需要2个小时才能完成编译,视硬件环境而定,内存越大越快,推荐4G以上内存,酷睿2核或者4核。编译完成以后据说会占用30G的空间。编译后的文件位于 d:/chorme/chrome/debug 目录或者 d:/chorme/chrome/release目录下。
四 chrome涉及的开源项目
Chrome 采用了很多开源项目,这里把它们列出来以备后用,目前Chrome涉及25个开源代码:
1、Google Breakpad
/src/breakpad
开源的跨开台程序崩溃报告系统。
2、Google URL
/src/googleurl
Google小巧的URL解析整理库。
3、Skia
/src/skia
矢量图引擎。
4、Google v8
/src/v8
Google开源的JavaScript引擎。V8实现了ECMA-262第三版的ECMAScript规范,可运行于Windows XP 和 Vista, Mac OS X 10.5 (Leopard), 及 Linux等基于IA-32 或 ARM 的系统之上。V8可单独运行也可嵌入到任何C++程序中。
5、Webkit
/src/webki
开源的浏览器引擎
6、Netscape Portable Runtime (NSPR)
/src/base/third_party/nspr
Netscape Portable Runtime (NSPR) 提供了系统级平台无关的API及类似libc的函数。
7、Network Security Services (NSS)
/src/base/third_party/nss
Network Security Services (NSS) 一套用于支持服务器端与客户端安全开发的跨平台函数库。程序通过NSS可支持SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 认证及其它一些安全标准。
8、Hunspell
/src/chrome/third_party/hunspell
Spell checker and morphological analyzer library and program designed for languages with rich morphology and complex word compounding or character encoding.
9、Windows Template Library
/src/chrome/third_party/wtl
用于开发Windows程序与UI组件的C++ library。WTL扩展了ATL (Active Template Library) 并提供一套用于controls, dialogs, frame windows, GDI objects等开发的类。
10、Google C++ Testing Framework
/src/testing/gtest
Google用于编写C++测试的基于xUnit架构的框架,可用于多种平台上:Linux, Mac OS X, Windows, Windows CE, and Symbian。支持自动测试发现,有一套丰富的Assertions断言,用于可自定义断言,death tests, fatal and non-fatal failures, various options for running the tests, and XML test report generation.
11、bsdiff 与 bspatch
/src/third_party/bsdiff 及 /src/third_party/bspatch
bsdiff 与 bspatch 用于为二进制文件生成补丁。
12、bzip2
/src/third_party/bzip2
bzip2使用Burrows-Wheeler block sorting text compression 算法与Huffman编码压缩文件。
13、International Components for Unicode (ICU)
/src/third_party/icu38
ICU是一套成熟并被广泛使用的C/C++ 及 Java 库,可为软件提供Unicode与全球化支持。
14、libjpeg
/src/third_party/libjpeg
用于处理JPEG (JFIF)图像格式的库。
15、libpng
/src/third_party/libpng
PNG图像格式库。支持绝大部分的PNG特性,可扩展。已经被广泛地使用了13年以上了。
16、libxml
/src/third_party/libxml
C语言的XML解析库。
17、libxslt
/src/third_party/libxslt
C语言的XSLT库。
18、LZMA
/src/third_party/lzma_sdk
LZMA为7-Zip软件中7z格式压缩所使用的压缩算法,有很好的压缩效果。
19、stringencoders
/src/third_party/modp_b64
一系列高性能的c-string转换函数,比如:base 64 encoding/decoding。通常比其标准实现快两倍以上。
20、Netscape Plugin Application Programming Interface (NPAPI)
/src/third_party/npapi
多种浏览器使用的跨平台插件架构。
21、Pthreads-w32
/src/third_party/pthread
用于编写多线程程序的API
22、SCons - a software construction tool
/src/third_party/scons
开源的软件构建工具——下一代的编译工具。可以认为SCons是改进过的跨平台配上autoconf/automake与ccache的Make工具的子系统。
23、sqlite
/src/third_party/sqlite
大名鼎鼎的嵌入式数据库引擎。自管理、零配置、无需服务器、支持事务。
24、TLS Lite
/src/third_party/tlslite
SSL 3.0, TLS 1.0, and TLS 1.1的Python免费实现库。TLS Lite支持这些安全验证方式:SRP, shared keys, and cryptoIDs in addition to X.509 certificates。注:Chrome并不包涵Python。TLS Lite用于Chrome开发过程中的代码覆盖、依赖检查、网页加载时间测试及生成html结果比较等。
25、zlib
/src/third_party/zlib
zlib为一套用于任意平台与机器的无损数据压缩的库,它免费、自由、无任何法律专利问题。