1:Nodejs
1:在传统的web服务器中(比如Apache),每一个请求都会让服务器创建一个新的进程来处理这个请求。
2:有了Ajax,我们就不用每次都请求一个完整的新页面了,取而代之的是,每次只请求需要的部分页面信息就可以了。
3:HTTP请求不是持续的连接,你请求一次,服务器响应一次,然后就完了。长轮训是一种利用HTTP模拟持续连接的技巧。具体来说,只要页面载入了,不管你需不需要服务器给你响应信息,你都会给服务器发一个Ajax请求。这个请求不同于一般的Ajax请求,服务器不会直接给你返回信息,而是它要等着,直到服务器觉得该给你发信息了,它才会响应。
4:非阻塞的服务器想象成一个loop循环,这个loop会一直跑下去。一个新请求来了,这个loop就接了这个请求,把这个请求传给其他的进程(比如传给一个搞数据库查询的进程),然后响应一个回调(callback)。完事了这loop就接着跑,接其他的请求。这样下来。服务器就不会像之前那样傻等着数据库返回结果了。
5:服务器只在用户那边有事件发生的时候才响应,这就是事件驱动。
6:WebSocket未来应用很广
WebSocket的结论如下:
基于TCP/IP协议实现
是一种全双向的通信, 具有底层socket的特点
节约带宽,节省服务器资源
是HTML5的技术之一,具有巨大的应用前景
2:浏览器如何完成网页渲染
1.1基本过程
首先,我们回顾一下网页渲染时,浏览器的动作:
1、根据来自服务器端的HTML代码形成文档对象模型(DOM)。
2、加载并解析样式,形成CSS对象模型。
在文档对象模型和CSS对象模型之上,创建一棵由一组待生成渲染的对象组成的渲染树(在Webkit中这些对象被称为渲染器或渲染对象,而在Gecko中称之为“frame”。)渲染树反映了文档对象模型的结构,但是不包含诸如标签或含有display:none属性的不可见元素。在渲染树中,每一段文本字符串都表现为独立的渲染器。每一个渲染对象都包含与之对应的DOM对象,或者文本块,还加上计算过的样式。换言之,渲染树是一个文档对象模型的直观展示。
对渲染树上的每个元素,计算它的坐标,称之为布局。浏览器采用一种流方法,布局一个元素只需通过一次,但是表格元素需要通过多次。 最后,渲染树上的元素最终展示在浏览器里,这一过程称为“painting”。
当用户与网页交互,或者脚本程序改动修改网页时,前文提到的一些操作将会重复执行,因为网页的内在结构已经发生了改变。
1.2Repaint(重绘)
当改变那些不会影响元素在网页中的位置的元素样式时,譬如background-color(背景色), border-color(边框色), visibility(可见性),浏览器只会用新的样式将元素重绘一次(这就是重绘,或者说重新构造样式)。
1.3Reflow(重排)
当改变影响到文本内容或结构,或者元素位置时,重排或者说重新布局就会发生。
这些改变通常由以下事件触发:
1、DOM操作(元素添加、删除、修改或者元素顺序的改变);
2、内容变化,包括表单域内的文本改变;
3、CSS属性的计算或改变;
4、添加或删除样式表;
5、更改“类”的属性;
6、浏览器窗口的操作(缩放,滚动);
7、伪类激活(悬停)。
8、浏览器如何优化渲染?
3:Navicat
查看安装路径:
Select @@basedir
4:Eclipse更换工作空间,配置保持不变