通过 Cache-Control、Last-Modified 和 Etag 优化客户端缓存

日常开发中,为了不让用户等得着急,或多或少都会用到 Cache。对于一个有着固定链接的图片资源而言,我们可以简单地将其存储起来,以供后续的访问。但对于那些 Uri 一致,但内容可能随时变化的情形而言,就显得有些不太合适了。简单的例子就是微博的 FeedLine,特别是你关注的人很多时,同样的 Uri 在几秒内对应的内容都可能差别很多。另一方面,要将判断 Cache 是否有效的逻辑与 Back End(后端) 结合起来,否则一定在客户端写死,就很难满足动态的需求了。在这边文章里面,不讨论如何去实现一个 Cache 系统,而是就如何与后端结合起来保证 Cache 的有效性来说明。

算法面试精要准备 - 栈

栈是什么呢?很简单,就是实现后进先出(LIFO)的数据结构,在某些算法题中,就会利用栈的这种特性来达成目的。所有代码都已经同步至 https://github.com/woaitqs/common_algorithm,欢迎关注。

Android Launch Mode 详解

我们所最常用的组件就是 Activity,Android 系统为了满足各种开发的需要,赋予了 Activity 四种不同的启动模式。虽然大家很可能都从各个地方了解过 Activity 的启动模式,但还是建议大家看看这篇文章,我会尽可能地理清思路,便于大家更好地理解启动模式。

我的流浪地球

我没见过黑夜,我没见过星星,我没见过春天、秋天和冬天。

​这是刘慈欣的短篇小说《流浪地球》中的开端,刘的文字向来不太打动人,但所描述的恢弘世界与波澜壮观的变迁却让人回味与动容。

你在平原上走着走着,突然迎面遇到一堵墙,这墙向上无限高,向下无限深,向左无限远,向右无限远,这墙是什么?

我们都知道自己看不到真理被证实的那一天,但如果人类得以延续万代,以后所有的人将在我们的墓前洒下自己的眼泪,这颗叫地球的行星,就是我们永恒的纪念碑!

算法面试精要准备

当踏入社会,或者需要跳槽的时候,都需要进行面试,一次好的面试发挥,往往会给你后续带来更多福利,无论是待遇涨幅,还是职级 title。在经过一些成功和失败的面试后,也总结出一些经验,这里将这些经验无私地分享给各位,希望对你们能有所帮助。如果侥幸帮到了您,别忘了和我分享你的喜悦。

后面文章中提及的代码,在这个 https://github.com/woaitqs/common_algorithm 链接中都有反馈,有兴趣的同学可以fork,我也会时不时更新。