ParadiseHell

Know the unknown

2022 年计划

开源节流

赶在 2022 年开工之前回顾一下 2021 年都干了什么,计划一下 2022 年都打算做什么。 在想如何给自己 2021 年的计划打分的时候,我想到了 OKR,所以下面我将用 OKR 的方式给自己打分,也会用 OKR 的形式给自己定 2022 年的目标。想到 OKR 主要是因为去年跳槽去了字节,发现字节的 OKR 执行的真的很棒, 确实能更快的让人成长。 2021 年打分 工...

Retrofit + Kotlin-Coroutines 如何去掉 try catch

代码进一步简洁

背景 Retrofit 2.6.0 版本后对 suspend 方法进行了支持,对使用 kotlin 的开发者来说简直是福音, 但是执行 suspend 方法的时候异常处理仍然是件繁琐的事情,必须显示的执行 try catch, 或者使用 kotlin 自带的异常处理类 CoroutineExceptionHandler 进行处理,但是不管那种方式, 代码都很挫,不够优雅。 优雅的代码 v...

使用 Retrofit 如何丢弃烦人的 BaseResponse

再也不用写重复处理 BaseResponse 的代码了

由于后台返回统一数据结构,比如 code, data, message; 使用过 Retrofit 的同学一定定义过类似 BaseResponse 这种类,但是 BaseResponse 的处理逻辑都大同小异, 每次都写着实让人很烦,有没有什么好的方式解决这一痛点呢?本文讲介绍一种优雅的方式 来解决这一问题。 背景 当我们打开 Retrofit 的官方文档时,官方的例子是这样的: ...

深入理解 Java 动态代理

知其然并知其所以然

开发安卓的小伙伴一定都用过 Retrofit, 那么一定也或多或少了解 Retrofit 的原理, 其中最重要的一个原理就是动态代理,那动态代理又是怎么实现的呢?这篇文章就将揭开 动态代理神秘的面纱。 动态代理快速上手 下面的例子将简单介绍如何使用动态代理: // 定义接口 public interface ProxyInterface { void a(); ... } ...

Retrofit 如何处理协程

简洁的代码不简单的思维方法

Retofit 在 2.6.0 版本增加了对 Koltin suspend 方法的支持,这对于使用 Kotlin 开发的小伙伴简直不要太友好了,我们今天就带着疑问看看 Retrofit 是如何实现这一功能的。 快速上手 @GET("users/{id}") suspend fun user(@Path("id") id: Long): User 可以看到 Retrofit 这...

2021 年计划

新的一年需要更加成熟一些

不知不觉 2020 年就快过去了,在这一年当中发生了太多的事情,是时候坐下来好好思考思考过去的一年有什么不足,在新的一年应该朝着什么方向去努力,尽量少留遗憾。 2020 年都有那些计划? 工作上 职位晋升 这个给自己打 80 分吧,确实没有达到,有一些客观的原因,比如工作不满一年。不过我觉得还是很有戏的,这一年自己除了完成本职工作以外,也和同事一起在项目...

2020 年计划

回顾 2019, 展望 2020

2019 年还有 1 天就结束了,即将迎来 2020 年, 是时候想想自己 2019 年都干了什么,即将到来的 2020 年自己又该干点什么了,不断思考反思总结才能不断地超越自己嘛。 回顾 2019 年 2019 年发生了很多事情,不管是在工作上、自身提升上还是生活上都发生了很多变化,整个 2019 年自己确实收获了很多。 工作上 找了人生中第一份工作 ...

线程池源码分析

彻底搞清楚线程池的原理

如果你使用 Google 搜索 “Java 线程池源码解析” 你将会搜索到无数相关的博客,这里我推荐这篇博客 Java线程池分析(Gityuan)。不过大多数博客的通病就是一上来就是描述为什么要使用线程池,接下来就是各种源码分析;这种显然不够优雅,真正优雅的源码分析应该是带着问题一步一步的揭开源码的神秘面纱,最后分析完后再回头看问题,便有一种豁然开朗的体验。 问题(思考)列表 以下...

如何更好的使用命令行

一起来抛弃上下左右键

这是一篇纯翻译的文章,旨在让更多的人更好使用命令行。 原文章地址:The Best Keyboard Shortcuts for Bash (aka the Linux and macOS Terminal) 系统环境说明 macOs Mojave 10.14.4 iTerm2 Mac 系统中的 Alt 键设置 自带终端 : Command+, -> 描...

如何在 ScrollView 里正确使用 ListView

避免知其然而不知其所以然

昨天上线的 App 用户反馈了一个 Bug, 列表显示有 100 多项但是列表就是不能滚动, 一下搞得我也挺懵逼的, 就是一个简单的 ListView 而已, 怎么就滚动不了了呢? 原来是使用了一个自定义 ListView, 改成 ListView 后 Bug 也随之解决了. 可是光解决 Bug 怎么可以呢? 我今年的目标可是成为合格的高级工程师, 必须彻底弄清楚原因才行. 于是花了一...