
今天新增的拼图验证码的可配置性非常强,你只要替换资源文件,在配置文件中修改提问的模版,指定图片的大小、行数、列数,就可以创造一套全新的验证码。他的简单程度实在超出你的想象。

今天新增的拼图验证码的可配置性非常强,你只要替换资源文件,在配置文件中修改提问的模版,指定图片的大小、行数、列数,就可以创造一套全新的验证码。他的简单程度实在超出你的想象。
Yan 新增了一种验证码类型,Web 2.0 图标验证码。用户根据图标的内容和提示的信息,提交验证码。验证码图片如下:

提示文字: Please figure out twitter icons.
用户输入Twitter图标左上角上的字母,即可进行验证。在Yan的测试界面上使用如图:

Web2.0 Icon实际上是Yan中新增的拼图验证码的一个实例,利用拼图验证码可以生成相似的更有创意的验证码。在我的开发环境中生成这样一张图片大约需要80ms。
项目中使用的图标均从互联网收集,遵循CC等协议或经作者授权,详情参考项目中README文件。
祝DAF同学生日快乐。
给Yan的验证码图片服务做了压力测试。测试环境:
Jetty采用默认配置 maxThreads 200。
测试工具:ab (Apache Bench)
分别用10/50/100/200/500/1000并发用户,每个用户请求100次进行测试。结果如下:
| 10 | 50 | 100 | 200 | 500 | 1000 | |
| Requests per second | 487.11 | 472.09 | 442.74 | 421.63 | 408.11 | 326.12 |
| Time per request | 2.05 | 2.12 | 2.26 | 2.37 | 2.45 | 3.07 |
| Transfer rate | 987.91 | 955.54 | 896.85 | 854.31 | 826.25 | 660.45 |

目前对每个请求独立使用JDK的awt实时绘图,吞吐量可以达到400以上,如果稍稍优化一下Jetty的配置,性能还有一定的提升空间。这个结果还是不错的。
今天下班骑车到高斯路时,突然路边奔出一只小狗跟着我的自行车一起跑。小狗挺干净,出现在这种工业区人不多的路上倒是挺让人诧异。我开始放慢速度,让它跟着我不至于太辛苦。可是它还足够顽皮,一会跑在左边,一会在右边,好像是知道今天过节一样,欢实得很。不过我对路中间不时经过的汽车有所顾虑,有意得向路边靠,打算把它挤到路涯边,这样安全一些。
大约是嫌我速度太慢了,一会后面又上来一个骑自行车的人,小狗顿时起了劲,蹦达蹦达地追了上去。那速度大概是它向往的吧,我在后面看着,直到他们一前一后,过了马路,我从另一个方向回家了。
Yan的APIKEY一直是用嵌入式的数据库存储的,最初使用的是hsqldb,最近又添加了H2和Derby的支持,基本上囊括了所有开源的Java嵌入式数据库。实现多了自然需要挑选、比较一下。
数据库特性的比较,H2的网站上有很好的Matrix,一目了然
http://www.h2database.com/html/features.html#comparison
关于速度的比较,今天做了一个简单的测试。
分别从derby / H2 / hsqldb中取出10 、100、1000条数据,循环100000次,比较耗时,如下:

三者的速度差距非常明显,hsqldb远快于其他两个。
而在10、100、1000条记录的索引上查询,并取出指定记录呢,同样是100000次,如下:

再索引上查询,速度受记录数量的影响非常微弱了。但是hsqldb还是远快于其他二者,有趣的是derby的速度要略微快于H2.
根据这样的结果,在Yan的应用中,hsqldb还是最理想的实现。