ormlite-android 在 WAL 模式下的 bug 分析 https://www.yuque.com/shawon/dev/nemz0e
文章内容:将 sqlite 的日志模式由 rollback journal 切换为 WAL(Write-Ahead Logging)之后,发现 App 有一些功能不正常:ormlite-android 没有正确报告 update 操作所改变的数据库行数
深入理解一致性与 C++ 内存模型 https://mp.weixin.qq.com/s/wt5b5e1Y1yG1kDIf0QPsvg
本文旨在对计算机科学下的一致性模型以及 C++ 的内存模型做一个系统的、深入浅出的介绍。一共 3 个 章节:第 1 章介绍一致性模型,第 2 章介绍 C++ 内存模型,第 3 章是参考资料
Now in Android #49 https://medium.com/androiddevelopers/now-in-android-49-cf0f9d52bf78
Android Dev Summit, Android Basics, Compose for Wear OS, Paging, CameraX, Accessibility, AGP, Widgets, and more!
Better Android Apps Using latest advanced Architecture https://medium.com/@lukohnam/better-android-apps-using-mvvm-with-clean-architecture-2cc49e68f41d
使用最新的 Android 官方推荐的架构和 Jetpack 库来打造一个 App
再谈协程之 Lifecycle 潜行者 https://mp.weixin.qq.com/s/-JQSXXvzg_ZoDr-j9adbVw
“大部分时候,我们在使用 JetPack 的组件时,都不需要特别考虑 Lifecycle,这得益于大部分 JetPack 组件的 Lifecycle Aware 特性,类似 lifecycleScope、ViewModelScope 都可以在生命周期结束时,自动对资源进行释放,可以说,Lifecycle 是 JetPack 组件的脊梁,而且大部分时间,可以开箱即用,不用做太多配置就可以直接掌控生命周期。Activity 可以作为 LifecycleOwner,在 AAC 架构中扮演着重要的作用,那么 Activity 是怎么关联 Lifecycle 的呢?”
Introducing Kotlin Multiplatform in an existing project https://www.marcogomiero.com/talks/2021/kmp-existing-project-android-worldwide/
“在发现了一个新的有趣的技术或框架后,你可能会开始问自己如何将其整合到现有的项目中。这是因为,从一张空白的画布开始的可能性是很少的(不是不可能,而是很少)。Kotlin 多平台也是如此,尽管它还在 alpha 阶段,但你已经可以开始在生产应用中使用它了。在本讲座中,你将了解哪些部分的代码可以作为共享的起点,如何消费共享的代码,以及如何构建一个现有的项目,以便有一个尽可能顺利的整合。”
[视频] Kotlin Flows in practice https://www.youtube.com/watch?v=fSB6_KE95bU
由于 coroutines 是异步操作的推荐解决方案,Kotlin Flow 是 Android 应用中管理数据流的明显选择。然而,要想在 Android 中最大限度地发挥 Flow 的作用,还需要考虑一些生命周期的危险,并了解新的具有生命周期意识的 API。了解强大而富有表现力的 Flow APIs,以及如何以实用的方式在你的应用程序的所有层中使用它们 -- 解决每个开发人员可能面临的常见用例
Design to code: Turning handoffs into high-fives https://www.youtube.com/watch?v=CMC8X1qVPEw
介绍了设计师和开发者如何更好地协作:通过 Figma 和 Jetpack Compose 的结合,可以快速把设计稿变成 Jetpack Compose 代码。
Learn how this workflow can bring components designed in Figma to Jetpack Compose projects, using a portable container format called a UI package. By capturing semantic design intent beyond boxes and text, UI packages support ergonomic integration into Compose applications. Developers wire in data, provide behaviors, and control presentation using idiomatic Compose code. Deep integration with Android Studio makes build configuration and change management a snap.
字节 Android Native Memory Corruption 工具原理与实践 https://mp.weixin.qq.com/s/1idU9IrQQnQSoPf86ap1fA
MemCorruption 工具是字节跳动 AppHealth (Client Infrastructure - AppHealth) 团队开发的一款用于定位野指针(UseAfterFree)、内存越界(HeapBufferOverflow)、重复释放(DoubleFree)类问题检测工具。广泛用于字节跳动旗下各大 App 线上问题检测。本文将通过方案原理和实践案例来介绍此工具。
Linux 中的 RCU 机制 [二] - GP 的处理 https://mp.weixin.qq.com/s/0SI2VYao_SnxjB3xNNTJCA
GP 是 Grace Period 的简称,这篇文章主要讲了 GP 从产生到结束的生命周期
努比亚技术团队 - Android 输入事件流程分享
安卓输入事件处理流程分享(一)https://www.jianshu.com/p/15660b270b8a
安卓输入事件处理流程分享(二)https://www.jianshu.com/p/e28e227161a5
安卓输入事件处理流程分享(三)https://www.jianshu.com/p/3afb58d2a96e
Introducing Pathways: A next-generation AI architecture https://blog.google/technology/ai/introducing-pathways-next-generation-ai-architecture/
对应的 Ted 演讲:https://www.ted.com/talks/jeff_dean_ai_isn_t_as_smart_as_you_think_but_it_could_be,机器学习系统往往过度专注于个别任务,而它们可以在许多任务上表现出色。这就是为什么我们要建立 Pathways-- 一个新的人工智能架构,它将同时处理许多任务,快速学习新任务,并反映出对世界的更好理解。
我不懂,但是我大受震撼.png
[视频] Jetpack Compose with Material You https://www.youtube.com/watch?v=5t40x-5vVl0
Paging 3.0 简介 | MAD Skills https://mp.weixin.qq.com/s/57KTSyW8NMeishtwiikdUQ介绍了 Paging 3.0 并重点说明如何将其集成至应用的数据层
在 Compose 中使用 Jetpack 组件库 https://mp.weixin.qq.com/s/adp5jOlHTMLMIGxpR3CLIw
Jeptack Compose 主要用来提高 UI 层的开发效率,但一个完整项目还少不了逻辑层、数据层的配合。幸好 Jetpack 中不少组件库已经与 Compose 进行了适配,开发者可以使用这些组件库完成 UI 以外的功能。
KMM 求生日记三:对 Jetpack 架构组件移植的失败尝试 https://mp.weixin.qq.com/s/yKZp5zGgA67oJJ5vjBaCpw
“上次提到 MVIKotlin 能用却难用,毕竟 Jetpack AAC 太好用了。于是我决定手动把 Jetpack AAC 移植到 KMM。由于 LiveData 可以使用 kotlinx.coroutines 的 StateFlow/SharedFlow 代替,所以理论上只需移植 Lifecycle 和 ViewModel 即可,Lifecycle 通过注解某个函数即可让该函数在相应生命周期执行时即可运行的功能也要暂时阉割,因为注解处理器要能在 KMM 平台使用必须使用 KCP,这个比较困难”
两篇 Native 代码调试的文章
CLion 调试 Android 11 Native 代码 https://blog.csdn.net/iamdy/article/details/111272854
天下苦 Android Native 调试久矣 https://mp.weixin.qq.com/s/pYdF_b-Z7WMB2I6XGYF8hA
Binder | 代理对象的泄露及其检测 https://juejin.cn/post/7024432171779620894
“谈起 “泄露”,相信大家都能想到内存泄漏,而它是 OOM 的重要原因之一。在内存泄露的语境中,并非是 GC 算法出了问题导致未被引用的对象没有被回收,而是程序逻辑上已经不需要的对象却依然被引用着。对于 Binder 通信而言,Server 端将 Binder 对象发送到 Client 进程后会转变为 BinderProxy 对象,如果 Server 端短期内发送了许多不同的 Binder 对象给 Client 进程,则 Client 进程中也会创建很多 BinderProxy 对象。这些对象一方面消耗着 Client 进程的内存,同时也会在早期版本中产生 "global reference table overflow" 的问题。这种 BinderProxy 创建过多的情况我们就称为 Binder 代理对象的泄露,它对 system_server 的影响尤为突出。因为 system_server (Client) 会接收来自各个 APP 进程 (Server) 的 Binder 对象,如果每个进程都发过来很多 Binder 对象,那么 system_server 的内存早就消耗殆尽了。至于为什么 APP 进程会给 system_server 发送很多 Binder 对象,这种要么是恶意行为,要么是程序设计有缺陷,都是需要被禁止的行为。
如何评价一个开源项目(一)—— 活跃度 http://blog.frankzhao.cn/how_to_measure_open_source_1
“虽然活跃度依然存在许多问题,尤其是在持续的大规模运算和可扩展性上的问题。但由于其直观、易理解,可解释性强,事实上依然是我们实验室目前广泛使用的一种计算方式。并且也已经在很多项目中有落地,但我个人还是希望可以有更好的指标体系和算法框架,来更好的利用开源生态和网络来对项目做出更加有效的衡量。”
怎样花两年时间去面试一个人 http://mindhacks.cn/2011/11/04/how-to-interview-a-person-for-two-years/
刘未鹏 2011 年的文章,不管是招聘者还是应聘者,都值得反复阅读
CoolShell 三篇关于招聘程序员的文章
我是怎么招聘程序员的 https://coolshell.cn/articles/1870.html
再谈 “我是怎么招聘程序员的”(上) https://coolshell.cn/articles/4506.html
再谈 “我是怎么招聘程序员的”(下) https://coolshell.cn/articles/4490.html
个人博客更新了五篇文章(打磨好之后再发到其他的平台,欢迎大家纠错)
一本讲 Android 流畅性的书,应该有什么内容? https://www.androidperformance.com/2021/10/27/if-i-write-a-book-about-performance/
Android 系统开发系列(1):Android 12 源代码下载、编译和刷机 https://www.androidperformance.com/2021/10/26/build-android-12/
Systrace 响应速度实战 1 :了解响应速度原理 https://www.androidperformance.com/2021/09/13/android-systrace-Responsiveness-in-action-1/
Systrace 响应速度实战 2 :响应速度实战分析 - 以启动速度为例 https://www.androidperformance.com/2021/09/13/android-systrace-Responsiveness-in-action-2/
Systrace 响应速度实战 3 :响应速度延伸知识 https://www.androidperformance.com/2021/09/13/android-systrace-Responsiveness-in-action-3/
与飞书的几位小伙伴聊聊程序员的那些事 https://www.xiaoyuzhoufm.com/episode/6177bab6b69226ed16a3ed42?s=eyJ1IjogIjVmMzM1ZDdhZTBmNWU3MjNiYjVmNjkxNSJ9 再谈协程之 Lifecycle 潜行者
Productivity with TODO Apps and Personal Knowledge Management Systems https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9McEFHU0xuWQ==/episode/ZWM2MzA3ODctODFkYi00OTNkLThiZDItYTJiZDIzN2Y2ZDEy
Google 正式宣布 Android 12L
Android L这里的 "L" 意指 Large Screen,除了折叠屏 / 双屏手机之外,部分 OEM 厂商的 Android 平板也会首发搭载这一系统中的部分新特性。
包括锁屏、通知中心都采用了两栏式设计。
应用栏采用类 ChromeOS 样式。
类似 Windows 10 的应用分屏操作逻辑,与现有 Android 原生分屏操作逻辑略有区别。
为没有适配的 Android 应用提供兼容性模式(其实就是以常规 Android 屏幕比例显示)。
为折叠屏设备「小屏幕 - 大屏幕」的切换提供更顺畅的连续方式。
12L 主要针对大屏设备和折叠屏作优化,当屏幕宽度大于 600dp 时将默认显示两列内容。除此之外还引入了类似 Chrome OS 的 Dock 栏及拖拽分屏功能。
针对 Android 12L 的模拟器已经发布,想尝鲜可以下载 Android Studio 的最新预览版体验,正式更新将在明年推出,随着 Android 12L 一同推出的还有 Material Design 3 (Material You) 的相关文档及组件库。
相关页面:https://developer.android.com/about/versions/12/12L
Github 发布了一个叫 Copilot 的智能助手,官网:https://copilot.github.com/ ,号称是 "Your AI pair programmer"
根据官网介绍:GitHub Copilot 是一个人工智能配对程序员,可以帮助你更快地编写代码,减少工作量。GitHub Copilot 从注释和代码中提取上下文,并立即建议个别行和整个函数。GitHub Copilot 由 OpenAI Codex 驱动,这是一个由 OpenAI 创建的新的人工智能系统。GitHub Copilot 技术预览版可作为 Visual Studio Code、Neovim 和 JetBrains IDE 套件的扩展
据接到邀请试用的人反馈,太 TM 好用了,如下图,蓝色部分就是他自己帮你写的
Convert comments to code :Write a comment describing the logic you want, and let GitHub Copilot assemble the code for you.
Autofill for repetitive code.:GitHub Copilot works great for quickly producing boilerplate and repetitive code patterns. Feed it a few examples and let it generate the rest!
Tests without the toil :Tests are the backbone of any robust software engineering project. Import a unit test package, and let GitHub Copilot suggest tests that match your implementation code.
Show me alternatives :Want to evaluate a few different approaches? GitHub Copilot can show you a list of solutions. Use the code as provided, or edit it to meet your needs.
川西的风景是真的好看
我只是大自然知识的搬运工,欢迎大家自荐或者推荐,每周都会收集
欢迎大家向本公众号投稿,会注明作者和来源,可以夹带私活,比如招聘信息
由于微信没有开放外链,所以部分链接没法直接点击访问,可以查看知乎专栏的这篇文章:https://zhuanlan.zhihu.com/p/427901573,所有链接都是可以直接访问的 (查看原文也可以到达)
欢迎大家收藏、点赞、在看、分享转发到朋友圈,如果能打赏一下无业游民,会触发快速更新任务哦