一、算法 + 数据结构 = 程序 程序=数据结构+算法是由N.Wirth(沃斯)提出来的。 程序是计算机指令的某种组合,控制计算机的工作流程,完成一定的逻辑功能,以实现某种任务; 数据结构指的是数据与数据之间的逻辑关系。具有两个层面上的涵义--逻辑结构和物理结构; 算法指的是解决特定问题的步骤和方法。是程序的逻辑抽象,是解决某类客观问题的数学过程; |
二、堆栈=堆+栈 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序 堆的特性-低地址-值类型 1、顺序随意 2、堆可以被看成是一棵树,如:堆排序 3、一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表 4、堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定,通常是用来存放对象,调用这些对象的速度要相对来得低一些 5、堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便 6、堆的大小受限于计算机系统中有效的虚拟内存,堆获得的空间比较灵活,也比较大 栈的特性-高地址-引用类型 1、后进先出(Last-In/First-Out) 2、由编译器自动分配释放 ,存放函数的参数值,局部变量的值等 3、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放 4、栈由系统自动分配,速度较快,但程序员是无法控制的 5、存在栈中的数据可以共享 6、栈顶的地址和栈的最大容量是系统预先规定好的,如果申请的空间超过栈的剩余空间时,将提示overflow,栈获得的空间较小。
|
三、编译器、编辑器、解释器 编译器 1、编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序 2、编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。 源代码一般为高级语言 (High-level language), 如Pascal、C、C++、C#、Java等, 目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。 编辑器 1、编辑器是软体程序,一般是指用来编辑电脑文档案的编写软件。例如:Microsoft Word 解释器 1、解释器是能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法。但是相对的这个直译的行为会比编译再运行来得快。 2、解释器运行程序的方法有: 1).直接运行高级编程语言 (如 Shell 自带的解释器) 2).转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码(如:Ruby) 3).以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序(如:JIT) |
四、JAVASCRIPT=ECMA+DOM+BOM 1、JavaScript是什么 JavaScript 是一种具有面向对象能力的、解释型的程序设计语言。更具体一点,它是基 于对象和事件驱动并具有相对安全性的客户端脚本语言。因为他不需要在一个语言环境下运 行,而只需要支持它的浏览器即可。它的主要目的是,验证发往服务器端的数据、增加 Web 互动、加强用户体验度等。 2、JavaScript 特点 1)、松散性 JavaScript 语言核心与 C、C++、Java 相似,比如条件判断、循环、运算符等。但,它 却是一种松散类型的语言,也就是说,它的变量不必具有一个明确的类型。 2)、对象属性 JavaScript 中的对象把属性名映射为任意的属性值。它的这种方式很像哈希表或关联数 组,而不像 C 中的结构体或者 C++、Java 中的对象。 3)、继承机制 JavaScript 中的面向对象继承机制是基于原型的,这和另外一种不太为人所知的 Self 语 言很像,而和 C++以及 Java 中的继承大不相同。 3、JavaScript 历史 1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第 39 技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法 和语义”。由来自 Netscape、Sun、微软、Borland 和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了ECMA-262,该标准定义了叫做 ECMAScript 的全新脚本语言。 4、JavaScript 实现 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: • 核心(ECMAScript) • 文档对象模型(DOM) • 浏览器对象模型(BOM) ECMAScript 描述了该语言的语法和基本对象; DOM 描述了处理网页内容的方法和接口; BOM 描述了与浏览器进行交互的方法和接口; |
五、ECMAScript ECMA-262 标准: ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的 Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。 ECMAScript 描述了以下内容: • 语法 • 类型 • 语句 • 关键字 • 保留字 • 运算符 • 对象 ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样: 每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host, WSH)、Macromedia 在 Flash 和 Director MX 中的 ActionScript,以及 Nombas ScriptEase。 ECMAScript 符合性 在 ECMA-262 中,ECMAScript 符合性(conformance)有明确的定义。一个脚本语言必须满足以下四项基本原则: • 符合的实现必须按照 ECMA-262 中所描述的支持所有的“类型、值、对象、属性、函数和程序语言及语义” • 符合的实现必须支持 Unicode 字符标准(UCS) • 符合的实现可以增加没有在 ECMA-262 中指定的“额外类型、值、对象、属性和函数”。ECMA-262 将这些增加描述为规范中未给定的新对象或对象的新属性 • 符合的实现可以支持没有在 ECMA-262 中定义的“程序和正则表达式语法”(意思是可以替换或者扩展内建的正则表达式支持) 所有 ECMAScript 实现必须符合以上标准。 |
六、DOM DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。 DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。 DOM Level 2 引入了几种 DOM 新模块,用于处理新的接口类型: • DOM 视图 - 描述跟踪文档的各种视图(即 CSS 样式化之前和 CSS 样式化之后的文档) • DOM 事件 - 描述事件的接口 • DOM 样式 - 描述处理基于 CSS 样式的接口 • DOM 遍历和范围 - 描述遍历和操作文档树的接口 |
七、BOM BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括: • 弹出新的浏览器窗口 • 移动、关闭浏览器窗口以及调整窗口大小 • 提供 Web 浏览器详细信息的定位对象 • 提供用户屏幕分辨率详细信息的屏幕对象 • 对 cookie 的支持 • IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象 由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。 |