惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
V
V2EX
The GitHub Blog
The GitHub Blog
T
Threatpost
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
A
Arctic Wolf
Google DeepMind News
Google DeepMind News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
P
Proofpoint News Feed
W
WeLiveSecurity
Cloudbric
Cloudbric
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
T
The Exploit Database - CXSecurity.com
U
Unit 42
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Spread Privacy
Spread Privacy
Hugging Face - Blog
Hugging Face - Blog
O
OpenAI News
N
News and Events Feed by Topic
The Last Watchdog
The Last Watchdog
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy & Cybersecurity Law Blog
T
Threat Research - Cisco Blogs
博客园 - 聂微东
V
Visual Studio Blog
美团技术团队
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
小众软件
小众软件
Engineering at Meta
Engineering at Meta
NISL@THU
NISL@THU
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
Martin Fowler
Martin Fowler
T
Troy Hunt's Blog

Kotlin

compose 使用性能问题 - V2EX 有人在项目里面使用 compose 开发吗 - V2EX 大家会在老项目中使用 kotlin 吗 - V2EX Kotlin 中文文档 2.2.20 版翻译完成了 - V2EX Kotlin 中文文档 2.1.20 版翻译完成了 - V2EX Kotlin 中文文档 2.1.0 版翻译完成了 - V2EX Kotlin 中文文档 2.0.20 版翻译完成了 - V2EX MIUI API28+ActivityTransition API+kotlin 无法检测到活动,只能手动触发广播,怎么定位问题? - V2EX 我老人家翻译的 Kotlin 中文文档,正在更新到最新的 2.0.20 版 - V2EX 我老人家翻译的《Kotlin 语言参考文档》中文版,已经迁移到了新的 Writerside 环境 - V2EX kotlin 没有受检异常真太难顶了。吐槽 - V2EX Kotlin 2.0.0 正式版发布了 - V2EX kotlin 中的 select 到底可以 select 哪些内容啊? - V2EX 请大佬帮忙看一眼我这个注解为什么没能抑制 never used 警告? - V2EX 我老人家翻译的《Kotlin 语言参考文档》中文版 - V2EX 使用 compose 开发了讯飞星火认知模型桌面端应用 - V2EX Kotlin 的协程到底是用来干嘛的?为什么没有可 suspend 的异步 IO 函数? - V2EX Kotlin 协程 Coroutine 与 Spring Boot 项目整合的最佳实践是怎样的? - V2EX 谷歌出品 kotlin 入门教程 - V2EX kotlin 源代码数据集 - V2EX KMM 中目前最成熟,最推荐的 shared viewmodel 方案是什么. - V2EX ​ Java /kotlin AST 构建相关,悬赏 200 求解,人已经麻了 - V2EX 有没有 Kotlin 讲协程比较好的书籍或博客连载 - V2EX ArrayList.set 提示 第二个参数 element 类型是 NoThing ? - V2EX 哪些公司后端用 kotlin 写的 - V2EX kotlin 表达式引擎 - V2EX 最近在看 Kotlin 别人一些代码, 看到如下的代码惊呆了 - V2EX Kotlin 的协程是真协程吗?被 b 站博主搞蒙了 - V2EX 有没有人能帮我解释一下,这里面的代码.如果我创建一个新窗口,按照这个逻辑,怎么显示出来 - V2EX 怎么解决 public reified 函数会要求所有用到的依赖都是 public 的问题 - V2EX Result 的方式处理异常用的多吗,我看了下好像和比较受好评的 rust result 用法差不多 - V2EX Kotlin 更换了新 logo:更加立体、更加清晰 - V2EX Kotlin 1.5.20 发布了~快来看看新特性 - V2EX 关于 kotlin 处理多个可空类型的变量的问题 - V2EX 求解这个 eval 函数返回值为什么是个 lambda?怎么才能拿到值? ​​​ - V2EX kotlin lazy 形式的 grouping and mapping 应该怎么写, sequence 里 grouping + aggregate 怎么比 Java stream 还复杂得多 - V2EX 强大的 v2ex,大家擅长 Kotlin, webview 交互的伙伴,来一波 - V2EX springboot kotlin 和 Java 混编, json 序列化用哪个比较好 - V2EX 有哪些知名 iOS 应用是纯 Kotlin 开发的? - V2EX [协程递归问题请教] - V2EX kotlin 打包问题 - V2EX 求推荐 kotlin 安卓开发教程 - V2EX Kotlin 1.4 Released - V2EX 请教一下 kotlin json 序列化及配合 data class 的正确姿势 - V2EX 各位公司项目后端有用 Kotlin + Spring 的吗, DB 层框架选用的什么? - V2EX 慌的一批, Kotlin 这么优雅的语言为什么不火呢 - V2EX Kotlin 如何检测所有 lateinit 的 field 是否初始化 - V2EX 初入 kotlin,源码找不见求教 - V2EX libcore.reflect.parameterizedtypeimpl cannot be cast to Java .lang.clas 这个错误 我真是莫名其妙 - V2EX
屎山代码一则 - V2EX
300 · 2024-10-05 · via Kotlin

这是一个创建于 617 天前的主题,其中的信息可能已经有所发展或是发生改变。

大家都知道 Kotlin 有空安全

var s: String 代表不为空

var s: String? 代表可为空

奇葩操作来了,在我接手之前,除了绝大部分的基本变量,其余所有变量都是 String?、Objxx?

使用的时候:

if (S != null) print(s) else throw Exption("s shouldn't be null")

或者:

if (obj?.s == null) return
obj!!.s

一开始很好奇这个脑残写法是怎么来的

然后遇到了一个 crash 我找到根源了。我写的代码里没有用 String? ,但是却报了 NPE ,赋值的地方都查过了,不存在 null 。最终不断地调试发现每次页面 onDestory()的时候会有个反射递归地将所有变量和变量里的变量都设置成 null (说是在手动 GC…)。又因为魔改了生命周期+协程,读取变量的时候已经是 null 了,然后报错==

ghost024

1

ghost024      2024 年 10 月 5 日

哈哈哈哈哈,要么改反射,要么加入:)

nuonuojump

2

nuonuojump      2024 年 10 月 5 日

挺先进的代码,我都没想过还能在销毁的时候 手动做这种类型的 gc 。挺先进的。

easylee

3

easylee      2024 年 10 月 5 日

如此一说,Java 里面是不是也能这么操作?有实战案例吗!

htxy1985

4

htxy1985      2024 年 10 月 5 日   ❤️ 2

手动设置为 null 这种做法只在零几年的代码里见过,还有人专门写了英文注释,感觉是跟国际水准接轨 /doge

beisilu

5

beisilu      2024 年 10 月 6 日

盲猜这个是在已有屎山上拉的
盲猜楼主还要再拉一坨

300

6

300      2024 年 10 月 6 日 via Android

@ghost024 改是不会改的,能想象无止境的追问改这个有什么意义

@beisilu 不拉了,我选择加入。万一出了问题还得我改

akiakise

7

akiakise      2024 年 10 月 6 日 via iPhone

简直就是在用 java 的方式写 kotlin ,jb 辛辛苦苦加的那么多语法糖是一口不吃啊

300

8

300      2024 年 10 月 6 日

@akiakise 有些地方还是吃的,但绝大多数代码都是 Java 的风格

另外我们是 Android ,官方组件几乎不用的。viewmodel 、lifecycler 什么的。自己搓了一套 lifestate ,从来没去研究过到底解决了什么问题,难懂反正

leegradyllljjjj

9

leegradyllljjjj      2024 年 10 月 6 日

java 就是上世纪的狗屎语言,不少遗老遗少还当宝,自诩为 java 专家称号

iseki

10

iseki      2024 年 10 月 7 日 via Android

这已经不是什么语言的问题了😩不过我大概猜测,是不是哪里一直持有这个 activity 的引用啊,要不然怎么会想到干这种事

300

11

300      2024 年 10 月 7 日 via Android

@iseki 乱七八糟的引用也是原因之一,但是这个回收代码一开始就有

lisongeee

12

lisongeee      2024 年 10 月 7 日

```kt
if (obj?.s == null) return
obj!!.s
```
我一般不会这么写,我一般写的是
```kt
val s = obj?.s ?: return
```
这样才能保证线程安全,最上面那种情况我只会在 js 里写,只有在 js 里这种用法才是线程安全的 (瞎写的 getter 不算)

300

13

300      2024 年 10 月 7 日

@lisongeee 我这边看到两种写法都有,更多的是
val o = obj ?: return

coroutine / callback{
o.xxx
}

这里还拿了个引用

lisongeee

14

lisongeee      2024 年 10 月 7 日

val s 是线程安全的,obj!!.s 是线程不安全的

如果 obj 是 val 的,并且 obj 的 s 也是 val 声明的,那 val s 和 obj.s 没区别

如果你的代码风格尽量向 immutable 靠近,那能避免很多错误,当然这是我的前端思维,我不知道是否适合后端

可以了解一下 kotlinx-collections-immutable 这个库

300

16

300      2024 年 10 月 7 日 via Android

@lisongeee 没毛病,安卓也是前端😄
obj.s 可能是 val 也可能是 var 也可能是方法