标签:
转自:http://www.cnblogs.com/liaowanzhong/p/5143692.html
1. HTML5是以后前端编程的趋势,因为它封装了html4+CSS+JavaScript,可以提升了编程开发效率。但是并不代表CSS和Js就可以不学习,当你明白了编程语言底层的原理之后对程序员的编写的程序的健壮性和出错调试都很有帮助。
a) CSS的作用就是给html标签的属性赋自定义的初始值,完成对页面文档流的渲染效果。
b) Js的作用就是给html页面添加动态的特效,使静态的页面有动态的交互效果,增加用户体验。
c) 其实前端编程是经过各种底层封装之后的软编码编程,就像是写配置文件一样,是可插拔式的。在Java的项目中进行编译之后服务端的功能代码是会被编译成字节码文件,而客户端的代码还是以编译之前的文件格式存在,是可以进行动态修改。这种效果就像零件的更换一样,不符合要求的时候是可以进行更换,所以叫作可插拔式的软编码编程。
d) 它们底层都是基于类和对象。Html标签就是经过设计封装好了的各种实体对象,CSS文件的作用就是给相应的文件标签的属性进行初始化值,Js文件的作用就是前端文档流的各种动态交互效果功能的实现。细想这种模式和服务端编程的MVC设计模式是一样的,只不过前端不用进行实体建模设计这一比较有难度的工作。
3. 栈是机器系统的提供的数据结构,而堆则是C/C++库函数提供的。--网络
4. 线程是程序运行的基本单位,线程的数据存储结构是栈和堆。一般栈中存储的是基本数据类型,全局变量,静态变量,常量,而堆中存储的是实例化对象的初始数据。
a) 因为栈的内存是系统提供的,即静态内存,一般提供的内存大小为2M,所以能够对占用内存较小的数据进行入栈和出栈。栈的内存回收由操作系统进行,无需要程序员干涉。
b) 动态内存是程序员自己自定义给实例化的对象分配内存,调用C/C++的内存分配函数。堆的内存大小一般是计算机虚拟内存的大小,一般为4G,所以可以对实例化的大对象进行数据存储。在C++中需要程序员自己对动态分配的内存进行回收,而先更高级的语言如Java和C#是由垃圾回收器自动对空引用的对象进行内存回收。
c) 因 为栈中的内存分配和回收是由操作系统进行的,是用数组和指针对数据进行存储的,所以效率较高。动态分配内存是以链表的数据结构进行的,而且在给对象分配内 存的时候是需要有搜索算法,即特定大小的未分配数据的内存块的搜索,如果没有特定的内存块就应该自行增加新内存空间,因此效率较栈会更低。
d) 它们相互依存,各有千秋,不可或缺。
e) 堆的数据结构图:
g) 栈帧的数据结构:
标签:
原文地址:http://www.cnblogs.com/rechen/p/5143831.html