2018-05-31

纯吐槽,请忽略。

更多 →
2018-02-18

其实我并不是想说重男轻女的问题,而是想用“传男不传女”这种说法来指代哪些神神秘秘的传统技艺,毕竟这种博人眼球的标题总是能吸引关注。

问题源于我看过一个揭秘川剧变脸的小视频,结果底下清一色的评论“这种视频应该封杀,中国传统技艺不要让外国人偷师了”,无一不是在逼迫原作者删除这个视频。初看之下我还不以为意,结果发现抱有这种观点的人真是不在少数,也不知道是应该感叹拳拳华夏爱国之心,还是感叹素质教育任重道远。

应该怎样评价这种观点呢?首先得看“传男不传女”这种规矩是怎么来的?“传男不传女”的一般都是一些赖以谋生的独特手艺,比如“变脸”,比如“唐朝鼓乐”,再比如沸沸扬扬的“漆线雕”,当初先人立下此规矩原因无非有二:

  1. 认为女儿终究是外人
  2. 古代的“专利保护”,其实第一条也是依赖于这一条的,因为“外人”终究会成为潜在的竞争者。
更多 →
2018-01-02

InputFilter 会在 TextWatcher 之前调用,可以在用户输入内容时就禁止用户输入一些非法字符。

更多 →
2018-01-01

Android 添加 build 依赖项。

更多 →
2018-01-01

Something about EditText’s TextWatcher.

更多 →
2017-05-08

《正则表达式必知必会》——Ben Forta,回顾笔记。

正则表达式的两种基本用途:搜索和替换。给定一个正则表达式,它要么匹配一些文本(进行一次搜索),要么匹配并替换一些文本(进行一次替换)。

正则表达式的核心难点:验证某个模式能不能获得预期的匹配结果并不困难,但如何验证它不会匹配到你不想要的东西可就没那么简单了。

更多 →
2017-05-08

rfc5861 定义了两个 Cache-Control 的扩展:

  1. stale-while-revalidate
  2. stale-if-error

这是两个扩展都是用来定义缓存过期(stale)后的处理策略,旨在提高用户体验,不过两者是独立使用,并无关联的。

stale-while-revalidate

我们在 http 里已经使用缓存很多年了,不过有个问题很常见:如果缓存过期了会发生什么?
如果从缓存中可以立即取得响应,但是从服务器获取响应需要几百毫秒或者更久,那用户会很容易注意到这个细节差异。

一个理所当然的解决方案是“在缓存过期之前预拉取最新的内容”,这个听上去很合理,不过这引发了另外一个头疼的问题:“如何决定何时预拉取呢?”。如果没有正确实现预拉取策略,那就有可能加重缓存,网络以及后台服务器等等的负载。

退而求其次,另一个可以采取的方案是,对于那些”稍微“过期的缓存,允许先直接使用,然后在后台静默的更新缓存内容。

1

更多 →
2017-05-07
更多 →
2017-03-21
更多 →
2017-03-17

在程序设计中,设计良好的缓存可以避免无意义的重复计算,节省可观的计算资源,从而提高性能。
不过同时,缓存一样要消耗资源,过大的内存一样会造成空间资源的浪费。这些方方面面都是在设计缓存的时候需要考虑的事情。

本文主要关注如何设计一个良好运行,线程安全的缓存方案。

简单实现

一个简单缓存方案的实现如下:

1
2
3
4
5
6
7
IF value in cached THEN
return value from cache
ELSE
compute value
save value in cache
return value
END IF
更多 →