小兴逛Google I/O 2017(day2实况)

作者介绍:陈志兴,Google I/O 2017大会的小时光茶社特派员 ,腾讯SNG增值产品部内容中心Android组leader,主要负责手Q个性化业务、手Q WebView等项目。喜欢阅读优秀的开源项目,听听音乐,偶尔也会打打竞技类游戏。

再出发

今天是Google I/O 2017开发者大会的第二天,山景城的天空一如既往地湛蓝,气温也非常舒适。经过一宿的休息,早上精力非常充沛,7:30分坐上同事丁教授的豪车飞奔会场,时刻准备着继续享受Google为大家准备的技术大餐。

今天的主题会议是从早上8:30开始,到晚上18:30结束。主题分享结束后,迎接开发者们的是一个狂欢音乐晚会(来自程序员的呐喊)。

为了不错过更多精彩的内容分享给大家,我这边时间安排得比较紧,听满了整整10场,午饭都是秒杀解决,哈哈。好了,下面继续给大家整理今天的精彩内容。

08:30-09:30 Architecture Components - Solving the Lifecycle Problem

今天听的第一个主题是Android架构组件相关的,主要分享如何解决Android组件和UI之间的生命周期问题。

Android组件和UI的生命周期管理比较复杂,比如子类需要重载各种方法(onCreate、onStart...)来处理生命周期逻辑,导致大部分代码都集中在Activity里面,造成文件代码行数庞大,维护成本高。

现在Google针对这个问题提出了一种新的解决方案:引入LifeCycleOwner、LiveData和ViewModel概念。LifeCycleOwner负责管理生命周期,LiveData负责设置数据,ViewModel负责管理当前界面的LiveData。LifeCycleOwner通知LifeCycleObserver驱动LiveData更新数据。这样设计框架的好处是按模块细分,各个模块之间耦合低,能够更好地维护代码。

09:30-10:30 TensorFlow Frontiers

第二个参加的主题是与AI相关的,主要分享TensorFlow的最新进展及性能强大的Cloud TPUs的。

简单介绍了一下深度学习的原理后,Google开始分享TensorFlow目前的状况。从Google分享的数据来看,TensorFlow在短短的1年时间内,超越其他的机器学习项目,已经成为行业的领头羊。

Google旗下的搜索、邮件、翻译、地图等产品都接入了TensorFlow,通过深度学习给用户提供更好的体验。

另外Google开发了第二代TPU,这款TPU专门为机器学习训练和推理设计,性能上极大提升。另外,Google即将为开发提供Cloud TPUs运算能力支持,而且接口封装非常友好,使用Cloud TPUs仅需要增加几行代码,使用起来跟本地运算差不多。

Google为了让更多开发者参与到TensorFlow来,专门提供了1000个TPUs来加速深度学习的研究,大家赶紧搞起。

最后Google提出了一个AutoML的概念,让模型通过深度学习来自动建立新的模型。看来,天网系统要被Google启动了。

10:30-11:30 Effective TensorFlow for Non-Experts

今天参加的第三个主题是如何快速有效地进行TensorFlow开发,其实是个TensorFlow入门教程。参加这个主题的人非常多,全民AI的时代终于到来了。

这个主题首先介绍了一下深度学习的流程,然后通过代码一步一步教你如何入门TensorFlow。Google为了降低深度学习开发的门槛,提供了一个高级API的库Keras,开发者可以很简单地调用API进行模型训练、预测等。

接着,Google通过一个简单的例子,教大家如何从实际场景上使用TensorFlow,如上图如何通过TensorFlow回答出这个男人在干嘛,他的衣服是什么颜色的?

11:30-12:30 What's New in Android Development Tools

这个主题主要从开发、编译、测试及优化四大方面分享Android开发者工具的新特性。

在开发方面,除了昨天提到一键转Kotlin代码、XML设置字体等特性外,还支持查看ByteCode代码,UI智能布局等功能,非常实用。

在编译方面,Android Studio3.0上面将支持Dex的增量编译等功能,编译速度将会得到提升5倍。

另外,Android Studion3.0除了对CPU、内存、网络分析工具加强后,还支持了对APK的分析功能,对分析方法数等场景非常有用。

12:30-13:30 How to manage native C++ memory in Android

这个时间段没有太感兴趣的主题,后来看到有个C++相关主题,而且演讲者还是个ACM SIGPLAN的前主席,想起了大学年代疯狂刷ACM题目的日子,感觉比较亲切就过去了。

演讲者看起来非常和蔼,跟而且PPT也有点像大学老师的风格,有种回到大学上课的感觉。整个分享围绕着如何在Java对象被释放后,持有的C++指针的对象怎么释放。

在Android里面,通常的做法是在Java对象被GC回收,触发finalizer之后进行Native对象的释放。但老师指出了finalizer这种方式在某些场景下存在风险,比如finalizer执行顺序随机可能会导致Native释放引发堆异常等。

最后提出了加入一个中间层PhantomReference队列,管理Java对象和Native对象的关系。在触发GC等场景下,统一释放Native变量。后面还提了一些C++关于智能指针的管理。

13:30-14:30 Open Source TensorFlow Models

这个是今天参加的第三个TensorFlow的主题,主要分享Google在图像方面的开源模型ImageNet和语言方面的开源模式SytaxNet。

ImageNet方面主要介绍了机器学习中图片的合成,也就是之前的DeepDream项目。DeepDream经过长期的训练之后,能够合成很多人类无法做到的艺术图片。

SytaxNet方面主要是关于语法分析,通过机器学习后,语法识别的准确度非常高,目前SytaxNet支持多种语言,包括中文。

这个主题中涉及到了很多论文,大家有兴趣的话可以深入研究一下。

14:30-15:30 Introduction to Android Instant Apps

这个主题主要介绍Android Instant App是什么及一些开发规范,内容比较简单。

上面这个图的文字“Apps that are there when you need them and gone when you don’t”,与微信小程序的产品思路非常相似,确实Android Instant App就是Android的小程序。

Android instant app可以理解为完整App的一个功能模块,这个模块可以独立运行,当用户使用的时候,可以仅下载instant App,达到快速打开的目的。目前可以通过Android Studion3.0来快速创建。

从这两天的分享来看,Google在Web上布局了AMP和PWA,在Native上布局了Instant App,基本覆盖了所有场景,非常强大。

15:30-16:30 Google Services on Android Things

这个主题主要分享了Android Things上面如何使用Google Service,特别是Android Things和TensorFlow的组合,意味着智能硬件的时代也不远了。

演讲者首先分享了Android Things的三层架构(硬件、系统和服务)及如何通过代码在Android Things上面使用Google的服务。

接着演示了Android Things加上TensorFlow的一个Demo:摄像机拍摄一张相片传到安装有Android Things的芯片,经过TensorFlow后,能够识别图片里面的动物是什么。

最后演讲者给出了一些扩展的场景,比如排队的时候,摄像头加TensorFlow可以计算排队人数等。

TensorFlow无处不在,与Android Things的完美配合,让未来的智能硬件时代充满无限想象。

16:30-17:30 What's new in Notifications, Launcher Icons and Shortcuts

这部分主要介绍Android O上面启动图标、快捷方式、通知三大部分的新特性。

启动图标方面,主要增加了一个foregroud图片,来解决不同启动图片形状下(系统设置栏可以设置系统图标为圆形或方形等)icon变丑的问题。

快捷方式方面通过广播发送INSTAL_SHORCUT的方式不再生效,需要通过新的API来调用。

通知这块改动较大,新增了通知类型,分别为Major Ongoing、People to People、By the Way,优先级分别是高、中、低。低优先级的通知在锁屏场景下不通知,而且会在通知列表里面以...形式存在。

另外通知这块增加了notification channels对通知进行分类,用户可以选择屏蔽某类或者全部屏蔽。

17:30-18:30 V8, Advanced JavaScript, & the next performance frontier

这个主题主要介绍V8引擎现在的框架和未来的优化方向。

在过去的1年内,V8引擎一直在优化流水线,目前的Turbofan+Ignition Interperter组合很好地解决了内存占用和执行性能的问题,整体速度上提升了20-35%。

同时Chrome上支持了对Node.js的调试,同一行代码上有多个调用,也可以区分打断点。对Node.js的开发者来说,是个非常不错的消息。

另外Chrome调试工具上面还支持了代码覆盖率检测,可以快速发现页面上引入但是没有被调用的代码,从而让开发者减少代码量,提高JS的执行性能。

最后,Web汇编又上场了,这个是目前V8引擎正在优化的一个主要方向。非常期待WebAssembly的普及,让JS的执行速度再上一层楼。

今天的主题分享到此全部结束,最深刻的还是TensorFlow。TensorFlow给了我们更多的想象空间,结合Android Things,我们可以让身边的硬件瞬间“活了”。全民AI的时代已经到来,未来充满无限想象。

明天,还有更多关于Cloud、VR和Android的精彩内容,切勿错过~

最后,开发者们的狂欢音乐派对开始了!!!

原文发布于微信公众号 - 小时光茶社(gh_7322a0f167b5)

原文发表时间:2017-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

转--我们为什么选择Golang重构Worker系统

之前发了一篇帖子,讲了暴漫用golang重构了worker系统,有好多朋友问到语言选择的问题。 其实在用Golang重写我们的worker系统之前是做过很多调研...

4405
来自专栏Crossin的编程教室

【每周一坑】3道练习题

如题图所示,今天把论坛(crossin.me)的服务器迁移到一个很萌的云服务上,速度还可以。欢迎大家常来。 这里再次感谢 aresli 同学提供的服务器,让论坛...

35317
来自专栏Python爬虫实战

Python爬虫之六:智联招聘进阶版

运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工具: Chrome浏览器

2621
来自专栏灯塔大数据

这有一份技术指南,如何用大数据分析图表

导读:上一期学习了软体机器人的相关介绍,今天我们来了解一下使用大数据进行图表分析的相关技能(文末更多往期译文推荐) 图表是最流行的计算机科学概念之一。他们已被...

3696
来自专栏数据魔术师

干货|十分钟快速掌握CPLEX求解VRPTW数学模型(附JAVA代码及CPLEX安装流程)

号外!号外!常年用 TSP 举例的某干货分享板块终于 倒闭 改革了!小编终于被boss揪去关·禁·闭、学·习·进·阶、突·破·自·我了! 本着 独学学 ...

5.4K10
来自专栏张善友的专栏

浅述RDF,畅想一下FOAF应用

最近一直都在看一些RDF和Semantic Web方面的东西,本来有一个同事是来自Tsinghua AI实验室的,本想跟他好好讨论讨论,不过估计也没有机会了。国...

22310
来自专栏哲学驱动设计

UML 图使用心得

在软件开发中,从需求工程到代码工程,都离不开 UML 图的绘制。今天简要总结一下我以往使用 UML 图的一些体会。 很多图,都是由原始需求到代码的一种转换,只是...

1996
来自专栏性能与架构

Redis新增位置查询功能 - Redis Geo

移动互联网中基于位置信息的服务(Location Based Service,LBS)越来越重要。但是,目前位置信息的使用过程中存在诸多挑战如相邻计算不准确等。...

4127
来自专栏SDNLAB

超大规模数据中心网络

一、计算模式的演进 图 1 计算模式的演进 计算纪年: 1、大型机时代:20世纪60~70年代,计算机体积大、价格高,支持成百上千用户同时操作。 2、个人电...

4686
来自专栏从零开始理解云计算

从零开始理解云计算 Vol.1:什么是云计算

这个系列其实是写给自己的云计算知识学习笔记——作为一个没有专业背景的小白,从零开始理解云计算的过程。王良明的《云计算通俗讲义》是一本入门的好书,本文根据书中的内...

1.6K2

扫码关注云+社区

领取腾讯云代金券