请说明 PHP 中传值与传引用的区别,什么时候传值什么时候传引用?
- 按值传递:函数范围内对值的任何改变在函数外部都会被忽略
- 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
- 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处
MySQL数据库中的字段类型varchar和char的主要区别
- Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些
MySQL数据库的常用存储引擎以及它们的区别
- MyISAM:不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,支持全文索引。
- InnoDB:支持事务,行锁,有崩溃恢复能力。读写速度比MyISAM慢,5.6之后支持全文索引。
存储引擎是基于表的,而不是数据库
SESSION 与 COOKIE的区别是什么
- SESSION存储在服务器端,COOKIE保存在客户端。Session比较安全,cookie用某些手段可以修改,不安全。Session依赖于cookie进行传递。禁用cookie后,session还可以使用,在存储session的文件中,生成sessionID,通过get传参的方式将sessionID传到要实现session共享的页面,读取sessionID,从而从session中获取数据。 建议查找session与cookie这方面的详细教程
include和require的区别是什么
- require是无条件包含,也就是如果一个流程里加入require,无论条件成立与否都会先执行require,当文件不存在或者无法打开的时候,会提示错误,并且会终止程序执行 include有返回值,而require没有(可能因为如此require的速度比include快),如果被包含的文件不存在的化,那么会提示一个错误,但是程序会继续执行下去
PHP 数组排序
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
优化MYSQL数据库的方法
- 选择最有效率的表名顺序
- WHERE子句中的连接顺序
- SELECT子句中避免使用‘*’
- 用Where子句替换HAVING子句
- 通过内部函数提高SQL效率
- 避免在索引列上使用计算。
- 提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。
- 选取最适用的字段属性,应该尽量把字段设置为NOT NULL
- 使用连接(JOIN)来代替子查询(Sub-Queries)
- 使用联合(UNION)来代替手动创建的临时表
- 尽量少使用 LIKE 关键字和通配符
- 使用事务和外键
MySQL主从备份的原理?
- mysql支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器