对于一个规模很大的web系统,如PV在一亿以上,缓存就是一个不可或缺的重要组成部分,它可以挡掉大部分的用户访问的冲击,如果没有它,系统很可能将迅速不可用直至崩溃。
但是缓存带来了另外一些棘手的问题: 一致性和实时性。
一个很直观的场景就是,数据库中的数据状态已经改变,但是用户在页面上看到的仍然是缓存的旧值。
一般来说,缓存数据本身都是保持在内存中的,例如淘宝内部大量使用的tair系统(已开源)。tair拥有若干服务器,这些服务器内存都很大,可以存放大量数据。当然,考虑到..
项目启动之前,往往有一段较长的时间用作来讨论和评审需求。
开发、产品、运营等各方都是重要的参与者。
需求的核心人物其实还是产品经理(PD),PD负责需求文档的编写和业务流程的定义,运营人员的需求不能直接提给开发,而是通过PD进行分析和过滤。这样三个不同的利益集团(姑且就用这个词吧),很容易会在需求相关的讨论会议上发生激烈的争执,这样的争执,通常有两种结果:
一是达成共识,二是没有下文。在实际项目中,第一种情况几乎是不会发生的,或者说,需要反反复复讨价还价才可能在一定程度上达到..
SSE是很常见的一个X86平台的指令集,早在P4时代就已经出现了。后来INTEL又接连着推出了SSE2,SSE3,SSE4等(不过可没有SSE5,原本规划是有的,后来INTEL独立发展了新一代AVX指令集旨在取代SSE,关于AVX现在资料还不是很多,用的也没有SSE普遍。毕竟支持AVX的CPU也不多,像我的T4400就不支持)。
废话不多说,还是来点实在的东西。大家都知道浮点数运算比起整数运算,速度的确是非常缓慢,很多领域比如图像处理中,需要大量用到浮点数运算,此时CPU就是一个很显著的瓶颈,为了提高浮点数性能,我们有两个方法:
1,化浮点为整形:..
标准Http协议支持六种请求方法,即: 0,GET 1,HEAD 2,PUT 3,DELETE 4,POST 5,OPTIONS 但其实我们大部分情况下只用到了GET和POST。如果想设计一个符合RESTful规范的web应用程序,则这六种方法都会用到。不过即使暂时不想涉及REST,了解这六种方法的本质仍然是很有作用的。大家将会发现,原来web也是很简洁明了的。下面依次说明这六种方法。 0,GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请..
所谓的底层情节,即是对底层细节的好奇和渴望之情。 大凡程序员,一般都是有极强好奇心的。只是一般工作中,大都是做应用开发,很少有机会接触到底层。于是慢慢的底层就成了程序员心中挥之不去的情节。 为什么底层能有这么强大的吸引力? 首先,掌握了底层就相当于掌握了计算机的一切,而不是处于一种受制于某个公司某个组织的状态。应用开发做多了,人很容易陷入迷茫,不知道自己应该怎么走。 第二,底层技术一般都比较稳定,很少有大的变化发生。拿PC机来说,虽然我们的PC速度跟以前相比提高了千百倍,但是PC的工业标准还是那个1..
对于互联网应用而言,安全是一个不可忽视的问题。特别是电子商务类应用,更是重中之重。由于目前国内电子商务发展越来越迅猛,很多木马开始把注意力转到它上面来。这些木马往往有一个很重要的特点就是具有明显的经济利益性目的。
根据分析和研究表明,这类木马通常并没有使用很高深的技术手段,主要原因就是浏览器自身的脆弱性。从OS角度来说,浏览器是一个很普通的应用程序,没有任何保护措施。木马可以很方便的通过某些方式来篡改浏览器数据。
&nb..
从某种程度上来讲,版本控制是现代大规模团队合作软件开发的一个基石。如果没有版本控制,很难想象现在的软件开发会是一个什么样子。
现在用的较多的就是SVN了 。很多人 最开始接触SVN的时候总是希望能通过看文档帮助什么的来学习,最终会发现还是啥也不会。其实SVN这种东西还是在实践中学习的快,如果仅仅是看文档,可能根本就无法体会到SVN的精髓所在。 SVN一般有一个 SVN中心服务器,网上现在有很多SVN服务器的搭建帮助,这个不会有太多的麻烦。有了SVN服务器,我们就可以来提交代码了。 凡是使用SVN来管理的项目,一般都有一个..
最近工作较忙,一直没更新博客。不过工作之余,还是抽时间学习了一点新知识,也就是函数式编程方法。函数式编程(FP)并不是什么很新的东西,很久以前,甚至比C语言还早,就已经出现了。最为典型的就是Lisp了。
本来函数式编程并没有像JAVA那样成为程序员中的明星,受到的关注也很少。但是随着一些趋势的发展,人们又再次将目光放在它上面。现在这是一个多核并行的时代,传统的命令式编程存在很多难以克服的问题,最主要的一个就是状态的可变性,..
MyVCR是什么?
利用摄像/监控头,麦克风等设备,实时捕捉视频和音频,并压缩到视频文件中。默认使用x264vfw进行编码,所以压缩率很高~
另外一个激动人心的特性就是MyVCR支持插件功能。用户可以自行定义插件,实现各种变幻无穷的视频特效。
目前MyVCR自带一个“时间条”插件(如下图),此插件可以在视频帧上绘制时间戳。
项目托管于Google Code,地址:http://code.google.com/p/myvcr/
已编译安装包下载:http://code.google.com/p/myvcr/downloads/list
包中含有使用帮助可供参考。若有问题请提交到Issues中。或者也可以直接联系本人..
GAE(Google App Engine)是目前最受欢迎的云计算平台之一。特别是其对JAVA的支持,更是让许多人为之振奋。GAE的文档还算是比较丰富,不过仍然有一些让人迷惑的地方,本文将这些地方一一作出总结和说明,希望对GAE开发者有所帮助。
GAE支持JAVA和Python(以后或许支持更多的)。这里仅讨论JAVA。
JSP方面:
GAE支持JSP页面,但是默认并不启用JSTL和EL表达式,很多开发者嵌入EL后发现出现奇怪的结果。若要启用JSTL,则需要做下面几个工作:
1,每个JSP顶部,加入以下语句<%@ page contentType="text/html; charset=UTF-8" lang..