嵌入式系統(tǒng)開發(fā)小白必懂的簡單知識點
1. Include 與 require之前的區(qū)別,require與require_once的效率哪個高?
PHP在遇到include時就解釋一次,如果頁面中出現(xiàn)10次include,php就解釋10次,而php遇到require時只解釋一次,即使頁面出現(xiàn)多次require也只解釋一次,因此require的執(zhí)行表率比include高。
Php使用require包含文件時將被包含的文件當(dāng)成當(dāng)前文件的一個組成部分,如果被包含的文件中有語法錯誤或者被包含的文件不存在,則php腳本將不再執(zhí)行,并提示錯誤。
Php使用include包含文件時相當(dāng)于指定了這個文件的路徑,當(dāng)被包含的文件有語法錯誤或者被包含的文件不存在時給出警告,不影響本身腳本的運行。
Include在包含文件時可以判斷文件是否包含,而require則不管任何情況都包含進來。
Require的效率比require_once的效率更高,因為require_once在包含文件時要進行判斷文件是否已經(jīng)被包含。
2. Cookie和session的區(qū)別,禁止了cookie后session能正常使用嗎?session的缺點是什么?session在服務(wù)器端是存在哪里的?是共有的還是私有的?
COOKIE保存在客戶端,用戶通過手段可以進行修改,不安全,單個cookie允許的最大值是3k。而SESSION保存在服務(wù)器端,相對比較安全,大小沒有限制。禁用了cookie之session不能正常使用。
Session的缺點:保存在服務(wù)器端,每次讀取都從服務(wù)器進行讀取,對服務(wù)器有資源消耗。
Session保存在服務(wù)器端的文件或數(shù)據(jù)庫中,默認保存在文件中,文件路徑由php配置文件的session.save_path指定。
Session文件是公有的。
3. 怎么防止sql注入?
1、過濾掉一些常見的數(shù)據(jù)庫操作關(guān)鍵字:select,insert,update,delete,and,*等
或者通過系統(tǒng)函數(shù):addslashes(需要被過濾的內(nèi)容)來進行過濾。
2、在PHP配置文件中
Register_globals=off;設(shè)置為關(guān)閉狀態(tài) //作用將注冊全局變量關(guān)閉。
比如:接收POST表單的值使用$_POST[‘user’],如果將register_globals=on;直接使用$user可以接收表單的值。
3、SQL語句書寫的時候盡量不要省略小引號(tab鍵上面那個)和單引號
4、提高數(shù)據(jù)庫命名技巧,對于一些重要的字段根據(jù)程序的特點命名,取不易被猜到的
5、對于常用的方法加以封裝,避免直接暴漏SQL語句
6、開啟PHP安全模式
Safe_mode=on;
7、打開magic_quotes_gpc來防止SQL注入
Magic_quotes_gpc=off;默認是關(guān)閉的,它打開后將自動把用戶提交的sql語句的查詢進行轉(zhuǎn)換,把‘轉(zhuǎn)為’,這對防止sql注入有重大作用。
因此開啟:magic_quotes_gpc=on;
8、控制錯誤信息
關(guān)閉錯誤提示信息,將錯誤信息寫到系統(tǒng)日志。
9、使用mysqli或pdo預(yù)處理。
4. 數(shù)據(jù)庫索引有幾類,分別是什么?什么時候該用索引
普通索引、主鍵索引、唯一索引
并非所有的數(shù)據(jù)庫都以相同的方式使用索引,作為通用規(guī)則,只有當(dāng)經(jīng)常查詢列中的數(shù)據(jù)時才需要在表上創(chuàng)建索引。
5. 引用傳值和非引用傳值的區(qū)別,什么時候該用引用傳值?什么時候該用非引用傳值?
按值傳遞:函數(shù)范圍內(nèi)對值的改變在函數(shù)外都會被忽略。
按引用傳遞:函數(shù)范圍內(nèi)對值的任何改變在函數(shù)外也將反應(yīng)出這些修改。
按值傳遞時,php必須復(fù)制值,如果操作的是大型的對象和字符串,這將是一個代價很大的操作。按引用傳遞不需要復(fù)制值,因此對性能的提高有好處。
當(dāng)需要在函數(shù)內(nèi)改變源變量的值時用引用傳遞,如果不想改變原變量的值用傳值。
6. 寫幾個魔術(shù)方法并說明作用?
__call()當(dāng)調(diào)用不存在的方法時會自動調(diào)用的方法
__autoload()在實例化一個尚未被定義的類是會自動調(diào)用次方法來加載類文件
__set()當(dāng)給未定義的變量賦值時會自動調(diào)用的方法
__get()當(dāng)獲取未定義變量的值時會自動調(diào)用的方法
__construct()構(gòu)造方法,實例化類時自動調(diào)用的方法
__destroy()銷毀對象時自動調(diào)用的方法
__unset()當(dāng)對一個未定義變量調(diào)用unset()時自動調(diào)用的方法
__isset()當(dāng)對一個未定義變量調(diào)用isset()方法時自動調(diào)用的方法
__clone()克隆一個對象
__tostring()當(dāng)輸出一個對象時自動調(diào)用的方法
7. $_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?
它們都是PHP預(yù)定義變量。
$_REQUEST用來獲取post或get方式提交的值
$_POST用來獲取post方式提交的值
$_GET用來獲取get方式提交的值
$_COOKIE用來獲取cookie存儲的值
$_SESSION用來獲取session存儲的值
$_FILE用來獲取上傳文件表單的值
8. 數(shù)組中下標最好是什么類型的,為什么?
數(shù)組的下標最好是數(shù)字類型的,數(shù)字類型的處理速度快。
9. ++i和i++哪一個效率高,為什么?
++i效率比i++的效率更高,因為++i少了一個返回i的過程。
10.magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?
Magic_quotes_gpc()是php配置文件中的,如果設(shè)置為on則會自動POST,GET,COOKIE中的字符串進行轉(zhuǎn)義,在‘之前加
Magic_quotes_runtime()是php中的函數(shù),如果參數(shù)為true則會數(shù)據(jù)庫中取出來的單引號、雙引號、反斜線自動加上反斜杠進行轉(zhuǎn)義。
11.Echo()、print()、print_r()的區(qū)別?
Echo() 是PHP語法,可以輸出多個值,不能輸出數(shù)組。
Print() 是php的語言結(jié)構(gòu),可以輸出單個簡單類型的變量值。
Print_r() 是php函數(shù),可以打印出復(fù)雜類型變量的值,如數(shù)組,對象。
12.談?wù)勀銓vc的認識
MVC是一種設(shè)計模式,強制使輸入、處理、輸出分開,MVC的三個核心部分:M模型,V視圖,C控制器。
視圖就是用戶看到并與之交互的界面。
模型就是程序的數(shù)據(jù)業(yè)務(wù)規(guī)則。
控制器接收用戶的數(shù)組調(diào)用模型和視圖去完成用戶需求。
使用MVC的優(yōu)點:低耦合、高重用性、較低的生命周期成本、快速開發(fā)部署、可維護性、可擴展性,有利于軟件工程化管理。
MVC的缺點:沒有明確的定義,完全理解并不容易。小型項目不適合用MVC。
13.框架中什么是單一入口和多入口,單一入口的優(yōu)缺點
多入口就是通過訪問不同的文件來完成用戶請求。
單一入口只web程序所有的請求都指向一個腳本文件的。
單一入口更容易控制權(quán)限,方便對http請求可以進行安全性檢查。
缺點:URL看起來不那么美觀,特別是對搜索引擎來說不友好。
14.打印一個用‘。’鏈接的字符串時候,還可以用什么代替‘。’鏈接效率更高些?
可以用,代替。效率更高。
15.提示類型200、404、502是什么意思?
200是請求成功,404是文件未找到,502是服務(wù)器內(nèi)部錯誤。
16.編寫一個自定義函數(shù)提取這段路徑的的后綴名。
“Www/hello/test.php.html?a=3&b=4”
Function geturltype($url){
$info=parse_url($url);
Return end(explode(’。‘,$info[’path‘]));
}
17.你對Memcach的理解,優(yōu)點有哪些?
Memcache是一種緩存技術(shù),在一定的時間內(nèi)將動態(tài)網(wǎng)頁經(jīng)過解析之后保存到文件,下次訪問時動態(tài)網(wǎng)頁就直接調(diào)用這個文件,而不必在重新訪問數(shù)據(jù)庫。使用memcache做緩存的好處是:提高網(wǎng)站的訪問速度,減輕高并發(fā)時服務(wù)器的壓力。
Memcache的優(yōu)點:穩(wěn)定、配置簡單、多機分布式存儲、速度快。
總之,這些知識的學(xué)習(xí)不是一蹴而就的,過程會很漫長,也沒有什么特別的技巧。需要去看大量的技術(shù)文檔和源碼,而這些文檔大部分又都是英文的。在工作和做具體項目的過程中會學(xué)習(xí)的比較快,理論結(jié)合實踐才是王道。
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3570瀏覽量
129251
發(fā)布評論請先 登錄
相關(guān)推薦
評論