Tomcat服务器入门详解_null_技术课程_开发者学堂

阿里云
为了无法计算的价值
打开APP
阿里云APP内打开
开发者社区> 开发者学堂> 全部课程> Tomcat服务器入门详解

Tomcat服务器入门详解

8课时 |
591人已学 |
免费
课程介绍

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统下被普遍使用,是目前JavaEE开发使用的最主流的服务器之一 。

本课程作为Tomcat入门课程, 从Web基础、Tomcat的历史背景、安装配置及应用部署、负载均衡、Memcached和Msm、JVM等各个方面进行了详细的讲解,通过对本课程的学习,可以对Tomcat有一个较为全面的认识,并掌握Tomcat相关的安装配置及使用技巧。本课程由马哥教育提供。

WEB技术概述

 

目录:

一、WEB技术

二、HTML

三、CSS (Cascading Style Sheets)层叠样式表

五、浏览器

六、JavaScript

七、静态网页技术

八、动态网页技术

九、语言分类

十、常见语言

 

 

一、WEB技术

操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。

 

客户端和服务端往往处在不同的物理主机上,它们分属不同的进程,这些进程间需要通信。跨主机的进程间通信需要使用网络编程。最常见的网络编程接口是Socket。

 

Socket称为套接字,本意是插座。也就是说网络通讯需要两端,如果一端被动的接收另一端请求以提供计算和数据的称为服务器端,另端往往只是发起计算或数据的请求,称为客户端。

这种编程模式称为Client/Server编程模式,简称C/S编程。开发的程序也称为C/S程序。CS编程往往使用传输层协议(TCP/UDP),较为底层。

 

到1980年TCP/IP协议研发成功。1984年, 美国国防部将ARPA在内的所有军事网络全部使用TCP/IP协议。同年域名系统和DNS服务器诞生。IBM、 AT&T. DEC等公司陆续也加入到CP/IP阵营。1989年,加州大学伯克利分校在BSD中加入TCP/IP协议,产生了广泛的影响。微软从Windows 95开始支持。

 

1990年,HTML,基于TCP协议的HTTP协议、浏览器诞生。在应用层使用文本跨网络在不同进程间传输数据,最后在浏览器中将服务器端返回的HTML渲染出来。由此,诞生了网页开发。

网页是存储在WEB服务器端的文本文件,浏览器发起HTTP请求后,到达WEB服务程序后,服务程序根据URL读取对应的HTML文件,井封装成HTTP响应报文返回给浏览器端。

起初网页开发主要指的是HTML. CSS等文件制作,目的就是显示文字或图片,通过超级链接跳转到另一个HTML并显示其内容。

后来,网景公司意识到让网页动起来很重要,傍着SUN的Java的名气发布了JavaScript语言,可以在浏览器中使用S引擎执行的脚本语言,可以让网页元素动态变化,网页动起来了。

 

为了让网页动起来,微软使用AtiveX技术,SUN的Applet都可以在浏览器中执行代码,但都有安全性问题。能不能直接把内容直接在WEB服务器端组织成HTML,然后把HTML返回给浏览器渲染呢?

 

最早出现了CGI (Common Gateway Interface)通用网关接口,通过浏览器中输入URL直接映射到一个服务器端的脚本程序执行,这个脚本可以查询数据库并返回结果给浏览器端。这种将用户请求使用程序动态生成的技术,称为动态网页技术。

先后出现了ASP、PHP、 JSP等技术,这些技术的使用不同语言编写的程序都运行在服务器端,所以称为WEB后端编程。有一部分程序员还是要编写HTML. CSS,

JavaScript,这些代码运行在浏览器端,称为WEB前端编程。合起来称为Browser/Server编程, 即B/S编程。

 

tomcat 在企业级的应用当中是非常重要的,也是重点掌握的服务。tomcat,其实就是web开发。并不是讲解开发,而是去了解整个web的生态,以及web的概念,了解在web当中常碰到的技术有哪些,这些技术都能解决什么问题,各自都是什么样的技术栈。

 

首先学习的是web技术的发展,知道它的来龙去脉。

那么web技术在发展之前,从最早没有操作系统,到后来出现了单道处理程序,多道处理程序,到演化出现在所使用的现代操作系统,它有一个过程,但是现在的操作系统里面都提到了进程。

那在操作系统里面有进程的管理、进程系统和进程子系统,那么进程子系统是值得去关注的,因为所有的程序最后都会变成进程在运行。那么,进程和程序到底有什么区别,简单的讲,如果要特指程序的话,程序就指的是程序员写好的源代码,那是一个文本文件,这个文本文件就躺在磁盘上。它并不能直接运行。

看写的是C语言,还是go语言,还是python语言,或者写的是javascript都可以,或者java都行。总之写源代码,应该有一个编译或者叫解释的过程。

 

有这样的一个过程之后,源代码才能变成可以运行的东西。但是这个运行东西里面有很多变化。

不同的语言有不同的考虑,比如C语言要就地编译,要结合当前的这个编辑器,结合当前的cpu的指令集,结合当前操作系统系统的API环境,而生成一个可执行文件,对于Python来讲就不是了。Python和Java都是生成中间代码,然后运行在虚拟机之上。

不管怎么样最终都得有个运行环境。

JAVA叫JAVA解释器,PASSON叫PASSON的解释器或者叫PVMJVM等等,那对于像C语言编译完或像go语言编译完应该编译,可执行文件比如说在WINDOWS下,双击后会发现在进程管理器当中,多了一个进程。

 

源代码只是个文本文件,它并不能直接去运行它,而是运行在内存当中,可以认为当程序编译之后,运行之后,它就会在内存当中出现一个实例,这个实例是用来做进程管理的。所以如果要特指进程的话,它不过是这个可执行文件的一个在内存中的运行实例罢了,它需要开辟内存空间。它在这个内存空间去管理一系列的数据结构。

比如说管着端口,还管着文件描述符都需要在进程这个数据结构当中去管理。

学习操作系统原理时,会发现里面是一大堆的各种各样的表记录着各种各样的信息。所以躺在磁盘上那个东西,假如以EXCE这种可执行文件为例的话,它不过就是编译好的二进制的东西,就是零和一组合。

把这些东西加载到操作系统进行加载,从编译好的这些指令进去之后,要找到入口,然后把这个进程拉起来。

 

拉到内存当中,形成进程,这就是整个过程。所以进程是程序可执行文件的实例,是在内存中的实例。

 

对于进程作用,操作系统最早就是从进程开始的,进程和进程之间是隔离的,因为从单道处理程序开始,每一个进程都认为独占的整个的操作系统的资源,Cpu也是它的,端口都是它的,内存也都是它的。

其实内存从来都是共享的,内存一直以来都是虚拟化的。

 

网卡就是一个很好的案例。所以这些东西从一开始都是虚拟化,包括cpu都是共享使用。一开始就是虚拟化,只不过跟后来的虚拟化有一些差别了,什么叫虚拟化,就是把一个东西掰开了给多个用。把一个东西当多个东西来使用。

比如桌面机、虚拟机都是这样。一个操作要好几个操作系统,一起用,但cpu,如果是早些年就一个核心,别争别抢,一个一个来,所以运行的这些进程它就可以使用硬件资源,到底都是为了硬件资源。写软件就是为了合理地应用硬件,只不过有个操作系统,由操作系统帮助协调罢了。

在现代操作系统中,进程管理是非常重要的功能。在进程当中可能会有限制,不是所有的操作系统都有限成,但是在所遇到的现代操作系统当中是有现成的。其实要如果有线程的话,就记住一句话。真正干活的都是线程,如果是有线程,真正干活的是线程,进程的工作是什么呢?

资源管理,线程是真正干活的。进程是管理的程序,管理各个子线程,让这些子线程们互相能够协调工作。

 

进程更像是资源的申请和管理单位,线程才是真正的工作单位,进程之间更像是国与国,从操纵员发展史可以了解到,进程更像是国与国的关系。

 

进程之间通信的代价是比较高的,还得按照协议走,这个协议,说到底都是二进制的,把这个过程称为进程间通讯,而进程间通讯实际上到底层用的都是序列化与反序列化,代价非常高。

但是,同级进城之内的与线程之间的关系,描述为称为叫省与省的关系。国家就是进程,它是可以协调的。省与省之间,它们可以通过国家协调。但是直接要资源,是不可行的。所以线程也有独立的数据结构,也就是说它这个数据结构是不与其他线程共享的,一般称为叫线程的栈。每个线程至少有自己的栈,不一定非得自己堆,但是一定有自己栈,也就说在这个县城的栈当中,这些数据是独立的,并不与其他线程共享。

 

共享进程的资源,在这个进程内的线程,可以共享进程,那就是问国家要资源。理解线程之间交换数据的代价,以及进程和进程之间交换代价。单个进程资源有限,不得不再开一个节点,在那个节点上再去运行进程,也就是说跨进程通讯是实在是没办法了,不得已在另一个,甚至在另一个机器上再开进程了。那也就是说,有的时候进程和进程通讯不一定是在本机,甚至要跨机器,代价会更高。

 

在本机甚至在本进程内,应该是代价是最小的,因为根本就不需要出海关。但是如果跨进程是一定要走海关的。各种检查,还要谈判,还得有协议,还要做序列化,反序列化,所以代价会更高一些。如果跨节点,那就代价更高了,走互联网那就更慢了,这就是它的基本原则。注意跨进程,只要跨进程一定会牵扯到序列化与反序列化的话,不管走网络还是socket文件,只要是跨进球的代价就比较高。

 

掌握在进程和线程以及它们之间通信该如何优化的基本原则。

进程,认为自己就是一个国家,它能占的地盘都想占,认为整个硬件资源都是它的。然后它里面又起着很多线程,这些线程它要管理,要协调。然后线程,在它的管理和协调下执行项目。

 

cpu是来调度进程的,不如说实际上,是在调度线程的,因为线程才是真正干活的。比如说线程是怎么干活,其实线程就是写的函数。其实调度线程,调度的都是程序员写好的程序,就是函数。一个线程里面,其实就是跑一个函数,包括C语言,包括python都是如此,就是跑函数,所以函数才是最重要的。

 

可以不用面向对象,但是函数是跑不掉的,必须得用。

开发概念,非常的重要。cpu调度的实际上本质上是线程,但是说cpu是掰开用的,不光是线程里面的线程调度,还得跨进程调度其它进程的线程,觉得好像是齐头并进,其实如果是单核cpu的来讲的话,其实不是进齐头并进,它是假并行,它实际上是真串行。但是如果是多核cpu的话,那每个核心都可以调用不同的线程,这样的话可以存在某些时候下可以存在为真并行。

但是调度cpu的时候,因为cpu有缓存,Cpu有一级二级三级缓存,然后,在学习的时候就要说明cpu的亲缘性,cpu粘性。所以整个的这个进程和线程的调度过程,既有现代现代操作系统以后,就可以开始跨进程通讯了,这也是有必要的,但是,这个很早是很难完成的,只能在本机完成。

当时没有网络,后来发现多机需要互联,慢慢就产生了网络。这个网络的互联,大概产生在上世纪五六十年代,比较原始。当网络产生以后。这时候,程序员就得让他们之间进行网络通信。

但是当时的网络通信,因为网络没有标准,当时的标准还没成立。操作系统Cpu都没有通,Cpu指令集也是乱七八糟的。每一代型号都不一样。同一家的每一代都不一样,这就是早期遇到的问题。到后来个人PC发展起来,这个廉价的X86系统才慢慢占领桌面,现在有一种桌面又占领了服务器端市场。所以跨主机通信,慢慢的甚至在本机内使用网络通信,就流行起来了,做出贡献的应该是加州大学的伯克利分校。在salaries上面去加入了socket。

 

Socket是一种编程接口教编程接口,Socket的翻译叫套接字。

建立一个连接通道,这个连接通道就是Socket打的一个虚拟的通道,可以通行。所以socket的意思本身就是插座,它的作用就是为了让用户把它连接起来,就是两端都开辟插座,然后在这两端建立一个逻辑上的通道。逻辑通道要基于现在的网络系统,但是它并不限定网络协议,在提这个时候,并没有直接说,指定什么协议了,它是一种统一编程接口,要连接,总得有个身份标识,到TCPIP当中就变成了IP地址了,它是一种统一接口。

 

Io非常简单,Io里面就两个词,一个叫i,一个叫o。也就是说,不过就是一进一出,不过就是一来一回。现在所有网络通讯,包括跟外部开发,不管后面多么复杂,就是发个请求,给个响应,一来一回。io系统只能如此。是为了让用户拿到数据,搞得非常的复杂,它层次比较多,但是从这个浏览器角度来看,就发了个请求,然后回来。一来一回。网络通讯不过如此,但是要建立端到端的,当时编程不统一。伯克利分校,就提出了这个socket,把这个socket编程一提出之后,广受欢迎一直影响到今天,到今天为止,各操作系统都支持的网络开发编程底层全部都是socket编程。

 

Socket编程分两端,这两端本身无差别,对任何一端来讲,它发请求,回来了,再到另一端看发请求回来了。但是,从角色角度来看,就有主动和被动之分了。把那个能够被动地接收请求,并且能够提供内容或者提供数据的这一端,往往称为叫server端。把发起请求的这一端,往往是没有数据的,需要数据的这端。

 

把这端称为client,这就是著名的socket编程中的CS模式,叫client server模式。

client模式是用户遇到最多的,因为TCPIP已经占领了整个广域网和局域网。基于TCPIP,进行socket编程,这些是网络编程的主流编程。但是网络不仅仅是TCPIP协议,还有其他协议,但是目前局域网内也是这个协议。

 

这个协议,很早就开始往下发了,从最早的美国军方,到后来美国军方变成了阿帕网,就从阿帕网开始,开始大约是在八三年左右。整个研发成功以后,就开始整个铺开了,到八四年的时候,TCPIP就在美国军方的所有网络中全部使用TCPIP。就是TCPIP的早期的时候。然后,因为美国的大专院校都是要承接国防部的项目的,然后,大专院校也就全部的陆陆续续的,接入到了这个美国军方的网络当中,也就是说科研院校通过这个网络也连在了一起。

 

然后在这个年代,又出现了欧洲和美国的协议大战。七层模型这是欧洲想推的,美国说不行,已经连上了TCPIP,2个就打架了,到最后的结果,应该是TCPIP战胜了。

 

TCPIP跟七层模型有不太对等的映射关系,当时在设计的时候故意把网络层次做的简单化了。但是,不管后面有没有协议之争,最终胜利了,然后,胜利了之后,其实不是说想怎样就怎样,还是要有公司支持,那么当时it业最发达的几家大公司,大公司全部加入TCPIP。在这个前后就有欧洲的很多的这个院校,包括科研机构就连入了,其中有一个非常著名的机构,这个机构就是欧洲核子研究中心或者欧洲原子能机构,在瑞士。

 

所以,当时这个欧洲原子能机构,就接入了这个互联网。当时可能还没定名叫互联网,中国应该是在1994年左右中关村第一个连入互联网。终于可以跟世界说hello。中关村是第一个,那个时候网速只有可能64K。

 

伯克利分校在自己的BFD当中,加入了这个TCPIP,这是八九年左右的事情,基础就已经全部都有,后来Windows也加入这个阵营。

那么在互联网连入到这些科研机构之后,就有个人开始动脑筋了。1989年的时候,他破天荒地写了一篇论文,去年是互联网诞生,就是万维网诞生30年。这就是因为八九年的时候,他写了一篇文章,并且在九零年的时候,它是实施这个文章里面他的构想。那么在九零年的时候,以一己之力,创建了或者说发明了HTML,发明了HTTP协议,TCP协议,然后发明了浏览器。

 

这三个东西发明之后,科研机构的论文可以用图文并茂的方式可以展示了。它可以在TCPIP协议之上,基于文本进行传输,数据的传输,传送HTML,然后用浏览器解析,并且展现。

由此慢慢就演化出来的,有一部分人专门做网页,这就是最早最原始的网页开发,网站就开始了。美国在线,当时的门户网站,不能叫网站,是通过黑底儿白色命令行方式,就没有网页一说。当然,美国在线课程发现,原来网站可以有这么好的展现力,慢慢就开始做网页了。

美国在线更早一些,但是那个时候就没有网站。

 

网站1991年诞生,最早先得有操作系统,有进程,然后进程之间要通信,甚至要跨节点通信,这个时候就要有网络,网络水到渠成,TCPIP连入大专院校,然后就有了有人就开始动脑筋了,如何通过网络分享这种论文。诞生了网页技术,网页技术包括HTTP协议。但前提是得有一个好的网络基础,比如说TCPIP有了这些之后,可以发起请求了,然后把网页装上浏览器。

 

网页不过就是躺在磁盘中的那个HM2,最原始的情况,到目前为止,其实大多场景下,为了性能,要把动态的网页变成静态化。也就是说得把它生成HTML,因为HTML有好处,静态的便于缓存。所以最原始的到今天还在用。所以说静态的技术还很重要,那么静态最早指将要的资源,以HTML为例,写好的HTML就是一个纯文本的文件,这个纯文本文件躺在了磁盘当中。url是一个逻辑路径,是逻辑上的,它并不能代表物理路径,然后通过server,就是CS编程中的server,通过路径映射找到这个HTML,找到之后打开文件。

 

文件在磁盘上,逻辑上认为它是一个字节挨着一个字节的字节流。一个字节一个字节读出来之后,再通过发送缓冲区,一个字节一个字节版发出去,它本身就是字节流,本身它就是序列化的。然后通过缓冲区将这种序列一个个的字节发过去,封装成报文发过去,对端是浏览器进程,跨进程通讯,收到了这一个个字节之后,将他们拼接在一起,然后用上层协议理解,理解之后,如果遇到中文还得解码,不然会乱码,解码之后发现,HTML里面它会有一些标签,最后解析并且渲染出来。这就是用户看到的网页。

 

网络编程,实际上是有两种,一种是基于socket编程,那个往往会传二进制通信,但网页编程不是,网页编程已经建好了协议,这个协议就是上层应用层的HTTP协议。基于它进行文本的传输,当然以后也发展出来基于其他数据传输。

 

最早,其实就是为了显示这些文本,HTML只是解决了格式的问题,层叠样式表,来解决网页的格式显示,这两个合起来成立了万维网组织W3C组织。那么网页里面就可以显示图片了,而且可以显示比较漂亮的格式,从最开始设计的时候就有一个叫A标签的东西。A标签里面有一个叫HIF的属性就是超链接。那超链接有了之后,点击就发生了跳转,就跳转到另一个资源,那就是超级链接到另一个资源,url是另一个资源的资源定位符。点另一个资源,将发起一个新的HTTP的请求,然后等待服务器的响应。

然后,网页在1990年发布这些技术之后,在1991年创建了世界上第一个网站。这时候就有一些爱动脑筋的人,看到这技术不错,但是没想到这技术能够彻底改变世界。但是他们觉得这是个商机,觉得这是商机。网页太死板,网页是静态的不能动。当时连浮动的广告条,到处跑那个广告条都没有,这些人就发现了,得让网页动起来。那这个时候,到1993年以后,有一个人,他成立了一家公司,这个公司就是当时大名鼎鼎的网景公司,说这个网页要动起来,因为它是引领着浏览器的潮流,他就发明了一个脚本。

 

这个脚本想了半天,名字并不好起,刚好他跟SUN公司在做合作,SUN公司有个语言叫Java,现在卖的很火,想借名牌用一下。SUN公司比较开放同意了网景公司的请求,所以起脚本名为javascript。

然后,在浏览器当中加入了javascript的支持。

 

这一加入,就再也去不掉了。这时候,微软与之开始竞争,制作了j script, vbscript脚本。

然后,有了脚本之后,确实可以控制网页中的这些元素,可以让他们动起来,但是注意这不叫动态网页技术。这是由于前端,使网页动起来的技术,不叫动态网页,动态网页技术只得向JSP这种东西,为了让网页有更好的表现力,因为当初的浏览器,它这个进程,它做了一个限制。因为浏览器当时如果不做限制的话,用了脚本之后,在脚本里写一句格式化硬盘,涉及了安全性的问题,所以浏览器进程必须控制,当时在写浏览器代码的时候,程序员们最讨厌客户提各种需求,因为浏览器是浏览器端编程,浏览器是限制编程的能力的,但客户的需求认为,能做的事情程序员就可以做。

有时是无法达成的需要有一些技术来帮助,比如说微软,如果用Windows系统,微软就提供active X技术,最常见的就是flash。现在开始不用了,因为安全性问题,到了H325之后才把这个问题解决了,网页需要展现力,但是它控制着你,在沙河模型里面有。当初不允许做本地渲染。没有权限弄,突破它需要自己写组建activex组件,包括flash。

 

所以说微软推出这个技术,但是注意这些技术都是在浏览器端加了一个组件,这个组件突破了浏览器进程的限制。

 

当时SUN也做这个组件,当时还没有JSP技术,当时跟他类似的东西叫APPlet就是当时的小程序,但这个小程序,跟现在小程序不太一样,这个小程序,实际上是在前端,在浏览器端,起个进程,跑Java的子代码,安全性问题也不小,但是当时想各种办法来解决这个问题,管不上安全问题当时只为占领市场,几家打得不可开交,发现这才是下一代的入口,都在抢占这个入口,打得头破血流。但是安全性问题得想办法解决,为了安全,能不能在客户端、浏览器端只看HTML这种文本。

 

能不能需要的内容都在服务器端组织好,发起一个url请求,反正是个逻辑路径不用管,找的是哪个文件,把请求发过来之后,服务器发现这个请求之后,去找一个程序,用这个程序去找数据库,找完数据库之后把内容拿过来,通过代码组织成文本,这个文本就是HTML,再把HTML通过响应,报完后返回,不用管后面的处理。所以,有了这个思想之后,就出现了一个技术cgi,这是最原始的东西,叫通用网关接口。

 

有了通用网关接口,但是当时编程非常蹩脚。java、PHP公司就看到这种现象,包括微软都看到了,他们相继的在CGI的这种启发下,出现了各种技术,比如早期的PHP,JSP,ASP。这些称之为叫动态网页技术。

 

动态技术是在服务器端,使用动态组织内容。需要的内容不是现成的,现在需要用代码去到数据库当中,不用数据库,用for循环生成文本总之内容是动态的,是用脚本,或者说用程序生成的,生成之后将内容组织好,返回来。所以把在服务器端运行的这些脚本,或者说运行这些程序,把这些程序叫服务器端的程序。那么编这种程序就称为叫服务器端编程,出现了server端编程。

 

然后把编写JS,CS称为前端编程,或者称为叫wap前端编程。现在已经发展出了一个独立的东西,以前要写就自己写,就跟现在一样,有人说写全站之外,全都是一样,前后端通吃,要全部写,是不太现实的。

合起来browse server编程。browser编程是有了后端技术之后,才分了前后端。之前就是写网页,写HTML,现在是web前端编程,因为有了JS更像是开发,甚至JS到目前为止,不是随便学个什么语言都可以做JS编码,JS编程现在还是相当难的。

 

JS编程已经发展的非常的难,所以JS编程不好学,一入前端深似海,前后端编程都出现了,成为了职业。

 

但是当时,前后端编程还是分的不是很明显。前后端编程一起做,比如说网页是给最终用户看的,现在各大网站做很漂亮,如果前端就靠程序员做,审美都没有,做出来的东西用户不想看,就请美工,就得学photoshop,当时photoshop已经出来了。

 

程序员不愿意学photoshop,所以就慢慢是有些纯做美化的,但是现在前端是一部分是做美化工作,另一部分是JS写代码,因为JS已经很难了,所以美工就不一定能做得,但是用十年前的技术能改一改,但是现在的前端框架动不了,美工没那本事了。所以在前端的开发中也必须做开发工作的分离,就是后端开发跟前端团队分离,然后在前端开发做美工的合作JS的也得分离。

这样才能协同工作,这就分出了不同的工种,但是,两者都称为前端开发,在后面写asp编程的,称为后端开发。有一种人可以跨前后端,因为后端在某个年代之后,后端也可以用JS编程,所以可以既做前端又做后端。

 

 

二、HTML

HTML (HyperText Markup Language)超文本标记语言,它不同于编程语言。

超文本就是超出纯文本的范畴,例如描述文本的颜色、大小,字体等信息,或使用图片、音频,视频等非文本内容。

HTML由一个个标签组成,这些标签各司其职。有的提供网页信息,有的负责图片,有的负责网页布局。

 

代码如下:

< IDOCTYPE html>

<html lang"en">

<head>

<meta charset="UTF-8">

<title>首页</title>

</head>

<body>

<h1>

</h1>

</body>

</html>

 

//尖括号组起来叫标签,标签一般来讲,它的上面有个文档说明,下面,是一个嵌套的层级结构,形象地把它称为叫一棵树,标签数,有一个专门的名称叫dom ,也就是文档对象模型。

 

HTML,它形成了最大的标签——根标签,根标签里面分两个,一个叫头部,一般不用来显示,然后body部分就是浏览器中一般用来显示的部分,这个不是HTTP的响应头,响应头里面就会告诉用的是什么协议,然后,这个状态码是多少,协议头里面讲的是这些东西。响应报文里面放的是响应的正文部分,响应头跟响应体其实就是两部分,响应体就响应的八类部分,HTML里面有自己的头部,就是标题栏title,不是在渲染部分显示。

 

应指定字符编码,不指定字符编码会出错,因为浏览器要拆了,浏览器拆的时候,就有可能拆错浏览器,如果拆的时候认为是GBK,结果是UTTF-8,中文就全乱套了。

以前,这就是乱码的根源,乱码根源就是编码解码不统一,尤其对于中文这种。

 

Meta叫原标签,里面可以写语言标签,如一些网站的说明,给爬虫使用,给搜索引擎用。所以打开一个门户网站或者网站右键一打开,它那个head部分的meta写的非常多。在首页里面,通过网站的域名后面加个斜杠,加个根就是访问它的根路径,访问根路径以后,把基本信息填好了,搜索引擎就知道网站的功能了。

 

大多网站都为了让人访问,所以在访问的首页一定要把本网站的信息填写完整,这就是头部的基本作用,当然头部里面还可以放脚本,头部里面还可以放样式表。

 

超文本需要显示,就得有软件能够呈现超文本定义的排版格式,例如显示图片.表格,显示字体的大小颜色,这个软件就是浏览器。

超文本的诞生是为了解决纯文本不能格式显示的问题,是为了好看,但是只有通过网络才能分享超文本的内容,所以制定了HTTP协议。

如今, HTML依然是互联网中展示数据最主要的方式,广泛的应用在PC端和移动端。

 

HTML是右键打开原文件呈现出的景象,可是有时候会让程序员失望,右键打开以后一看,网页只有几行,这就是现代前端技术的发展带来。

最早,发明HTML时,HTML前面是一个纯文本的东西,HTML叫超文本。

超文本字面的意思是,不是普通的文本,而是超越了普通文本。因为打开记事本之后,里面只能写文字,实际上输入的不是字符,而是字节,也就是各种编码,在计算机当中,底层其实都是无差别的零和一,不过就是赋予了某种意义。

超越了文本的意思是在这里面可以显示图片,把图片插入在这个格式中的这个位置,然后,可以通过一个描述将这个文字最后用浏览器展现的时候,可以有颜色有大小,甚至还可以隐藏,它可以显示等等。

 

这就超越了一般文本。甚至还可以描述这个文字,可以把它渲染成链接,一点击就能指向另一个资源。后来,慢慢的加入,觉得还是太单调了,比如听音乐就要支持wav格式,但是Wav格式太大了,不适合传输,要做有损压缩,慢慢地可以直接在浏览器当中,把MP3的音乐直接用来播放,调用本地资源播放。后来影音都要支持,视频支持要装组件,最常用的就是flash这就是超越了普通的文本,然后技术就是慢慢增加,一代一代迭代。实在没办法迭代了,满足不了移动互联网时代,出现了HTML5。

 

HTML5比HTML4稍微简单,而且HTML5,还提供了本地的原生的渲染能力。有时候去视频网站,右键后发现不是flash菜单了,实际只是H5的播放器了。

 

内容部分用来渲染,里面可以放图片,注意图片是另一个请求。然后,可以放表格,放文字等等。超文本的诞生,解决了显示格式的问题,就是为了让文本更具有展现能力。

当初只是为了解决论文,因为论文是有图片的,论文有标题,这样好分享,所以那个年代只为了解决这个问题,但是没想到一旦被最终用户喜欢了,最终用户的需求就是无限的了。它有各种各样想法,希望实现。超文本再结合上发明出的HTTP,这种传输文本的协议,当然基于TCPIP,就整个的推广开来了。到目前为止,HTML依然是整个万维网当中最主要的传输数据的方式。就包括移动端还在用HTML。

 

 

三、CSS (Cascading Style Sheets)层叠样式表

HTML本身为了格式化显示文本,但是当网页呈现大家面前的时候,需求HTML提供更多样式能力。这使得HTML变得越来越臃肿。这促使了CSS的诞生。

1994年,W3C成立,CSS设计小组所有成员加入W3C,并努力研发CSS的标准,微软最终加入。1996年12月发布CSS 1.0。

1998年5月发布CSS 2.0。

CSS 3采用了模块化思想,每个模块都在CSS 2基础上分别增强功能。所以,这些模块是陆续发布的。不同厂家的浏览器使用的引擎,对CSS的支持不一样,导致网页布局、样式在不同浏览器不一样。因此,想要保证不同用户使用不同浏览器看到的网页效果一-直非常困难。

 

在部署时要遇到层叠样式表,不管里面有没有标签儿,都是纯文本。CSS称为层叠样式表。最早,在设计HTML的时候,是这么设计的。

Body写完之后,最后一定要封口的,尤其是XML里面,更加要封口了。当时设计这样的东西,是这样写的,假设举个例子,H1大标签,这个H1是本身带的,但是,span是一个区域,这个区域封口以后,在里面可以写文字,比如说test。这个文字大小不用H1标签,H1标签叫hyde,也就是大标题。

 

要在每一个标签上都得重复实现这些属性,发现工作不能继续了,在部分上面已经实现了。发现标签极其臃肿,而且是重复劳动。这个时候发现有一个小组技术不错,准备来解决样式问题,小组叫CSS

——层叠样式表研发小组。之后成立W3C组织。

 

九一年第一个网站成立,发现不成立组织不行了,应该是协商着解决整个万维网的发展,要成立一个组织,这个组织到目前为止依然是整个万维网发展的标准的制定方。标准的主要制订方,控制着整个的发展,万维网由发明人Tim Berners来主管。微软虽然加入但是不听话,那就是微软,微软总是有自己一套,微软带来了很多的噩梦。微软总是不按标准出牌。

 

九八年的时候发布CS2,到目前为止应该是广泛支持的,所以说如果这个网页是CS2的标准化没问题。几乎所有的浏览器全部支持。CS3,到目前为止还在陆续的发标准,它是按模块化逐步的去增强逐步增强,那就是说标准到现在还没完。

 

出现浏览器不支持,导致网页的这种显示的不正常,是浏览器的事,在做开发和测试的时候,没有把指定浏览器测试在内导致的样式显示不对是,跟部署没有关系。就是因为包括HTML和HTML5,不同的浏览器,不同的CSS标准在陆续发布,不同浏览器对HTML的标准,对CSS的标准,实现的程度不一样,不同浏览器,哪怕是同一种浏览器的不同版本,支持也不一样,甚至不同版本,上个版本还好说,下个版本都有bug了。

 

比如说著名的IE浏览器就bug,可能IE7测试好,IE8都不一定是好的,就是这么个情况。在firefox中这个的版本不行,高版本可以,但是假如用户用的还是低版本,Chrome用的是低版本,就会导致无法显示。这不是部署的事,这是开发和测试的事情。不同的浏览器,哪怕同一种浏览器的不同版本,对标准的支持是不一样的,还有JS的标准,它的支持都是不一样的。导致开发人员想保证在所有浏览器上想实现同样效果,至少一个最低的要求说,在网页里面别出错,别错位,但是这都很难。几乎不太现实。

 

在所有浏览器上都能够正常显示,基本上是做不到的。应该是尽量少的让浏览器出现问题,做大量测试也无法保证。不是说数据错误,只是样式格式显示的问题。不同浏览器用不同的方法来解决。

HTTP第一版HTML以及浏览器都是下面这位大神——Tim Berners-Lee,他是英国人。他的贡献非常大,在技术方面的品格非常高尚。

 

为了解决这个论文的问题,科研院所已禁用TCPIP协议连起来了。而且当时的其实互联网的节点不多。

Tim Berners-Lee在1989年3月发表了一篇文章,深远的影响到今天,这篇文章叫《information management proposal》。但是,光有这篇文章不行,所以他辛辛苦苦地发明了HTML,发明了HTTP,发明了brother,终于有人看到了。那么30年后他就坐到这儿来畅谈整个万维网的发展。他说当初他把他想简单了。他没想到会有今天的应用,因为它当初其实就是为了信息的共享,没想到会深远地影响整个网络事件。

 

他其实觉得现在网络上有些东西是违反了他的初衷,他不希望整个世界以互联网为恶。如果让他重新设计的会设计的更好,但是不可能。已经不是他一家说了算了是,有的时候还被一些利益裹挟着,就是有些大公司说我就不按你的套路来怎么办。W3C不是说强制性的组织,所以他有自己的一些设想。他基于他所发明这些技术在1991年的时候,在欧洲核子研究中心,将全世界第一个WWW网站发布。

 

他在九零年发布,在九一年创建了第一个网站,九四年,在MIT创建W3C,包括CSS,来推动整个万维网的建设,到目前他还在负责。

他自己说的一句话,W3C的标准应该服务于全人类,不应该有版权,不应该有专利权。

 

 

五、浏览器

1980年代,Tim Berners-Lee为CERN (欧洲核子研究中心,当时欧洲最大的互联网节点)设计基于超文本思想的ENQUIRE项目,以促进科研人员之间的信息共享和更新。1989年3月他编写了

《Information Management: A Proposal》一文, 并构建基于Internet的Hypertext系统, 并在CERN开发了World Wide Web项目,打造了世界上第一个网站,于1991年8月6日正式上线。2019年是www的第三十年。

Tim Berners-Lee于1990年发明了第一个浏览器,还发明了HTTP协议。1994年MIT他创建了W3C.W3C万维网联盟,负责万维网持续发展。他提出W3C的标准应该基于无专利权无版税。

Marc Andreessen于1993年发明了MosaiC浏览器。

并看到了这个技术的前景,不久后他成立自己的公司——网景Netscape. 1994发布 了Netscape

Navigator浏览器,席卷全球。1995年微软发布IE, 开启第一次浏览器大战,最终后来居上。

1999年网景被AOL收购,收购后不久,Netscape公开了浏览器代码,并创建了Mozilla组织。Moilla组织使用Gecko引擎重写浏览器。

Moila组织使用Gecko引擎发布了几款浏览器,最终于2004年更名为Firefox浏览器。第二次浏览器大战开始了。

2003年5月,网景被解散。

AOL于2007年12月宣布停止支持Netscape浏览器。

Apple的Safari于2003发布第一个测试版。

2008年Google的Chrome浏览器带着V8引擎横空出世。

2008年IE占据浏览器市场份额的75%,FF占近20%, 如今2019年Chrome占据市场份额近70%。浏览器内两大核心:渲染引擎和IS引擎

 

微软操作系统差点要倒闭了,微软要不是转向云生态的话,早就倒闭了。浏览器已经萎缩了。

 

微软甚至连操作系统说Windows10是最后一代,因为已经不在乎什么操作系统了,甚至连PC的Windows都不太用了,一个手机就搞定了,而手机上Windows phone失败,宣告失败,因为性能最差,又不开源,人们是不敢用的,当然使用安卓也得小心,然后,1991年浏览器诞生之后,因为这个协议它是无版税,它是开放的,马克安德森在1993年,自己根据当时的项目就开发了一个浏览器,这个浏览器叫马赛克浏览器。这个浏览器,其实已经是五脏俱全了,在他之前Tim Bern ers-lee的发明,这个浏览器其实样子也差不多。

 

他能发明第一个浏览器,说明当时技术水平还是不错的,但他是个商人,他看到的更多是商机,与Tim Bern ers-lee看到的不一样,他更多的是应该如何发展物联网,而不收版权。但不是说挣钱有罪,因为有了商业,有的赚了钱,才会有人想把它发展的更好,这个实际上是对的。如果个个都用盗版的话,世界上就没有人贡献什么力量。

 

马克安德森,看到了浏览器的未来,他直接就甩下这个公司,立刻就成立了自己的公司,这个公司叫netscape。就是大名鼎鼎的网景公司,1994年的netscape 发明了navigator这个浏览器,整个席卷全球,大家都在用。但是,微软看到了,说这才是下一代应该争夺的地方,微软的ie是捆绑不同版本的Windows的,它在它自己的操作系统当中直接捆绑,Windows5已经发布了,比Windows3来讲的话,那是成功太多了。

 

到后来更有影响力的Windows98,都是硬件IE的。

1995年随着IE的搅局,第一次互联网大战正式拉开帷幕。

两家相斗于是在1999年的时候,就只能卖给AOL——美国在线了,美国在线,还继续在发展的netscape。

但是在他收购后不久,Netscape就陆陆续续将自己的leadership的源码全部公开,并且成立了Mozilla组织。然后,Mozilla组织就用代码重写了一个引擎,渲染引擎,这个引擎就是Gecko引擎。那么有了Gecko引擎之后,他们就开始发布自己的开源版本的浏览器。

开源版本浏览器,中间起了好多名字,起初叫Phoenix。后来发现Phoenix被人占了,浴火重生,就改名叫火鸟,也被人占了,随便起个名叫火狐狸,结果发现没人使用。

 

2004年的时候,火狐狸诞生了,2003年5月的时候,网景已经被解散,2004年的firefox,在Mozilla组织发布的开源浏览器。这是第二次浏览器大战,第一次浏览器大战我们也知道了,网景失败了。

第二次浏览器大战,以firefox进来了,延续着netscape精神,和微软的IE作斗争,因为微软IE一家独大。Firefox慢慢的蚕食着这个市场,但是蚕食的速度很慢,在这期间,Apple进来了。Apple在零三年时候发布了第一个测试版,也就是说Apple在自己的小环境当中,在苹果这一面,用的是它的这个Suffering ,就让微软最觉得害怕的,零八年谷歌自己开发了浏览器,因为谷歌看到了互联网的未来,尤其是移动互联网要到来了,谷歌说安卓布局,就布局浏览器了,用浏览器代替所有的操作系统,这是谷歌的胃口,但是他到今天都没做到。那么谷歌他直接发布了Chrome浏览器,Chrome浏览器里面带了个引擎,这个引擎叫V8引擎。

 

V8引擎,谷歌的Chrome市场,而且有众多的开发者围绕它来做,其实当时firefox在这之前做的也不错,零四年发作,Firefox里面也有众多的插件,比微软调试起来方便多了,写前端非常方便,而且自由开放,插件也非常多。

 

但是后来这一批人,就开始转向Chrome了。所以Chrome就发展得很厉害。第二次浏览器大战如果到今天还不算结束的话,看看战绩如何,零八年firefox占了20%,在Chrome市场很小,到一九年的时候,应该是70%,微软几乎快被忘记了,要调的是Windows的这个浏览器的时候,这个时候才会弹出ie。

所以Chrome,还是比较厉害的科目,到目前为止的话,应该说是最主要的,包括看到的国产所谓的问题,其实包装的全是Chrome,甚至有人骗国家项目,都是拿人家那个过来用的。浏览器就两大核心。一个核心最早用来渲染HTML,称为叫渲染引擎,到目前为止没有一个国产的引擎。

 

第二个因为网景公司发明了这个JS引擎,那也就是说JS是浏览器广泛的支持,所以说浏览器当中最核心的两个东西,不是漂亮的界面,是应该有渲染引擎和JS引擎,这两个是最重要的。

 

 

六、JavaScript

Javascript简称JS,是一种动态的弱类型脚本解释性语言,和HTML、 CSS并称三大WEB核心技术,得到了几乎主流浏览器支持。

1994年,网景Netscape公司成立并发布了Netscape Navigator浏览器,占据了很大的市场份额,网景意识到WEB需要动态,需要一种技术来实现。

1995年9月网景浏览器2发布测试版本发布了LiveScript,随即在12月的测试版就更名为JavaScript. 同时期,微软推出IE并支持]Script. VBScript, 与之抗衡。

1997年,网景、微软、SUN, Borland公司和其他组织在ECMA确定 了ECMAScript语言标准。JS就成为ECMAScript标准的实现之一。

2008年后随着chrome浏览器的V8引擎发布。

V8 JS引擎不是解释执行,而是本地编译,在V8引擎做了很多优化,JS程序在其上运行堪比本地二进制程序。

V8引擎使用C++开发,可以嵌入到任何C++程序中。基于它,2009年Nodejs诞生, 提供了大量的库供程序员使用。从此,使可以在服务器端真正大规模使用JavaScript编程了。也就是说JavaScript也真正称为了服务器端编程语言了。

 

代码如下:

<html>

<head>

<link href-""xxx.css">

<style>

</style>

</head>

<body>

<h1></h1>

<span>test</span>

</body>

<asriét ndexeie07aeripts

<script>

alert('abc');

</script>

</html>

 

//JS引擎解释javascript写的代码,注意,这个代码是放在服务器端的,如同HTML一样,是一个静态的文本文件,需要发请求我们要发请求的,一般可以在任何地方去写标签,一个标签,其实都叫script。这个script标签按道理可以放在本HTML的任何地方。但是,习惯上一般建议要么放在上面的head的部分。要么就放在body部分,或者说放在后面,其实放在任何部分都行。

 

有时候建议,JS应该往后放。然后会有样式表,有样式表是用来控制样式,里面还可以用Style来写,这也是样式表,称为叫当前网业内样式表,样式表写各种样式,叫外链,这是外部的。链接到另一个文件了。script里面写脚本,比如说弹框,就是javascript,就属于当前HTML的。还有一种写法,还是script里,但是里面叫SRC等于比如说index.js,注意这是一个新的连接,补全,要知道这个web的工作原理。

 

首先浏览器右边是地址栏,写了个url,然后url被浏览器拿到之后,浏览器要将它封装成HTTP并请求报文。有get请求、post请求、delete请求等等。如果跨越还有一些预检请求等等。这些请求发到server端,这就是打通到Socket编程,通过应用层的话发请求,这个请求HTTP。要协商协议版本,请求到了server端,注意一个请求,一个响应。

 

发起的请求虽然是一个根,但实际上这个根都有欢迎页,实际上发起的是对一个页面资源的请求,但这个资源究竟是静态还是动态,要看情况,假设他访问的是静态的,这样便于理解,就是著名的index.html,注意这是逻辑的Url地址是某网站的根下的index不写时默认配置的,然后通过server做路径映射我们找到的物理文件index.html,总之能映射到,能找到,找到之后,就得靠文件io,打开此文件,读取文件内容,内容是纯字符串,将这个纯字符串这些内容一字不落的全部读取出来,并且交到server,如果server具有HTTP的解析能力,兼具有HTP的封装能力。就会将它封装成HTTP响应报文,在响应报文的正文部分将内容填入。

直接就是字符流,也是字节流。因为如果写了一个meta里面有个UTTF-8是会传给浏览器的,注意是正文部分传给浏览器。当然在response报文的头里面,也可以告诉下面要发回的HTML,它的内容使用什么编码。

这样,浏览器收到响应报文之后,先读取response的head的部分。然后知道了协议,知道了状态码,然后,再来去解析响应报文的正文。将正文部分的HTML通过渲染引擎解析成dom数。然后把dom按照程序将dom渲染出来,这就是看到的网页的内容。在这个过程当中,发现这是一个新的url,只不过这个相对路径。

注意刚才试一次请求,回来的一个内容,回来的一个响应,然后如果当在解释这个HTML的时候,发现路过这一句的时候,由上向下解释,发现这是一个外部的文件,它会再次发起对这个CSS的HTTP请求,问server去找到它所对应的物理文件,将这个物理文件封装成HTTP响应报文,然后回来,回来之后就会作用在刚才的HTTP界面上,这个样式就变漂亮了,但是有时候因为网络出故障,这个样式表没回来,会发现,网页怎么突然错乱了。

 

注意样式表示刚才HTML的一部分,它不需要单独发起HttP请求,

SRC就是另外一个请求了,会再次发起一个新的server,然后对这个server甚至可以不是同一个server,要看这前面写不写域名,可以跨域访问。

 

总之还得发请求,注意这些请求都是get的对JS的发起的请求,JS到了server端,Server又要去映射路径找到物理文件,找到物理文件这个JS之后,将这个JS的封装成响应报文,又交给浏览器,浏览器拿到JS之后,当然就可以运行里面的代码了。

 

不管怎么说,这都是发起get请求就回来了。Img标签里面也有个属性,就是SRC里面也可以写,这就是图片。当扫到图片这个标签的时候,也会发起一个对server,再发起一个HTTP的get请求。然后在这边server依然是对这个图片的url进行解析,并且找到物理对应文件,并且将字节流发回来,然后,浏览器拿到这个图片,并且在相应的位置,按照指定的大小以及位置把它渲染出来,发现有时候图片图片把那个浏览器撑大了。

 

注意,这些都是新的请求,发起的在地址栏里面就敲了一个url,这个url只能是一次请求。然后回来的内容被解析了,才会发起新的请求。当然这里面还可以发起一些其他的请求,比如说异步请求,注意,先得把内容拿回来,拿回来之后,比如说网页上有个按钮,这个按钮一点击之后,它就会掉一个javascript的函数,在这个函数内部,就可以调相应的组件,这个简称就是XHR。它可以发起一个异步请求。

 

发异步请求,现在用的技术也很多,注意都是HTTP协议的,所以你一定发的是HTTP的请求。只不过可以设定为get请求,post请求,等等,但是常用的,如果要用的是restful的风格的话,常用的就是包括delete

 

前后端分离之后,能看到那个东西叫rest field风格的接口。甚至你后面给他部署这样一个服务,这个服务提供rest风格的接口调用。

一定要知道网页的交互过程,发的是一个请求,但这个请求回来,这个网页内还有其他的外部文件的引用,然后再发起新的请求,甚至有的时候用脚本还会在发起其他的请求,这是请求过程。

 

Javascript可以写在页内,也可以发起新的请求,总之这个脚本是拿到手之后,就可以去运行它了。那这个脚本,当初是网景弄的,网景之后,然后微软说得弄一套。但是因为ie的强大,把netscape挤掉了,也就是说javascript实际上名存实亡。其实现在用的是跟javascript兼容的jsscript。

 

宝兰公司主要的研发人员,大神去了微软,他在微软主导研发了particle解析器。当年横扫微软的产品。用微软的VC来写界面。用vc写底层编程有效率,VC没问题,c++有效率,但是微软的东西,写界面太难了,VC那个框架叫MFC,然后可以搞个简单的,来用VB写,结果宝蓝公司随便打开界面,拖拖拽拽搞定数据库,配置连上了,很方便。

所以它这个产品当时,整个主要是CSS编程带界面的诠释它。而且对底层编程也特别方便,出了很多工具,包括jbuilder,就是Java变形工具,都是非常好的,但是jbuilder一出以后,也说不准用。没办法,他也不搞了,后来他又去了微软公司,也去搞了一个为Java做的编写,结果Java说不准做,后来就都不能做了。所以说Java这块,后来也没什么特别好的工具,到目前为止,当时把VB挤得没有市场。

 

艾克玛——欧洲的计算机制造业协会,在欧洲的这个组织这儿开了个会,然后确定了一个标准,这个标准就后来成为javascript的标准。这个标准称为叫echo a script简称es。所以JS就变成标准实现了。

Javascript是标准的实现,当然微软也有自己的实现。微软发现他的浏览器市场快丢了,所以,它提供了另一种在JS的基础之上,也就是说JS是真子节,完全包含javascript,完全兼容标准。但是发现这个市场已经不可逆转了,所以他也拥抱开源,甚至包括到奈特,真正实现了跨平台了。

 

其实想的就是跨平台,但是就是不做,发现市场丢了才干这事。零八年的时候,这个Chrome的V8引擎诞生了,V8引擎特别不一样。不走寻常路,谷歌不走寻常路受到了欢迎,谷歌将一个解释性脚本,不按解释性脚本套路。做本地变异,然后用解释器来运行。所以他本地编译,那就相当于没有解释器,没有像Java这样的虚拟机。所以它的性能是非常好,而且做了大量的优化,性能非常好。所以它的性能堪比本地运行二进制数据,所以受到了广泛的欢迎。

 

那么由于是C++编写,而且把这个东西还开源出来。性能当然好,就有人发现这是个好商机,然后将v8引擎包在其中,为V8引擎周边提供了丰富的基础类库就可以操作当前操作系统。那这个技术内控包装完之后,就发布一个产品,在工作中有可能碰到,可能要部署那个JS的东西。JS,那么node JS一定是Java javascript,它需要这个note JS里面包的是V8引擎。用V8引擎来去就地编译JS,并且直接去运行它,加上这个基础就变成了后端的JS编程。所以到目前为止,只有一个语言可以前后端通吃,那就是JS。就是前端在浏览器中去使用,后端就在服务器端使用JS,

 

JS发展的版本也很快,V8引擎更新速度也很快。所以现在功能越来越强大。尤其是javascript的Emma script的标准ES6诞生了。

ES6是在2015年,很快就获得了广泛的欢迎,从而导致了整个前端编程的颠覆性的变化。

 

后端编程也可以用,它多了一个东西,虽然它本质上不是类,但是他自己实现的类,这样就可以用面向对象思想来变成,整个前后端变成发生了非常大的变化。现在像will框架,像react框架,其实写起来并不容易,它的里面的原理还是比较难。

七、静态网页技术

早期的HTML设计之初,只能HTML,里面可以显示文字、图片,使用CSS来控制颜色、字体大小等。草后来引入了JavaScript就可以是网页可以人机交互、可以让元素动起来。但这都不是内容的动态变化。

静态网页技术,主要指的是HTML,CSS还有JS。虽然叫静态,主要指的是它这个文本文件已经写好在。基本上不会变,除了改动它,不会变。直接去资源请求,这个资源找到之后,将内容读取出来,变成响应报文,到了浏览器端,浏览器端进行反应。

静态内容从来没变过,一旦图片产生好了,这个内容就不用动了。

 

 

八、动态网页技术

网页的内容是后端根据用户从浏览器端提交的请求不同,通过后台的程序将内容临时拼凑好,生成HTML,返回到浏览器端,通过浏览器端渲染呈现。常见的有ASP和DotNet. JSP. PHP. Nodejs等.

开发语言

 

语言:人与人交流的沟通表达方式

计算机语言:人与计算机之间交互沟通的语言

所动态不是说网页是动的就是动态。甚至看到一个网页里面,特别难受的一个弹窗广告,这种广告是通过JS变换位置实现,它依然是静态的,它是通过JS,然后是隔几秒去让位置换一下,也就是说下载的JS,下载CS,下载HTML,它本身没有变化。所以依然是静态。不要看见内容动了就认为是动态,或者说轮播组件,这个页面一直在换,还是静态的。动态是指内容是动态生成的。比如说在某度的搜索框里面搜索一个词,看到第一页跟别人看到第一页不一定一样,内容都是他从后台服务器视察回来的,然后组织成HTML反馈给用户的。

 

所以内容是临时在服务器端通过代码组织生成,组织好,封装成报文响应,这种称为动态网页技术,最早就是CGI技术。所以在使用的时候要注意它们之间的区别。brother通过url去到server上去要资源。资源就分为两类,一类是资源确实能够映射到一个物理文件,一般都称为静态的,还有一个就是实际上是找不到文件的是找到了一个程序,这段程序是就运行起来了,这段程序运行起来以后,然后去查数据库DB,找完DB之后将内容拿过来,再通过程序整理好,可能是网页的一部分,说不定就是网页,将这个内容总之交给server之后。Server翻它封装成响应报文,然后给浏览器,浏览器再想办法渲染。有可能这边组织好之后就是Jason。

 

Jason回来之后,返回Ajax请求 Ajax响应报文回来之后,往往是一个Jason。里面就运行着下载的好的JS,回来之后将内容通过JS动态地插到那个动物数当中。然后浏览器看动物数改了,就重新渲染了,表格里面就有数据了,但是注意它在变,发起的是 HTTP请求,发的还是url,只不过url里面,回顾一下几个东西,第一个Get请求。

Get请求可以带数据,其实在请求行里,第一行里面带那个东西,称为叫查询字符串,它并不使用request报文的body部分代数据是,是在head的部分,在第一行里面带查询字符串,注意脚本生成,如果它发起的是get请求,都会参数都会拼接到url后面,并且放在request请求的head部分的第一行请求行当中,请求行当中是不是三个部分第一个方法,第二个url加查询字符串,第三个协议,

POS请求最早是表单提交。就是登录框对表单提交,post请求也是一样,在请求头部分再post请求部分的第一行,请求头的第一行post方法。然后之后写url,url里面其实可以带查询字符串,因为这也是参数,但是这不是请求的数据。但是这个数据也会发过去,也能解析,然后写协议。

 

 

九、语言分类

面向机器语言

机器指令或对应的助记符,与自然语言差异太大

汇编语言

面向过程语言

做一件事情,排出个步骤,第一步干什么,第步干什么, 如果出现情况A, 做什么处理,如果出现了情况B,做什么处理

问题规模小,可以步骤化,按部就班处理

 

C语言

面向对象语言

一种认识世界.分析世界的方法论。将万事万物抽象为各种对象

类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合

对象是类的具象,是一个实体

问题规模大,复杂系统

按照与自然语言的差异分类

 

低级语言

机器语言.汇编语言都是面向机器的语言,都是低级语言。不同机器是不能通用的,不同的机器需要不同的机器指令或者汇编程序

 

高级语言

接近自然语言和数学语言的计算机语言

 

 

十、常见语言

C语言

面向过程编程,只有函数

操作系统编程、单片机编程等领域

Unix之 父Dennis Ritchie基于B语言创建

C++语言

底层高性能开发

面向对象,学习难度极大,目前标准发展有点乱

 

Java

WEB开发领域第一-,延伸领域极多,库丰富

大数据领域生态完整

 

Python

入门门槛低,非专业程序员容易接受,他们有丰富的专业知识,但计算机专业知识不够。Python简洁的语法,不需要让他们关注背后的细节,可以让他们较容易的掌握并开始编程。运维开发使用最广泛语言

 

数据科学、Al

Javascript

网景公司发明的动态脚本语言,前端开发第一-语言

JavaScript才是目前前后端通吃的全栈语言

前端执行的IS代码,需要从服务器端发送到浏览器端,在浏览器端使用JS引擎执行. Go

 

B语言之父。Unix之父Ken Thompson亲自参与设计

静态编译型语言,但结合了动态解释性语言的特点,例如GC

充分利用多核,适合高井发场景

云生态最重要的语言

我的学习进度
请登录后查看您的学习进度!
立即登录
本课程相关云产品