集中式:集中式版本控制工具,版本庫集中存放在中央服務器,團隊成員裏的每一個人工做時從中央服務器下載代碼,我的修改後再提交到中央服務器php
分佈式:分佈式版本控制工具,沒有中央服務器,每一個開發人員都經過clone,在本地拷貝一個完整的倉庫。html
Svn的特色(集中式)程序員
一、每一個版本庫有惟一的URL,每一個用戶都從這個地址獲取代碼和數據web
二、獲取代碼的更新,也只能鏈接到這個惟一的版本庫,同步以取得最新數據數據庫
三、提交必須有網絡鏈接(非本地版本庫)編程
四、提交須要受權,若是沒有寫權限,提交會失敗api
五、提交併不是每次都能成功。若是其餘人先於你提交,會提示基於過期的版本,先更新再提交。數組
六、衝突解決時一個提交速度的競賽:手快着,先提交,平安無事;手慢着,後提交,可能產生衝突。瀏覽器
Git的特色(分佈式)安全
一、Git中每一個克隆的版本庫都是平等的。你能夠從任何一個版本庫的克隆來建立屬於你本身的版本庫,同時你的版本庫也能夠做爲源提供給他人,只要你願意。
二、Git的每一次提取操做,實際上都是一次對代碼倉庫的完整備份。提交徹底在本地完成,無須別人給你受權,你的版本庫你作主,而且提交老是會成功。
三、甚至基於舊版本的改動也能夠成功提交,提交會基於舊的版本建立一個新的分支
四、Git的提交不會被打斷,知道你的工做徹底滿意了,PUSH給他人或者他人PULL你的版本庫,合併會發生再PULL和PUSH過程當中,不能自動解決的衝突會提示你手工完成。
五、衝突解決再也不像是SVN同樣的提交競賽,而是在須要的時候才進行合併和衝突解決。
Git與Svn的優缺點
Svn優勢:
一、管理方便,邏輯明確,符合通常人思惟習慣。
二、易於管理,集中式服務器更能保證安全性。
三、代碼一致性很是高
四、適合開發人數很少的項目開發
缺點:
一、服務器壓力太大,數據庫容量暴增。
二、若是不能鏈接到服務器上,基本不能夠工做
三、不適合開源開發。
Git的優勢:
一、適合分佈式開發,強調個體
二、公共服務器壓力和數據量都不會太大
三、速度快、靈活
四、任意兩個開發者之間能夠很容易的解決衝突
五、離線工做
缺點:
一、學習週期相對而言比較長
二、不符合常規思惟
三、代碼保密性差。
首先說一下PHP的運行機制,說以前先給你們介紹一下PHP的模塊,PHP總共有三個模塊:內核、Zend引擎、以及擴展層;PHP內核用來處理請求、文件流、錯誤處理等相關操做;Zend引擎用以將源文件轉換成機器語言,而後再虛擬機上運行它;擴展層是一組函數、類庫和流,PHP使用他們來執行一些特定的操做。好比,咱們須要MySQL擴展來鏈接MySQL數據庫;當Zend執行程序時可能會須要鏈接若干擴展,這時Zend將控制權交給擴展,等處理完成特定任務後返回給Zend;最後Zend將程序運行結果返回給PHP內核,它再將結果傳送給SAPI層,最終輸出到瀏覽器上。
PHP的設計理念及特色
多進程模型:因爲PHP是多進程模型,不一樣請求間互不干涉,這樣保證了一個請求掛掉不會對全盤服務器形成影響,固然隨着時代發展,PHP也早已支持多線程模型。
弱類型語言:和C/C++、Java、C#等語言不一樣,PHP是一門弱類型語言。一個變量的類型並非一開始就肯定不變,運行中才會肯定可能發生隱式或顯式的類型轉換,這種機制的靈活性再web開發中很是方便、高效。
Zend引擎+ext組件的模式下降內部耦合
中間層sapi隔絕 web server 和 php
語法簡單靈活、滅有太多規範。缺點致使風格混雜,再差的程序員也不會寫出太離譜危害全局的程序
PHP四層體系
Zend引擎:Zend總體用純C實現,是PHP的內核部分,它將PHP代碼翻譯(詞法、語法解析等一系列編譯過程)爲可執行opcode的處理並實現相應的處理方法、實現了基本的數據結構(如hashtable、oo)、內存分配及管理、提供了相應的api方法供外部調用,是一切的核心,全部的外圍功能均圍繞Zend實現。
Extensions:圍繞着Zend引擎,extensions經過組件式的方式提供各類基礎服務,咱們常見的各類內置函數(如array系列)、標準庫等都是經過extension來實現,用戶也能夠根據須要實現本身的extension以達到功能擴展、性能優化等目的(如貼吧正在使用的PHP中間層、富文本解析就是extension的典型應用)。
Sapi:Sapi全稱是Server Application Programming Interface,也就是服務端應用編程接口,Sapi經過一系列鉤子函數,使得PHP能夠和外圍交互數據,這是PHP很是優雅和成功的一個設計,經過sapi成功的將PHP自己和上層應用解耦隔離,PHP能夠再也不考慮如何針對不一樣應用進行兼容,而應用自己也能夠針對本身的特色實現不一樣的處理方式。
上層應用:這就是咱們平時編寫的PHP程序,經過不一樣的sapi方式獲得各類各樣的應用模式,如經過webserver實現web應用、在命令行下以腳本方式運行等等。
若是PHP是一輛車,那麼車的框架就是PHP自己,Zend是車的引擎(發動機),Ext下面的各類組件就是車的輪子,Sapi能夠看作是公路,車能夠跑在不一樣類型的公路上,而一次PHP程序的執行就是汽車跑在公路上。所以,咱們須要:性能優異的引擎+合適的車輪+正確的跑道。
zend.enable_gc 是否開啓垃圾回收機制
safe_mode 是否啓用安全模式
allow_url_include 是否容許經過include/require來執行一個遠程文件
allow_url_fopen 是否容許打開遠程文件
register_globals 判斷是否將$_GET,$_POST等數組變量裏的內容自動註冊爲全局變量
enable_dl 是否容許使用dl()函數再腳本運行時加載PHP擴展
log_errors PHP錯誤報告日誌功能
error_log 錯誤報告日誌文件路徑
error_reporting 錯誤級別
max_execution_time 腳本所能運行的最長時間
memory_limit PHP進程可以佔用的內存
post_max_size POST方法提交數據的最大大小限制
file_uploads 是否容許文件上傳
max_file_uploads 一個請求容許上傳的最大文件數量限制
upload_tmp_dir 文件上傳時存放文件的臨時路徑
upload_max_filesize 上傳文件的最大大小限制
session.save_path session文件存放的位置
session.save_handle 設置session數據的存儲方式
session.use_cookies 是否使用cookie再客戶端存儲sessionid
session.name 設置session名稱
extension_dir 存放擴展庫的目錄
date.timezone 設置時區