什么是模块解析

首先。你要明白http模块四个类是干嘛的,http四大类:http.ClientRequest 类http.Server 类http.ServerResponse 类,http.IncomingMessage 类.

两个关键函数

request :这是客户端专用的创建http会话的工具。他的回调函数其实就是response事件的回调函数。但是这个回调函数接受的参数是incomingmessage,这个英语很形象,来电信息,那么我们就知道这是从服务器传进来的,然后,我们就可以利用incomingmessage里面的工具,对他进行反馈。

createserver,就是服务器专用的工具函数了,他的回调函数其实是触发了http.server类里的request事件。他的req接受的是incomingmessage,来电信息,对于服务器而言你客户端就是来电信息。同样服务器需要发话。它用的就是serverresponse类发送会话处理的。那么服务器一个接受信息后,用incoming来处理,发送用serresponse进行处理。

然后server类是对服务器本身进行服务拓展。clientResponse是客户端自身处理,还有对服务器进行发送信息,进行处理。

  • http.Server 类:仅仅对服务器本身能力。不对发送信息进行处理。也不对接受信息进行处理。
  • http.ClientRequest类:对客户端本身能力,也对发送信息进行处理。但不对接受的信息进行处理。(触发close事件,也是在request内部设定好了。)
  • http.ServerResponse 类:服务器对发送信息进行处理。
  • http.IncomingMessage 类.:客户端和服务端的接受信息处理类。

所以,你可以把http的客户端和服务端分成三部分,一部分;本身。一部分:发送会话处理。最后一部分:接受会话:处理。

举例理解

假设,我先打开服务器

1.服务器的listen方式就开始执行了。创建服务器,但是不使用回调函数,回调函数要等客户端发送信息。request事件。

2.客户端开始链接。他就是一个tcp包装过的,但是他的回调函数(response),也要等服务器发送信息。先出发soket事件。然后,可以使用clientresponse中的一些函数进行传送信息。主要两个(write和end,write发送信息,触发服务器data事件。end,触发服务器的end事件。)

3.服务器的request事件,接受到了信号。对req,来自客户端。用incoming进行加工。根据data事件和end事件。

然后发送信息,使用serverresponse。end和write相同的触发的是客户端的事件。要交互吗。客户端和服务器。

接受到信息后触发end事件过后,那么这个会话他就结束了。

线程和进程区别

线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。

根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

  • 资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

  • 包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

  • 影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

  • 执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

CPU运行的本质?

CPU 是由许多晶体管组成的电子部件,从功能方面上来看,CPU 内部由寄存器,控制器,运算器和时钟四个部分组成,他们各自的功能如下:

寄存器:可以用来暂存指令、数据等处理对象。

控制器:负责把内存上的指令读入寄存器,并根据指令的执行结果来控制整个系统。

运算器:运算器负责运算送入运算器的数据

时钟:负责发出 CPU 开始计时的时钟信号,CPU 在时钟信号的驱使下才能工作。

所以 CPU 的工作流程是根据 PC 指针寄存器存储的下一条即将执行的指令的地址,使得指令存储器中的指令能够有序的进入指令寄存器,然后,控制单元从指令寄存器中取得相应的指令,并对其进行指令解析,判断当前指令要执行的操作,以及根据指令解析的内容控制逻辑运算单元操作数的来源和逻辑运算单元运算结果的存储位置,从而完成指令要求 CPU 执行的运算。

主流浏览器和版本

一、浏览器的结构:
① 用户界面(UI):包括菜单栏、工具栏、地址栏、后退/前进按钮、书签目录等,也就是能看到的除了显示页面的主窗口之外的部分;

② 浏览器引擎(Rendering engine):也被称为浏览器内核、渲染引擎,主要负责取得页面内容、整理信息(应用CSS)、计算页面的显示方式,然后会输出到显示器或者打印机;

③ JS解释器:也可以称为JS内核,主要负责处理javascript脚本程序,一般都会附带在浏览器之中,例如chrome的V8引擎;

④ 网络部分:主要用于网络调用,例如:HTTP请求,其接口与平台无关,并为所有的平台提供底层实现;

⑤ UI后端:用于绘制基本的窗口部件,比如组合框和窗口等;

⑥ 数据存储:保存类似于cookie、storage等数据部分,HTML5新增了web database技术,一种完整的轻量级客户端存储技术。

注:IE浏览器只为每个浏览器窗口启用单独的进程,而chrome浏览器却为每个tab页面启用单独的进程,也就是说每个tab都有独立的渲染引擎实例。

IE浏览器(Internet explorer)2、火狐浏览器(Firefox)3、谷歌浏览器(Chrome)4、苹果浏览器(Safari)5、欧朋浏览器(Opera)

1、Trident 代表作:IE

介绍:元老级内核之一,由微软开发,并于1997年10月首次在ie 4.0中使用,凭借其windows垄断优势,Trident市场占有率一直很高。然而垄断并非,没有竞争就没有进步,长期以往,Trident内核一度停滞不前,更新缓慢,甚至一度与W3C标准脱节。2011年,从ie 9开始,Trident开始支持HTML5和CSS 3,因此我们也经常会看到有些网站在浏览时会提示用户(在Internet Explorer 9.0+以上浏览效果最佳)。前端程序员做浏览器兼容一般也不再会考虑ie 8之前的浏览器了。

2、Gcko 代表作:Mozilla 火狐

介绍:元老级内核之一,由Netscape公司Mozilla组织开发。1998年,Netscape在于IE浏览器竞争失利之后,成立了非正式组织Mozilla,由其开发新一代内核,后命名为“Gecko”。FireFox也是这班人开发出来了,因此这也就是Mozilla一直使用的内核。

Gecko的特点是代码完全公开,因此其开发程度很高,全世界的程序员都可以为其编写代码,增加功能。

3、Webkit 代表作:Safari苹果 & 谷歌旧版本

介绍:这是苹果公司开发的内核,也是其旗下产品Ssfari浏览器使用的内核。Webkit引擎包含了WebCode排版引擎和JavaScriptCode解析引擎,分别是从KDE的KHTML和KJS衍生而来,它们都是自由软件,在GPL条约下授权,同时支持BSD系统开发。

Chrome、360极速浏览器以及搜狗高速浏览器也使用Webkit作为内核(在脚本理解方面,Chorome使用自己研发的V8引擎)。

4、Blink 代表作:谷歌 & Opera

介绍:这是由Google和Opera Software开发的浏览器排版引擎,Google计算将这个渲染引擎作为Chromium计划的一部分,并且在2013年4月公布了这一消息。这一渲染引擎是开源引擎Webkit中WebCore组件的一个分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)浏览器中使用

兼容性测试的测试点

1.测试软件是否能在不同的操作系统平台上兼容,或测试软件是否能在同一操作平台的不同版本上兼容

2.软件本身能否向前或向后兼容

主要指的是能否兼容不同版本的数据

3.测试软件能否与其他相关的软件兼容

例如杀毒软件,文字处理软件,办公软件之间的兼容性

4.被测软件与标准外设的兼容

例如打印机

5.程序与运行支撑平台版本之间的兼容性

例如是否可以兼容不同的JDK版本,或不同的framework版本等

6.程序与应用服务器之间的兼容性

是否支持不同的应用服务器产品,或支持同一应用服务器的不同版本

7.各个浏览器之间的兼容性

主要是指的B/S架构中,与浏览器各种内核之间的兼容性问题

8.各种屏幕分辨率之间的兼容性

9.不同的网络环境中的兼容性

10.数据库之间的兼容性

不同的数据库之间的数据迁移问题

11.不同版本程序数据文件之间的兼容性

同一数据库在不同版本的软件上是否能够迁移

12.整机的兼容性

例如在本机能安装使用,在其他配置机器能否正常使用

13.其他软件的数据兼容性

即别的软件中的数据文件能否经进行处理

14.低版本软件生成的文件,高版本软件是否能够打开

15.如果是C/S系统,能否支持低版本的客户端程序访问高版本的服务器端或者是否支持高版本的服务器端程序访问低版本的服务器端

16.如果是C/S系统,是否允许不同版本的客户端与同一个服务器进行通信

17.如果是C/S系统,是否允许不同版本的客户端之间进行通信

18.当前软件系统生成的文件或数据是否可以在其他软件中被打开

19.是否支持同时安装或运行两个不同版本的软件

20.不同版本的软件系统是否能够支持以往的数字证书或硬件加密狗等安全校验文件

21.新版本的系统是否和老的应用插件相兼容

浏览器的兼容性测试基础知识相关推荐

  1. 测试岗位面试前复习之【测试基础知识篇】

    测试基础知识篇 一.app测试相关 1.android与ios的app测试的区别: 2.app测试和web测试的重点: 3.性能测试考量的指标: 4.app的性能测试,需要重点关注哪些方面? 5.站在 ...

  2. 软件测试整理一:测试基础知识以及开发、测试模型、按照开发阶段进行测试

    文章目录 一.基础概念 1.什么是软件测试 2.软件测试的目的 3.软件测试的原则 4.软件测试的分类 4.1 按照开发阶段分类 4.2 按照软件特性分类 4.3 按照测试技术分类 4.4 按照测试运 ...

  3. 软件测试52讲 - 笔记(一)- 测试基础知识

    测试基础知识 01 | 你真的懂测试吗?从"用户登录"测试谈起 总结 案例 功能 测试用例 基础功能用例(基于等价类和边界值设计) 可添加功能用例(经验型) 安全性用例 性能用例 ...

  4. web端兼容性测试相关知识

    web兼容性测试相关知识 一.客户端兼容性 1.浏览器的兼容性测试 a.内核角度 Tridnt内核:代表作IE.腾讯.遨游.世界之窗等 Gecko内核:代表作Firefox webkit内核:代表作S ...

  5. JMeter-01-性能测试基础知识介绍

    JMeter-01-性能测试基础知识介绍 开篇词 性能测试常见分类 Web服务的主要指标 前端页面的主要指标 数据库的主要指标 开篇词 参加工作这些年来,性能测试做过不少,主要用的LoadRunner ...

  6. Selenium Grid跨浏览器-兼容性测试

    Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...

  7. 视频测试基础知识--视频算法DMOS和PPSNR--视频参考与无参考测试介绍

    视频测试基础知识--视频算法DMOS--视频参考与无参考测试介绍 测试则从传统的静态.单帧像分析,转换为动态测试.图像质量分析. 虽然单帧像分析可提供信号定时.色深.线条同步化,以及更多有用信息,但压 ...

  8. 【兼容性测试】浏览器的兼容性测试从哪些方面入手?

    1.了解当前主流浏览器,挑选3-5个左右的浏览器进行兼容性测试 2.同浏览器的不同版本兼容性测试(一般测试最新版本) 3.检查界面元素的位置是否正确,与业务功能交互是否正常,排版布局是否合理美观 4. ...

  9. 在线html 浏览器,web浏览器在线兼容性测试工具_检测html网页在不同浏览器上的兼容问题...

    对于web前端开发者而言,为了确保html代码在不同浏览器上能正常工作,是一件很麻烦的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,下面就为大家推荐一下比较流行的web浏览器在线兼容性测 ...

最新文章

  1. Java基础07 包
  2. LetCode: 227. 简单计算器2
  3. 【Linux】13_ 文件查找
  4. http和https的一种能力?
  5. find 是区分大小写的。对于不区分大小写的写法(转载)
  6. 英伟达DALI加速技巧:让数据预处理速度比原生PyTorch快4倍
  7. leetcode957. Prison Cells After N Days
  8. android bin目录是什么,android bin目录下的.ap_是神马文件?
  9. UVA10152 ShellSort【匹配】
  10. IonIcons图标大全
  11. Smartbi:水泥行业实现数字化转型升级势在必行
  12. HTTP Referer 教程
  13. MySQL导入mdx_浅谈MDX数据库
  14. Nova Battles是2022年值得关注的链游
  15. cplex小白感悟—前言
  16. 深度粗排模型的GMV优化实践:基于全空间-子空间联合建模的蒸馏校准模型
  17. vrrp协议和master路由器
  18. Linux 是洗衣粉 关于Linux 的10个趣事
  19. 错误代码: 1054 Unknown column 'course' in 'field list'
  20. java.lang.inc,Java 字符串的拼接详解

热门文章

  1. 页面置灰filter: grayscale(1)
  2. 【汇编】AT89C52点亮一盏LED灯(汇编语言)
  3. 7.1.5 智慧物流【车辆监控Structured Streaming、整合kafka、Redis、Mysql、HBASE 写入数据】
  4. java微信群自动回复_功能强大,手机微信群控系统和云控哪个好?
  5. 鲸探发布点评:8月9日发售《和为贵》数字藏品
  6. Go 异常捕获处理: panic(err) 与 recover()
  7. juniper 认证学习、报名地址汇总
  8. 亚信科技2019届实习生招聘笔试题(前端)
  9. AFLA深度学习外观检测自学习人工智能软件
  10. 【底软】NANDFlash与NORFLASH