nginx《编程时间简史系列》WebServer编年史编程时间简史

互联网今天已经广泛存在于人们的生活中,人们的衣食住行等方方面面早已离不开互联网的支撑,这其中离不开Web技术的发展。

Web是一种典型的分布式应用架构。Web应用中的每一次信息交换都要涉及到客户端和服务端两个层面。因此,Web开发技术大体上也可以被分为客户端技术和服务端技术两大类。

本文将会讲述Web服务端技术的萌芽和演进过程,旨在使读者能更清晰地掌握Web服务端技术的发展脉络。

Web服务端技术的发展与客户端技术的进步是相辅相成的,本文虽是讨论Web服务端,在讲述过程中却不可避免地会提及一些Web客户端的有关内容,但不会过多深入。对此感兴趣的读者,可以自行阅读最下方的参考链接。

同样的,不谈具体代码,只聊历史故事。

广义上的WebServer(Web服务器),包含硬件和软件两方面。今天我们只谈及其中的软件部分,即能向客户端提供Web服务的程序。

现在大家耳熟能详的Apache、IIS、Tomcat、Nginx等等,都属于WebServer。

让我们先带着这些疑问,回到HTTP协议尚未诞生的时代。

1960年,TheodorHolmNelson在哈佛计算机编程的选修课程上,使用了当时哈佛大学唯一可用的计算机——IBM7090。在临近课程结束的时候,TheodorHolmNelson决定使用机器语言编写一个计算机程序,让他能够将自己的笔记和手稿存储在计算机中,可以以各种方式修改和编辑草稿,并生成可打印的最终版本。在他的项目进行到第4万行左右的代码时,他开始意识到,他对这项任务的完成难度最初估计得过于乐观。

1963年,已经从哈佛大学毕业的TheodorHolmNelson决定将自己大学时的想法继续进行下去。他首次提出了名为“HyperText”(超文本)的概念,并找到了一些志同道合、痴迷计算机的朋友,成立了ProjectXanadu,试图制订规范,并应用到实际的计算机程序中。

制订SGML的基本思想是把文档的内容与样式分开。在SGML中,标记分两种:一种用来描述文档显示的样式,称为程序标记;另一种用来描述文档中语句的用途,称为描述标记。一个SGML文件通常分三个层次:结构、内容和样式。结构为组织文档的元素提供框架,内容是信息本身,样式控制内容的显示。

不过,由于GML/SGML过于庞大且复杂,虽然有不少大公司在内部使用,但始终没能得到广泛的应用。

暂且按下TheodorHolmNelson和CharlesF.Goldfarb这边不表,让我们来到1989年。

此时已是不惑之年的TimBerners-Lee,负责在CERN(欧洲粒子物理实验室)做IT支持工作。由于粒子物理在当时是前沿研究领域,需要全世界的物理学家合作参与,那么如何与世界各地的物理研究所保持通信,就是一件十分重要也棘手的事情。

起初,CERN使用传真机来传输文件,但物理传输速度极慢,且会耗费大量纸张与油墨,对于信息检索工作而言也十分不便。

后来,因ARPANET网络在美国军方和多所大学内成功使用,CERN也开始采用这种使用计算机网络进行通信的方式来传输数据。

这一年年底,TimBerners-Lee向其上级提出了一项名为InformationManagement:AProposal(《关于信息化管理的建议》)的提议:使来自世界各地的远程站点的研究人员能够组织和汇集信息,在个人计算机上访问大量的科研文献,并建议在文档中链接其他文档。

在参考了TheodorHolmNelson有关超文本的规范、并参考了CharlesF.Goldfarb的GML/SGML实现后,TimBerners-Lee于1990年发明了HypertextMarkupLanguage(简称为HTML,超文本标记语言)和HypertextTransferProtocol(简称为HTTP,超文本传输协议)。

1990年,TimBerners-Lee创建了一款最原始的GUI的HTML浏览器(同时也是编辑器),和第一个HTTP服务器。

1991年,TimBerners-Lee作为布道者开始广泛推广Web的理念,提出了WorldWideWeb(万维网)的概念。

值得一提的是,在这一时期,Web领域还有其他诸如NNTP、Gopher等传输协议。但它们都因为种种原因,没能像HTTP一样流行起来,最终消失在了历史长河之中。

1993年,NCSA(美国国家超算应用中心)对此表现出了浓厚的兴趣,并开发了名为Mosaic的浏览器,于当年4月发布。

1994年,第一届国际万维网大会于4月在瑞士日内瓦召开,WorldWideWebConsortium(简称为W3C,万维网联盟)组织正式成立,并从IETF(互联网工程任务组)接管了HTML的标准制订工作。

同年6月,IETF非正式地指出了之前在“民间”流传的URL(统一资源定位符)与URN(统一资源名称)这两种叫法的存在,并进一步地定义了一个名为UniformResourceIdentifier(简称为URI,统一资源标识符)的规范文法。

同年10月,CERN的另一位IT员工HkonWiumLie吸收了当时已有的一些Web样式的实践经验,提出并发明了CascadingStyleSheets(简称为CSS,层叠样式表)。

同年11月,Mosaic浏览器的开发人员创立了Netscape(网景)公司,并发布了MosaicNetscape浏览器1.0版本,后改名为NetscapeNavigator(网景导航者)。

1995年,W3C制订了HTML2.0标准。

同年5月,Netscape公司的工程师BrendanEich发明了一门名为LiveScript的脚本语言,可用在Web服务器和浏览器。在之后与NetscapeNavigator2.0一同发布时,被改名为JavaScript。

同年8月,Microsoft(微软)旗下的InternetExplorer(简称为IE)1.0版本正式发布。

1996年,IETF将HTTP列为互联网标准之一,并制订了HTTP/1.0协议标准。

同年12月,W3C将CSS纳入工作范围,并在随后个几个月里制订了CSS1标准。

1997-1999年,HTML3.0、HTTP/1.1、HTML4.0、CSS2、ECMAScript3等标准先后被发布,并统治了今后二十余年的互联网。

终于,Web时代降临。

HTTPd,即HTTPdaemon的缩写。

今天我们谈到这个名词,大部分人会把它认为是Apache的代名词。但这其实只是个误解(原因下文会提到)。

在类Unix的操作系统中,一个在后端周期性地执行某种任务或等待处理理某些事件的进程,往往被称为“DaemonProcess”(守护/幽灵进程)。HTTPd即取此意,意思就是在后台处理HTTP请求的程序。

因此实际上来说,HTTPd应该是近似等同于WebServer。在HTTP协议尚未出现的时代,WebServer一般指FTP服务器。但HTTP协议出现后,WebServer就立刻变成了指代HTTP服务器。今天的WebServer一定会、但不仅仅只会支持HTTP协议及其衍生协议,还可能支持诸如FTP、SMTP、MQTT甚至是更底层的TCP、UDP协议。

1990年年底,TimBerners-Lee在一台运行着NeXTSTEP系统的NeXTComputer上编写了首个HTTPd程序,起名为CommonLibrary。这是一个由C语言编写的组件,只能处理HTTP请求中的GET谓词,并不是一个独立且完整的程序。因其属于CERN项目的一部分,所以也被称为CERNHTTPd。

1993年,TimBerners-Lee将CommonLibrary从CERN项目中独立出来,更名为libwww并开源。

同年,NCSA在此基础之上扩展并开发出了NCSAHTTPd。

1994年,libwww的开发维护工作转交给了W3C,在此阶段,libwww新增了很多特性,诸如兼容HTTP/1.0、支持CGI、虚拟主机等。此时它也被称为W3CHTTPd。

1996年,W3C的工作重心已经不在libwww上,迟迟没有新版本发布,并最终于2003年宣告项目中止。

libwww提供了基础的HTTP协议的解析与包装方式,既可用于服务端,也可用于服务端,被广泛地使用在包括Mosaic、Lynx、Arena、MacWWW在内的诸多早期Web程序中。

上一小节提到,1996年时W3C的工作重心已经不在libwww上,因为他们已经另有其他重点工作。

由于libwww只能被编译到类Unix的操作系统中,且只支持静态网页。随着Web技术的不断发展,以及Windows系统的广泛流行,W3C亟需一种可以跨平台的的Web服务器。因此,W3C将目光放在了横空出世、发展迅猛的一种跨平台编程语言——Java。

W3C联合当时的拥有Java的Sun(升阳)公司,开发了一个名为Jigsaw的程序。

它由Java编写,起初只作为JDK1.2版本的一个模块发布,意图让开发者能快速搭建一个跨平台Web服务器项目。它采用了多线程的处理方式,兼容HTTP/1.1,支持SSL/TLS、WebDAV等新特性,同时也是首个支持Servlet和JSP的服务器程序。由于Java的跨平台特性,它可以运行在BeOS、AS-400、AIX、Unix、Solaris2、OS/2、MacOS、Linux、Windows95、WindowsNT等操作系统上。

虽然Jigsaw命运早夭,但因为它是第一个由Java编写的WebServer,起到了很多纲领性的指导作用,为后续Java技术在Web领域的扩展打下了坚实的基础。

值得一提的是,JDK9中新引入了与Jigsaw同名的模块化方案,但与JigsawHTTPd并没有什么关联。

最早的Web服务器只是简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器。可以近似理解为拥有文档预览功能的FTP。文档内容在文件未修改前就是不变的,所有访问Web的用户看到的内容都是相同的。

这也就是前文提到的所谓的“静态网页”,这显然满足不了人们对信息丰富性和多样性的强烈需求。

由此,Web技术的发展出现了两条分支路线。一条是尝试向客户端、即浏览器引入动态交互,例如Sun公司的JavaApplet、Netscape公司的JavaScript、Microsoft公司的JScript、VBScript、Adobe公司的Flash、ActionScript等等。另一条是试图从服务端、即WebServer入手,想在返回给客户端时就输出动态的内容。这两条路线都在未来有了十分迅猛的发展,我们今天按下客户端不表,只谈服务端这面。

1991年,NCSA首次提出了ServerSideIncludes(简称为SSI,服务端嵌入)的概念,并在之后发布的NCSAHTTPd中实现这一技术。

1993年,在NCSA发布NCSAHTTPd的同时,NCSA又提出了CommonGatewayInterface(简称为CGI,通用网关接口)这一概念,并在未来几年内先后制订了CGI1.0、CGI1.1、CGI1.2等标准。

CGI本质上来说,就是接受一个输入、并返回一个输出的程序。CGI独立于WebServer存在,在收到特定请求后(这些请求通常以/cgi-bin/路径开头),WebServer将HTTP请求的内容作为参数传递给CGI程序,并将CGI程序的返回值作为HTTP响应返回给客户端。所以CGI程序不能独立运行,需要配合WebServer才能工作。

早期通常是在WebServer接受到一个请求后,开启一个新的进程来执行CGI程序,这种方式在请求量稍微大一些时,就会严重拖累服务器的性能。

所以,随后又诞生了FastCGI(简称为FCGI)技术。简单来说,就是一个常驻内存的进程池技术,可以复用进程,使得CGI的工作负载性能大大提升。

在今天,由于CGI编写的复杂难度过大,已经很少有人再直接应用这种技术(间接的还有很多)。但它的出现,给其他编程语言带来了启发,诸如FCGI、SCGI、WSGI、Servlet乃至后来的动态脚本语言等技术不断涌现,它们都滥觞于CGI。

1995年,在随着NCSAHTTPd1.3版本的发布,NCSA就逐渐放缓了对NCSAHTTPd版本的开发工作。但为了满足日益丰富的Web服务端技术的需要,NCSAHTTPd的社区成员在BrianBehlendorf的领导下,决定在NCSAHTTPd1.3版本的基础上创建一个新的分支,并取名为Apache。

为什么取名为Apache?其中一个流传最广的解释是,Apache是在NCSAHTTPd的基础上修改的,因此是一个“修补过的”(apatchy)WebServer。

但后来在Apache的2.0版本里,Apache社区已将NCSAHTTPd的源代码全部移除,二者在今天已经没有了直接关系。

Apache在前人的基础上,支持了很多新的Web特性。例如:多种身份认证方案、支持CGI、支持SSL/TLS、支持IPv6、反向代理、URL重写、定制化日志文件等等。与此同时,在其2.0版本中还加入了对非Unix操作系统的跨平台支持。

Apache的设计理念,影响了很多后来的WebServer,是开源世界和Web历史中不能不提的一环。

值得一提的是,Apache社区在1999年成立了ApacheSoftwareFoundation(Apache软件基金会)组织,致力于支持开源软件事业。我们今天谈及Apache,即指的是最初的ApacheHTTPServer,也指Apache软件基金会。

正如前文提到的那样,虽然被称为ApacheHTTPServer,但它不仅仅支持HTTP协议及其衍生协议,还可以通过插件的形式支持其他协议。

1995年5月,在令世界为之疯狂的Windows95上市的前三个月,WindowsNT3.51发布,这是WindowsNT3.X系列中的最后一个版本,也是第一个支持全中文的Windows操作系统。

随着这一版本的发布,一个名为InternetInformationServices(简称为IIS,互联网信息服务)的系统可选组件悄然到来。

由于IIS是在Windows操作系统平台下开发的,这也限制了它只能在Windows下运行,但它是首个支持以GUI方式配置的WebServer。

与Apache一样,IIS也支持HTTP协议及其衍生协议、FTP协议、SMTP协议等。

随着Windows的流行,IIS也不断进行版本迭代,它曾一度接近Apache的市场份额,现在也是主流的WebServer之一。

CGI程序一般由C、C++、Pascal等语言编写,并在目标平台上编译成二进制可执行程序,这给开发维护工作带来了很多麻烦。

为了简化CGI程序的修改、编译和发布流程,人们开始探寻用无需编译的脚本语言来实现CGI应用的道路。

1994年,丹麦裔加拿大人RasmusLerdorf用Perl编写了一个简单的程序,用于统计他的个人主页的访问者。后来,RasmusLerdorf用C语言重新编写了一遍这个程序,并在1995年以PersonalHomePageTools(简称为PHPTools,个人主页工具)的名义开源了PHP1.0版本。

在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加如循环语句、数组变量等新特性,在新的社区成员加入开发行列后,1995年,PHP2.0版本顺利发布。在这个版本中,PHP添加了对MySQL数据库的支持,从此建立了其在动态网页开发上的地位。

PHP最早使用CGI的工作方式(即php-cgi),后因为这种方式的性能损耗很大,所以又开发了基于FastCGI的版本(即php-fpm,PHPFastCGIProcessManager的缩写)。

但与早期CGI不同的是,PHP首次将HTML代码和PHP指令合成为完整的服务端文档,Web应用的开发者可以用一种更加简便、快捷的方式实现动态Web网页功能。

1996年,Microsoft公司在借鉴了PHP的思想后,在其产品IIS3.0版本中引入了名为ActiveServerPages(简称为ASP,动态服务器网页)的技术。

ASP使用的脚本语言是JScript和VBScript。借助MicrosotOfficeFrontPage、MicrosoftVisualStudio等开发工具在市场上的成功,ASP迅速成为了Windows系统下Web服务端的主流开发技术。

需要说明的,Microsoft在之后的.NETFramework和.NETCore体系中,还分别引入的名为ASP.NET和ASP.NETCore的技术。如果说后两者还师出同门,只不过一个只在Windows上运行、一个能跨平台运行;而ASP则和后两者只有名字上得到了传承,实际上已经没什么关系了。

当然,以Sun公司为首的Java阵营也不会示弱。1997年,Servlet技术问世。1998年,JavaServerPages(简称为JSP,Java服务器页面)技术诞生。

其中Servlet类似于CGI/FastCGI处理;JSP则类似于PHP的HTML模版。前者对于拼接HTML不是很擅长,后者对于运算和逻辑写起来又很繁琐,那么有没有可以把二者优势相结合的办法呢?

答案是肯定的,这也就是著名的MVC(Model-View-Controller)架构。虽然MVC架构早在1978年就在Smalltalk上提出,在GUI领域上也有Microsoft推出的MicrosoftFoundationClasses(简称为MFC,微软基础类库)丰富实践,但这还是首次在Web领域得到应用。

这种Servlet+JSP组合的方式,后来也反过来影响了之前出现的PHP和ASP,二者最终在后续版本中引入了类似的功能。

至此,扩展到Web领域的语言(如Perl、Python),以及专为Web而生的语言(如PHP、ASP、JSP),这些主流的脚本语言已全部出现,它们最终引领了Web下一个时代的前进方向。

上文提到,无论Apache也好、IIS也罢,本身并不直接生成动态页面,而是需要以CGI/FastCGI的方式将HTTP请求转发给相应的处理程序,才能返回动态页面。

PHP、ASP、JSP等脚本语言的出现,虽然已经不需要Web开发人员手工编写复杂的CGI/FastCGI程序来解析、封装HTTP报文,而是专注于业务逻辑本身即可。但这种方式其实质还是WebServer+CGI/FastCGI二者独立运行的方式。

那么有没有直接能生成动态HTML内容、无需CGI/FastCGI配合的WebServer呢?

1999年,Tomcat应运而生。Tomcat既是HTTPWebServer,也是Java执行容器,它由CatalinaServlet容器、Coyote连接器、JasperJSP引擎等组件组成,可以直接输出动态HTML文档。

由于Tomcat也是Apache软件基金会的顶级项目之一,所以也被称为ApacheTomcat。

早期的Tomcat由于性能不佳(尤其是针对纯静态内容),通常还是要与ApacheHTTPServer或者其他WebServer一起工作,除了用于开发过程中的调试以及那些对速度要求很低的开发者,很少会将Tomcat单独作为WebServer。

这也给很多人造成了误解,以为Tomcat是那些基于CGI/FastCGI技术的脚本语言类似,是专门运行Servlet、JSP的程序。其实这也是一种误解,无论是Servelet还是JSP,它们都比Tomcat面世的要早;而Tomcat完全可以脱离ApacheHTTPServer独立运行,充当WebServer。

但随着Tomcat版本的不断迭代,以及WebServer集群技术的广泛使用,正有越来越多的开发者将其单独作为WebServer。

为了和早期那种只支持静态网页的WebServer加以区分,我们把这类WebServer也称之为ApplicationServer,即应用服务器。

Tomcat这种WebServer+执行容器的双重身份的方式,后来也有越来越多的Java开源产品采用,诸如Jetty、Netty、Underow等等。

值得一提的是,2014年,Microsoft发布了ASP.NETvNext首个预览版,也就是后来的ASP.NETCore,从这一版本开始,Microsoft也实现了类似的产品,名为KestrelServer。

网络通信,本质上就是对网卡或网络虚拟设备进行I/O操作。

早期的操作系统,基本都是阻塞I/O(即BIO),这种方式在面对大量并发时,会显得力不从心。上文提到的各种WebServer都是基于这种实现方式。

在这一时期,很多WebServer都会遇到著名的“C10K”问题,即:当请求的并发数量达到一万后,WebServer的性能会随之急剧下降。

2000年,libevent问世。这是一个由C语言编写的、轻量级的开源高性能事件驱动编程库。起初它只兼容类Unix操作系统,在其他系统上性能并不高,后来在社区的推动下才慢慢支持Windows等操作系统的IOCP模型。不过因为它历史悠久,社区活跃,很多出生较早的项目基本都会选择它作为网络编程库。

目前使用libevent的知名项目有:Memcached、GoogleChrome、ntpd、Tor(洋葱路由)等等。

2007年,为解决libevent多线程全局变量不安全、组件质量参差不齐等问题,MarcLehmann决定精简libevent,去掉多余的组件(如HTTP和DNS),只专注于事件驱动,并最终形成了libev。可以理解为libev是libevent的一个分支版本。目前这一分支作者已停止维护,而且libevent与libuv却在社区推动下飞速发展,所以最后很多项目都不再使用libev。

目前libev使用它的知名项目有ShdwScks(河蟹拼法)、Node.js早期版本。

2011年,在使用了libev作为内置WebServer仅仅两年后,Node.js社区意识到了一些问题。一是前面提到项目维护问题;二是因为Node.js的日益流行,迫切需要跨平台支持。因此,由Node.js之父RyanDahl主导的libuv诞生。它也是由C语言编写,提供对基于事件循环的异步I/O的跨平台支持。最终,在Node.js0.9版本中,libuv完全取代了libev。

目前使用libuv的知名项目有:Node.js、ASP.NETCore、CMake、Julia等等。

事件驱动编程的流行,给WebServer开发带来来新的活力,很多编程语言都加入了对它们的封装引用,可以很方便、快捷地搭建出一个简单的WebServer。但通常来说,都是用于快速搭建开发测试环境,目前还有没有一款基于此的、独立的WebServer产品出现。

2004年,俄罗斯人IgorVladimirovichSysoev在经过了两年的开发后,发布了名为Nginx的WebServer。

Nginx是EngineX的缩写,即“超级引擎”之意。在设计之初,Nginx就被赋予了一个明确的目标:全面超越ApacheHTTPServer的性能。

Nginx同时支持NIO、AIO两种I/O模型,在能支持大量并发连接的情况下,降低了内存占用,并提高了系统稳定性,完美地解决了C10K问题。

虽然Nginx在Windows系统上不如Apache表现稳定,更遑论Microsoft的亲儿子IIS了。但它的可扩展性和高性能,仍然吸引着大量开发者使用。

不过随着云平台的兴起,Nginx又成为了很多云厂商的首选。例如:

截止目前为止,Nginx已占据了36%以上的WebServer市场份额,正逐渐蚕食着Apache与IIS的市场份额。

2011年,在从RedHad(红帽)公司独立出来并开源后,Netty,这个脱胎于JBoss的项目,在被RedHat收购之后,才终于迎来了它的高速发展期。

由于诞生日期很晚,在吸收了早期其他WebServer的经验教训后,Netty直接采用了NIO的I/O模型,实现了其更高的并发性能。

和Tomcat一样,Netty也是一个Java实现的WebServer。这里要指出的是,后来Tomcat也支持了NIO,还新引入了APR技术,所以目前Netty带来的性能优势已经不是很明显。

但与Tomcat是支持七层的HTTP等协议不同的是,而Netty是从四层开始支持TCP、UDP等协议,除了充作HTTPWebServer外,还可以实现自己的高性能私有协议(如RPC协议)WebServer。

本文着重介绍了早期的、和一些现阶段流行的WebServer。

实际上,WebServer领域曾经有无数的优秀作用,也正兴起着更多的、功能更强大的产品。

其实无论是WebServer,还是可用作动态网页的编程语言,都远不止提到的这些,但其他的都没有这些流行,这里也就不费笔墨。

THE END
1.万维网之父:“Web3根本不是Web”发明万维网的计算机科学家蒂姆·伯纳斯-李(Tim Berners-Lee)在里斯本举行的网络峰会技术会议上表示,他并不认为区块链是构建下一代互联网的可行解决方案,并称人们经常将Web3与“Web 3.0”混为一谈,后者其实是他关于重塑互联网的提议。蒂姆·伯纳斯-李解释说:“除了流行语之外,您必须了解术语的实际含义,真正的耻辱是http://m.8b8.cn/szb/18/519382/
2.最新网的发展与影响,探索数字时代的无限可能新闻快报随着科技的飞速发展,互联网已经渗透到我们生活的方方面面,而最新网作为互联网领域的一颗新星,正在引领着一场全新的技术革命,本文将探讨最新网的发展历程、主要特点及其对现代社会产生的影响。 最新网的发展历程 最新网作为一个新兴的互联网服务平台,紧跟时代步伐,不断推陈出新,从初步建立到现在,最新网经历了以下几个http://bz.bearsj.cn/post/58.html
3.马牛耕的兴起在什么时候?人文杂志1980年02期马、牛耕的兴起在什么时候? 祝瑞开 西周中期以后,奴隶社会内部正逐步发生变化。农业生产上,使用大牲畜马、牛的增多,也是变化之一。商代曾用马、牛来犁地耕种。甲骨文中有等字,象马、牛拉犁,破田起土,以种植庄稼。但是由于奴隶制的存在和当时社会生产力水平的限制,这种方式并不能推广。这时主要却是使用犬这种https://read.cnki.net/web/Journal/Article/RWZZ198002014.html
4.HTML5技术沙龙之“现状”:HTML5到底发生了什么?爱范儿基于HTML5 的 Web App 在移动端接受实用性检验后,开发者从热情转为观望。这时候 Hybrid App 作为现阶段 HTML 5 技术的落脚点正悄然兴起!Native App 和 Web App 的论战加入了一个新的角色 Hybrid App。 但究竟什么是 Hybrid App?如何定义? 汽车有混合动力 Hybrid,移动应用同样也有混合模式。Hybrid App(混合模式https://www.ifanr.com/104671
5.什么是Web2.0:下一代软件的设计模式和商业模型经验是:源于用户贡献的网络效应,是在Web 2.0时代中统治市场的关键。 博客和大众智慧 Web 2.0时代一项最受追捧的特性就是博客的兴起。个人主页从互联网早期就已经存在了,而个人日记和每日发表观点的专栏就更渊源久远了,那么到底有什么让人大惊小怪的呢? https://m.blog.csdn.net/blacksource/article/details/3839805
6.UGC是指web2.0以来兴起的一种由()用户主导互联网内容生产的模式。刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供UGC是指web2.0以来兴起的一种由( )用户主导互联网内容生产的模式。的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟将考试题Word文档/Excel文档/PDF文档转化为在线题库,制作自己的电子错https://www.shuashuati.com/ti/b40b7fd4ba6e4ac8adacde64aeb1f1c1.html?fm=bd228f1f0f8d7584e188d31f383285373f
7.互联网常见词汇/术语,可能大部分你都不知道,赶紧收藏吧UGC的概念最早起源于互联网领域,即用户将自己原创的内容通过互联网平台进行展示或者提供给其他用户。UGC是伴随着以提倡个性化为主要特点的Web2.0概念而兴起的,也可叫做UCC(User-created Content)。它并不是某一种具体的业务,而是一种用户使用互联网的新方式,即由原来的以下载为主变成下载和上传并重。 https://www.iyunying.org/www.iyunying.org/operate/243625.html
8.什么是web界面?不懂的快来补基础!在你刚开始接触设计时可能听说过网页Web界面,那你知道什么是网页Web界面吗? 网页Web界面涉及到网页设计,网页设计包括从布局和文本到按钮的所有内容,网站整体的美观度就由这些因素决定。网页Web界面在最近几年有着显著的发展,随着响应式设计的兴起,拥有一个设计精良、在任何设备上看起来都很优质的网站比以往任何时候都https://pixso.cn/designskills/what-is-a-web-interface/
9.Web2.0时代我们需要什么样的阅读?当Web 2.0 概念兴起时,很多人觉得编辑已死,纸媒也只能烧纸。慢慢地人们发现,2.0 时代带来了严重的信息过载,这种信息过载是不能通过机器来解决的。因此,当下我们的阅读应该在社会化和个性化的同时加强传统的编辑化,而非一味的依赖 Web 2.0/3.0,依赖算法。 https://www.huxiu.com/article/1365.html
10.近两万字的干货!可能是最全面的网页设计基础知识全攻略编者按:本文有6个章节,从工作流程、网站种类、网站组成部分、技术原理、设计规范等全面总结了网页设计的基础知识,接近两万字的干货,新手看完就可以入门了。一、网页设计是什么?网页设计也被称为 Web Design、网站设计、Website design、WUI 等。https://www.uisdc.com/web-design-basics-raiders
11.Web3社交的兴起Web3 社交的兴起 摘要 权力下放、所有权和去信任化的早期承诺是否步入正轨,还是在构建复杂技术所带来的无数权衡下动摇了?用户、创作者及其社区将会发生哪些变化? 。 币界网报道: 什么是 Web3 社交? Web3 社交应用程序与 Web2 有何不同? 权力下放、所有权和去信任化的早期承诺是否步入正轨,还是在构建复杂技术https://www.528btc.com/news/120102675.html
12.火爆的ERC314协议有哪些创新?ERC314代币项目概述区块链技术随着Web3概念的兴起,区块链技术正迅速发展,带来了许多创新的协议和标准,其中,ERC-314协议作为以太坊生态系统中的一个新成员,正逐渐吸引开发者和投资者的目光,今天,我们就来探讨ERC-314协议是什么,以及ERC314协议的主要特点,并对ERC314代币项目概述 什么是ERC314协议,之前火爆了一个ERC404协议,最近又火爆了一个314https://www.jb51.net/blockchain/936545.html
13.什么是Web3以及它为何很重要?ethereum.org目前使用 Web3 的技术门槛太高了。 用户必须了解安全问题,通晓复杂的技术文档并浏览晦涩的用户界面。 钱包提供商正在努力着重解决这个问题,但在 Web3 大规模采用之前还有很长的路要走。 教育 Web3 引入了新的范式,这些范式要求学习不同于 Web2.0 上使用的心理模型。 随着 Web1.0 在 90 年代后期兴起,类似的教育https://ethereum.org/zh/web3/
14.Web1.02.03.0分别是什么–PingCode1. Web 1.0、2.0、3.0都是什么意思? Web 1.0指的是互联网的初期阶段,它主要是基于静态网页,用户主要是 passively浏览网页内容。Web 2.0在21世纪初逐渐兴起,它引入了用户生成内容的概念,使用户变得更加参与互联网,比如社交媒体、博客等。Web 3.0被认为是下一个互联网的发展阶段,它将更加注重语义化搜索、人工智能和https://docs.pingcode.com/ask/85907.html
15.web网页设计心得(通用13篇)在平日里,心中难免会有一些新的想法,不妨将其写成一篇心得体会,让自己铭记于心,这么做可以让我们不断思考不断进步。但是心得体会有什么要求呢?下面是小编收集整理的web网页设计心得(通用13篇),希望对大家有所帮助。 web网页设计心得(通用13篇)1 网页设计伴随着网络的快速发展而快速兴起,作为上网的主要依托,由于人们https://www.yjbys.com/xuexi/xinde/3526339.html
16.web2.0Web 2.0时代一项最受追捧的特性就是博客的兴起。个人主页从互联网早期就已经存在了,而个人日记和每日发表观点的专栏就更渊源久远了,那么到底有什么让人大惊小怪的呢? 归根底地,博客只是一种日记形式个人网页。但正如里奇·斯格仁塔(Rich Skrenta)指出的,博客的按时间顺序来排列的结构“看起来像是一个微不足道的变https://www.mscbsc.com/cidian/baikeinf
17.Web2.0相对于Web1.0最大的不同是()的兴起。()A.互联网B.大众Web 2.0相对于Web 1.0最大的不同是()的兴起。()A.互联网B.大众媒体C.社会化媒体D.视频直播https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=9c2cf451312b3169a551a40c&fr=search
18.web2.0web2.0(又名第二代互联网)是相对于web1.0的新的时代,指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式。从科技发展与社会变革的大视野下来看,web2.0可以说是信息技术发展引发网络革命所带来的面向未来、以人为本的创新2.0模式在互联网领域的典型体现。2https://baike.sogou.com/v35061.htm
19.元宇宙系列之Web3.0:以DAO为道,生态共荣相比于历史上类似的合作组织、开源软件开发等类似的组织形式,Web3.0提出一套新的解决方案,就是去中心化自治组织(简称DAO),又可以被称为基于某种协作目的的社区。 摘要 生态共荣模型或将驱动Web3.0生态高速高质量发展。我们将Web3.0定义为后端生产关系的创新,其缘起于对Web2.0超级平台模式生态不平衡的变革。然而,随着互https://wallstreetcn.com/articles/3665246
20.Web3社交的兴起Web3世界Web3社交的兴起 这些是我们将在 Web3 社交系列中深入探讨的一些问题。我不是技术人员,也不是 web3 社交方面的专家,所以我会边写边学习!前几篇文章将致力于快速概述定义「web3 社交」的事物,包括项目类型、主要角色、主导叙述等等。只是为了确保我们对所关注的内容有一个总体了解。https://www.web3sj.com/news/78679/
21.毫微科技创始人孔剑平:引导用户转向Web3.0需满足3个条件澎湃科技:你之前给学生讲课时提过Web3.0的发展阶段,能在这里展开分享一下吗? 孔剑平:对于Web3.0行业的发展,我认为有4个阶段。 第一个阶段是以比特币为主导的区块链阶段,那个时候行业里能参与的领域可能只有5到10个。 第二个阶段是以以太坊为主导的金融应用时代。这个阶段不仅包括之前的矿机、矿产交易、芯片等领域https://m.thepaper.cn/rss_newsDetail_23834458