文章归档

最新文章

Gulp 和 Webpack 有什么区别?

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

Anko 的设计之道

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

Google I/O 2018 看点

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

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。

HTTPS 精读之 TLS 证书校验

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

精通 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...

小程序开发总结

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

Mockito 详解(三)插桩

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

Mockito 详解(一)基本用法

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

Android 强升逻辑和实现

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

关于 App 开发的一些思考

春节假期在家看了两本关于 Web 架构方面的书,虽然有很多地方没看懂,有的地方似懂非懂,但是俗话说,他山之石、可以攻玉,知识是相通的,试着总结一下对 APP 开发的一些启示。

架构笔记之安全

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

架构笔记之数据分析

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

写 Gradle 插件的一点经验

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

图解 Retrofit 之 ServiceMethod

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

Android 单元测试

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

Hexo 踩坑记

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

Git Flow 用法总结

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

iOS 开发总结

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

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

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

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

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

Dart 是一个怎样的语言

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

怎样继承一个内部类

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

为什么要使用内部类

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