摘要:也可以用于訪問類的靜態屬性靜態方法和常量,指向的是實際調用時的類。當進行非靜態方法調用時,該類名指向的類名為該對象所屬的類,即實際調用時的對象所屬的類。
網絡協議
計算機網絡的五層協議:物理層、數據鏈路層、網絡層、運輸層、應用層
計算機網絡的七層協議(OSI):物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層
TCP/IP(是一個協議族,非單個協議):網絡接口層、 IP層、傳輸層、應用層
??????網線與集線器屬于物理層 ??????網卡與交換機屬于數據鏈路層 ??????路由器屬于網絡層TCP和UDP
tcp面向連接的字節流服務,對系統資源要求較多,程序結構復雜,保證數據的正確性和順序性
udp是無連接的,面向數據報,對系統資源要求較少,程序結構簡單,不能保證數據的正確性和順序性
網站安全與防護
sql注入防治方法:使用例如PDO的預處理,使用或者編寫類似mysqli_real_escape_string的方法對sql的特殊字符進行轉義
xss(cross site script)跨站腳本攻擊:將外部腳本植入到頁面中
??????防治方法:htmlspecialchars()轉義特殊字符為字符實體,strip_tags()過濾html標簽, addslashes(可轉義單雙引號反斜杠NULL) 在特殊字符前面加反斜杠進行轉義csrf(cross-site request forgery)跨站請求偽造:偽造受信任的用戶信息來請求網站
??????防治方法:請求附加隨機token進行校驗,或驗證碼基礎算法相關
基本排序算法:
冒泡排序(時間復雜度:o(n方))
for($i = 0; $i < count($arr); $i++) for($j = 0; $j < count($arr) - 1 - $i; $j++) if($arr[$j] < $arr[$j+1]) 兩者交換
選擇排序(時間復雜度:o(n方))
for($i = 0; $i < count($arr) - 1, $i++) $min = $i; for($j = $i + 1; $j < count($arr); $j++) if($arr[$min] > $arr[$j]) $min = $j; 將最小值與當前的第i位置內容交換
快速排序思想:通過一趟排序將序列分成兩部分,一部分所有數據比另一部分所有數據小,然后在這兩個序列的內部再分別進行快速排序操作,直到最后形成一個有序序列
二分插入排序思想(之前的序列為有序):插入第i個元素時,對前面的0~i-1進行折半,當前元素與中間元素比較,如果小,前半部分再次折半,如果大,后半部分進行折半,直到最后left>right,然后把目標位置到i-1的所有元素整體后移,把當前元素放進去
基本查找算法:
順序查找
二分法查找(折半查找):將序列分為兩部分,找到序列的中間值,如果查找值大于中間值,繼續對右半部分進行折半,如果查找值小于中間值,對左半部分進行折半,直到找到或front>end結束,時間復雜度O(log2n)以2為底n的對數
設計模式
MVC是一種設計框架,而不是設計模式,框架是比模式更高的概念 model負責數據邏輯 controller負責用戶交互 view負責數據顯示 流程:用戶對控制器的某個方法發出請求,控制器調用相應的模型返回數據,然后將數據渲染到視圖中返回給用戶
1) 單例模式 i. 私有化構造方法和__clone方法 ii. 提供公有的靜態的方法返回實例 iii. 提供私有的靜態屬性保存實例
2) 簡單工廠模式(重點在創建不同對象,作用就是用來創建對象的) - 例如一個計算器的加減乘除求余取整 i. 定義抽象基類讓子類分別繼承并實現相應方法 ii. 定義Factory工廠類里面提供靜態方法用于根據不同的參數實例化相應的子類對象
3) 策略模式(重點在于實例化不同類的解決策略不同,作用是根據不同的情況調用相應的策略或算法) - 例如qq普通用戶 vip svip購買皮膚的優惠策略 i. 定義抽象基類讓子類分別繼承并實現相應的方法 ii. 根據不同的場景實例化相應的類,然后調用其中的方法獲取結果
4) 觀察者模式 i. 需要有一個抽象的主題接口和一個抽象的觀察者接口 ii. 實現一個主題,實現多個觀察者 iii. 實例化主題,然后調用主題的方法并將不同的觀察者對象實例化傳入,在主題的方法中保存傳入的觀察者對象到一個屬性,在主題中定義另外的方法通過保存觀察者對象調用觀察者的方法
名詞解釋
ORM模型:將表映射到類,將行記錄映射到實例對象,將字段映射到對象的屬性
OOP:面向對象編程
nosql:redis、MongoDB、memcached
大流量高并發網站解決思路
防盜鏈(別人網站上鏈接著你的服務器上的的資源),驗證來源:$_SERVER["HTTP_REFERER"] apache或者nginx進行相關配置
CDN加速
減少http請求,添加異步請求
啟用瀏覽器緩存
代碼壓縮(去除空白符)
頁面靜態化:信息變更不是很頻繁的頁面進行靜態化處理,生成html文件
數據緩存(數據庫緩存redis,文件緩存)
使用Nginx,負載均衡
mysql數據庫優化
字段數據類型優化
索引優化
SQL語句優化
存儲引擎優化
表結構設計優化
分表分庫分區
主從復制,讀寫分離
COOKIE 和 SESSION
session與cookie都是會話技術,默認情況下session在客戶端依賴于cookie
cookie保存在客戶端,保存的是字符串,session保存在服務端,保存的是對象
cookie安全性低,可被攔截或從本地分析得到,session安全性高
session保存在服務器上,會占用服務器的資源,理論上大小沒有限制,和服務器內存有關
單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多20個cookie
登錄信息等重要信息存放為session,其他信息如需保留,可以存在cookie中
include 和 require
引入文件,include在用到時加載,require在一開始就加載
include引入文件出現錯誤,會給出警告,并繼續執行下面代碼,require引入文件出現錯誤,報出致命錯誤并終止當前程序運行
MyISAM 和 InnoDB
MyISAM不支持事務和外鍵操作,InnoDB支持事務處理和外鍵
MyISAM是表級鎖,InnoDB是行級鎖
執行大量的select MyISAM更好,執行大量的insert update用InnoDB更好
global 和 $GLOBALS
$GLOBALS["var"] 是外部的全局變量$var本身。
global $var 是外部$var的同名引用或者指針
empty 和 isset
empty以下條件會被認為空
"" (空字符串)
0 (作為整數的0)
0.0 (作為浮點數的0)
"0" (作為字符串的0)
NULL
FALSE
array() (一個空數組)
$var; (一個聲明了,但是沒有值的變量)
isset以下條件會被認為存在
變量存在并且值不是 NULL,則返回 TRUE
get 和 post
get主要用于獲取數據,post主要用于提交數據
get提交參數追加在url后面,post通過http body提交
get的url會有長度上的限制,post傳遞數據理論上是無限
get提交信息明文顯示在url上,不夠安全,post相對來說比較安全
get提交可以被瀏覽器緩存,post不會被瀏覽器緩存
static 和 self
self 可以用于訪問類的靜態屬性、靜態方法和常量,但 self 指向的是當前定義所在的類,這是 self 的限制。
static 也可以用于訪問類的靜態屬性、靜態方法和常量,static 指向的是實際調用時的類。
當進行非靜態方法調用時,該類名(static指向的類名)為該對象所屬的類,即實際調用時的對象所屬的類。
一次完整的HTTP請求過程1.首先域名解析(DNS解析):瀏覽器解析域名(主機名)為相應的IP地址 2.建立TCP連接:三次握手
客戶端:你能聽到我說話嗎? 服務器:我能聽到,你能聽到我說話嗎? 客戶端:我也能,那我開始發送數據嘍。。3.瀏覽器向服務器發起http請求 4.服務器響應http請求,返回html代碼 5.瀏覽器解析html代碼并請求html中的資源 6.瀏覽器對頁面進行渲染然后展示給用戶 7.關閉TCP連接:四次揮手
- 客戶端:“兄弟,我這邊沒數據要傳了,咱關閉連接吧。” - 服務端:“收到,我看看我這邊有木有數據了?!? - 服務端:“兄弟,我這邊也沒數據要傳你了,咱可以關閉連接了?!? - 客戶端:“好嘞?!?/pre>
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29719.html
摘要:好不容易在月號這天中午點左右接到了來自阿里的面試電話。這里會不斷收集和更新基礎相關的面試題,目前已收集題。面試重難點的和的打包過程多線程機制機制系統啟動過程,啟動過程等等掃清面試障礙最新面試經驗分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發面試題總結 各大公司 Jav...
摘要:事后看來,我認為它在我順利通過微軟的面試中發揮了重要作用。在過去幾年中,技術公司正在轉向使用在線協作編碼平臺進行遠程面試。同樣重要的是確保在整個面試過程中與面試官保持有效的溝通。 如果你是一個剛畢業的學生業生或一個職業生涯中期的工程師,那么準備接受你夢寐以求的工作的技術面試可能既費時又令人緊張。想象一下,人們期望你能夠在現場解決一個復雜的挑戰,并將其轉化為無錯誤的代碼? 好了,不用擔心...
摘要:事后看來,我認為它在我順利通過微軟的面試中發揮了重要作用。在過去幾年中,技術公司正在轉向使用在線協作編碼平臺進行遠程面試。同樣重要的是確保在整個面試過程中與面試官保持有效的溝通。 如果你是一個剛畢業的學生業生或一個職業生涯中期的工程師,那么準備接受你夢寐以求的工作的技術面試可能既費時又令人緊張。想象一下,人們期望你能夠在現場解決一個復雜的挑戰,并將其轉化為無錯誤的代碼? 好了,不用擔心...
摘要:事后看來,我認為它在我順利通過微軟的面試中發揮了重要作用。在過去幾年中,技術公司正在轉向使用在線協作編碼平臺進行遠程面試。同樣重要的是確保在整個面試過程中與面試官保持有效的溝通。 如果你是一個剛畢業的學生業生或一個職業生涯中期的工程師,那么準備接受你夢寐以求的工作的技術面試可能既費時又令人緊張。想象一下,人們期望你能夠在現場解決一個復雜的挑戰,并將其轉化為無錯誤的代碼? 好了,不用擔心...
閱讀 1926·2021-11-24 09:39
閱讀 3515·2021-09-28 09:36
閱讀 3282·2021-09-06 15:10
閱讀 3433·2019-08-30 15:44
閱讀 1154·2019-08-30 15:43
閱讀 1797·2019-08-30 14:20
閱讀 2712·2019-08-30 12:51
閱讀 2031·2019-08-30 11:04