一、算法 + 数据结构 = 程序

程序=数据结构+算法是由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 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

JavaScript原始基础的更多相关文章

  1. JavaScript编程:javaScript核心基础语法

    1.javaScript核心基础语法: javaScript技术体系包含了5个内容:          1.核心语言定义:          2.原生对象和雷子对象:          3.浏览器对象 ...

  2. JavaScript的基础学习

    由js和python想到的: 弱类型语言 js 中的数据在进行算数运算时,会自动转换类型强类型语言 变量的值的数据类型一旦确定,使用时不能改变 动态语言:编译时不知道数据类型,只有在执行时才知道数据类 ...

  3. 三丶JavaScript 的基础学习(一)

      知识预览 BOM对象 DOM对象(DHTML) 8 实例练习 JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言 ...

  4. JavaScript 的基础学习(一)

    JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...

  5. JS基础---->javascript的基础(一)

    记录一些javascript的基础知识.只是一起走过一段路而已,何必把怀念弄的比经过还长. javascript的基础 一.在检测一个引用类型值和 Object 构造函数时, instanceof 操 ...

  6. JavaScript的基础学习(一)

    一.JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase ...

  7. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

  8. 前端面试的那些事儿(1)~JavaScript 原始数据类型

    前言 自我总结面试常问的一些细节,方便不断回顾与补充.第一次发表文章,如有问题或不足之处望及时指出. JavaScript 原始数据类型 1.1 基础数据类型 7大基础数据类型 boolean nul ...

  9. JavaScript RegExp 基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...

随机推荐

  1. Codeforces Round #358 (Div. 2) D. Alyona and Strings dp

    D. Alyona and Strings 题目连接: http://www.codeforces.com/contest/682/problem/D Description After return ...

  2. hdu 4163 Stock Prices 花式排序

    Stock Prices Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  3. MySQL内核整理(一)

    一.在共享表空间(系统表空间)中,innodb会维护一些系统信息:1.Internal data dictionary2.Rollback segments3.undo space4.insert b ...

  4. Maven使用(转)

    说明:文章转自http://www.cnblogs.com/JeffreySun/archive/2013/03/14/2960573.html 创建project 先去官方网站下载一个最新版本htt ...

  5. saga中的saga(A Saga on Sagas)

    此文翻译自msdn,侵删. 原文地址:https://msdn.microsoft.com/en-us/library/jj591569.aspx Process Managers, Coordina ...

  6. USB Mass Storage Class – Bulk Only Transport - Error Handling

    6.4 Device Error Handling The device may not be able to fully satisfy the host's request. At the poi ...

  7. 免费的Bootstrap管理后台模板集合

    Free Bootstrap Admin Templates for Designers 1. Admin Lite AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3的框架.高 ...

  8. 相比xib 使用代码编排view 的一个明显的好处就是可以更好地重复使用已有代码,减少代码冗余。

    相比xib 使用代码编排view 的一个明显的好处就是可以更好地重复使用已有代码,减少代码冗余.

  9. Selenium2+python自动化44-元素定位参数化(find_element)

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  10. 如何让两个div并排,并且div要看得见边框

    <div style="float:left; width:100px; height:100px; border:2px solid #0000FF;"></d ...