网站建设中并发的设计思想

zhushican | 建站教程 | 2014年8月15日

在网站建设的编程中有一个基本思想,就是要让程序能同时处理多个任务。很多编程问题都要求程序能停下它正在做的事,去处理一些别的问题,然后再返回主进程。要做到这点有很多办法。有时为了处理紧急任务必须得使用中断,但是很多情况下,你会把问题分成单独运行的片断,这样整个程序就能反应得快些。这种在程序内部单独运行的片断被称为线程,而这一概念被通称为并发或多线程。通过使用多线程,用户按完按钮之后就会很快得到回应,而不必干等着程序做完当前的任务。

通常,线程只是一种分配个处理器时间的方法。但是如果操作系统支持多处理器,那么线程也可以被分配到不同的处理器上,这样它们就能真正地并行运行了。在编程语言级别上的提供多线程支持所带来的好处就是,程序员不用操心运行这个程序的机器有多少CPU了。程序被逻辑地划分成线程,如果机器上有多个处理器,无需任何调整,程序就能跑得更快。

[阅读全文]
0次浏览 0条评论 网站  建设  并发  设计  思想  

网站建设之客户/服务器系统

zhushican | 建站教程 | 2014年8月15日

客户机/服务器系统的主要思想是,你有一个中央信息库——通常保存在数据库中一些信息——要根据需要,把它们分配给某些人或机器。客户机/服务器系统的关键在于,信息库会集中管理信息,因此信息的修改能够传播到用户那里。信息库,分发信息的软件,以及存储信息和软件的机器合起来称为服务器。存储在远程机器上的软件会同这个服务器通讯,提取信息,处理信息,并在远程机器结果,这被称为客户。

客户/服务器计算的基本概念没有那么复杂。但是,当你试图用孤零零的一个服务器来为很多客户服务的时候,问题就来了。这个架构通常都会牵扯到数据库管理系统,所以为了优化应用,设计人员会去平衡数据的格式。此外通常系统还允许客户往服务器里插入新的数据。这就意味着你必须保证一个客户的新数据不会和另一个客户的新数据搅在一起,以及数据不会在添加的过程中遗失。当客户端的程序修改之后,还必须重新编译,调试并且安装到客户机上,这要比你想象的复杂昂贵的多。而且如果要支持多种机器或操作系统的话,事情会更为麻烦。最后还有一个最重要的性能问题:服务器可能会同时响应成百上千个客户,所以再小的耽搁都是很要命的。为了把延时降到最低,程序员们尽量减轻服务器的负载,通常会把这些处理任务挪到客户端,不过有时会移到所谓的中间件的服务器上。
 

[阅读全文]
13次浏览 0条评论 网站  建设  客户  服务器  系统  

客户端编程

zhushican | 建站教程 | 2014年8月15日

Web最初的服务器-浏览器设计提供了互动内容,但是这种互动性是完全建立在服务器之上的。服务器为客户端提供静态页面,而浏览器只是简单的解释页面,然后显示出来。HTML包括了基本的数据采集的功能,以及只能用于清除表单或是把表单数据提交给服务器的按钮。提交上来的数据会交给web服务器上的通用网关接口程序。最常见的就是在服务器上运行一个程序,这个程序一般放在cgi-bin目录中。大多数语言都可以写这些程序。

很多大型网站都是完全建立在CGI之上的,而且实际上你能用CGI来做几乎任何事情。但是建立在CGI之上的网站会很快变得过于复杂而难以维护,此外还有一个相应时间的问题。CGI程序的相应时间取决于它要发送多少数据,以及服务器端和internet的负载。

[阅读全文]
19次浏览 0条评论 客户端  编程  

Java的服务器端编程

zhushican | 建站教程 | 2014年8月15日

Java服务器端编程问题,是非常复杂的,当你像服务器提出请求的时候到底发生了些什么呢?绝大多数时候,这个请求只是简单的“把这个文件发给我”。然后浏览器用适当方式解释这个文件:把它当作HTML页面,图像文件,Java applet,脚本程序等等。更复杂的请求通常会牵涉到数据库处理。

最常见的情况是web请求引发了一串复杂的数据库查询,然后服务器把查询结果重新组织成HTML文件,再把这个文件送还给浏览器。当然,如果客户端的Java或 脚本程序更智能的话,这些数据可以直接传输,然后再在客户端重新组装,这样不仅更快,而且对服务器端的负载也较轻。或者,当你需要加入某个组或是下订单的时候你就必须往数据库里写东西了,于是也要修改数据库的数据了。这些数据库的请求必须经由服务器端的程序处理,它们被统称为服务器端编程。

[阅读全文]
16次浏览 0条评论 Java  服务器端  编程  

异常的参数

zhushican | 建站教程 | 2014年8月14日

就像Java中的其它对象,你也可以用new在堆中创建异常,而new会调用它的构造函数并为它分配内存。所有的标准异常都有两个构造函数;第一个是默认的构造函数,第二个是要拿一个字符串当参数的,因此,你可以在异常中放入一些相关的信息。

关键词throw会引发许多很神奇的事情。通常情况下,你会先用new来创建一个表示错误条件的对象。然后再把这个对象的reference交给throw。虽然这个对象不是方法设计要返回的那种对象,但实际上,方法还是返回这个对象。有一种理解异常处理的简化思路,就是把它想成一种不同的返回机制。但是这种想法别走得太远,否则就有麻烦了。你也可以用抛异常的方法从方法的作用域里退出。总之,它会返回了一个值,并且退出了方法或作用域。

[阅读全文]
11次浏览 0条评论 异常  参数  

异常处理的模型

zhushican | 建站教程 | 2014年8月14日

理论上将异常处理划分成两种基本模型。中止模型假定错误是如此的严重,以至于你没办法再回到错误发生的地方。也就是说,这段程序经过判断认为,它已经没有办法挽回这个局势了,于是只能抛出异常,并且希望这个错误别再回来。还有一种被称为“继续”,它的意思是,异常处理程序应能做些什么以修补当前的运行环境,然后重新尝试上次出错的那个方法,它假设第二次能获得成功。继续的意思是,处理完异常之后,你仍然希望能继续运行当前的指令。在这种情况下,异常更像是在调用方法——如果你想在Java中得到类似的效果,可以用这个办法来设置运行环境。

[阅读全文]
7次浏览 0条评论 异常  处理  模型  

匿名内部类

zhushican | 建站教程 | 2014年8月14日

方法将返回值的创建与表示这个返回值的类的定义,结合在了一起。此外这个类是匿名的,它没有名字。更糟糕的是,看上去你创建的是一个contents对象。但是,等你看到分号的时候,你就会说,“慢,我是不是漏过了类的定义”。这种奇怪的语法所要表达的意思是:创建一个继承的匿名类的对象。New语句所返回的reference会自动的上传到contents。

这个匿名内部类是通过默认构造函数来创建contents的。如果基类所需要的是一个带参数的构造函数的话,那又该怎么做?匿名类最后的分号并不表示类的正文的技术。相反,它的意思是,这个包含匿名类的表达式结束了。因此,这个分号的作用同它在其它的地方的作用是完全相同。你也可以在定义匿名类的数据成员的时候进行初始化。

[阅读全文]
23次浏览 0条评论 匿名  内部  

网站编程的封装性

zhushican | 建站教程 | 2014年8月14日

封装型是面向对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:1、把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。2、信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。

封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的交叉感染,使软件错误能够局部化,大大减少查错和排错的难度。用了实例来说明吧,假如某个人的对象中有年龄和工资等属性,像这样个人隐私的属性是不想让其它人随意就能获得到的,如果你不使用封装,那么别人想知道就能得到,但是如果你封装上之后别人就没有办法获得封装的属性,除非你自己把它说出去,否则别人没有办法得到。我们通常使用private这个关键字来对属性和方法进行封装。

[阅读全文]
6次浏览 0条评论 网站  编程  封装性  

在方法和作用域里的内部类

zhushican | 建站教程 | 2014年8月14日

迄今为止,你已经看到了内部类的主要用法。通常,你所读写的,涉及到内部类的程序,都是些简单易懂的“很平常的”内部类。但是内部类的设计是相当完善的,还有很多别的,不太为人所知的用法可供选择;内部类可以被创建在方法内部,甚至是任意一个作用域里。这么做有两个理由:1、你在实现某个接口,这样你才能创建并且返回这个接口的reference。2、你正在处理一个复杂的问题,需要创建一个类,但是又不想让大家都知道还有这么一个类。

接下来,我们会这样修改程序:1、在方法的内部定义一个类。2、在方法的某个作用域里定义一个类。3、一个实现了某个接口的匿名类。4、一个继承了某个有着非默认构造函数的类的匿名类。5、一个进行数据成员初始化的匿名类。6、一个通过实例初始化(匿名内部类不能有构造函数)来进行构建的匿名类。一个带参数的构造函数,这是为了让事情变得更有趣一点。在方法的作用域里(而不是另一个类的作用域里)创建一个完整的类,这被称为本地内部类。

[阅读全文]
12次浏览 0条评论 方法  作用  内部类  

网站建设中的Class对象

zhushican | 建站教程 | 2014年8月14日

想要知道Java的RTTI是如何工作的,你就必须首先知道程序运行的时候,类型信息是怎样表示的。这是由一种特殊的,保存类的信息的,叫做“class对象”的对象来完成的。实际上类的常规对象是由class对象创建的。程序里的每个类都要有一个class对象。也就是说,每次你撰写并且编译了一个新的类的时候,你就创建了一个新的class对象(而且可以这么说,这个对象会存储在同名的.class文件里)。

程序运行时,当你需要创建一个那种类的对象的时候,JVM会检查它是否装载了那个class对象。如果没有,JVM就会去找那个.class文件,然后装载。由此也可知道,Java程序在启动的时候并没有完全装载,这点同许多传统语言是不一样的。

[阅读全文]
11次浏览 0条评论 网站  建设  Class对象  
回顶部