C#公共项目( Collections in C#)

文章整理于互联网。
本文收集了 60款 Google 开源的项目,排名顺序按照 Github ★Star 数量排列。

  集合是.NET FCL(Framework Class
Library)中那个关键之等同组成部分,也是咱付出中最常用到之成效有,几乎是无处不在。俗话说知其然,知其所以然,平常看IEnumerable,IEnumerator,ICollection是休是了解她们中各自的别?除了List和Dictionary以外,你还为此过怎样其它的集合类?废话少说,今天咱们就算来拘禁有些这些概念集合类的接口及她们的实现。

0、机器上体系 TensorFlow  ★Star 62533

  • 集合接口
  • 关联性泛型集合类
  • 非关联性泛型集合类
  • 推介应用状况
  • 非泛型集合类
  • 线程安全集合类

 

聚集接口

  先来拘禁一下,FCL为我们提供了怎么接口:

统计 1

  

统计 2

IEnumerable 和IEnumberator

public interface IEnumerator
{

    bool MoveNext();
    object Current {  get; }
    void Reset();
}

  IEnumerator定义了我们遍历集合的主干办法,以便我们得以实现只为前行的造访集合中的诸一个要素。而IEnumerable只发一个艺术GetEnumerator即取得遍历器。

public interface IEnumerable
{
    IEnumerator GetEnumerator();
}

  注意:咱们经常用之foreach即是均等种语法糖,实际上还是调用Enumerator里面的Current和MoveNext实现的遍历功能。

List<string> list = new List<string>() 
{ 
    "Jesse",
    "Chloe",
    "Lei",
    "Jim",
    "XiaoJun"
};

// Iterate the list by using foreach
foreach (var buddy in list)
{
    Console.WriteLine(buddy);
}

// Iterate the list by using enumerator
List<string>.Enumerator enumerator = list.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}

  上面的代码中之所以到之foreach和enumerator到IL中最后还见面叫翻成enumerator的MoveNext和Current。

统计 3

  IEnumerable是一个雅有因此的接口,实现其的补益包括:

  1. 支持foreach语句
  2. 作一个专业的集合类与任何类库进行相互
  3. 满足再扑朔迷离的集结接口的需要
  4. 支持集合初始化器

  当然实现的办法吧有众多,如下:

  1. 只要我们凑是经过包其它集合类而来之,那么我们得直接回这个集的enumerator
  2. 通过yield return 来返回
  3. 心想事成我们团结的IEnumerator来兑现

  这里被大家演示一下什么通过yield来落实返回enumerator

public class BuddyList : IEnumerable
{
    private string[] data= new string[]
    { 
        "Jesse",
        "Chloe",
        "Lei",
        "Jim",
        "XiaoJun"
    };

    public IEnumerator GetEnumerator()
    {
        foreach (var str in data)
        {
            yield return str;
        }
    }
}

var myBuddies= new BuddyList();
foreach (var str in myBuddies)
{
    Console.WriteLine(str);
}

  

 

ICollection<T>和ICollection

  从极度上面第一摆图我们好清楚,ICollection是一直接轨自IEnumerable。而实在为是如此,我们得以说ICollection比IEnumerable多支持有效能,不仅仅只有提供基本的遍历功能,还包:

  1. 统计集合和要素个数
  2. 获元素的下标
  3. 判定是否有
  4. 补偿加元素到未尾
  5. 移除元素等等。。。

   ICollection 与ICollection<T>
略有不同,ICollection不提供编辑集合的功力,即Add和Remove。包括检查元素是否存在Contains也非支持。

TensorFlow
是谷歌的老二替机上系统,按照谷歌所说,在一些规则测试中,TensorFlow的展现比较第一替之DistBelief快了2加倍。TensorFlow
内建筑深度上之壮大支持,任何能够用计量流图形来表述的乘除,都足以使TensorFlow。任何依据梯度的机上算法都能受益于TensorFlow的自动分
化(auto-differentiation)。通过灵活的Python接口,要当TensorFlow中发挥想法也会杀容易。(详情:https://github.com/tensorflow/tensorflow)

IList<T>和IList

  IList则是直接轨自ICollection和IEnumerable。所以她概括双方的职能,并且支持因下标访问与加加元素。IndexOf,
Insert,
RemoveAt等等。我们得这么说,IEnumerable支持的效力最好少,只有遍历。而ICollection支持的效果稍微多一些,不仅产生遍历还有保护这个集的效益。而IList是极致全的版本。

 

IReadOnlyList<T>

  这个是以Framework4.5被新增的接口类型,可以吃视作是IList<T>的缩减版,去丢了拥有可能改这个集的效能。比如:Add,
RemoveAt等等。

1、material-design-icons  ★Star 30315

IDictionary<TKey,TValue>

  IDictionary提供了对键值对聚集的拜访,也是连续了ICollection<T>和IEnumerable,扩展了经Key来访问和操作数据的法子。

Google 开源了 Material Design 系统图标包中的 750
只字形。该系统图标包含常用之图标,如用于媒体播发、通讯、内容编排、连接等等。在
Web 应用,安卓和 iOS
设计均适用。(详情:http://google.github.io/material-design-icons/)

关联性泛型集合类

  关联性集合类即我们经常说之键值对聚集,允许我们经过Key来访问与维护集合。我们先来拘禁一下
FCL为咱提供了怎样泛型的关联性集合类:

  1. Dictionary<TKey,TValue>
  2. SortedDictionary<TKey,TValue>
  3. SortedList<TKey,TValue>

 

Dictionary<TKey,TValue>

  Dictionary<TKey,TValue>可能是咱们最为常用的关联性集合了,它的访问,添加,删除数据所消费的时空是兼备集合类里面最抢之,因为它们其中用了Hashtable作为存储结构,所以无存储了聊键值对,查询/添加/删除所花费的时光还是同一的,它的流年复杂度是O(1)。

  Dictionary<TKey,TValue>优势是找插入速度快,那么什么是她的劣势呢?因为用Hashtable作为存储结构,就意味着中的数额是无序排列的,所以想循自然的各个去遍历Dictionary<TKey,TValue>里面的数量是一旦花费一点光阴的。

  作为TKey的品种必须兑现GetHashCode()Equals() 或提供一个IEqualityComparer,不然操作可能会见产出问题。

2、前端开发工具组 MDL  ★Star 27873

SortedDictioanry<TKey,TValue>

  SortedDictionary<TKey,TValue>和Dictionary<TKey,TValue>大致上是相近的,但是在贯彻方式及发出一点点界别。SortedDictionary<TKey,TValue>用二叉树作为存储结构的。并且以key的顺序排列。那么这样的话SortedDictionary<TKey,TValue>的TKey就务须要实现IComparable<TKey>。如果想如果迅速查询的以还要会充分好的支撑排序的口舌,那就算动用SortedDictionary吧。

统计 4

SortedList<TKey,TValue>       

  SortedList<TKey,TValue>是任何一个支撑排序的关联性集合。但是差之地方在,SortedList实际是拿数据存存储于反复组吃的。也就是说添加和移除操作都是线性的,时间复杂度是O(n),因为操作间的素或导致有的数移动。但是坐当摸的当儿下了亚分叉查找,所以寻找的性质会吓有,时间复杂度是O(log
n)。所以推举下状况是这般地:如果你想要迅速搜索,又想凑按照key的顺序排列,最后之集的操作(添加和移除)比较少之话语,就是SortedList了。

MDL (Material Design Lite) 是 Google 推出的网站前端开发工具组。Material
Design Lite (MDL)可以叫您加加一个 Material Design
的外观及感到您的静态内容网站,不依靠让其他的 JavaScript 框架和储藏室。MDL
可以优化跨设备的应用体验,可以在旧版的浏览器进行平整的切换,提供充分便捷的顾体验。(详情:https://github.com/google/material-design-lite)

免关联性泛型集合类

  非关联性集合就是无须key操作的有些集合类,通常我们可据此元素本身或下标来操作。FCL主要也咱提供了以下几种植不关联性的泛型集合类。

  1. List<T>
  2. LinkedList<T>
  3. HashSet<T>
  4. SortedSet<T>
  5. Stack<T>
  6. Queue<T>

 

List<T>

  泛型的List
类提供了不限制长度的汇聚类型,List在里维护了迟早长度的数组(默认新开始长度是4),当我们插入元素的尺寸超过4还是开长度
的下,会失去再创设一个初的频繁组,这个新数组的长短是始于长度的2倍(不永远是2倍增,当发现不断的要推而广之的时光,倍数会更换充分),然后将原来的数组拷贝过来。所以若掌握我们将要用之集合装多少只要素的话,可以于开创的时刻指定初开始值,这样虽避免了还的创办新数组和拷贝值。

  另外的讲话由于其中实质是一个勤组,所以当List的未必添加多少是比快的,但是只要以数据的峰还是中间添加去数据相对来说更不行一些为见面影响外数据的重新排列。

3、Web 前端框架 Angular  ★Star 25524

LinkedList<T>

  LinkedList于其间维护了一个双向的链表,也就是说我们在LinkedList的别样岗位添加或去数据其特性都是飞速的。因为它们不见面促成其他元素的运动。一般情况下List已经够用我们应用了,但是若对斯集在中的丰富去操作特别频繁的语句,就提议使用LinkedList。

Angular 是千篇一律慢慢悠悠大风行且好用的 Web 前端框架,目前由 Google
维护。官方曾拿 Angular 2 和事先的版 Angular.js 分开维护(两者的 GitHub
地址与花色主页皆无一样)。渐进式 Web 应用,借助现代化 Web
平台的力量,交付 app
式体验。高性能、离线化、零安装。(详情:https://github.com/angular/angular)

HashSet<T>

  HashSet是一个无序的能维持唯一性的集纳。我们呢可拿HashSet看作是Dictionary<TKey,TValue>,只不过TKey和TValue都对准同一个靶。HashSet非常适合在咱们得保障集合内元素唯一性但同时不需按照顺序排列的时节。

  HashSet不支持下标访问。

 

SortedSet<T>

  SortedSet和HashSet,就比如SortedDictionary和Dictionary一样,还记这有限个的区分呢?SortedSet内部也是一个二叉树,用来支持以梯次的排元素。

4、容器集群管理网 Kubernetes  ★Star 24599

Stack<T>

  后进先出的队列
  不支持按下标访问

Kubernetes 是来源于 Google 云平台的开源容器集群管理网。基于 Docker
构建一个器皿的调度服务。该体系可自行在一个器皿集众多中选择一个干活容器供役使。其中心概念是
Container Pod。(详情:https://github.com/kubernetes/kubernetes)

Queu<T>

  先进先出的班
  不支持以下标访问

 

推介下状况

 

集合

顺序排列

连顺存储

直接访问方式

访问时间

操作时间

备注

Dictionary

 

Key

Key:

O(1)

 

O(1)

访问性能最快,不支持排序

SortedDinctionary

顺序排列

Key

Key: 
O(log n)

O(log n)

快速访问和支持排序的折衷

SortedList

顺序排列

Key

Key:

O(log n)

 

O(n)

和SortedDictionary相似,只是内部用数据替代树作为存储结构。

List

使用者可以精确控制元素的位置

Index

Index: O(1)

Value: O(n)

 

O(n)

最适合需要直接访问每一个元素的少量集合。

LinkedList

使用者可以精确控制元素的位置

不支持

Value:

O(n)

 

O(1)

最适合不需要直接访问单个元素,但是在集合中添加/移除非常频繁的场景。

HashSet

不支持

Key

Key:

O(1)

 

O(1)

能保持元素唯一性的集合。不支持排序

SortedSet

顺序排列

Key

Key:

O(log n)

 

O(log n)

能保持元素唯一性并且支持排序。

Stack

LIFO

只能获取顶部元素

Top: O(1)

O(1)

 

Queue

FIFO

只能获底部元素

Front: O(1)

O(1)

 

5、数据描述语言 protobuf  ★Star 18447

非泛型类集合

泛型集合类是当.NET2.0底当儿下的,也就是说在1.0之时是从未有过如此方便之东西的。现在基本上我们既休采取这些集合类了,除非在举行有跟老代码保持兼容的劳作的时刻。来看看1.0一时之.NET程序员们还生什么样集合类可以据此。

  1. ArraryList

后来被List<T>替代。

  1. HashTable 后来被Dictionary<TKey,TValue>替代。
  2. Queue 后来被Queue<T>替代。
  3. SortedList 后来被SortedList<T>替代。
  4. Stack 后来被Stack<T>替代。

Protocol Buffers (ProtocolBuffer/ protobuf
)是Google公司开之一模一样栽多少描述语言,类似于XML能够用结构化数据序列化,可用来数据存储、通信协议等地方。现阶段支撑C++、JAVA、Python等三种编程语言。同XML相比,Protocol
buffers在序列化结构化数据方面来众多长(详情:https://github.com/google/protobuf)

线程安全的集合类

  1. ConcurrentQueue 线程安全本的Queue
  2. ConcurrentStack线程安全本的Stack
  3. ConcurrentBag线程安全的对象集合
  4. ConcurrentDictionary线程安全之Dictionary
  5. BlockingCollection

.NET为咱提供的集合类是我们好常用之工具类之一,希望就首文章能助大家还好之认这些集合类。当然,个人感觉还发出未周全之地方,比如说HashTable和Binary
Search
Tree就无细究下去,包括才为链表和双向链表之间的相比本文也从没提及。感兴趣的恋人可深深了解一下。

 

 

6、Java 常用库 Guava  ★Star 17267

该项目是 Google 的一个开源项目,包含众多 Google 核心之 Java
常用库。(详情:https://github.com/google/guava)

 

7、Spark  ★Star 13378

统计 5

Spark 是谷歌公司出的等同磨蹭基于 Chrome 浏览器的支付环境。提供平等组而选用的
UI 组件。采用 Dart
开发。(安装方式:https://github.com/dart-lang/spark/tree/master/ide)

 

8、RPC 框架 GRPC  ★Star 10363

GRPC 是一个胜似性能、开源与通用的 RPC 框架,面向移动及 HTTP/2
设计。目前提供 C、Java 和 Go 语言版,分别是:grpc, grpc-java, grpc-go.
其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C#
支持.GRPC 基于 HTTP/2 标准设计,带来诸如双向流动、流控、头部压缩、单 TCP
连接上之大多复用请求等才。这些特色使得该于移动设备上显现更好,更省电及节省空间占据。(详情:https://github.com/grpc/grpc)

 

9、高质量滑坡图片算法工具Guetzli  ★Star 9959

统计 6

Guetzli,是一个对准数码图像和网页图像的 JPEG 编码器,能够透过出更小的
JPEG 文件来达成更快的在线体验,并且还要保障与当前浏览器,图像处理利用和
JPEG 标准的兼容性。Google 称 Guetzli 创建高质量之 JPEG
图像文件的轻重比较目前之减方法而重聊 35%。上图为 16×16
像素样本,是挂于蓝天下的相同彻底电话线,传统 JPEG
算法经常会遇见的失真状况。左边是未减的原图,中间为比小尺寸的
libjpeg,右边是失真更不见之 Guetzli
。(详情:https://github.com/google/guetzli)

 

10、k/v数据库 Leveldb  ★Star 9799

Leveldb是一个google实现之可怜便捷之kv数据库,目前底版本1.2克支持billion级别之数据量了。
在这个数级别下还保有十分强的性质,主要归功给她的好好的设计。特别是LSM算法。(详情:https://github.com/google/leveldb)

 

11、自动化网络审批工具 Lighthouse  ★Star 9400

Lighthouse 是一个开源的自动化工具,用于改善网络以之成色。
可以以那个看做一个 Chrome 扩展程序运行,或打命执行运行。 当为 Lighthouse
提供一个要是查处的网址,它用对准这页面运行一连串的测试,然后变一个有关页面性能的告知。可以参考失败的测试,看看好下哪些方法来改善以。(详情:https://github.com/GoogleChrome/lighthouse)

 

12、Gson  ★Star 9261

Gson 是 Google 提供的用来在 Java 对象以及 JSON 数据里开展映射的 Java
类库。可以用一个 JSON 字符串转成为一个 Java
对象,或者转。(详情:https://github.com/google/gson)

 

13、最小网加载工具 systemjs  ★Star 8356

systemjs
是一个绝小系统加载工具,用来创造插件来拍卖可代表的景象加载过程,包括加载
CSS 场景和图纸,主要运行于浏览器与 NodeJS 中。它是 ES6
浏览器加载程序的的恢宏,将以在地头浏览器中。通常创建的插件名称是模块本身,要是没有专门指定用途,则默认插件名是模块的恢弘名称。(详情:https://github.com/systemjs/systemjs)

 

14、序列化库 FlatBuffers  ★Star 7991

FlatBuffers 是一个 Java
的行化库,用于打与外内存受限的运用。FlatBuffers
可以给你直接看序列化后底多少,无需解压并展开解析的过程。同时提供特别强的前行同于后兼容性。FlatBuffers
支持 C++ 和 Java
语言,无需依靠第三方库支持。(详情:https://github.com/google/flatbuffers)

 

15、Xi 文本编辑器 Xi Editor  ★Star 8000

Xi Editor 是 Google 开源之一律款款用 Rust 语言编写的文本编辑器,最初是为 Mac
OS X 构建的,使用 Cocoa
作为用户界面,已出计划适配其它平台。所有编辑操作都足以在 16ms
之内提交并处理。文本绘制使用最好之技术(如 Mac 上的 Core Text,Windows
上之 DirectWrite 等),并完全支持
Unicode。(详情:https://github.com/google/xi-editor)

 

16、Grumpy  ★Star 7760

Grumpy 是一个 Python  to Go 源代码翻译编译器和运转时,旨在替代 CPython
2.7。 关键之别是其用 Python 源代码编译为 Go
源代码,然后以那个编译为本机代码,而休是许节码。这意味 Grumpy 没有
VM。编译的 Go 源代码是针对性 Grumpy 运行时之一律系列调用,Go 库服务以及 Python C
API 类似之目的(尽管未直支持 C
API)。(详情:https://github.com/google/grumpy)

 

17、Javascript 编译器 Traceur  ★Star 7300

Traceur 是一个自 Google 的 Javascript
编译器,通过她好感受有大新又有趣之 Javascript
语言特色,这些大多数凡还从未叫当下浏览器实现的 ECMAScript
标准还是草案,比如:数组比较、类、模块、迭代器、方法参数默认值、Promise等。(详情:https://github.com/google/traceur-compiler)

 

18、媒体播放器 ExoPlayer  ★Star 7152

统计 7

ExoPlayer 是 Android 上一个应用级的媒体播放器。它呢 Android MediaPlayer
的 API 在播音本地或在线的视频及节奏上提供了一个候选。ExoPlayer 支持部分
Android MediaPlayer API 无法提供的表征,包括 DASH 和 SmoothStreaming
自适应回放,持久的高速缓存和打定义渲染器。不像 MediaPlayer
API,EXOPlayer 很容易定制与扩大,而且她可经过 Play Store
更新提升。(详情:https://github.com/google/ExoPlayer)

 

19、代码构建工具Bazel  ★Star 6641

Bazel 是 Google 的同样缓慢而再生的代码构建工具。它最主要是用以构建 Google
的软件,处理出现在谷歌的支出条件之构建问题,比如说:大规模数据构建问题,共享代码库问题,从源代码构建的软件的系问题。支持多种语言并且超过平台,还支持自动化测试与布局、具有再现性(Reproducibility)和规模化等特征。(详情:https://github.com/bazelbuild/bazel)

 

20、创作方式及作曲曲子的机器智能 magenta  ★Star 6563

Google Brain团队之等同组研究人员宣布了一个种Project
Magenta,其利害攸关对象是用机械上做艺术与作曲曲子。Project
Magenta使用了
TensorFlow系统,研究人口在GitHub上开源了他们之范与工具。(详情:https://github.com/tensorflow/magenta)

 

21、自动生成令行界面的内容库 Python Fire  ★Star 6500

Python Fire 是 Google 开源的一个只是自另外 Python
代码自动生成命令行接口(CLI)的仓库。Python Fire 是千篇一律种植于 Python 中开创
CLI 的简方法;是付出以及调试 Python 代码的有用工具;能够使 Bash 和
Python
之间的转换更为容易;并且经过采取你要导入和创建的模块和变量来安
REPL,使得应用 Python REPL 更便于

(详情:https://github.com/google/python-fire)

 

22、软硬件框架AnyPixel.js  ★Star 5906

统计 8

AnyPixel.js 是 Google
开源之一个软件以及硬件框架,可以用来构建各种由“像素”构成的来得,每个像素可以是别一样种而互相的实业对象,如
LED
灯、气球等。(详情:https://github.com/googlecreativelab/anypixel)

 

23、物联网工具Physical Web  ★Star 5899

统计 9

Physical Web 是由于 Chrome 团队中心的一个色, 意在于是 URL 连接世界,
方便用户接受多少。在Web世界中,各种URL可以说凡是链接的根基,也是错过中心化的,所以“The
Physical
Web”要举行的哪怕是深受每个智能装备用URL来标识自己,然后用户按自己之要通过URL和装备进行交互。这样一来,你利用智能设备的经验就跟以网站及一经
用各种超链接差不多了。(详情:https://github.com/google/physical-web)

 

24、Docker 容器性能分析工具cAdvisorc  ★Star 5853

Advisor 是谷歌公司为此来分析运行面临的 Docker
容器的资源占用和性能特点的工具。cAdvisor
是一个运作中之医护进程之所以来收集、聚合、处理和导出运行容器相关的音信,每个容器保持单身的参数、历史资源用情况以及圆的资源使数据。当前支撑
lmctfy 容器和 Docker
容器。(详情:https://github.com/google/cadvisor)

 

25、C++单元测试工具  ★Star 5755

Google的开源C++单元测试框架Google Test,简称gtest
是一个要命的科学单元测试框架。支持过平台跟包括 Windows CE 和 Symbian
在内的一对手机操作系统。(详情:https://github.com/google/googletest)

 

26、IndexedDB 关系查询引擎 lovefield  ★Star 5532

lovefield 是树立以 IndexedDB 上的涉及查询引擎。它提供了接近 SQL
的语法,并且可过浏览器工作(目前支持 Chrome 37 以及以上版本,Firefox 31
及以上版本,IE 10
及以上版本)。(详情:https://github.com/google/lovefield)

 

27、 Java 生成器源代码集合 Auto  ★Star 5295

Auto 是 Java 生成器源代码集合,Java
有许多机械、重复、未经测试的代码,而且有时会起部分微妙的 Bug 。Auto
项目是活动执行这些类别的职责之代码生成器底集纳,他们可无 Bug
创建而要是编制的代码。(详情:https://github.com/google/auto)

 

28、Python 代码格式化的家伙  ★Star 5197

YAPF 是 Google 开发之一个之所以来格式化 Python
代码的家伙。(详情:https://github.com/google/yapf)

 

29、基于 TensorFlow 的神经网络库 Sonnet  ★Star 5000

 

统计 10

 

Sonnet
库使用面向对象的艺术,允许创建定义有前方为传导计算的模块。模块用部分输入
Tensor 调用,添加操作及图里连回输出
Tensor。其中同样种植设计选择是由此当随后调用相同之模块时自动重用变量来保证变量分享给透明化处理。
该库兼容 Linux/Mac OS X 和 Python 2.7。TensorFlow 的本子要至少为
1.0.1。Sonnet 支持 TensorFlow 的 virtualenv 安装模式,以及 nativ pip
安装。(详情:https://github.com/deepmind/sonnet)

 

30、无损压缩算法Brotli  ★Star 4822

Brotli 是一个通用目的的无损压缩算法,它通过用变种的 LZ77 算法,Huffman
编码和二阶文本建模进行数据压缩,是同样栽减比大高之滑坡方法。在减小速度直达以及
Deflate
差不多,但是提供了重新密集的缩减。(详情:https://github.com/google/brotli)

 

31、负载均衡系统 Seesaw  ★Star 4286

Seesaw 是 Google 开源的一个因 Linux 的载重均衡系统。Seesaw
包含基本的负荷均衡特性,同时支持部分高档的效果,诸如:anycast, Direct
Server Return (DSR), 支持多单 VLANs
和集中式配置。同时该计划的宏旨是便于维护。(详情:https://github.com/google/seesaw)

 

32、Gumbo  ★Star 4060

Gumbo 是 Google
的平等慢性用C语言实现的HTML5解析库,无需另外部依赖。(详情:https://github.com/google/gumbo-parser)

 

33、GXUI  ★Star 3803

GXUI 是 Google 出品的一个跨平台 GO 语言的 UI
框架。(详情:https://github.com/google/gxui)

 

34、iOS UI 测试自动化框架 EarlGrey  ★Star 3721

严守开源Apache授权的EarlGrey,由Objective-C编写而成。Google也的确因此之它们来测试自己的iOS
app。EarlGrey可支撑与效仿回溯到iOS
8之装备,有关该工具的事无巨细文档请戳这里。除了EarlGrey,其它iOS
UI测试自动化框架还包Calabash和Sauce
Labs的Appium。(详情:https://github.com/google/EarlGrey)

 

35、Blockly  ★Star 3520

Blockly 是一个冲 Web 的可视化编程工具,只需要拖动几单图形就可编程,
完全不欲打字. 根据项目FAQ介绍,
这个新语言的重大目的是为web应用提供宏(或脚本编 程)的支持.
可以拿转变的剧本输出成javascript, python
等.已经来几只利用Blockly的demo.(详情:https://github.com/google/blockly)

 

36、go-github  ★Star 2707

go-github  是 Google 对 Github 的放 API 进行 Go
语言封装的一个色。(详情:https://github.com/google/go-github)

 

37、抓取bug工具 error-prone   ★Star 2708

error-prone 用来追捕到手 Java
编译时的谬误。通常采用编译器只能做静态类型的检讨。但利用这工具,能够进行编译器的品类分析,能够检测并抓捕到手到编译过程遭到之
Bug,能够大大的节开发者的日子。(详情:https://github.com/google/error-prone)

 

38、ROS 系统支持的 SLAM 库 Cartographer   ★Star 2700

Cartographer,是Google开源的一个ROS系统支持的2D和3D SLAM(simultaneous
localization and mapping)库。SLAM
算法结合来多单传感器(比如,LIDAR、IMU 和
摄像头)的数目,同步计算传感器的职并绘制传感器周围的条件。在产业界和学术界常见的传感器配置达到,Cartographer
能实时建立全局一致的地图。(详情:https://github.com/googlecartographer/cartographer)

 

39、安卓电量分析工具 Battery Historian   ★Star 2579

统计 11

 

Battery Historian 是一个由此分析安卓 “bugreport”
进程文件来统计电量消费状态。它同意应用程序开发人员在时空线及可视化系统及应用程序级事件,具有运动和缩放功能,在设备及了充电后得以轻松查看各种汇总统计信息,并会选应用程序,检查影响应用程序特定电池的指标。
它还同意两个错误报告的A /
B比较,突出展示主要电池相关指标的出入。(详情:https://github.com/google/battery-historian)

 

40、通用编码器&解码器框架 seq2seq  ★Star 2433

统计 12

 

seq2seq 凡是 Google 开源的同等慢性用于 TensorFlow
的通用编码器&解码器框架(encoder-decoder
framework),可用于机器翻译、文本摘要、会话建模、图像描述等。(详情:https://github.com/google/seq2seq)

 

41、Web应用 Tracing Framework   ★Star 2371

统计 13

 

Tracing Framework 是同一效库、工具,用于跟踪以及检察复杂的 Web
应用。它就是足以拉您发现代码的特性问题,并且帮忙您做大流利的 60 FPS Web
应用。它时不得不用来特定的下场合,并无是啊下为所有场景而计划,如果您以动用过程中遇见了问题,请呈递你的
Bug。(详情:https://github.com/google/tracing-framework)

 

42、深度概率编程语言 Edward   ★Star 2395

Edward 是一个用于概率建模、推理与评估的 Python
库。它是一个用于快速实验与钻研概率模型的测试平台,其涵盖的型范围从当聊数码集上的藏层次模型到在死数量集上的错综复杂深度概率模型。Edward
融合了以下三独世界:贝叶斯统计学和机器上、深度上、概率编程。(详情:https://github.com/blei-lab/edward)

 

43、JavaScript 库 Closure Library   ★Star 2257

Closure Library 是一个强劲的 JavaScript 库,用于复杂的大面积的 Web
应用。它让广大 Google Web 应用使用,比如 Gmail 和 Google
Docs。(详情:https://github.com/google/closure-library)

 

44、大型微服务系统管理工具 Istio   ★Star 2291

Istio 是一个出于谷歌、IBM 与 Lyft
共同开发的开源项目,旨在提供相同栽统一化的微服务连接、安全保持、管理及监督措施。Istio
项目能为微服务架构提供流量管理机制,同时亦也其它增值功能(包括安全性、监控、路由、连接管理及政策等)创造了根基。这款软件用久经考验的
Lyft Envoy
代理进行构建,可每当不必对应用程序代码作出任何发动之前提下实现可视性与控制能力。(详情:https://github.com/istio/istio)

 

45、远程现场取证系统 GRR   ★Star 2100

GRR 是 Google 开发之长距离现场事件取证系统。GRR
由一个摄(客户端)和劳务器端组成,客户端可安排于一个职责系统面临,服务器可以管理客户端,跟客户端进行互。(详情:https://github.com/google/grr)

 

46、Android 的泛操作栏 Hover   ★Star 2053

Hover 是一个用以 Android 的漂流操作栏。该菜单栏可以用作一个 service
启动,从而越进程使,悬浮在桌面或者其它应用程序的先头,当然,这里要提请权限。
Hover 仍居于开发阶段,还有为数不少代码清理工作用开,也就是说,Hover
现在特处于可用状态。(详情:https://github.com/google/hover)

 

47、模块化深度上体系 Tensor2Tensor   ★Star 2000

Tensor2Tensor 是一个模块化和可扩大的堆栈和二进制文件,
 能够协助人们也各种机械上程序创建最先进的范,可采取为多单领域,如翻译、语法分析、图像信息描述等,大大提高了研讨与付出之速。(详情:https://github.com/tensorflow/tensor2tensor)

 

48、Google 模糊测试服务 OSS-Fuzz   ★Star 1781

OSS-Fuzz
能够对开源软件进行不断的模糊测试,它的目的是采用创新的混淆测试技术与可进展之分布式执行相结合,提高一般软件基础架构的安全性与稳定。OSS-Fuzz
结合了余模糊测试技术/漏洞捕捉技术(即原的libfuzzer)与清洗技术(即原的
AddressSanitizer),并且通过 ClusterFuzz
为大面积可分布式执行提供了测试环境。(详情:https://github.com/google/oss-fuzz)

 

49、优化搜索工具or-tools   ★Star 1771

or-tools 是 Google 的优化搜索工具。Google
优化工具包括:约束编程解决方案;为线性规划与混整数规划解决方案提供简单统一之接口,包括
CBC, CLP, GLOP, GLPK, Gurobi, SCIP, 和 Sulum;背包算法;图算法
(最短路径,线性和分配,最小费用流,最老流动)(详情:https://github.com/google/or-tools)

 

50、加密库安全测试套件 Wycheproof   ★Star 1722

Wycheproof
是谷歌开源之加密库测试项目,它涵盖一文山会海安全测试,用来检测加密库(cryptographic
libraries)软件是否在已经知晓之攻击漏洞。(详情:https://github.com/google/wycheproof)

 

51、Common Lisp Koans   ★Star 1695

Common Lisp Koans(lisp-koans)是一个言语上习程序,类似 ruby
koans,python koans 等等。Common Lisp Koans 主要是扶学习有 lisp
规范特性以及改良,可以上到大方的 Common Lisp
语言特色。(详情:https://github.com/google/lisp-koans)

 

52、 3D 图形开源压缩库 Draco   ★Star 1600

Draco 是同样栽库,用于压缩和解压缩 3D 几哪网格(geometric
mesh)和点云(point cloud)。换句话说,它肯定缩小了 3D
图形文件的大大小小,同时对 3D
图形的观看者来说又历来不重影响视觉效果。它还旨在改善 3D
图形的减和传导。Draco 是当做 C++ 源代码发布的,可以为此来压缩 3D
图形,另外还揭示了拍卖编码数据的 C++ 和 Javascript
解码器。(详情:https://github.com/google/draco)

 

 

53、 JavaScript 库 Shaka Player   ★Star 1354

Shaka统计 Player 它实现了 DASH 客户端的功能。它的播音效果基于 HTML5
video、MediaSource Extensions,和 Encrypted Media Extensions 。一般的
DASH
客户端功能异常不便落实。(详情:https://github.com/google/shaka-player)

 

54、TensorFlow 深度上库 Fold   ★Star 1192

TensorFlow Fold 是用以创造以结构化数据的 TensorFlow
模型库,其中计算图的布局在输入数据的结构。 TensorFlow Fold
使得拍卖不同数额尺寸及组织的深上型更便于实现。(详情:https://github.com/tensorflow/fold)

 

55、Google 地球企业版 Earth Enterprise   ★Star 1161

Earth Enterprise 是 Google Earth Enterprise
的开源版本,是一个资构建与托管自定义 3D 地球模型与 2D
地图的地理空间应用,旨在给社区继续改善与推进该档。(详情:https://github.com/google/earthenterprise)

 

 

56、图像差异比较库 Butteraugli   ★Star 1100

Butteraugli
是因此来鉴定两只图像里的相似度。通过辨认图像中有极端受关注的差异点并被来彼此似度分值。这个类型的一个关键思想是指向出入受体的异颜色的职与密度之统计,特别是蓝色的低位密度锥窝。另一个想法来自于更准确之神经节细胞建模,特别是压频率空间。目前该项目仅仅供了
C++ 接口。(详情:https://github.com/google/butteraugli)

 

57、Go 语言实现的网络协协议栈 Netstack   ★Star 1016

Netstack,使用 Go 语言编写的网络协议栈。通过设置 tun_tcp_echo demo
尝试在 Linux 上使用 。(详情:https://github.com/google/netstack)

 

58、钢琴二重奏 AI aiexperiments-ai-duet   ★Star 883

“钢琴二重奏”的 A.I. Duet。该类型会以您弹来了几乎单音符之后,通过 AI
自动测算来救助你“补了”旋律的重奏部分。A.I. Duet
运用了人工智能技术,通晓音符的“编码规则”。(详情:https://github.com/googlecreativelab/aiexperiments-ai-duet)

 

59、端到端加密系统 E2EMail   ★Star 704

E2EMail
是一个试性质的端到端加密系统。E2EMail由Google开发,内置JavaScript内部支出之JavaScript加密库。它提供了同种通过Chrome扩展程序用OpenPGP集成到Gmail中之章程。消息的明单独保留在客户端上。(详情:https://github.com/e2email-org/e2email)

 

爱好就珍藏吧~