
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
Kotlin为这两种场景提供了解决方案:使用挂起函数简化一次性资源获取,使用流处理持续事件通知。关于事件流处理方案详见《将listener转换为事件流》一文。本文聚焦第一种场景:如何简化异步资源获取操作。
仔细观察UserName和Email两个类,都是把一个String对象和一些专属操作绑定起来,构成一个新类型。用户名不能是空白,不能是"null",也不能包含"@"。值对象(Value Object)是领域驱动设计中不可变的概念片段,值类是Kotlin零开销的类型安全包装特性。如果当值对象只需封装单个值时,值类是最佳实现方式。Kotlin的值类(Value Class)是一种强大的类型安全工具,允
http://tommwq.tech/blog/2020/11/04/180首先,运维工作需要细致。很多时候需要对在线运营的服务器进行操作,操作的结果会影响业务的运行。如果出现差错,修复所需要的时间和工作量会更多,对业务的影响也更大。第二,运维工作需准备。对具体操作的准备越充分,出现操作错误的可能性越低。准备时可以将预计的操作步骤做成表格以备检查。如果操作比较复杂,或者使用了多条命令,最好写成脚本
http://tommwq.tech/blog/2020/11/09/192嵌套层次过深会导致代码难以理解和修改,也容易出现逻辑分支缺失,引入缺陷。导致嵌套层次过深的原因主要有两点:一是不恰当的嵌套,二是逻辑过于复杂。针对这两种情况,可以分别采用提前返回和封装的手法处理。1提前返回一些代码在使用逻辑判断、循环和异常捕获时,嵌套层次不合理,导致嵌套层次过深。这种情况通常表现为,某个分支中的代码非常简
Jetpack Compose 和即将退场的 Fragment1. 文章信息2. 介绍3. 谁杀死了 Fragment?4. 可组合函数应当放到哪里?5. 结论1文章信息原文:https://sonique6784.medium.com/jetpack-compose-and-the-fall-of-fragments-54bf9977da1a作者:Cédric F翻译:tommwq2介绍本文是关
将数据保存在SQLite数据库中,通过备份和恢复数据库文件可以实现数据的归档和恢复。

文档是API设计中最关键的方面之一。API用户无法深入到实现细节去更好地理解API。通常,API界面定义和相关文档是用户仅有的东西。因此文档必须尽量清晰、完整、明确。
有时API需要提供一种机制,按照一些过滤参数删除大量资源,而非提供待删除的各资源名字。这是一个稀有的场景,用于用户一次性删除数千或更多资源的情况。此时,普通的批量删除模式()笨重低效。
在(使用的Update或类似方法)更新资源时,通常需要明确指定哪些域需要更新。服务可以忽略另外的域,即使用户发送了值。定义一种掩码格式,为每个API处理更具体需求的方案虽然吸引人。但考虑到掩码需求不断变化,明智的做法是使用一种结构化语法,可以透明地进行更新,无需等待界面或客户端升级。
API本质上是同用户的契约,用户经常按照API编写代码,部署到生产服务,期望代码正常工作(除非API另有要求)。因此,了解什么样的变更是向后兼容的,什么样是不向后兼容的,非常重要。








