PHP面试题1--状态码,Session和Cookie的区别,Include和Require

HTTP是无状态协议,HTTP状态码含义:

302:临时转移成功,请求已经转移到新的位置

401:未授权

403:禁止访问

404:文件未找到

500:服务器内部错误

502:服务器内部错误

200:请求成功

Session和Cookie的区别:

1. 存储位置不同

cookie的数据信息存放在客户端浏览器上

session的数据存放在服务器上

2. 存储容量不同

单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie

对于session来说并没有上限,但是处于服务器端的性能考虑,session内不要存放过多的东西,并删除session删除机制

3. 存储方式不同

cookie中只能保存ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据

session中能够存储任何类型的数据,包括且不限于string, integer, list, map等

4. 隐私策略不同

cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的

session是存储再服务器端的,对客户端是透明的,不存在敏感信息泄露的风险

5. 有效期上不同

开发可以通过设置cookie属性,达到使cookie长期有效的效果

session依赖于名为Jsessionid的cookie,而cookie jsessionid的过期时间默认为-1, 只需要关闭窗口,该session就会失效,因而session不能达到长期有效的效果

6. 服务器压力不同

cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择

session使保存再服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存

7. 浏览器支持不同

假如客户端浏览器不支持cookie

cookie使需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效,关于WAP上的应用,常规的cookie就派不上用场

运用session需要使用URL地址重写的方式,一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效

假如客户端支持cookie:

cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。

session只能在本窗口以及子窗口内有效。

8、跨域支持上不同

cookie支持跨域名访问。

session不支持跨域名访问。

PHP中的传值和传引用

按值传递:在函数范围内对值的修改,在函数外部会被忽略。按值传递是对值的复制,两个变量指向不同的内存地址。

按引用传递:在函数范围内对值的修改,在函数外部有效。按引用传递是将一个变量的内存地址传给另一个变量,两个变量最终指向同一个内存地址。

按值传递,是对值的复制,对于大型的字符串和对象,会是一个很大代价的操作,按引用传递对性能优化有好处。

include与require的区别

1. include()在执行文件时每次都要读取和评估,require()文件只处理一次

2. require()通常放在脚本的最前面,include()的使用和require()一样,一般都放在流程控制的处理区段,PHP脚本文件读到include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化。

3. require()和include()语句是语言结构,不是真正的函数,可以像PHP的其他语言结构一样。即,可以不加圆括号,直接加参数。

4. include_once()和require_once()语句也是在脚本执行期间包括并运行指定文件,与include()和require()的唯一区别是如果文件中的代码被包括了,则不会再次包括。

5. require()引入文件时,如果碰到错误,停止执行,给出错误提示(致命错误);include()引入文件时,如果碰到错误,继续运行,给出提示。

关于Cookie的小知识点

1. setcookie()函数用于设置cookie,且必须位于<html>标签之前

2. cookie是服务器留在用户计算机中的小文件

3. cookie常用于标识客户端

4. 会话cookie的生命周期是:如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命周期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不保存在磁盘上,而是保存在内存里。如果设置了过期时间,浏览器就会把cookie保存在硬盘上,关闭后再次打开浏览器,这些cookie依然有效,直到超过设定的过期时间。

JS怎么取得用户设备是手机还是浏览器

Navigator对象,userAgent属性是一个只读的字符串,声明了浏览器用于HTTP请求的用户代理头的值。

my test

mysql删除drop、truncate、delete哪个更快

一,从执行速度来看

drop > truncate > delete

二,原理

1. delete

(1). delete属于数据库DML操作语言,只删除数据,不删除表结构。会走事务,执行时会触发trigger

(2). 在InnoDB中,delete其实并不会把真的数据删除,Mysql实际上只是给删除的数据打了个标记为已删除,因此delete删除表中的数据时,表文件在磁盘上所占空间不会变小,存储空间不会释放,只是把删除的数据行设置为不可见。虽然未释放磁盘空间,但是下次插入数据时,仍然可以重用这部分空间(即覆盖)。

(3). delete执行时,会先把所删除数据缓存到rollback segment中,事务commit之后提交。

(4). delete from table_name删除表中的全部数据,对于MyISAM会立刻释放磁盘空间,InnoDB不会释放磁盘空间。

(5). 对于delete from table_name where xxx 带条件的删除,不管是InnoDB还是MyISAM都不会释放磁盘空间。

(6). delete操作以后使用optimize table table_name会立刻释放磁盘空间,不管是InnoDB还是MyISAM。所以要想达到释放磁盘空间的目的,delete以后执行optimize table操作。

(7). delete操作是一行一行执行删除的,并且同时将该行的删除操作记录在redo和undo表空间中,以便进行回滚(rollback)和重做操作,生成的大量日志文件也会占用磁盘空间。

2. truncate

(1). truncate属于数据库DDL定义语言,不走事务,原数据不放在rollback segment中,操作不触发trigger

执行后立即生效,无法找回!!!

(2). truncate table table_name 立即释放磁盘空间,不管是InnoDB还是MyISAM。 truncate table有点类似于drop table之后create, 只不过create table的过程做了优化,比如表结构文件之前已经有了等等,所以速度上应该是接近于drop table的速度。

(3). truncate能够快速清空一个表,并且重置auto_increment的值。

对于不同类型的存储引擎需要注意的是:

对于MyISAM,truncate会重置auto_increment(自增序列)的值为1。而delete后仍然保持auto_increment。

对于InnoDB,truncate会重置auto_increment的值为1。delete之后仍然保持auto_increment。但是在做delete整个表之后重启Mysql的话,则重启后的auto_increment会被置为1.

也就是说,InnoDB的表本身是无法持久保持auto_increment的。delete表之后auto_increment仍然保存在内存,但是重启后就丢失了,只能从1开始。实质上重启后的auto_increment会从select 1 + 1+max(ai_col) from t开始。

(4). 小心使用truncate,尤其是没有备份的时候

3. drop

(1). drop属于数据库DDL语言,同truncate

执行后立即失效,无法找回!!!

(2). drop table table_name立刻释放磁盘空间,不管是InnoDB还是MyISAM,drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表结构的存储过程、函数将被保留,但是变为invalid状态

可以这么理解,一本书,delete是把目录撕了,truncate是把书的内容撕下来烧了,drop是把书烧了。

参考链接:https://www.cnblogs.com/winnerREN/p/14109352.html

项目运行一段时间后发现CPU占用过高,怎么排查

Linux平台:

1. 命令:top

    找到cpu占用最高的进程PID

2. 命令:ps -mp "pid" -o THREAD,tid,time

    查询pid进程中,哪个现成的cpu占用率高,记录TID

3. 命令:jstack "pid" >> xxx.log  

    打印出该pid进程下的进程日志

4. 命令:sz xxx.log

    将日志文件下载到本地

5. 将第2步记录的TID(十进制)转成十六进制

6. 在xxx.log中查找第5步的十六进制,找到对应线程

参考链接:https://blog.csdn.net/qq_35033270/article/details/89459197

Windows平台:

1. 首先下载ProcessExplorer工具

网络

2. 启动jvisualvm,位于jdk/bin下,打开需要监听的程序,点击线程,点击线程dump

网络

3. 打开ProcessExplorer,选中需要查看的程序,右击,选择properties


网络

4. 找到cpu高的线程,记录首行tid,此处tid是十进制,jvisualvm是十六进制,自行转换,此处是9876,转换是2694

网络

5. 找到2694的线程,分析线程的具体情况,比如是哪个类产生的

网络

参考链接:https://www.pianshen.com/article/6703796478/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容