参加了南京 GDG 活动:这些精彩的技术讨论,值得与你分享~

GDG-NJ.jpg

一直以来发的文章大都是技术的,这次和大家聊点简单点的。

密集输出这几年,因为疫情没能在线下和大家碰面,去年又因为时间原因浪费了 Google IO China 门票。所以,今年的南京本地的 GDG DevFest 2023 活动一经上线,就报了名。

这次如愿见到了不少朋友,进行了面对面交流,非常赞!

跟大家分享下大佬们的演讲,以及值得探讨的技术问答。

遇见大佬 🫡

yenan.JPG

多次在线上听过叶楠老师的分享,从 FirebaseTensorFlow。这次线下见到了,互留了微信,果然如想象得一样:非常 nice、知识渊博。

叶老师此次分享的是应用出海,无私分享了他多年开发国际化 App 的经验。听的途中我不禁感叹中国市场的特殊性,迫使本土开发者需要做如此之多的更改才能适应国际的环境。

wangpeng&me.png

王鹏是我 Android 事业的引路人,我毕业的时候就跟着他共事,教会了我很多技术上的、工作上的东西。时至今日,我们都会针对技术难题、文章细节、求职方向等方方面面进行交流探讨。

说来惭愧,王鹏老师北上之后,与他好多年没见面了。这次我来参加活动有个重要的原因就是想和他碰个面。他还像我毕业那会儿一样:精神饱满、幽默,同时还保持着惊人的发量。

本次他分享的主题是 Kotlin 优势,我也了解到了 Kotlin 在 AndroidWeb 以外的领域亦有应用。PS. 他的 PPT 设计真得简洁、高级,和 Kotlin 一样!

shixin.png

张拭心老师的很多文章我都看过,尤其是最新的月度总结、周总结,我很敬佩他的自律和执行力。这次咱们交换了微信,惊奇地发现他也是我的读者,非常荣幸。

张老师本次分享的是 MAD,现代 Android 开发里念。在介绍这个理念里的多个技术以外,还带大家一起回顾了 Android 的历史、发展和未来。

当他翻到最后一页,呈现出历代 Android 的 logo 时,我感触颇深:这是 Android 的发展史,同时也是咱们 Android 人的青春啊!

朱凯.JPG

朱凯老师的视频,我估计 Android 圈子里大多都看过。他在 Kotlin、Android、Compose 等领域上的讲解通俗易懂、生动有趣。

本次他分享的是 Kotlin 协程,和网上的感觉一样:口才了得、富有感染力。

技术讨论 🤔

qa合影.JPG

因为是在南京大学主办的,所以大多数听众是大学生,但其实也来了很多“像我一样”的 Android 资深开发😄。

活动的间隙,大气热情地交流了几个很不错的技术问题,值得分享给大家。

鸿蒙来势汹汹,咋办?

鸿蒙来势汹汹,NEXT 计划将彻底移除 ART,不再兼容 Android。同时,推出了自己的编程环境、UI 框架。请教诸位 GDE,大公司们是否有鸿蒙这方面的布局,以及如何看待这个新领域?

GDE 回答:

其实都已经和鸿蒙的技术人员开始了接触,但进度啊、计划啊还不太清楚。

我的意见:

鸿蒙移除 Android 需要漫长的过渡时间,不是那么快能完成的。虽然鸿蒙上要求采用 JS/C++ 编程,但 IDE 仍然是和 IntelliJ 差不多的,其 API 设计、开发模式整体上和 Android 体系里很像。

所以,即便换了语言,Android 开发者切入进去有不少优势。

总之,不必恐慌,保持关注就行了。

Compose 应用到底咋样了?

Compose 正式发布已经过去了 2 年,如今 Google Play 前 1000 App 中已有 200 多采用了 Compose 商用,想了解下字节等国内大公司在 Compose 上的态度和计划?

(这其实是我提问的🙂,还混到了王鹏老师的亲笔签名赠书,算上新书发售时他送我的、回答拭心问题拿到的,这是我拿到的第 3 本 Jetpack Compose 书籍 😄)

GDE 回答:

已经对 Compose 进行了很多的调研,但大公司往往有自己封装的诸多 UI 框架、UI 效果库,切换到 Compose 成本高,也没有那么高强劲的需求。但一些新立项的 App 有在尝试 Compose 商用。

我的意见:

我印象中,海外像 Twitter 这样的大 App 早就开始部分或全部地改用了 Compose 技术。蛮佩服他们的,像这种级别的 App 同样也存在历史包袱,但他们就是这么勇敢(激进)!

国内大公司用的应该算少的,一些小公司可能会有商用的情况。我所在的公司有切入 Compose 技术的想法,所以我搁置了一段时间的 Compose 内容得重新看起来了💪。

Compose 性能劣化?

早期的 Compose 版本存在性能问题,采用 Scope 限制重组的办法是否有更优雅的方案?

GDE 回答:

Compose 确实在某些重组上存在性能劣化,采用 Scope 限制的做法确实存在,不必担心。

我的意见:

Compose 不断地迭代升级,性能在逐渐变好,估计未来官方会进行优化。

到时候就不用写这些迂回的代码了。

Kotlin 协程性能不佳?

对于 CPU 密集型任务,Kotlin 协程貌似性能并不好,没啥优势。GDE 是否了解,如何解决?

GDE 回答:

Kotlin 协程确实更适合 IO 密集型这种需要切换线程的场景。对于 CPU 密集型的场景,不能说差,只能说相对于 Java 不会有竞争性。

像你提到的性能不佳,极有可能是自己的代码导致的,需要认真分析下写法。

我的意见:

经验告诉我们代码表现不佳往往是调用得不好,逻辑存在问题。

但这不是 100% 绝对的,API 的实现、系统的运行存在 Bug 不是没可能的。

可以在排查自己的代码之后,如果确信没有问题,可以大胆地向 JetbrainsGoogle 报告 issue。

如果看待新技术?

面对 FlutterComposeMAD 甚至鸿蒙这些层出不穷的新技术,学生、工程师该如何抉择?

GDE 回答:

有些技术只是封装、不同实现,甚至是 KPI。而算法理论、计算机思想、数据结构这些基础的东西才是永恒的东西。

当你时间有限,方向不明的时候,可以问下自己是否基础已经打牢了。

如果确实 OK 了再考虑方向的问题。

我在 MAD 的文章中有过类似总结,贴出来、与你共勉:

面对新技术:

  • 不可无视,适当了解,跟上形势:保持关注,防止日后看不懂人家用了什么技术,甚至无法理解别人的代码
  • 拥抱变化,勇于尝鲜,有备无患:找个感兴趣的切入点虚心学习、体会新技术的动机
  • 不可依赖,了解原理,学习模仿:光使用还不够,需要深入了解其实现,确保坑来临的时候游刃有余
  • 是否深入,见仁见智,自行评估:适当取舍、甚至观望,一些技术是昙花一现的

明年再见 🤗

集体合影.JPG

今年是第一次参加线下的 GDG 活动,非常兴奋。结识了一堆大佬和读者之余,还跟 GDG 负责人建立了联系,说不定明年的 GDG Nanjing 会有我的身影。

其实,像 GDG 活动,只要有时间,建议大家尽量参加。在获得新知识的同时,还可以与圈子外的朋友交流,拓展自己的视野和影响力,同时还有一堆礼物可以领取。何乐而不为呢?

关于上述的技术问题,你有什么其他想法,欢迎在评论区留言~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国际物流社交销售玩法拆解(三):打造社交电商式分销增长

这一篇,是国际物流行业社交销售玩法最后一篇,也是国际物流企业实现业务经营新增长、打造分销增长体系的新模式。以下,我们一起来拆解这一模式具体内容吧。 #01 国际物流第二曲线:社交电商 经营增长是企业的永恒话题。在客户成本…

C++多线程编程(3):接收线程处理函数的返回值

文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 处理带返回值的函数asyncpackaged_taskpromise 处理带返回值的函数 有三种方法: asyncpackaged_taskpromise async 第一种方法是使用 async 函数。 步骤: 使用 async 创建线程处理函…

16. @PostConstruct注解和开关原理(验证码开关、IP开关)

1►PostConstruct注解 PostConstruct是java自带的注解,会在java项目启动的时候先执行下面的方法 2►开关原理(验证码开关) 我们的项目具有验证码功能,旧版不支持关闭,新版已经支持关闭了。 我们打开页面“参数管…

Python Web APP在宝塔发布

本地测试运行:uvicorn main:app --host 127.0.0.1 --port 8082 --reload 宝塔发布: 运行配置——>启动模式:worker_class uvicorn.workers.UvicornWorker

【STL】:反向迭代器

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关反向迭代器的模拟实现,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通…

rabbitMQ的direct模式的生产者与消费者使用案例

消费者C1的RoutingKey 规则按照info warn 两种RoutingKey匹配 绑定队列console package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.DeliverCallback;/*** 消费者01的消息接受*/ p…

目标检测 Faster RCNN全面解读复现

Faster RCNN 解读 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster RCNN已经将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine)&…

电子病历编辑器源码(Springboot+原生HTML)

一、系统简介 本系统主要面向医院医生、护士,提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式,通过浏览器方式访问和使用系统功能,提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#xff0c…

武汉站--ChatGPT/GPT4科研技术应用与AI绘图及论文高效写作

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

麒麟KYLINOS2303系统上禁用新功能介绍页面

原文链接:麒麟KYLINOS2303系统上禁用新功能介绍页面 hello,大家好啊,今天给大家带来一篇在麒麟KYLINOS2303系统上禁用新功能介绍页面的文章,在我们安装完系统登录后,会发现有新功能介绍这个界面,我们可以通…

《微信小程序开发从入门到实战》学习十六

第三章 开发第一个小程序 3.3 开发创建投票页面 3.3.2 修改模拟器中的启动页面 通过页面跳转的方式预览第二个页面内容不方便。 微信开发工具的工具栏有一个编译模式的设置: 选择“添加编译模式”, 加一个便于区分的名称,点击确定。 模拟…

PPT基础:编辑顶点

目录 编辑顶点对顶点的编辑对线段的编辑编辑顶点用法 编辑顶点 所在位置: 实质:是一种改变图像性质的操作 如何把一个圆形变成三角形:选中其中一个顶点,右键删除一个顶点;靠近某一条边,右键“拉伸弓形”即…

Centos(Linux)服务器安装Dotnet8 及 常见问题解决

1. 下载dotnet8 sdk 下载 .NET 8.0 SDK (v8.0.100) - Linux x64 Binaries 拿到 dotnet-sdk-8.0.100-linux-x64.tar.gz 文件 2. 把文件上传到 /usr/local/software 目录 mkdir -p /usr/local/software/dotnet8 把文件拷贝过去 mv dotnet-sdk-8.0.100-linux-x64.tar.gz /usr/loc…

Python3.7+PyQt5 pyuic5将.ui文件转换为.py文件、Python读取配置文件、生成日志

1.实际开发项目时,是使用Qt Designer来设计UI界面,得到一个.ui的文件,然后利用PyQt5安装时自带的工具pyuic5将.ui文件转换为.py文件: pyuic5 -o mywindow.py mywindow.ui #先是py文件名,再是ui文件名样式图 QT5 UI&am…

单链表相关面试题--1.删除链表中等于给定值 val 的所有节点

/* 解题思路:从头节点开始进行元素删除,每删除一个元素,需要重新链接节点 */ struct ListNode* removeElements(struct ListNode* head, int val) {if(head NULL)return NULL;struct ListNode* cur head;struct ListNode* prev NULL;while…

vulnhub靶机Presidential

靶机地址:https://download.vulnhub.com/presidential/Presidential.ova 主机发现 arp-scan -l 端口扫描 nmap --min-rate 10000 192.168.21.150 端口服务扫描 nmap -sV -sT -O -p80 192.168.21.150 漏洞扫描 nmap --scriptvuln -p80 192.168.21.150 只有一个端…

海康Visionmaster-环境配置:MFC 二次开发环境配置方法

1 新建 MFC 工程,拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0 \ComControl\bin\x64 下的所有拷贝到项目工程输出目录下,如下图所示,项目的输出路径是 Dll 文件夹。 2 通过配置 C目录和链接器的方式配置 VM 环境 2.1 C目录下添加附加…

【开源】基于JAVA的校园失物招领管理系统

项目编号: S 006 ,文末获取源码。 \color{red}{项目编号:S006,文末获取源码。} 项目编号:S006,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 招领管理模块2.2 寻物管理模块2.3 系…

用对了吗?正确打开文件传输助手的方式

在这个高速发展的信息时代,我们每天都会面临一个重要的问题:如何在手机和电脑之间快速、高效地传输文件? 有时候,我们需要把工作中的一份报告从电脑传到手机,以便在路上查看;有时候,我们又想把手…

【Qt之QStandardItemModel】使用,tableview、listview、treeview设置模型

1. 引入 QStandardItemModel类提供了一个通用的模型,用于存储自定义数据。 以下是其用法:该类属于gui模块,因此在.pro中,需添加QT gui,如果已存在,则无需重复添加。 首先,引入头文件&#xff…