php和web那个好学?
先说明你提问中出现的认知误区,php是一种语言,web是一种应用场景,所以根本不应该在问题中并列这两个词汇。事实上就是各种技术的汇集共同实现了web应用,php是其中的一个技术分支而已。
在web中,html和css两个技术是最容易学习的,几乎是无门槛,随便买本html+css从入门到精通之类的书,你就可以按图索骥开始实战了,3天(一天8小时)左右就能达到熟悉的水平。
但是,如果想将html和css从熟悉真正转变为精通就是另一件事情了,此时它和开发语言(如javascript, php)入门具有了相同的门槛。即:
必须具有逻辑思维意识才能掌握编程语言。也就是必须具备用语言归纳事物运行规则的能力。
还是用html和css举例,只要做到熟悉,那么你就能将页面做出预期的效果,但是只有跨过了上面的门槛,你才能在完成目标的前提下保证html与css源码的见解、高效、可维护。
用css举例,低端的css可能类似:
liitem a {font-size: 14px; color: #blue;}
liitem2 a {font-size: 14px; color: #red;}
那么更好的声明应该类似(只是例子,抛开整体只看片段的话这种写法未必比上面好)
li a {font-size: 14px;}
liitem a {color: #blue;}
liitem2 a{color: #red;}
这里要突出的是第二段代码说明开发人员对“层叠”有了认知,不再是有一说一,而是先整体,后局部,逻辑思维清楚。
从我个人接触到的初学者来说,逻辑思维意识,或者说怎么用程序语言描述事物是软件开发人员入门的最大障碍,不管你学那种技术都一样。希望对你有帮助,少走弯路。
web开发技术分前端开发和后端开发,我们来分别介绍一下。
前端
Web应用被分类归为分布式应用,一般是客户端——服务器结构,所以我们有一部分的代码运行在客户端,另一部分代码运行在服务器。那些在客户端上的应用就是前端,通常指的就是我们的浏览器。最常用于前端开发的技术是HTML+CSS+JavaScript,高级的前端开发人员通常使用这些技术的组合开发应用的前端,另一个前端的常用技术就是使用Photoshop设计,配合其他技术共同完成Web页面的制作。
后端
后端开发者编写那些运行在服务器上的代码,通常来说,这部分的工作需要和数据库打交道,比如读写数据、读写文件、实现业务逻辑等。有些时候,业务逻辑存储在客户端,这时后台就是用来以Web服务的形式提供数据库中的数据。后端开发者一般需要掌握一种Web编程语言和一个数据库管理系统。
1、Web应用程序的运行原理
web应用程序是基于浏览器/服务器的应用程序。浏览器用于显示数据,和用户产生交互,其作用就相当于电脑的显示器。服务器用于处理浏览器的请求,并把结果数据组织成浏览器可以识别的格式返回。所以,它的作用就相当于电脑的主机。显然,一个很大的区别是,主机和显示屏是一对一的,而服务器和浏览器却可以是一对多的。在广域网中,一个服务器可以给数以百万计的浏览器提供服务。
2、Web服务器汇总
Web服务器用来接收浏览器请求、处理请求、把结果数据组织成特定的格式,然后返回到浏览器显示。常见的Web服务器有如下几种:Tomcat,IBMWebSphere,WebLogic,MicrosoftIIS
3、Web服务器和应用服务器
Web服务器用来处理HTTP请求,并返回HTTP数据。它主要用来和浏览器交互,给用户提供服务。应用程序服务器可以被Web服务器去调用,进行业务逻辑的处理工作。例如EJB服务器,它返回的数据被Web服务器组织为HTML格式,然后返回到浏览器去解析。
主要的问题有以下几点:
1目前国内的ADSL大多数是有时间限制的,ADSL租约
这些你可以百度一下,简单点说一段时间后会自动断线,必须得重新拨号,
2别人访问你的速度相当差,毕竟IDC机房都是高速光纤接入,入口都是千M以上的,虽然那些租的服务器或者是虚拟主机仅仅是10M或者是2M速度,但是入口和出口都是高速的,这个区别可是天壤之别。如果你的网站反问人数几十人可能你还看不出区别,如果有500人,访问者就会感觉出明显区别了。
3国外的空间,毕竟涉及到一个外访性质,先不说距离问题,就是访问用户自己的网络好坏也有很大关系
逻辑上实现了http协议、管理web资源、负责提供web服务器的管理功能。
Web服务器逻辑和操作系统共同管理TCP连接。
Apache 就是 开源的 软件web 服务器的一种。
一旦连接建立起来并被接受,服务器会将新连接添加到其现存的web服务器连接列表中,做好监视连接上数据传输的设备。
可以用反向DNS对大部分web服务器进行配置,以便将客户端IP地址转换成 客户端 主机名。
好处: web服务器可以将客户端主机名用于详细的访问控制和日志记录。
坏处:主机名查找可能会花费很长时间,要么只允许特定内容进行解析。
有些web服务器还支持ident 协议。服务器可以通过ident协议找到发起http连接的 用户名 。对记录日志非常有用。
类似这种。
如果客户端支持ident协议,就在tcp端口113上监听 ident请求。
但ident在公共因特网上不能很好的使用
解析请求报文时,web服务器会不定期从网络上接受输入数据。网络连接可能随时都会出现延迟。web服务器从网络中读取数据,将部分报文数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。
web服务器对报文解析后,并用自己内部的数据结构来存储请求报文。
请求可能会在任意时刻到达,所以web服务器不停观察有无新的web请求。不同的web服务器会以不同的方式为请求服务。
单线程的服务器一次只处理一个请求。一个事务处理结束后,才会去处理下一条连接。
结构容易实现,单性能很差。
多进程和多线程服务器用多个进程或更高效的现成同时对请求进行处理。
可以根据需要创建,或者预先创建一些线程/进程。有些服务器会为每条连接分配一个线程/进程,但当服务器同时要处理成百上千甚至上万的连接时,需要的继承或者线程数量可能会消耗太多内存或系统资源。(预先分配 线程池,进程池,内存池等手段)
因此这类服务器会对线程/进程的最大数量进行限制
线程与复用功能结合,利用计算机平台上多个CPU。多个线程中的每一个都在观察打开的连接。并对每条连接执行少量任务。
收到并解析请求后,可以根据方法、资源、首部和可选的主体部分对请求进行业务处理。
在web服务器将内容传送给客户端之前,要将请求 报文中的URI映射为web服务器上适当的内容或内容生成器,以识别出内容的源头。
请求URI 作为名字 来 访问 Web 服务器文件系统中的文件。通常web 服务器的文件系统中会有一个特殊的文件夹专门用于存放web内容。
即文档的 根目录 。
同时服务器也需要注意,不能让URL退到docroot之外,将文件系统的其余部分暴露出来。不允许这样的uri出现:
web服务器可以接受收对目录url的请求,其路径可以解析为一个目录。而不是文件。我们可以对大多数web服务器进行配置。使其在客户端请求目录url时 采取不同的动作。
大多数web服务器都会去查找目录中的一个名为indexhtml 的文件来替代此目录。
如果用户请求的时一个目录的url,并且这个目录中有一个名为indexhtml 的文件。服务器就会返回这个文件。
Web 服务器还可以将URI映射为动态资源,也就是说,映射到按需动态生成内容的程序上去。
实际上,有一大类名为应用程序服务器的Web 服务器会将Web服务器连接到复杂的后端应用上去。
Web 服务器主要做的事:
也就是说 web服务器会将URI路径名 映射为 可执行文件目录 。
服务器端包含项(SSI),如果某个资源被表示为存在服务器端包含想,服务器会在将其发送给客户端之前对资源内容进行处理。
web 服务器还可以为特定资源进行访问控制,有请求到达,要访问受控制资源时,服务器可以根据客户的ip地址进行访问控制,比如输入密码才能访问。
如果事务处理产生了响应 主体,就将内容放在响应报文中发回去。实体包括:
服务器要负责确定响应主体的MIME类型。有很多配置服务器的方法可以将MIME类型与资源关联起来。
Web 服务器有时会返回重定向响应而不是成功的报文。Web服务器可以将浏览器重定向到其他地方执行请求。
重定向返回码 3XX。Location响应首部包含了内容的新地址。
对于非持久连接而言,服务器应该发送了整条报文后,关闭自己一端。
对于持久而言,连接仍然可以保持打开状态。这种情况下服务器端要正确的计算content length,不然客户端无法知道响应何时结束。
当事务结束时,web服务器会在日志文件中添加一跳目录,来描述已执行的事务。
0条评论