在 PHP 中,您能够在服务器执行 PHP 文件以前在该文件中插入一个文件的内容。include 和 require 语句用于在执行流中插入写在其余文件中的有用的代码。php
include:包含一个不存在的文件,会提示警告程序会继续执行html
include()语句将在其被调用的位置处包含一个文件。包含一个文件与在该语句所在位置复制制定文件的数据具备相同内容的效果。mysql
include_once():函数的做用与include相同,不过它会首先验证是否已经包含了该文件。若是已经包含,则再也不执行include_once。不然,则必须包含该文件。除了这一点与include彻底相同。git
require:出现错误后直接终止退出,程序再也不执行web
require_once 只会加载同一个文件一次,require会加载屡次。 算法
(双引号内部变量会解析,单引号则不解析.)
"" 双引号里面的字段会通过编译器解释,而后再看成HTML代码输出。
''单引号里面的不进行解释,直接输出。sql
http协议的传输方式有不少种,处于安全考虑,经常使用的通常都是GET和POST两种,先来介绍下这两种数据库
1)GET:获取资源
GET方法用来请求访问已被URL识别的资源设计模式
2)POST:传输实体主体
POST方法用来请求服务器传输信息实体的主体数组
GET和POST的区别:
首先,使用目标不一样:GET方法只是用来查询,不会对浏览器上的信息产生影响,每次GET的方法都是相同的
其次,大小不一样:GET是放在URL首部,所以大小随着浏览器而定,而POST则是在报文中,只要没有具体限制,文件的大小是没限制的
而后,安全性不一样:GET采用的是明文传输,而POST是放在报文内部,没法看到
从使用场景的角度来讲,通常像用户注册登陆这种信息都是私密的,采用POST,而针对查询等,为了快速,大多采用GET传输。
(关于关于GET和POST的区别,最近从新看了不少别人写的博客啊资料什么的,发现上面的解释比较模糊,我就在下面的评论区里面将区别清晰的描述一下,固然,后面的博客也会详细的解释)
接下来介绍其余几种数据传输方式:
3)PUT:传输文件
PUT要求在请求报文的主体中包含文件内容,而后保存到请求URL指定的位置
处于安全考虑,通常web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法
4)HEAD:得到报文首部
HEAD和GET方法同样,只不过不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等
5)DELETE:删除文件
DELETE是与PUT相反的方法,是按请求URI删除指定的资源
处于安全考虑,通常web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法
6)OPTIONS:询问支持的方法
用来查询针对请求URI指定的资源支持的方法
7)TRACE:追踪路径
是让web服务器端将以前的请求通讯还回给客户端的方法
发送请求时,在Max-Frowards首部字段中填入数值,每通过一个服务器端就-1,当数值为0时,中止传输,最后收到服务器返回状态码200 OK的响应
可是,这种方法基本不多使用,并且很容易引发XST(跨站追踪)攻击,就更不会用到了。
8)CONNECT:要求采用隧道协议链接代理
该方法要求在于代理服务器通讯时创建隧道,实现用隧道协议进行TCP通讯,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通讯内容加密后通过网络传输。
安全对一套程序来讲相当重要,请说说在开发中应该注意哪些安全机制?
①防远程提交;②防SQL注入,对特殊代码进行过滤;③防止注册机灌水,使用验证码;
在程序的开发中,如何提升程序的运行效率?
①优化SQL语句,查询语句中尽可能不使用select *,用哪一个字段查哪一个字段;少用子查询可用表链接代替;少用模糊查询;②数据表中建立索引;③对程序中常常用到的数据生成缓存;
①存储位置:session存储于服务器,cookie存储于浏览器
②安全性:session安全性比cookie高
③session为‘会话服务’,在使用时须要开启服务,cookie不须要开启,能够直接用
(1)Where子句中:where表之间的链接必须写在其余Where条件以前,那些能够过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。
(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。
(3) 避免在索引列上使用计算
(4)避免在索引列上使用IS NULL和IS NOT NULL
(5)对查询进行优化,应尽可能避免全表扫描,首先应考虑在 where 及 order by 涉及的列上创建索引。
(6)应尽可能避免在 where 子句中对字段进行 null 值判断,不然将致使引擎放弃使用索引而进行全表扫描
(7)应尽可能避免在 where 子句中对字段进行表达式操做,这将致使引擎放弃使用索引而进行全表扫描
MyISAM 是非事务的存储引擎;适合用于频繁查询的应用;表锁,不会出现死锁;适合小数据,小并发
innodb是支持事务的存储引擎;合于插入和更新操做比较多的应用;设计合理的话是行锁(最大区别就在锁的级别上);适合大数据,大并发。
MySQL数据库做发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
a. 设计良好的数据库结构,容许部分数据冗余,尽可能避免join查询,提升效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql库主从读写分离。
d. 找规律分表,减小单表中的数据量提升查询速度。
e。添加缓存机制,好比memcached,apc等。
f. 不常常改动的页面,生成静态页面。
g. 书写高效率的SQL。好比 SELECT * FROM TABEL 改成 SELECT field_1, field_2, field_3 FROM TABLE.
对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
a. 确认服务器是否能支撑当前访问量。
b. 优化数据库访问。
c. 禁止外部访问连接(盗链), 好比图片盗链。
d. 控制文件下载。
e. 使用不一样主机分流。
f. 使用浏览统计软件,了解访问量,有针对性的进行优化。
简述 private、 protected、 public修饰符的访问权限。
private : 私有成员, 在类的内部才能够访问。
protected : 保护成员,该类内部和继承类中能够访问。
public : 公共成员,彻底公开,没有访问限制。
常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转义到其余URL
404 - 请求的资源(网页等)不存在
505 - 内部服务器错误
HTTP状态码分类:
1** - 信息,服务器收到的请求,须要请求者继续执行操做
2** - 成功,操做被成功接收并处理
3** - 重定向,须要进一步的操做以完成请求
4** - 客户端错误,请求包含语法错误或者没法完成请求
5** 服务器错误,服务器在处理请求的过程 中发生了错误
git和svn的区别
GIT是分布式的,SVN不是
GIT把内容按元数据方式存储,而SVN是按文件
GIT分支和SVN的分支不一样
GIT没有一个全局的版本号,而SVN有
GIT的内容完整性要优于SVN
主键索引:数据记录里面不能有null,数据内容不能重复,在一张表里面不能有多个主键索引。
普通索引:使用字段关键字创建的索引,主要是提升查询速度
惟一索引:字段数据是惟一的,数据内容里面可否为null,在一张表里面,是能够添加多个惟一索引。
全文索引:在比较老的版本中,只有myisam引擎支持全文索引,在innodb5.6后引擎也支持全文索引,在mysql中全文索引不支持中文。咱们通常使用sphinx集合coreseek来实现中文的全文索引。
工厂模式:是一种类,它具备为您建立对象的某些方法。
单元素模式:某些应用程序资源是独占的,由于有且只有一个此类型的资源。
观察者模式:一个对象经过添加一个方法(该方法容许另外一个对象,即观察者 注册本身)使自己变得可观察。
命令链模式:以松散耦合主题为基础,发送消息、命令和请求,或经过一组处理程序发送任意内容。
策略模式:算法是从复杂类提取的,于是能够方便地替换。
用PHP打印出前一天的时间,格式是2006-5-10 22:21:21
echo date('Y-m-d H:i:s',time()-60*60*24); 或者echo date('Y-m-d H:i:s',strtotime('-1 day'));
echo(),print(),print_r()的区别
echo是语言结构,无返回值;
print功能和echo基本相同,不一样的是print是函数,有返回值;
print_r是递归打印,用于输出数组或对象。
用PHP写出显示客户端IP与服务器IP的代码
echo '客户端IP:'.$_SERVER['REMOTE_ADDR'].'<br />'; echo '服务器端IP:'.gethostbyname($_SERVER['SERVER_NAME']);
闭包是指有权访问另外一个函数做用域中变量的函数,建立闭包的最多见的方式就是在一个函数内建立另外一个函数,经过另外一个函数访问这个函数的局部变量,利用闭包能够突破做用链域,将函数内部的变量和方法传递到外部。
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。若是用在被包含文件中,则返回被包含的文件名。
__DIR__ 文件所在的目录。若是用在被包括文件中,则返回被包括的文件所在的目录。
__FUNCTION__ 常量返回该函数被定义时的名字
__CLASS__ 常量返回该类被定义时的名字(区分大小写)。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。
面向对象和面向过程区别
面向过程就是分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就能够了。
面向对象是把构成问题事务分解成各个对象,创建对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
TCP的三次握手
TCP(Transmission Control Protocol) 传输控制协议
TCP是主机对主机层的传输控制协议,提供可靠的链接服务,采用三次握手确认创建一个链接:
位码即tcp标志位,有6种标示:SYN(synchronous创建联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
在TCP/IP协议中,TCP协议提供可靠的链接服务,采用三次握手创建一个链接。
第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据.