首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2017 年,谷歌开源了这些超酷炫的项目

2017 年,谷歌开源了这些超酷炫的项目

作者头像
前朝楚水
发布于 2018-07-26 02:49:05
发布于 2018-07-26 02:49:05
7610
举报
文章被收录于专栏:互联网杂技互联网杂技

在开源和贡献开源方面,Google 一直是行业的典范。2017年,Google 在 GitHub 上大约有 900 名活跃用户,共推送约 1100 个顶级库。

Google 开源了许多非常有价值的项目比如十分流行的机器学习系统 TensorFlow ,Web 前端框架 Angular,比如 Kubernetes 等。下面一起来看看在过去的一年里,Google 又开源了哪些有价值的项目。

1、Puppeteer Star 26.9K

Puppeteer 是一个控制 headless Chrome 的 Node.js API 。它是一个 Node.js 库,通过 DevTools 协议提供了一个高级的 API 来控制 headless Chrome。它还可以配置为使用完整的(非 headless)Chrome。

在浏览器中手动完成的大多数事情都可以通过使用 Puppeteer 完成,如生成屏幕截图和 PDF 页面、检索 SPA 并生成预渲染内容(即“SSR”)、从网站上爬取内容等

2、图像算法工具 Guetzli Star 10.8K

Guetzli 是一款 JPEG 编码器,其目标是在高视觉质量下实现出色的压缩能力。Guetzli 生成的图像通常比由 libjpeg 生成的同等质量的图像小 20-30%。并且它还能提供更快的解压缩速度,Guetzli 仅生成非渐进式的 JPEG。

3、机器学习数据集可视化工具 Facets Star3.8K

Facets 是 Google 开源的一款可视化工具,帮助理解、分析和调试 ML 数据集。

Facets 包含两个部分 —— Facets Overview 和 Facets Dive ,允许用户以不同的粒度查看其数据的整体图像。Facets Overview 可用于可视化数据的每一个特征,Facets Dive 用来探索个别的数据观察集。

4、Go 运行 Python:Grumpy Star 8.7K

Grumpy 是一个 Python to Go 源代码翻译编译器和运行时,旨在替代 CPython 2.7。关键的区别在于它将 Python 源代码编译为Go源代码,然后将其编译为本地代码,而不是字节码。这意味着 Grumpy 没有虚拟机。编译后的Go源代码是对Grumpy运行时的一系列调用,Go 库是用于与 Python C API 类似的目的(尽管 API 与 CPython 不兼容)。

5、可自动生成命令行接口 Python Fire Star 8.5K

Python Fire 是 Google 开源的一个可从任何 Python 代码自动生成命令行接口(CLI)的库。

● Python Fire 是一种在 Python 中创建 CLI 的简单方法。

● Python Fire 是开发和调试 Python 代码的有用工具。

● Python Fire 帮助探索现有代码或将其他人的代码转换为CLI。

● Python Fire 使 Bash 和 Python 之间的转换更容易。

● 通过使用你需要导入和创建的模块和变量来设置 REPL,使得使用 Python REPL 更简便。

6、JavaScript 库 DeepLearn.js Star 6.4K

deeplearn.js 最初由 Google Brain PAIR 开发,是一款基于硬件加速的开源 JavaScript 库,可被用在机器智能领域。该库将高性能的机器学习构建模块引入到web开发领域。deeplearn.js 提供高效的机器学习构建模块,使我们能够在浏览器中训练神经网络或在推断模式中运行预训练模型。它提供构建可微数据流图的 API,以及一系列可直接使用的数学函数。

7、基于 TensorFlow 的神经网络库 Sonnet Star 6.1K

sonnet是一个能在 TensorFlow 上快速创建神经网络模块的高级框架。Sonnet 走的是面向对象(object-oriented)的路子,与 Torch/NN 类似,使得定义某些运算前馈通路(forward pass)的模块能够被创建出来。模块使用输入 Tensor 来调用,这向计算图(Graph)添加任务,并返回输出 Tensor。其中一项设计目标,是确保以透明的方式进行变量分享。这是通过对同个模块接下来的调用,自动重复使用变量来实现。

8、大型微服务系统管理工具 Istio Star 6K

Istio 开源平台,其本质上是一个服务网络,可用来部署服务网络,其中包括负载均衡、服务认证和监控等工具,从而可以更轻松安全地管理微服务(microservices)。该平台最先将运用在 Kubernetes 上。

谷歌、IBM 和 Lyft 推出 Istio 平台的目的就在于,帮助开发者和 DevOps 专业人员管理和保护其基于微服务的应用程序。、

9、C++ 标准库的扩充库 Abseil Star3.8K

Abseil 已在 Google 历经十多年的开发,由 Google 的基础 C ++ 和 Python 代码库组成,它的目的是为Protocol Buffers、gRPC 和 TensorFlow 等这些项目的开发人员提供支持。

Abseil 目前开放的 C++ 标准库的扩充库,是从 Google 内部 C ++ 代码库抽取出来的基础库的合集。这些库在 Google 内部经过广泛的测试和生产使用,是 Google 大量运行内容的基石。查阅看多 Abseil 详情可点击:《【新开源报道 9】Google开源Abseil,为C++和Python开发提供支持》

10、机器学习工具库 Kubeflow Star 2.6K

Kubeflow 是谷歌发布的一个机器学习工具库,致力于使运行在 Kubernetes 上的机器学习变的更轻松、便捷和可扩展;Kubeflow 的目标不是重建其他服务,而是提供一种简便的方式找到最好的 OSS 解决方案。

11、游戏框架 BOARDGAME.IO Star 5.7K

BOARDGAME.IO 是 Google 开源的一个游戏框架,旨在允许游戏作者将游戏规则从本质上转化为一系列简单的函数,这些函数用于描述当一个指定动作发生时游戏的状态变化,框架负责处理表述性状态传递。 无需再手动编写任何网络或后端代码。

12、Docker 镜像差异分析工具 container-diff Star 1.6K

container-diff 是 Google 开源的一个分析和比较容器镜像的工具,可用来分析 Docker 镜像之间的差异。可通过以下几个不同的标准(角度)来检查镜像:

● Docker 镜像历史

● 镜像文件系统

● Apt 包管理器

● pip 包管理器

● npm 包管理器

这些分析可以在单个镜像上执行,也可以在两个镜像上进行执行比较。该工具可以帮助用户更好地理解他们的镜像内部正在发生的变化,并让他们更好地了解他们的镜像所包含的内容。查看更多 container-diff 详情可点击:《Google 开源 Docker 镜像差异分析工具 container-diff》

13、谷歌深度学习库 TensorFlow Fold Star 1.4K

TensorFlow Fold 是用于创建使用结构化数据的 TensorFlow 模型库,其中计算图的结构取决于输入数据的结构。

上图的动画展示了一个利用动态批处理运行的递归神经网络。相同颜色的操作被划分到同一次批处理中,这使得 TensorFlow 能够更高效地运行。其中Embed操作负责将单词转换为向量表示,FC(完全连接,Fully Connected)操作负责将单词向量组合为短语的向量。该网络最后的输出是一个完整句子的向量表示。虽然这里只展示了一个针对单一语句的解析树,但实际上该网络可以在任意形状和大小的多个解析树上并行地进行动态批处理。

14、开源量子软件 OpenFermion Star 381

OpenFermion 是一个开源项目,用于编译和分析量子算法来模拟费米子体系,包括量子化学,在其他功能中,当前版本的特征是利用数据结构和工具来获取和操纵费米子和量子位哈密顿算子的表示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 交互设计前端开发与后端程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一分钟带你掌握数组
数据类型[][] 数组名 = new 数据类型[][]{{},{},{}...};
用户8870853
2021/07/27
2620
04 Java 数组
在计算机语言中数组是非常重要的集合类型,大部分计算机语言中数组具有如下三个基本特性:
acc8226
2022/05/17
2700
04 Java 数组
图解 Java 数组与内存控制
Java的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存中的数组对象,改变一个数组变量所引用的数组,可以造成数组长度可变的假象。
CoderJed
2018/09/13
1.6K1
图解 Java 数组与内存控制
【说站】Java数组的静态初始化实现
Java数组的静态初始化实现 概念 1、是指执行静态初始化块里面的内容。在创建数组时,直接将元素确定。 2、格式 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; 实例 package com.itheima.array2;   public class Demo1Array {     /*         数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度           完整格式:                     数据类型[] 数组名 
很酷的站长
2022/11/23
5740
【说站】Java数组的静态初始化实现
java之数组
静态初始化:int[][] a =new int[][]{{1,2},{3,4}}
西西嘛呦
2020/08/26
3330
第四章:数组
new:关键字,创建数组使用的关键字。因为数组本身是引用数据类型,所以要用new创建数组实体。
捞月亮的小北
2024/01/21
1960
第四章:数组
Java基础 (上卷)-数组
需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。
软件小生活
2021/08/16
3490
深入理解 Java 数组
虽然在平常开发中,使用集合(容器)的频率比数组高得多,不过集合的底层也是通过数组来实现的。而且,尽管集合相比数组来说强大得多,但是其执行效率远不及数组。所以在讲集合之前,非常有必要深入了解一下数组。全文脉络思维导图如下:
飞天小牛肉
2021/03/18
6500
深入理解 Java 数组
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。 例如: int[][] map; char c[][]; 和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度。  ---------------------------------------------
Angel_Kitty
2018/04/09
1.5K0
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
java基础:数组篇
数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
不期而遇丨
2022/09/09
2.7K0
杨老师课堂_Java教程第四篇之数组运用
今天主要是讲解以下知识点: 1、流程控制语句switch 2、数组 3、王者荣耀英雄随机出战案例
杨校
2018/12/06
8510
【Java】04 数组
初始化:   静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。   动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
Demo_Null
2020/09/28
3490
【Java】04 数组
JAVA入门学习二
循环结构分类:for / while / do…while 跳出循环:break; [ 只能在switch和循环中 ] 继续执行:continue; [ 只能在循环中 ] 结束方法:return value; 返回值作用不是结束循环而是结束方法;
全栈工程师修炼指南
2020/10/23
4910
JAVA入门学习二
数据的初始化与访问
Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
星哥玩云
2022/09/14
3910
数据的初始化与访问
从零开始学习Java多维数组,一文教会你。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
喵手
2024/01/27
2480
从零开始学习Java多维数组,一文教会你。
Java程序设计(Java9版):第4章 简单复合类型
第4章 简单复合类型 4.1 数组 在C语言中,数据类型除了基本数据类型之外,还存在着大量复合数据类型。数组就是一类最简单且非常重要的复合数据类型,数组是具有相同类型变量的顺序存储的集合。几乎所有的程
程裕强
2018/01/02
1.3K0
【趣学程序】Java中的数组
数组简介: 数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。 注意 数组的好处:数组里的每个元素都有编号,编号从0开始,并且依次递增,方便操作这些元素; 使用Java数组:必须先声明数组,再给该数组分配内存; 数组对应在内存中一段连续空间。 数组元素必须是相同数据类型,也可以是引用数据类型,但是同一个数组中的元素必须是同一类数据类型。 一维数组 一维数组:可以理解为一列多
趣学程序-shaofeer
2019/07/27
6160
【06】JAVASE-数组讲解【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
2140
【06】JAVASE-数组讲解【从零开始学JAVA】
快速学习Java的多维数组技巧
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
喵手
2024/01/20
4210
快速学习Java的多维数组技巧
从Java角度看冒泡排序和多维数组
前面几篇文章用Java带大家一起了解了几个游戏小项目,感兴趣的小伙伴可以点击文章观摩下,手把手教你用Java打造一款简单故事书(上篇)、手把手教你用Java打造一款简单故事书(下篇)、手把手教你用Java打造一款简单考试系统(上篇)、手把手教你用Java打造一款简单考试系统(下篇)、手把手带你用Java打造一款对对碰游戏(上篇)、手把手带你用Java打造一款对对碰游戏(下篇)、手把手带你用Java实现点灯游戏(上篇)、手把手带你用Java实现点灯游戏(下篇),接下来的几篇文章是关于Java基础的,希望对大家的学习有帮助,欢迎大家在讨论区留言。
Java进阶者
2021/01/22
1K0
推荐阅读
相关推荐
一分钟带你掌握数组
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档