PHP面試題1--狀態(tài)碼靡羡,Session和Cookie的區(qū)別,Include和Require

HTTP是無狀態(tài)協(xié)議描扯,HTTP狀態(tài)碼含義:

302:臨時轉(zhuǎn)移成功趟薄,請求已經(jīng)轉(zhuǎn)移到新的位置

401:未授權(quán)

403:禁止訪問

404:文件未找到

500:服務(wù)器內(nèi)部錯誤

502:服務(wù)器內(nèi)部錯誤

200:請求成功

Session和Cookie的區(qū)別:

1. 存儲位置不同

cookie的數(shù)據(jù)信息存放在客戶端瀏覽器上

session的數(shù)據(jù)存放在服務(wù)器上

2. 存儲容量不同

單個cookie保存的數(shù)據(jù)<=4KB,一個站點最多保存20個Cookie

對于session來說并沒有上限恩够,但是處于服務(wù)器端的性能考慮,session內(nèi)不要存放過多的東西儡毕,并刪除session刪除機制

3. 存儲方式不同

cookie中只能保存ASCII字符串扑媚,并需要通過編碼方式存儲為Unicode字符或者二進制數(shù)據(jù)

session中能夠存儲任何類型的數(shù)據(jù),包括且不限于string, integer, list, map等

4. 隱私策略不同

cookie對客戶端是可見的费坊,別有用心的人可以分析存放在本地的cookie并進行cookie欺騙旬痹,所以它是不安全的

session是存儲再服務(wù)器端的,對客戶端是透明的永毅,不存在敏感信息泄露的風(fēng)險

5. 有效期上不同

開發(fā)可以通過設(shè)置cookie屬性磕昼,達到使cookie長期有效的效果

session依賴于名為Jsessionid的cookie,而cookie jsessionid的過期時間默認為-1漫雕, 只需要關(guān)閉窗口峰鄙,該session就會失效,因而session不能達到長期有效的效果

6. 服務(wù)器壓力不同

cookie保管在客戶端吟榴,不占用服務(wù)器資源吩翻。對于并發(fā)用戶十分多的網(wǎng)站,cookie是很好的選擇

session使保存再服務(wù)器端的狭瞎,每個用戶都會產(chǎn)生一個session熊锭。假如并發(fā)訪問的用戶十分多雪侥,會產(chǎn)生十分多的session精绎,耗費大量的內(nèi)存

7. 瀏覽器支持不同

假如客戶端瀏覽器不支持cookie

cookie使需要客戶端瀏覽器支持的,假如客戶端禁用了cookie代乃,或者不支持cookie搁吓,則會話跟蹤會失效,關(guān)于WAP上的應(yīng)用,常規(guī)的cookie就派不上用場

運用session需要使用URL地址重寫的方式贮预,一切用到session程序的URL都要進行URL地址重寫契讲,否則session會話跟蹤還會失效

假如客戶端支持cookie:

cookie既能夠設(shè)為本瀏覽器窗口以及子窗口內(nèi)有效,也能夠設(shè)為一切窗口內(nèi)有效捡偏。

session只能在本窗口以及子窗口內(nèi)有效银伟。

8、跨域支持上不同

cookie支持跨域名訪問彤避。

session不支持跨域名訪問。

PHP中的傳值和傳引用

按值傳遞:在函數(shù)范圍內(nèi)對值的修改董饰,在函數(shù)外部會被忽略圆米。按值傳遞是對值的復(fù)制,兩個變量指向不同的內(nèi)存地址也祠。

按引用傳遞:在函數(shù)范圍內(nèi)對值的修改块茁,在函數(shù)外部有效桂肌。按引用傳遞是將一個變量的內(nèi)存地址傳給另一個變量永淌,兩個變量最終指向同一個內(nèi)存地址遂蛀。

按值傳遞,是對值的復(fù)制李滴,對于大型的字符串和對象所坯,會是一個很大代價的操作,按引用傳遞對性能優(yōu)化有好處芹助。

include與require的區(qū)別

1. include()在執(zhí)行文件時每次都要讀取和評估,require()文件只處理一次

2. require()通常放在腳本的最前面无蜂,include()的使用和require()一樣蒙谓,一般都放在流程控制的處理區(qū)段,PHP腳本文件讀到include()語句時酣倾,才將它包含的文件讀進來慰照,這種方式,可以把程序執(zhí)行時的流程簡單化稚铣。

3. require()和include()語句是語言結(jié)構(gòu)墅垮,不是真正的函數(shù),可以像PHP的其他語言結(jié)構(gòu)一樣抬伺。即灾梦,可以不加圓括號妓笙,直接加參數(shù)能岩。

4. include_once()和require_once()語句也是在腳本執(zhí)行期間包括并運行指定文件拉鹃,與include()和require()的唯一區(qū)別是如果文件中的代碼被包括了,則不會再次包括膏燕。

5. require()引入文件時,如果碰到錯誤篷就,停止執(zhí)行近忙,給出錯誤提示(致命錯誤);include()引入文件時,如果碰到錯誤击纬,繼續(xù)運行钾麸,給出提示。

關(guān)于Cookie的小知識點

1. setcookie()函數(shù)用于設(shè)置cookie肯腕,且必須位于<html>標簽之前

2. cookie是服務(wù)器留在用戶計算機中的小文件

3. cookie常用于標識客戶端

4. 會話cookie的生命周期是:如果不設(shè)置過期時間钥平,則表示這個cookie生命周期為瀏覽器會話期間,只要關(guān)閉瀏覽器窗口知态,cookie就消失了立叛。這種生命周期為瀏覽器會話期的cookie被稱為會話cookie。會話cookie一般不保存在磁盤上其做,而是保存在內(nèi)存里。如果設(shè)置了過期時間驹沿,瀏覽器就會把cookie保存在硬盤上浮庐,關(guān)閉后再次打開瀏覽器,這些cookie依然有效梭域,直到超過設(shè)定的過期時間搅轿。

JS怎么取得用戶設(shè)備是手機還是瀏覽器

Navigator對象,userAgent屬性是一個只讀的字符串既穆,聲明了瀏覽器用于HTTP請求的用戶代理頭的值雀鹃。

my test

mysql刪除drop、truncate囊颅、delete哪個更快

一踢代,從執(zhí)行速度來看

drop > truncate > delete

二慕爬,原理

1. delete

(1). delete屬于數(shù)據(jù)庫DML操作語言,只刪除數(shù)據(jù)隔显,不刪除表結(jié)構(gòu)括眠。會走事務(wù)题画,執(zhí)行時會觸發(fā)trigger

(2). 在InnoDB中壹置,delete其實并不會把真的數(shù)據(jù)刪除,Mysql實際上只是給刪除的數(shù)據(jù)打了個標記為已刪除步藕,因此delete刪除表中的數(shù)據(jù)時雾消,表文件在磁盤上所占空間不會變小桑腮,存儲空間不會釋放提陶,只是把刪除的數(shù)據(jù)行設(shè)置為不可見撑柔。雖然未釋放磁盤空間昼捍,但是下次插入數(shù)據(jù)時乍钻,仍然可以重用這部分空間(即覆蓋)。

(3). delete執(zhí)行時只怎,會先把所刪除數(shù)據(jù)緩存到rollback segment中身堡,事務(wù)commit之后提交。

(4). delete from table_name刪除表中的全部數(shù)據(jù)裁赠,對于MyISAM會立刻釋放磁盤空間,InnoDB不會釋放磁盤空間佩捞。

(5). 對于delete from table_name where xxx 帶條件的刪除一忱,不管是InnoDB還是MyISAM都不會釋放磁盤空間。

(6). delete操作以后使用optimize table table_name會立刻釋放磁盤空間票渠,不管是InnoDB還是MyISAM芬迄。所以要想達到釋放磁盤空間的目的,delete以后執(zhí)行optimize table操作杜窄。

(7). delete操作是一行一行執(zhí)行刪除的算途,并且同時將該行的刪除操作記錄在redo和undo表空間中,以便進行回滾(rollback)和重做操作扫外,生成的大量日志文件也會占用磁盤空間廓脆。

2. truncate

(1). truncate屬于數(shù)據(jù)庫DDL定義語言,不走事務(wù)驾讲,原數(shù)據(jù)不放在rollback segment中瞎嬉,操作不觸發(fā)trigger

執(zhí)行后立即生效厚柳,無法找回!!!

(2). truncate table table_name 立即釋放磁盤空間别垮,不管是InnoDB還是MyISAM。 truncate table有點類似于drop table之后create, 只不過create table的過程做了優(yōu)化烧董,比如表結(jié)構(gòu)文件之前已經(jīng)有了等等,所以速度上應(yīng)該是接近于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仍然保存在內(nèi)存吊宋,但是重啟后就丟失了颜武,只能從1開始鳞上。實質(zhì)上重啟后的auto_increment會從select 1 + 1+max(ai_col) from t開始。

(4). 小心使用truncate篙议,尤其是沒有備份的時候

3. drop

(1). drop屬于數(shù)據(jù)庫DDL語言,同truncate

執(zhí)行后立即失效移怯,無法找回!!!

(2). drop table table_name立刻釋放磁盤空間舟误,不管是InnoDB還是MyISAM,drop語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index);依賴于該表結(jié)構(gòu)的存儲過程同云、函數(shù)將被保留堵腹,但是變?yōu)閕nvalid狀態(tài)

可以這么理解,一本書旱易,delete是把目錄撕了腿堤,truncate是把書的內(nèi)容撕下來燒了笆檀,drop是把書燒了。

參考鏈接:https://www.cnblogs.com/winnerREN/p/14109352.html

項目運行一段時間后發(fā)現(xiàn)CPU占用過高士修,怎么排查

Linux平臺:

1. 命令:top

????找到cpu占用最高的進程PID

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

????查詢pid進程中樱衷,哪個現(xiàn)成的cpu占用率高,記錄TID

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

? ? 打印出該pid進程下的進程日志

4. 命令:sz xxx.log

????將日志文件下載到本地

5. 將第2步記錄的TID(十進制)轉(zhuǎn)成十六進制

6. 在xxx.log中查找第5步的十六進制沸移,找到對應(yīng)線程

參考鏈接:https://blog.csdn.net/qq_35033270/article/details/89459197

Windows平臺:

1.?首先下載ProcessExplorer工具

網(wǎng)絡(luò)

2. 啟動jvisualvm雹锣,位于jdk/bin下癞蚕,打開需要監(jiān)聽的程序,點擊線程在辆,點擊線程dump

網(wǎng)絡(luò)

3.?打開ProcessExplorer匆篓,選中需要查看的程序寇窑,右擊,選擇properties


網(wǎng)絡(luò)

4.?找到cpu高的線程窗市,記錄首行tid咨察,此處tid是十進制福青,jvisualvm是十六進制,自行轉(zhuǎn)換无午,此處是9876宪迟,轉(zhuǎn)換是2694

網(wǎng)絡(luò)

5. 找到2694的線程,分析線程的具體情況穿仪,比如是哪個類產(chǎn)生的

網(wǎng)絡(luò)

參考鏈接:https://www.pianshen.com/article/6703796478/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牡借,一起剝皮案震驚了整個濱河市袭异,隨后出現(xiàn)的幾起案子御铃,更是在濱河造成了極大的恐慌,老刑警劉巖上真,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睡互,死亡現(xiàn)場離奇詭異根竿,居然都是意外死亡陵像,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門寇壳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醒颖,“玉大人,你說我怎么就攤上這事壳炎∨⑶福” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵匿辩,是天一觀的道長腰耙。 經(jīng)常有香客問我铲球,道長挺庞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任稼病,我火速辦了婚禮挠阁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溯饵。我一直安慰自己侵俗,他們只是感情好,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布丰刊。 她就那樣靜靜地躺著隘谣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啄巧。 梳的紋絲不亂的頭發(fā)上寻歧,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音秩仆,去河邊找鬼码泛。 笑死,一個胖子當著我的面吹牛澄耍,可吹牛的內(nèi)容都是我干的噪珊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼齐莲,長吁一口氣:“原來是場噩夢啊……” “哼痢站!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起选酗,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阵难,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芒填,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜叫,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡空繁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了朱庆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片家厌。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椎工,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜀踏,我是刑警寧澤维蒙,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站果覆,受9級特大地震影響颅痊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜局待,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一斑响、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钳榨,春花似錦舰罚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饼齿,卻和暖如春饲漾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缕溉。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工考传, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人证鸥。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓僚楞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親枉层。 傳聞我的和親對象是個殘疾皇子镜硕,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容