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

程序=数据结构+算法是由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. hdu 1150 Machine Schedule 最少点覆盖

    Machine Schedule Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  2. 恢复二进制文件中的block符号表

    前篇博客中,使用 杨君的小黑屋 提供的工具恢复二进制文件的符号表,只恢复了函数的符号表,本篇讲述如何恢复block符号表,杨君的博客中使用IDA分析二进制文件,本篇则使用MacOS系统上体验也不错的H ...

  3. 解决IE11下载文件 文件名乱码问题

    1.Win + R输入gpedit.msc打开组策略编辑器:(不会请看下图) 2.定位到计算机配置→管理模板→windows组件→Internet Explorer→自定义用户代理字符串(有些系统用的 ...

  4. 重温PHP之插入排序

    插入排序基本思路:将数组分为两个区(已排序区和未排序区),假定数组的第一个元素处于已排序区, 第一个元素之后的所有元素都处于未排序部分.排序时用到双层循环,外层循环用于从未排序部分中取出待排序元素,并 ...

  5. 【leetcode】sort list(python)

    链表的归并排序 超时的代码 class Solution: def merge(self, head1, head2): if head1 == None: return head2 if head2 ...

  6. C# 标签(条码)的打印与设计(二)

    上一篇说到条码的打印,主要是通过读取模板定义文件(XML文件),然后结合从数据库中读取的动态数据结合而产生条码.下面主要说一下如何设计这个条码模板.设计过程也很简单,只需要简单的拖拉即可.然后点击小箭 ...

  7. 栅栏加解密python实现(支持密钥加密)

    栅栏加解密是对较短字符串的一种处理方式.给定行数Row,依据字符串长度计算出列数Column,构成一个方阵. 加密过程:就是按列依次从上到下对明文进行排列,然后依照密钥对各行进行打乱.最后以行顺序从左 ...

  8. Spring+Quartz 集群

    这几天给Spring+Quartz的集群折腾得死去活来,google了无数页总算搞定,记下一些要点备以后使用. 单独的Quartz集群在http://unmi.blogjava.net/有Unmi翻译 ...

  9. 通过@Value注解读取.properties配置内容

    @Controller @RequestMapping("/value") public class ValuePropertyController extends Applica ...

  10. bat薪酬

    三大互联网巨头公司,百度腾讯跟阿里如何划分级别?薪资待遇又有多少?除非身居其位,否则很难探知,但是等你到那个位置知道了,却又不能说,至少不能在公 开场合谈论.接下来就为大家揭秘,百度.阿里与腾讯内部的 ...