B/S中我们一直在学习关于web前端的一些东西,而久闻大名的Ajax今天我也终于遇上了,但是还不是很了解。所以搜集整理出以下博文,如有错误,欢迎抛砖。
一、是什么
1)AJAX全称为“Asynchronous JavaScript andXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
2)主要包含了以下几种技术
Ajax(AsynchronousJavaScript + XML)的定义
基于web标准(standards-basedpresentation)XHTML+CSS的表示;
使用 DOM(Document ObjectModel)进行动态显示及交互;
使用 XML 和 XSLT进行数据交换及相关操作;
使用 XMLHttpRequest进行异步数据查询、检索;
使用 JavaScript将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文。
类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
3)AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、InternetExplorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式对象,也不支持XSLT。
二、同步和异步的理解:
同步和异步首先以一个吃饭的例子做出如下解释:
同步:我喊你吃饭,你不回答我就会一直喊你,直到你回复我:要么和我一起吃(咱们两个一起去),要么让我先去吃;但不管是一起还是分开吃,我都是得到了你的回复的,确保你真的接收到了我叫你吃饭的这个邀请。所以同步是一定得到回复的,这也就是所谓的单线程。
就像我们在机房收费中的更新充值表中的信息:U层必须等待Facade传回的值,只有接收到true的返回值,整个操作才算完成,充值的相关信息才能显示在窗体中的List控件中,这就是我们经历的典型的同步的例子。
异步:同样是我喊你吃饭,我喊了不管是你听没听见,反正我喊你了,我没有一定要等着你答复我,我就去吃饭了。因此,我没必要收到你的回复后才执行我吃饭这个操作。也就是多线程。
而这个异步就是之前软考中的PV操作,工作人员只管蒸馒头(假设没有超过馒头数量的限制),那么工人不必非要等着消费者把我蒸好的馒头吃掉我才继续蒸馒头,所以工人只是一直处于蒸馒头的状态。
三、线程
度娘给出的解释:线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
那么可不可以这样理解:单线程相当于一个人执行某一项任务,从开始到结束都是自己一个人:自己分析需求->自己建立模型->自己设计实施->自己测试。也就是我们之前的机房收费系统个人重构版。
但多线程就不是这样了:同样是机房收费系统,整个生命周期不再是我们自己孤军奋战,而是加入其他人,将系统进行分工。比如A同学分析需求 + 设计原型 + 测试;B同学开发 + 完善文档;C同学:测试 + 维护;此时我们对机房收费系统执行的就是一个多线程,也就是我们做的机房收费系统合作版。
这样一来,单线程和多线程就简单明了了,但纯属个人见解,如有差池,欢迎指教!