标签

Android

Anko 的设计之道

Anko 是一个完全基于 Kotlin 设计的 Android 三方库,名字来自于 Android Kotlin 这两个单词的前两个字母。Anko 试图建立一套新的 Android 开发范式, 虽然不会成为主流,但是它的设计思想值得我们借鉴。

Android 强升逻辑和实现

“强制升级”会中断用户操作,阻碍正常使用,看似是一个不光彩的行为,但是智者千虑必有一失,我们无法保证 App 的正确性,在某些紧急情况下,强制升级还是非常必要的,而且接入的时间越早越好。

图解 Retrofit 之 ServiceMethod

通过 Retrofit + RxAndroid 实践总结,我们已经了解到了 Retrofit 的基本用法,为了知其所以然,我们以图解加源码的方式从 Service Method 入手,逐步拨开 Retrofit 的神秘面纱。

Android 单元测试

Android Studio 和 Android Gradle Plugin 可以让我们脱离 android.jar 直接在 development machine 上执行单元测试。

详解 Android 开发中常用的 DPI / DP / SP

Android的碎片化已经被喷了好多年,随着国内手机厂商的崛起,碎片化也越来越严重,根据OpenSignal的最新调查,2014年市面上有18796种不同的Android设备,作为开发者,一个无法回避的难题就是需要适配各种各样奇奇怪怪的机型。

Dart更近一步,Sky会一统江湖吗?

从接触编程到现在,除了搞过几天JQuery,几乎没怎么写过Javascript,刚刚看了两篇介绍 ECMAScript6 的文章,突然觉得没写过JS也没什么好遗憾的。

返回顶部 ↑

Java

怎样继承一个内部类

定义一个内部类时,这个内部类会有一个隐式引用 (implicit reference) 指向外部类的实例。例如下面的代码:

为什么要使用内部类

我们经常会在一个类中定义一个内部类 (inner class),这个内部类可以继承也可以实现接口,因为有一个隐式的引用 (implicit reference) 指向外部类 (outer class),所以我们可以直接访问并操作外部类,因此可以认为内部类是外部类的一个窗口。

返回顶部 ↑

Mockito

Mockito 详解(三)插桩

每次插桩(Stubbing)都会产生一个 Invocation,本篇从 Invocation 着手,重点分析插桩的原理。

Mockito 详解(一)基本用法

Mockito 是一个用于 Java 单测的 Mock 框架,除了 JUnit 之外,它还可以用于其他单测框架(例如:TestNG)。Mockito 可以改变一个类或者对象的行为,能够让我们更加专注地去测试代码逻辑,省去了构造数据所花费的努力。

返回顶部 ↑

Kotlin

Anko 的设计之道

Anko 是一个完全基于 Kotlin 设计的 Android 三方库,名字来自于 Android Kotlin 这两个单词的前两个字母。Anko 试图建立一套新的 Android 开发范式, 虽然不会成为主流,但是它的设计思想值得我们借鉴。

Kotlin 网络库 Fuel 的设计之道

使用场景 一个“朴素”的 url 完全可以用一个字符串来表示(例如 "https://www.youzan.com"),我们可以利用 Kotlin 语言本身的特性为 String 类型添加一个扩展函数 httpGet(),然后借此发起 http 请求:

Kotlin 实战之 Fuel 的高阶函数

Fuel 是一个用 Kotlin 写的网络库,与 OkHttp 相比较,它的代码结构比较简单,但是它的巧妙之处在于充分利用了 Kotlin 的语言特性,所以代码看上去干净利落。

Kotlin 中 var、val、const 关键字解析

昨天公众号后台收到一位小伙伴的留言询问,他对于 Kotlin 为何没有 Java 的 final 关键字感到困惑,这应该是很多初学者都会遇到的问题,所以我就写了这篇博文从更底层的角度来解析 Kotlin 声明变量时用到的三个关键字:var、val 和 const。

返回顶部 ↑

CSS

精通 CSS 之 position

HTML的“正常”布局称为 document flow,在这种 normal flow 下,元素按照从左到右(inline block)、从上到下(block)进行排列。

Beautiful CSS

BACKGROUND Multiple overlapping backgrounds on one element Multiple background layers stack top to bottom, in the order declared. The color layer is alw...

返回顶部 ↑

Jekyll

返回顶部 ↑

微信小程序

小程序开发总结

小程序的核心是一个响应式的数据绑定系统,逻辑上分为视图层和逻辑层。这两层始终保持同步,只要在逻辑层修改数据,视图层就会相应的更新。

返回顶部 ↑

前端

Gulp 和 Webpack 有什么区别?

我在深入学习 Sass 时了解到 Gulp 是一个 task runner,随即产生一个疑问:Webpack 是什么呢,它和 Gulp 的区别是什么?

返回顶部 ↑

Dart

Dart更近一步,Sky会一统江湖吗?

从接触编程到现在,除了搞过几天JQuery,几乎没怎么写过Javascript,刚刚看了两篇介绍 ECMAScript6 的文章,突然觉得没写过JS也没什么好遗憾的。

Dart 是一个怎样的语言

这几天看到一篇新闻 - 白兼容了?Google 正在为 Android 准备一个去 Java 化的 Dart 应用运行框架,对与新闻的标题和内容无力吐槽,不做评论。但是Google推出 sky 似乎证明了native的开发方式越来越向web方式靠近的趋势,最近比较火的要数 react-native 了,他们的原理...

返回顶部 ↑

Google IO

Google I/O 2018 看点

Google I/0 2018 马上就要开始了,美国加利福尼亚州山景城时间 5 月 8 日上午 10 点,对应北京时间是 5 月 9 日凌晨 1 点。

返回顶部 ↑

Minimal Mistakes

返回顶部 ↑

Flutter

返回顶部 ↑

闭包

返回顶部 ↑

iOS

iOS 开发总结

一个月之前认为不可能做到的事情,今天做到了,很高兴,深夜来篇总结,梳理一下。

返回顶部 ↑

Git

Git Flow 用法总结

Git Flow 是 Git 一个扩展,基于 Vincent Driessen 提出的 A successful Git branching model。

返回顶部 ↑

建站

Hexo 踩坑记

分支 Github的个人帐户默认渲染master分支,只有org帐户才会渲染gh-pages分支。 个人帐户的master分支是hexo generate之后的文件。

返回顶部 ↑

Unit Test

Android 单元测试

Android Studio 和 Android Gradle Plugin 可以让我们脱离 android.jar 直接在 development machine 上执行单元测试。

返回顶部 ↑

Gradle

写 Gradle 插件的一点经验

本着简单易用的原则,参考android-resource-remover 写了一个删除无用资源的 Gradle 插件 - clean-unused-resources-gradle-plugin,结果微博发出来不到10分钟,陈启超就告诉我 AS2.0+ 已经提供了此功能。天哪,为了纪念这个短命无用的轮子,只好写篇...

返回顶部 ↑

Data Analysis

架构笔记之数据分析

蚂蚁积分是一个数据产品,这个简单的积分体现的是风控和信用,分数越高表明放贷的风险越小、履约的概率越大,而积分背后的风控体系和信用体系都是来自数据的采集和分析,所以数据是最重要的。

返回顶部 ↑

Security

架构笔记之安全

数字摘要 摘要算法 MD5 / 128 bits / Message Digest Algorithm 5 SHA / 160 bits / Secure Hash Algorithm

返回顶部 ↑

OAuth2

返回顶部 ↑

Salesforce

返回顶部 ↑

HTTPS

HTTPS 精读之 TLS 证书校验

HTTPS 协议栈与 HTTP 的唯一区别在于多了一个安全层(Security Layer)—— TLS/SSL,SSL 是最早的安全层协议,TLS 由 SSL 发展而来,所以下面我们统称 TLS。

返回顶部 ↑

Sass

返回顶部 ↑

Less

返回顶部 ↑

Database

返回顶部 ↑

Next.js

返回顶部 ↑

AntD

返回顶部 ↑

Google Analytics

返回顶部 ↑

minima

返回顶部 ↑

Canvas

返回顶部 ↑

Github

返回顶部 ↑

日语学习

返回顶部 ↑