qq代码学习(QQ使用的这13款开源代码)

从QQ的安装目录可以看到,共使用了13款开源代码,如下图:

qq代码学习(QQ使用的这13款开源代码)(1)

、bsdiff 软件升级,文件比较

bsdiff是由Conlin Percival开源的一个优秀的差分算法,而且是跨平台的。在Android系统中所使用的imgdiff本质上就是bsdiff。它在服务器

端运行BSDiff算法产生patch包,在客户端运行BSPatch算法,将旧文件和patch包合成新文件。

下载地址:http://www.daemonology.net/bsdiff/

QQ应该在升级更新文件的时候使用bsdiff。

qq代码学习(QQ使用的这13款开源代码)(2)

、Chromium 网页浏览器

Chromium是由Google主导开发的网页浏览器。以BSD许可证等多种自由版权发行并开放源代码,Chromium的开发可能早自2006年即开始。

Chromium 是 Google 的Chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。

官方地址:www.chromium.org/

qq代码学习(QQ使用的这13款开源代码)(3)

、dmg_fp 字符和浮点的转换

字符串与浮点数之间的转换,Lucent Technologies(朗讯科技公司)开源。

、dynamic_annotations

valgrind, PIN等程序分析工具使用该开源代码,用在计数,消息队列等。

、google-url 解析和标准化url

google-url 是一个用来解析URL和对URL进行标准化的C语言工具包,以BSD许可证发行并开放源代码

、ICU MIT/X 软件本地化

ICU(International Component for Unicode) 是 IBM 与开源组织合作研究 , 基于 "IBM 公共许可证 " 的用于支持软件国际化的开源项目。 ICU 实现了对数字、日期、货币等提供国际化支持,提供了强大的 BIDI 算法,对阿拉伯语和希伯来语等 BiDi 语言提供了完善的支持。 ICU 分为 ICU4J 和 ICU4C,分别对应 Java 和 c/c 平台。 ICU4J 被 Sun 的 JDK1.1 采用并随 JDK 版本更新。最新的 ICU4J 库可以从 http://icu-project.org/ 网站上下载。

、libvpx BSD 视频编解码器

是一个开源的VP8编码解码器

QQ视频相关的操作应该用的该视频编解码器

、LZMA 文件解压缩

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov,2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。它使用类似于 LZ77 的字典编码机制,在一般的情况下压缩率比 bzip2 为高,用于压缩的可变字典最大可达4GB。

qq代码学习(QQ使用的这13款开源代码)(4)

在使用QQ传输文件时和其他大的数据流传输时,使用该算法。

、MODP_B64 BASE64编码和解码算法

MODP_B64高性能的BASE64编码解码器

QQ不是数据是用BASE64格式处理的,估计使用的该算法。

qq代码学习(QQ使用的这13款开源代码)(5)

、PCRE2 正则表达式

PCRE2是一个对PCRE库的C 封装,一个超强大的正则表达式库,它提供了更加方便、易用的C 接口。这里是它的官方主页:http://www.daemon.de/PCRE,感兴趣的朋友可以在这里了解更多的内容。

qq代码学习(QQ使用的这13款开源代码)(6)

要得到PCRE 库,可以从这里下载:http://www.daemon.de/PcreDownload

、protobuf-lite 消息的序列和反序列化

protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。

qq代码学习(QQ使用的这13款开源代码)(7)

protobuf-lite 是protobuf支持库的精简版本,相对体积减小十倍;相对 protobuf 也很简单,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。

、Speex 语音解码编码

Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。

qq代码学习(QQ使用的这13款开源代码)(8)

Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码器,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。

、dg-user-dirs 文件管理使用

dg-user-dirs 被用作文件夹管理

qq代码学习(QQ使用的这13款开源代码)(9)

QQ涉及到文件操作,文件夹操作的地方很多,估计用这个工具。

qq代码学习(QQ使用的这13款开源代码)(10)

喜欢文学的工科中年男,欢迎大家关注,本文原创,这13款开源代码,你用过哪些呢,留言和我一起分享吧。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页