ZooKeeper 是一个分布式应用程序的分布式的,开源的协调服务。它提供了一组简单的原语,分布式应用程序可以基于它为同步,配置维护,分组和命名而实现更高层的服务。它被设计为易于编程的,它使用了我们熟悉的文件系统目录树结构风格的数据模型。它运行于 Java 中,但具有 Java 和 C 的绑定。
众所周知,协调服务很难实现。它们特别容易出现诸如竞态条件和死锁这样的错误。ZooKeeper 背后的动机是解除分布式应用程序从头开始实现协调服务的责任。
ZooKeeper 是一个分布式应用程序的分布式的,开源的协调服务。它提供了一组简单的原语,分布式应用程序可以基于它为同步,配置维护,分组和命名而实现更高层的服务。它被设计为易于编程的,它使用了我们熟悉的文件系统目录树结构风格的数据模型。它运行于 Java 中,但具有 Java 和 C 的绑定。
众所周知,协调服务很难实现。它们特别容易出现诸如竞态条件和死锁这样的错误。ZooKeeper 背后的动机是解除分布式应用程序从头开始实现协调服务的责任。
BitTorrent 是一个用于文件分发的协议。它通过 URL 来标识内容,其设计使其可以与 Web 无缝集成。BitTorrent 相对于一般 HTTP 的优势在于,当相同文件的多个下载并行进行时,下载者之间还可以互传数据,这就使得文件源在仅增加少量负载的情况下支持数量众多的下载成为可能。
目前在 Android 应用开发中,可用的 PDF 文档展示的开源项目好几个,最为方便的是 AndroidPdfViewer,它基于 PdfiumAndroid 开发而来,而后者则是由 AOSP 中的 pdfium 封转而来。另外一个 PDF 文档显示的开源项目 mupdf 也非常强大。本文简单分析 MuPDF 库的 Android 封装。
GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具。尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用。Jenkins 和 GitLab 在两者的结合上,都提供了非常方便的工具。在我们向 GitLab push 代码,或执行其它一些操作时,GitLab 可以将这些时间通知给 Jenkins,trigger Jenkins 工程的构建自动执行。
要实现在向 GitLab push 代码时,自动 trigger Jenkins 工程执行构建动作,需要在 GitLab 和 Jenkins 的多个地方做配置:(1)、在 Jenkins 中安装插件;(2)、配置 GitLab 用户;(3)、配置 Jenkins 服务器;(4)、配置 Jenkins 工程;(5)、配置 GitLab 工程。
PKI 体系依赖证书执行极为关键的身份验证,以此确认服务端的可信任性。证书验证在 SSL/TLS 握手过程中完成,验证过程通常包含三个步骤:
验证证书的合法性:这一步主要是验证证书是由合法有效的 CA 签发的。在客户端预先保存一个可靠的 CA 的根证书库,比如 FiexFox、Chrome、Android、Microsoft 等都有维护自己的根证书库,并据此验证服务端证书链的合法性。PKI 体系借助于可靠的中心化身份验证系统,即 CA,为服务端的身份合法性背书。根证书库的安全是 PKI 系统正常工作非常关键的部分。
验证证书域名的匹配性:服务端的证书都是为特定域名签发的,证书就像是网站的身份证一样。通过验证域名匹配性,可以有效的防止身份的仿冒,比如经营着 A 网站的经营者,拦截用户请求,并冒充 B 网站的身份,盗取信息。如果客户端不对域名的匹配性做检查,则将造成极大的攻击面,拿到任何一个域名的合法证书的人都将可以仿冒目标服务器。
证书钉扎验证:这是 PKI 体系中比较新的一种增强安全性的机制。目前的证书签发机构 CA 非常多,总数大概有几百个上千个,每个 CA 都可以为任何域名签发合法有效的证书,因而众多的 CA 就造成了非常大的攻击面。比如某个 CA 被攻破,或者犯了其它什么错误,为攻击者签发了 www.google.com 等域名的证书,则攻击者将可以仿冒这些网站。证书钉扎机制正是为了解决这一问题而产生——证书钉扎机制中,在客户端将特定域名的证书与特定的签发者绑定,即客户端只承认特定签发者签发的某个域名的证书,而不承认其它 CA 为该域名签发的证书。通过这种方式,来解除大量 CA 这个攻击面的威胁。
Simpleperf 是 Android 的一个本地代码性能剖析工具,它是 Android 开源项目(AOSP)的一部分。Simpleperf 可以用来剖析运行于 Android 平台的 Android 应用程序和本地进程,无论是 Java 代码还是 C++ 代码它都可以剖析。对于 Android 系统,需要是 Android L (Android 5.0)及以上版本。