圆周率π

本网站是纯粹的个人网站,所有功能和内容均由本网站站长独自完成,如有任何意见和建议请与站长联系

鸣谢

非常感谢在线查询网给予我的大力支持。

纯属偶然

作为一个有多年开发经验的老程序员,一直没有真正给自己开发过一个项目。我每次想到这里心里总有些不舒服,所以就下定决心一定要做一个项目,不为别人,只为自己。

但是就算是为自己做项目,也要有点实用价值才行,不然就成了自娱自乐了。


经过了长时间的思考,我想到了很多好项目。但是这些项目不是太大,就是太复杂了,根本不适合一个人在短时间内开发出来,也不方便推广。

直到一个很偶然的机会,我的同事在网上发现了一个圆周率的前10亿位小数的下载,这让我一下来了灵感。

如果我能做一个关于圆周率的网站,且充分利用这个下载,并提供一些有趣的功能,应该会容易推广一些,并且实现起来还不复杂,更重要的是非常适合一个人在较短时内开发出来。

于是我便开始了圆周率π网站的构思。

必然结果

确定网站的功能

最容易想到的是提供一个能够查看圆周率的某一位附近的数字都是什么的功能。但是感觉只有一个功能有点太单薄,于是大量查找资料。发现了“合取数”的概念,并且圆周率是不是合取数还没有得到科学界的严格证明,于是想到可以提供在圆周率中查找某个数字的位置的功能。

同时为了提高网站的实用价值,我会不断的增加关于圆周率的知识和趣事。而且我还会不断开发更多实用性功能,敬请期待。


确定网站的前端架构

我首先想到的便是Bootstrap,因为这是我在工作中最常用的前端框架。于是为了节省开发和设计的时间,我开始大量搜索免费模板。

对我来说这真真是最枯燥而繁琐的工作,没有“之一”,绝对是“之最”。我真的看了几十个网站模板,也尝试了其中的几个,最后我终于发现我真的不适合设计页面,而且对能设计出好看的页面的人产生了崇高的敬意。

在经历了痛苦的模板选型的工作后,最后终于确定了Metro UI CSS这套框架。虽然我的同事非常讨厌Metro风格,对它的评价极低,但是我还是选择了它。原因其实也很简单,因为这种风格页面布局简洁直观,也不是很难看;而且如果我能设计出更好看的页面风格的话,我肯定也不选它了。


确定网站的后端架构

可能是职业习惯的原因,我第一时间想到的就是把这10亿位数字存储到数据库中。于是精心设计了表结构,表分区,索引等等。但是经过多次尝试发现,数据库的占用空间始终在10G以上(如果分表比较多,表分区也比较多时,能达到30G以上),并且查询速度最快也在0.5秒以上,有的查询甚至达到了几分钟之久。这显然是不可行的,所以只好另辟蹊径。

如果不用数据库,那么就剩下直接读取到内存了。于是试验了一下,内存占用量达到1.5G,再考虑到操作系统的内存使用量和预留内存量,那么服务器配置应该至少需要3G的内存。租用一个这样的服务器,对我来说是个不小的开销。

到这里,最终的后台框架应该能够确定了。而且最找导致了我的另一个项目,FreeFrame项目的诞生。他直接解决了我的高成本问题,让我能够租用比较便宜的服务器,同时还能满足我的性能要求。

因为FreeFrame项目接口使用的是Java语言,所以网站最终的开发语言也定为Java。为了体验一下Java的新特性,我采用的是Java 8。