锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

PHP面试问题总结整理

时间:2023-10-29 08:37:02 压力变送器mpm486mpm430压力变送器

  1. 主从复制的原理是什么?主从复制中断怎么办?主从复制延迟怎么办?主库崩溃怎么办?

原理:

原理:主从复制有三个过程,从库生成两个线程I/O线程,一个SQL线程;

i/o向主库请求线程 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;

生成一个主库 log dump 线程,用于从库 i/o线程传binlog;

SQL 会读取的线程relay log将文件中的日志分析成具体操作,实现主从操作一致,最终数据一致;

主从复制错误?

错误一:

错误原因:用户权限或密码从库连接主库是错误的

解决方案:首先检查主从复制的用户权限,如果没有问题,检查从库使用的密码是否正确。

错误二:

错误原因:这可能来自库master.info文件损坏。

解决方法:reset slave

错误三:

错误原因:可能是由于库的约束比主库多。

解决方法:

Mysql > stop slave;

Mysql > set global sql_slave_skip_counter =1 ;

Mysql > start slave;

错误四:

错误原因:slave错误中缺少表。

解决方法:在slave添加相应的表,然后添加相应的表start slave。

错误五:

错误原因:库上对应的表面缺少字段。

解决方案:根据主库的上表结构,将缺失的字段添加到库对应表中,然后start slave。

错误六:

错误原因:主库删除的表不存在于库中,导致库在删除不存在表时无法同步。

解决方案:使用slave-skip-errors跳过1146错误的参数(这个参数只读,需要在配置文件中修改,重启从库)

1、在my.cnf的[mysqld]下面添加slave_skip_errors=1146

2、重启从库 service mysq jhl restart

3、在从库上启动同步

4、去掉my.cnf中的slave_skip_errors=1146

5、重启从库

6.启动从库复制`1

中断

Show slave status\G;检查错误的原因

1.show slave status\G,提示中继日志损坏,根据之前的做法,根据提示重新指定合适的日志文件和pos点。

2.从MySQL5.5.X版本开始,增加了relay_log_recovery参数,这个参数的作用是:当slave如果从库中停机relay-log如果损坏,部分中继日志未处理,所有未执行的日志将自动放弃relay-log,并且

重新从master默认关闭该参数。这个参数在做决从这个参数。修改my.cnf,添加这两项。(skip-slave-start ,mysql服务启动跳过自动启动主从复制,避免新问题),relay_log_recovery不支持动态修改。因此,修改配置文件,重启MySQL服务,启动主从复制线程

a、主从同步延迟与系统时间的关系,检查主从两个机器间系统 时间差

c、主从同步延迟和lock的关系(myisam表读时会堵塞写作),尽量避免使用myisam表。在一个例子中尽量减少数据库的数量。

d、主从复制异常中断,长时间后发现复制异常。可以检查master与slave的status估计差异日志。若差异过大,可考虑从库重做。

原因:当主库并发量较大时,产生DDL数量,超出线程承受的范围,产生延迟,可能是和slave的大型query句子产生锁等待;

解决方案:优化架构,尽量让主库DDL快速执行,因为从库只读取数据,不需要那么高的安全性,所以可以sync_binlog设置为0,或关闭binlog日志,或使用比主库更好的硬件设备slave

可暂时存放缓存

从库不能执行大量写入(5.6支持仓库并发,5.7支持仓库多表并发执行)

https://www.cnblogs.com/gomysql/p/3675429.html

MHA :原理

(1)从停机崩溃master保存二进制日志事件(binlog events);

(2)包含最新更新的识别slave;

(3)应用差异中继日志(relay log)到其他的slave;

(4)应用从master保存的二进制日志事件(binlog events);

(5)提升一个slave为新的master;

(6)使其他的slave连接新的master进行复制;

  1. Redis有哪些数据类型?

String hash,set,zset, list

  1. Redis和memcache的区别是什么?

从存储大小 Memcached单个key-value大小有限,一个value最大只支持1MB,key 最大250个字符,而Redis最大支持512MB

从可靠性 Memcached只是个内存缓存,对可靠性无要求;而Redis更倾向于内存数据库,因此对对可靠性方面要求比较高

区别:

1:memcache和redis都是将数据存储到内存中,都是内存数据库,不过memcache还可以缓存其他东西,图片视频等。

2:存储类型不同,memcache只支持k-v结构,redis支持五种数据类似,字符串,链表,哈希,集合,有序集合。

3:虚拟内存,当redis物理内存使用完后,可以将一些很久没有使用过的value交换到磁盘

4:分布式设定memcache集群,利用magenta做一主多从,redis可以做一主多从,也可以一主一从。

5:存储数据redis持久化,memcache关机后数据消失

6:数据恢复,memcache挂掉后,数据不可恢复,redis数据丢失后可以通过AOF日志恢复

7:应用场景不同,redis除啦作为数据库使用之外,还能做消息队列,数据堆栈和数据缓存等,memcache适用于缓存sql语句,数据集,用户临时性数据,延迟查询数据 session等

  1. Redis在项目中怎么用的?

查询数据多的页面做缓存比如页面缓存首页

  1. Mysql数据库优化做过哪些工作

 1:建表时选择适合字段的数据类型,合适的长度

2:查询多的字段加索引 sql语句优化

3:分页优化

4:分区分表

5:主从复制,读写分离

  1. Myisam和innodb的区别是什么?

innodb写操作快、支持事务、数据行锁、 支持外键, InnoDB的主键范围更大,最大是MyISAM的2倍。

MyISAM不支持事务和外键,读操作快、 支持数据锁表、 GIS数据 、全文索引(因为它不支持中文分词,所以 MyISAM的全文索引其实没啥用)。

   

  1. 你了解哪些算法?

冒泡快速二分,归并

  1. 负载均衡怎么搭建的?nginx属于第几层负载均衡?nginx对于请求的分配有哪些策略模式?

反向代理  第7层

轮询加权轮询IP负载均衡cdn负载均衡

  1. 网络七层协议有哪些?

物理层数据链路层网络层传输层会话层表示层应用层

 PHP

  1. 请说出10个字符串函数和10个数组函数

Substr(截取),strlen(长度),str_replace替换strpos查找并返回首个匹配项的位置),substr_count(出现次数),explode(字符串分割数组)

Rtrim(去除右面空格)ltrim(去除左边空格)trim(去除两边)str_split 函数把字符串分割到数组中。

In_array(),  is_array(),  implode(),  array_merge(), array_keys(),  array_values(),  sort(),  array_pop(删除数组最后一个元素), array_shift(删除数组第一个元素并返回值)  array_push(插入数组末尾)

你了解哪些设计模式?

单例模式,工厂模式,简单工厂模式,策略模式,观察者模式

  1. 请说一下get和post的区别

 get和post区别,唯一区别一个是用过url实现,另外一个是通过数据包;本质是http的原因,

关于GET/POST大小说法,这个是关于浏览器(发送http请求)和服务器(接收http请求)的关系,

(大多数浏览器url限制2K个字节,大多数服务器只处理64k之内的url)

Get不是特别安全post安全性更高

  1. 请描述一下session和cookie的区别,session信息的存储方式,如何进行遍历?

1:session存储在服务器端,cookie存储在客户端

2:session默认存储在服务器的一个文件里(不是内存)

3:session的运行依赖session id ,而session id是存在cookie中的,也就是说如果浏览器禁用了cookie,同时session也会失效,(但是可以通过其他方式实现session ,比如在url中传递session id)

4:session 可以放在文件,数据库,或者是内存中,默认是存储在文件中,都可以

5:用户验证一般都会用session

  1. 请说一下你对mvc的理解

M model是应用程序中用于处理应用程序数据逻辑的部分。

模型层主要于数据库进行交互

V view是应用程序中处理数据显示的部分。

视图层展示给用户看的页面

C是应用程序中处理用户交互的部分。

通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

  1. 请描述一下php-fpm的工作原理

FastCGI进程管理器   

请求到nginx通过fastcgi协议,fastcgi会找php-fpm解析php文件,php-fpm有两个进程,master进程和worker进程,worker进程会解析php代码最后将结果返回给nginx

 Mysql

  1. varchar和char的区别

char 长度固定,varchar长度是变化的。

比如:  char (10) 表示存储的字节就是占10字节

但是varchar(10) ,10是最大值,字节按照存储字节算

  1. 什么是数据库索引?mysql有哪些索引?主键索引和唯一索引有什么区别?

 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息数据库索引好比是一本书前面的目录,能加快数据库的查询速度。

普通索引

主键索引,(要求主键中的每个值都唯一。

唯一索引,(唯一索引是不允许其中任何两行具有相同索引值的索引。

复合索引,

全文索引

  区别:http://blog.csdn.net/tanga842428/article/details/52790651

  1. Myisam和innodb的区别是什么?为什么innodb比myisam写入快?

innodb写操作快、支持事务、数据行锁、 支持外键 InnoDB的主键范围更大,最大是MyISAM的2倍。

MyISAM不支持事务和外键,读操作快、 支持数据锁表、 GIS数据 、

在高并发的情况下,因为innodb支持行锁可以多行操作,而myisam只支持表锁只能一个一个操作所以慢

  1. 请列举出你所了解的会引起索引失效的情况

 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)

    注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

  2.对于多列索引,不是使用的第一部分,则不会使用索引(最左原则)

  3.like查询是以%开头      

  4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

  5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

  6对索引列运算,运算包括(+、-、*、/、!、<>、%、like'%_'(%放在前面)、in、exist等),导致索引失效。

  7.在JOIN、UNION操作中,主键和外键的数据类型不相同,MYSQL将无法使用索引

  8.is null 索引失效,is not null Betree索引生效。导致的原因:mysql没有在null写进索引           

  9.对索引应用内部函数,这种情况下应该建立基于函数的索引                 

 explain select * from demo_range t where round(t.title)=1

  1. 在mysql中值为空和值为null有什么区别?

空值('')是不占用空间的    NULL其实是占用空间的

在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。

  1. left join、right join、inner join的区别是什么?

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

  1. 请描述一下sql语句的执行顺序  

https://www.cnblogs.com/spring-hailong/p/6182227.html

 (11)limit

  1. 请描述一下你对mysql连接池的理解

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

1. 最小连接数

是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。

2. 最大连接数

是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

  1.  事物的四大特性和事物的隔离级别

   原子性(Atomicity)

 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,

一致性(Consistency)

 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

隔离性(Isolation)

 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

持久性(Durability)

 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

不考虑事务的隔离性,会发生的几种问题:

   脏读

 脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。

不可重复读

 不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了

虚读(幻读)

幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

    现在来看看MySQL数据库为我们提供的四种隔离级别:

① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

② Repeatable read (可重复读):可避免脏读、不可重复读的发生。

③ Read committed (读已提交):可避免脏读的发生。

④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。

Linux

PHP的所有应用程序都是通过WEB服务器(如IIS或Apache)和PHP引擎程序解释执行完成的,工作过程:

(1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送化支持PHP的WEB服务器。

(2)WEB服务器接受这个请求,并根据其后缀进行判断如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序。

(3)PHP引擎程序将会对WEB服务器传送过来的文件从头到尾进行扫描并根据命令从后台读取,处理数据,并动态地生成相应的HTML页面。

(4)PHP引擎将生成HTML页面返回给WEB服务器。WEB服务器再将HTML页面返回给客户端浏览器。

简言之:apache是WEB服务器,它可以解析php语言。

  1. 请描述PHP-FPM的工作原理

PHP-FPM是一个PHP FastCGI进程管理器,是只用于PHP的

PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置

请求到nginx通过fastcgi协议,fastcgi会找php-fpm解析php文件,php-fpm有两个进程,master进程和worker进程,worker进程会解析php代码最后将结果返回给nginx

  1. 如何安装php扩展?

1:使用apt或者yum命令安装(如果PHP是通过 apt 或者 yum 命令安装的,则扩展也可以通过 apt 或者 yum 安装)

2:使用pecl安装

3:源码编译安装(一般是安装PHP自带的扩展,以安装pcntl扩展为例)

4:phpize安装(要安装的扩展在php源码ext目录中没有,那么这个扩展需要到http://pecl.php.net 搜索下载)

  1. nginx和Apache的区别是什么?

1:nginx是轻量级,比apache占用更少的内存以及资源

2:apache比nginx的rewrite强大,模块多,bug少,稳定性强,

3:apache对php支持比较简单,nginx需要配合其他后端用,apache组件比nginx多,现在nginx是web服务器的首选

4:最核心的区别是apache是同步多进程模型,一个连接对应一个进程,多个连接(千万级别)可以对应一个进程

5:nginx:配置文件写的很简洁,正则配置让很多事情变得简单运行效率高,占用资源少,代理功能强大,很适合做前端响应服务器 

6:Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache吧

7:动态请求要apache去做,nginx只适合静态和反向

  1. 请说出常用的10个Linux操作命令(ll ls cd除外)

top 查看内存

df-lh 查看磁盘     ps -a 查看所有进程

修改权限     chomd

修改所有者  chown    压缩  tar -zcvf

解压  tar -zxv     查看日志   tail -f

查找   find locate  复制    dd    删除   rm

杀死进程    kill    创建文件夹    mkdir

移动:mv  报告现行正在工作的或当前目录    pwd

Tail    末端打开文件

  1. 如何查看一个进程是否在运行

Ps aux |grep 查看的那个  |  ps -ef | grep xxx

  1. 如何查看服务器当前CPU使用情况

CPU占用率 top

  1. 什么是fast_cgi,什么是cgi.什么是php-fpmcgi, php cgi,他们之间的区别

Cgi 看做是一个面向过程        php_cgi(php里的面向过程)  

fast_cgi 就是一个面向对象(mvc)        php_fpm (各种框架)

  1. session 于cookie的 原理及token 的作用?

Cookie概念

      在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能.

Session的概念

   Session 是存放在服务器端的类似于HashTable结构来存放用户数据;

   作用:实现网页之间数据传递,是一个存储在服务器端的对象集合。

   原理当用户请求一个Asp.net页面时,系统将自动创建一个Session;退出应用程序或关闭服务器时,该Session撤销。系统在创建Session时将为其分配一个长长的字符串标识,以实现对Session进行管理与跟踪。

Token

1:客户端使用用户名跟密码请求登录

2:服务端收到请求,去验证用户名与密码

3:验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

4:客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里

5:客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

6:服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

  1. 数据库优化做了哪些 项目优化做了哪些?

   mysql优化,负载均衡,缓存,静态页

  1. 数组实现队列用哪些函数?

队列先进先出

array_push()尾部添加  和array_shift() 删除数组第一个元素并返回值

  1. redis 实现对列 关键点是什么 用了什么函数?

  用了list

Rpush(队列左边添加)    lpush(队尾取)

  1. Mysql日志有哪些 ,这个 日志 默认文件格式 是什么 和文件格式 有哪些?

错误日志:     -log-err  
查询日志:     -log  
慢查询日志:   -log-slow-queries  
更新日志:     -log-update  

二进制日志: -log-bin  

  1. 客户端禁掉 cookie session还能用吗?

一般Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

但是可以通过其他方式来存储sessionID,eg:redis或文件里,就可以用了

  1. 知道的PHP加密有哪些?

Md5() 不可解的

Sha1() 哈希加密 

Base64()

URL加密()

  1. 用过的webserver 有哪些?

Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务

Nginx apache

  1. 主主复制和主从复制的区别?

https://www.cnblogs.com/Richardzhu/archive/2013/11/14/3422840.html

 主主数据能互相同步,主主复制一用作个般高容灾方

  1. redis 持久化了解多少?

Aof(日志),rdb(快照)

  1. 用户表 做分表 hash分表之后 产生重复的数据怎么办?

  主表判断

  1. 了解的设计模式 单例模式怎么实现的?

三私一公

  1. 抽象类和接口类的区别?

抽象类要被子类继承,接口要被类实现。

抽象类里可以没有抽象方法

如果一个类里有抽象方法,那么这个类只能是抽象类

抽象方法要被实现,所以不能是静态的,也不能是私有的。

接口可继承接口,并可多继承接口,但类只能单根继承、

  1. 怎么防止form 表单多次提交?

  disabled

  1. 用过哪些版本控制软件?介绍一下?

Git和svn

git和其他版本控制系统(如 CVS)有不少的差别,git本身关心文件的整体性是否有改变,但多数的 CV S或 Subversion 系统则在乎文件内容的差异。因此git更像一个文件系统,直接在本机上获取数据,不必连接到主机端获取数据。

  SVN 是集中式或者有中心式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

      Git 是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

  1. 了解的魔术方法有哪些?

   __construct()   实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

__destruct()   当删除一个对象或对象操作终止时被调用。

__call()      对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。

__get()    读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。

__set()     设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。

__toString()   打印一个对象的时被调用。如echo $obj;或print $obj;

__clone()     克隆对象时被调用。如:$t=new Test();$t1=clone $t;

__sleep()     serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

__wakeup()    unserialize时被调用,做些对象的初始化工作。

__isset()     检测一个对象的属性是否存在时被调用。如:isset($c->name)。

__unset() unset一个对象的属性时被调用。如:unset($c->name)。

__set_state()  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

__autoload()   实例化一个对象时,如果对应的类不存在,则该方法被调用。

  1. 怎么保证接口的安全,做了哪些操作?

  1、当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session中,将生成的access_key和session_id返回给APP端。

2、APP端将接收到的access_key和session_id保存起来

3、当APP端调用接口传输数据时,将所传数据和access_key使用加密算法生成签名signature,并将signature和session_id一起发送给服务器端。

4、服务器端接收到数据时,使用session_id从session中获取对应的access_key,将access_key和接收到的数据使用同一加密算法生成对应signature,如果生成的签名和接收到的signature相同时,则表明数据合法

  1. sql注入和xss攻击了解多少,怎么实现的攻击?

Xss攻击是跨站脚本工具    Csrf攻击是跨站请求伪造   sql注入   DDOS流量攻击?

防止xss脚本攻击:

XSS攻击即跨站脚本攻击,通过篡改网页,注入恶意的HTML脚本,控制 用户浏览器进行恶意操作的一种攻击。

防止: script注入,转义过滤script标签。Htmlentities(把字符串转为html实体)

防止csrf跨站请求伪装:

CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。

1:.Cookie Hashing(所有表单都包含同一个伪随机值):

2:验证码

3:One-Time Tokens(不同的表单包含一个不同的伪随机值)

防止sql注入:

1执行sql语句是使用addslashes进行sql语句转换

       2 sql语句书写尽量不要省略双引号和单引号

       3 过滤掉sql语句里的关键词 :update insert delete select *

       4 PHP配置文件中设置register_global为off,关闭全局变量注册

       5 控制错误信息 不要把错误信息输出到浏览器上 应保存在错误日  

防止DDOS流量攻击

1 使用工具:DDoS deflate . 自动查封IP.

2 解析域名到127.0.0.1 让攻击方自己攻击自己

3 把网站做成静态页面

4 限制S YN/ICMP流量

  1. 面向过程,面向对象的区别?

  把面向过程封装起来就是面向对象

  1. php 怎么屏蔽错误?

  方法一:@
        在任何错误语句之前加上@符号,即可屏蔽!

方法二:error_reporting

       在PHP文件第一行加上:error_reporting(0); 即可屏蔽!

方法三:display_errors
       打开php.ini文件,搜索display_errors = on,默认的应该是on,改为off 即可屏蔽!

  1. memcache 的原理?

在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率。

  1. mysql连接池什么时候初始化?

第一次连接数据库时

  1. curl 和 file_get_contronts()的区别?

file_get_contronts() 只能使用get方式获取数据

curl 模拟多种请求 

  1. php超全局变量有哪些?

$GLOBALS  储存全局作用域中的变量

$_SERVER  获取服务器相关信息

$_REQUEST  获取POST和GET请求的参数

$_POST  获取表单的POST请求参数

$_GET  获取表单的GET请求参数

$_FILES  获取上传文件的的变量

$_ENV  获取服务器端环境变量的数组

$_COOKIE   浏览器cookie的操作

          设置cookie:setcookie(name, value, expire, path, domain);

          获取cookie:$_COOKIE["user"];

          删除cookie:setcookie("user", "", time()-3600);//设置过期时间

$_SESSION  服务端session的操作

          使用session前一定要session_start()启动session

          储存session:$_SESSION["name"]="King";//数组操作

          销毁session:unset($_SESSION["name"]);//销毁一个

session_destroy()和unset($_SESSION);//销毁所有的session

  1. tcp和udp的区别?

小结TCP与UDP的区别:
  1.基于连接与无连接;
  2.对系统资源的要求(TCP较多,UDP少);
  3.UDP程序结构较简单;
  4.流模式与数据报模式 ;
  5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

  1. myisam 和 innodb 谁支持事物 谁支持外键?

Innodb 支持事务innodb 支持外键

  1. 说下常见的 http 返回状态码?

所有 HTTP 状态代码及其定义。
 代码  指示 
2xx  成功 
200  正常;请求已完成。 
201  正常;紧接 POST 命令。 
202  正常;已接受用于处理,但处理尚未完成。 
203  正常;部分信息 — 返回的信息只是一部分。 
204  正常;无响应 — 已接收请求,但不存在要回送的信息。 


3xx  重定向 
301  已移动 — 请求的数据具有新的位置且更改是永久的。 
302  已找到 — 请求的数据临时具有不同 URI。 
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。 
304  未修改 — 未按预期修改文档。 
305  使用代理 — 必须通过位置字

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章