蒙特卡罗方法和随机数

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

蒙特卡罗方法最典型的应用是求圆周率π,如下图,在坐标系中,有一个以(0,0)为圆点,半径为1的圆,接下来画一个边长为2的正方形,做到把圆内切在正方形上,如图:
获取圆周率的方法 …阅读更多>>

如何在PHP7中安装mysql扩展

PHP是最流行的web脚本编程语言,目前全球有超过81.7%的服务器后端都采用它,然而它的运行效率一直广受诟病,为了提供PHP的运行效率,Facebook甚至开发HHVM,用来把PHP代码转换成字节码以提高其效率。为了对抗HHVM,2015年10月PHP7正式发布,相对于PHP5,PHP7有非常大的性能提升,关于其和HHVM性能的对比,可以查看鸟哥的PHP7 VS HHVM (WordPress).

相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”。所以在以后的程序中,为了保持兼容性,要尽量减少使用mysql扩展用于数据库连接。 …阅读更多>>

PHP用户登陆限制的实现

哆麦询盘管理系统的开发过程中,需要了这样的问题:出于信息安全的考虑,希望给每个能进入系统的人员一个账户,而不是所有人共用一个账户,并且一个账户同时只能一人登陆。刚开始的做法是登陆加锁,当用户登陆之后,对此用户进行标记,若此用户未下线状态下进行第二次登陆尝试,则禁止其登陆。这样做就解决了单账户多用户同时登陆的问题,但是实际操作中,却遇到了更大的问题:用户登陆过程中对其进行了加锁,则用户离开时就必须要进行解锁操作,而很多用户离开网站的习惯是直接点击浏览器的关闭按钮,这就导致无法解锁,最终导致用户正常登陆也受到限制。
PHP用户登陆限制的实现
…阅读更多>>

Web服务器网关接口实现原理分析

Web服务器网关接口(WSGI),又叫Python Web服务器网关接口(Python Web Server Gateway Interface),是用来描述web服务器与网站应用程序通信和应用程序如何处理请求的规范。它的第一个版本于2003年发布,从那时起,wsgi就成为了python web应用的开发标准,目前最新的版本是v1.0.1,于2010年9月26日发布。

使用python做过web开发的对下面的例子应该非常熟悉,运行之后访问则会显示出Hello,web!

from wsgiref.simple_server import make_server

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return '<h1>Hello, web!</h1>'

httpd = make_server('', 80, application)
print "Serving HTTP on port 80..."

httpd.serve_forever()

在上面的例子中,几行代码就可以搭建出一个HTTP服务器,并没有使用像apache,nginx一样的专用web服务器,而是使用wsgiref中的模块。对于这个服务来说,application是用户层的代码,而wsgi对内提供应用接口,对外充当web服务器。
WSGI流程 …阅读更多>>

如何申请GeoTrust的Extended Validation SSL证书

网站HTTPS化的作用就不用说了,单单对网站排名来说,百度和Google分别确认https的网站比http的网站排名会更高,详情可以点击这里:百度开放收录https站点公告,HTTPS as a ranking signal。为了顺应HTTPS化的潮流,越来越多的安全提供商推出了免费HTTP证书服务,像startssl,中国的沃通都退出了1年免费HTTP证书服务,国外更是成了Internet Security Research Group(https://letsencrypt.org)组织,专门免费提供HTTP证书。

Ev SSL证书在浏览器上的展示

HTTP证书的作用不仅可以让网站更安全,一些安全组织推出了针对企业和组织的Extended Validation证书,俗称Ev SSL,不仅仅对网站内容进行保护,还对组织机构进行审核,很大程序上减少了网络欺诈,当用户访问你的网站时,大多数浏览器都会显示公司名称,给出信任标识。如果你有一个外贸企业网站,那么我推荐你考虑在网站上使用Ev SSL证书。 …阅读更多>>

协程与多任务调度

在计算机科学中,多任务(multitasking)是指在同一个时间段内运行多个任务,现代计算机作为一个复杂的系统,运行的任务往往不止一个,所以多任务调度对于计算机来说尤为重要。现阶段多任务调度主要分为抢占式多任务和协作式多任务,抢占式多任务由操作系统决定进程的调度方案,而协作式多任务是当前任务主动放弃执行后,下一个任务继续进行。由于协作式任务管理受恶意程序的威胁更大,现阶段几乎所有的计算机都采用抢占式多任务管理。
多任务处理
现阶段,主要靠多进程或多线程的方式来实现多任务:

#include <stdio .h>
#include <unistd .h>

int main()
{
	pid_t pid;
	pid = fork();

	if(pid < 0){
		printf("Fork Error!\n");
	}else if (pid > 0){
		printf("This is the parent Process! Process Id is %d, Child id is %d\n",getpid(),pid);
		int i = 0;
		while(i < 10){
			printf("This is parent Process output of i %d!\n",i);
			i++;
		}
	}else if (pid == 0){
		printf("This is the child Process! Process Id is %d, parent id is %d\n",getpid(),getppid());
		int j = 0;
		while(j < 10){
			printf("This is child Process output of j %d\n",j);
			j++;
		}
	}
	return 0;
}

...阅读更多>>