導航:首頁 > 源碼編譯 > php內核源碼入口

php內核源碼入口

發布時間:2025-03-11 03:02:17

⑴ centos和debian哪個好

DebianVSCentOS哪個更好

通過以上我個人認為:從安全上說CentOS,rhel,oracle-linuxDebian

從性能下降說也是CentOS,rhel,oracle-LinuxDebian

其次,通過觀察den內核源碼和CentOS內核源碼大小,我們可以看到Debian內核才62M,而CentOS內核則達到了82M為什麼呢?還是我先前一篇文章中

分析過的,Debian是自由內核,裡面去除了很多no-free固件驅動,功能代碼,而CentOS

則是繼承了rhel的特點,得到世界很多硬體廠商的權利支持,不管是free還是no-free的全部包含在內核源代碼中,而且在虛擬化(kvm)部署中也是處於領導地位的,其中也不乏一些還來得及被Debian,或者標准內核採納的代碼,這樣就導致了:

硬體支持特別是虛擬化CentOS,rhel,oracle-LinuxDebian(freebsd)

還有,一個就是通過編譯內核我們發現,默認情況下,CentOS開啟的內核

選項都是非常保守的,而Debian則很時髦,有什麼新玩意就上,比如Debian開啟了內存分配slub內核尺寸優化Os而CentOS還是使用久經考驗的slab和O2..........

默認內核配置性能測試DebianCentOS,rhel,oracle-Linux

最後我們來說說,他們各自的應用軟體支持數量,從官方發布的安裝dvd(只有一張3.4G)上可以看出CentOSrhel是專門來做伺服器,vps來用的,包含的軟體相對den安裝dvd(8張dvd)來說是少只又少。我曾經就yuminstallnginx結果我失敗了

我以為我打錯。結果真的沒有,要自己二外去加源,我知道有很多第三方的軟體源可以使用,但是單從官方支持上說是很少了,這也表明了CentOS重要用途,還是以伺服器為主,桌面勉強可以吧!而Debian呢有4萬多種軟體,涵蓋了開發,桌面,伺服器軟體,等等幾乎你說能用到的所有軟體都有,而且apt包管理也比yum強很多,以此,我個人判斷:

開發方環境,通用性DebianCentOS,rhel,oracle-Linux

好了來個總結吧,如果不是狂熱的系統定製優化狂人,我的建議是:

1,如果你是開發者,和狂熱的性能追求者或者是vps中的伺服器請使用Debian!

2,如果你是vps供應商,電子商務,使用了很多像hp,ibm等大品牌伺服器,而且要求很高的穩定性,安全性,我建議你使用rhel家族,最少用10%左右的性能損失,不是很大的易用性損失,換來安全穩定還是值得的!

centosdebian哪個對arm支持好

CentOS和Debian都支持ARM架構,但它們在對ARM的支持方面有所不同,具體取決於您的需求。一般而言,Debian是更早支持ARM架構的發行版之一,並且社區支持也更好,因此在ARM設備上的兼容性可能更好。另一方面,CentOS在ARM架構上的支持也越來越好,特別是在RaspberryPi等設備上的支持方面表現不錯。因此,您需要根據您的具體需求來選擇CentOS或Debian。

debian比較centos哪個快

debian快

它還包括在其官方存儲庫之外的非GPL軟體。以遵守其提供免費軟體的准則。

1。主要軟體版本

DebianStableWheezy已擁有這些軟體版本。

Apache-2.2.22

php-5.4.4

MySQL-5.5.30

PostgreSQL-9.1.9

2。升級

將Debian從一個穩定版本升級到下一穩定版本很容易。操作也比較簡單。

3。穩定性

Debian被認為是比許多其他發行版更穩定的Linux發行版。對於企業而言。這是一個不錯的選擇。因為該版本中的錯誤導致的開銷更少。它還為修補安全漏洞提供了時間。因此這些發行版通常比其他Linux發行版的發行版更安全。

4。易用性

通常認為DebianLinux發行版比初學者更適合Linux專家。它從一開始就假定您對Linux開發有一定的了解。安裝程序為用戶提供了對其配置的更高程度的控制和自定義。

以上就是Debian和CentOS的區別。對於需要完全控制的有經驗的用戶。Debian可能更好;對於想要更穩定和安全的Linux發行版的企業。CentOS可能更好。

為什麼選擇CentOS而不是Debian?

我們運行著一些全球最大的互聯網的營運,因此我們對可靠性和穩定性非常重視,是我們的第一要務。為此,我們只使用Linux來支撐顧客的系統。但是,我們應該使用哪一個Linux的發行版?答案是,CentOS。為什麼呢?x0dx0ax0dx0a作為一個龐大的系統運營商,在很長的一段時間里,我們需要在多種大型系統中找到一個可靠的,可預測的系統,我們需要從世界上最強大的軟體供應商和開源項目中獲得強有力的支持。對於那些最常用的系統,我們需要文檔,工具和全球性資源。x0dx0ax0dx0a正因如此,RedHat/CentOS系列發行版正是我們的選擇。他們能夠滿足以上所有需求,而且問題相對較少、長期穩定,這使得我們能夠為成千上萬的運行了不同配置、服務和應用的系統提供世界級的維護。x0dx0ax0dx0aRedHat』sEnterpriseLinuxx0dx0a(RHEL)是黃金標準的企業發行版。它每五年左右更新一次,在系統的穩定性,前瞻性和安全性上有著極大的優勢。每當新的主版本發行後,比如x0dx0a5.x亦或最近的6.x,所有版本和代碼都將保留不變,只有安全問題或是主要的bug,例如後門,埠之類的問題,會通過發布新的子版本來修復。x0dx0ax0dx0aCentOS是RHEL發行版對應的開源版本,通常在RedHat的發布後就會很快發行。我們使用CentOS的原因在於RHEL發行版的標准支持服務費用非常高,大約每台伺服器800美元左右,對於我們很多擁有數十台甚至上百台伺服器的用戶來說,這是必須要控制的成本。x0dx0ax0dx0aRHEL/CentOS系統有兩個潛在的問題。x0dx0ax0dx0a首先,一旦確定了主版本,,除了安全問題和嚴重故障會被修復以外,其他內容將不會做任何改變。這雖然對穩定性有x0dx0a好處,但是對許多服務不利。比如MySQL和PHP服務,它們在這五年的CentOS/RHEL主版本發布周期中會進行繁重的開發和大量的修改。例x0dx0a如,MySQL5.0是當前RHEL/CentOS主版本所默認使用的版本,但是當前MySQL已經更新到5.1和5.5版本了。x0dx0ax0dx0a幸運的是,這個問題被Yum軟體包管理器輕易地解決了。如此以來,那些主要的軟體,例如當前RHEL/CentOS中實際的組件,包括內核和所有工x0dx0a具等仍然來自發行版,但是那些附加的軟體,例如Nginx,Apache,PHP,Java和MySQL等等來自更新的軟體源例如Fedora;x0dx0a或者直接從開發商獲取更新的版本例如MySQL。在我們這里,我們有自己專用的安裝鏡像來全自動的處理所有這些事情。x0dx0ax0dx0a其次,CentOS的發行會滯後於RedHat的發行,包括關鍵的補丁和修復。這在RHEL6.x的發行周期中尤為顯著。但是根據我們的經驗,這沒什麼好擔心的,對我們來說永遠不會成為問題。x0dx0ax0dx0a很多人詢問我們為什麼不用基於Debian的系統,例如Debian或者Ubuntu伺服器。如果在別無選擇的情況下,我們的確會支持這個建議,但是根據我們的經驗來看,這些系統並不如RHEL/CentOS來的穩定和可靠。x0dx0ax0dx0a我們認為,這在某種程度上是由於他們過快的發展和各個版本、組合之間較少的測試且不成熟所導致的。然而盡管他們非常流行,但是主要的服務商和項目都x0dx0a仍然首選RHEL/CentOS系統,因為這樣他們就可以為企業顧客提供服務,(對Oracle和MySQL更是如此)。除此之外,基於Debian的系統有許多內核和穩定性問題,尤其是在我們的雲計算服務中。x0dx0ax0dx0a對我們而言,唯一使用Debian/Ubuntu的原因是:x0dx0ax0dx0a「它們能夠為一個系統提供必要的特殊服務時,尤其是當一些驅動程序或者一些IO子系統需要一種新的內核的時候」。例如,ext4文件系統或在最近的內核中日誌的改變等;現在,所有這一切都包含在了RHEL/CentOS6.x中。x0dx0ax0dx0a當然,多數Linux開發者都使用的是Ubuntu的桌面版,而且可以理解的是,他們更傾向在開發生產時使用相同的系統,並且還能使用很多有趣的工具。但總體上來說,我們依然認為RHEL/CentOS是一個更優越的部署平台,並且已經有十多個客戶成功地轉向使用CentOS作為生產環境並且沒有任何問題,但這仍然是艱巨的任務。x0dx0ax0dx0a總的來說,你將更樂於看到一個良好管理的CentOS系統。我們有成千上萬台伺服器使用CentOS平台,而每年平均只有一台伺服器崩潰。我們也很難想像它竟如此罕見,所以,挑一個優秀、迅捷、可靠的平台吧!

CentOSDebianUbuntu哪個系統好?

文章目錄CentOSDebianCentOS與Debian哪個好?Ubuntu買VPS時有CentOS、Debian、Ubuntu三種操作系統可以選擇,Linux下哪種系統更好是很多新人都會遇到的問題,在此,我們分析一下Ubuntu、CentOS及Debian各自的性能及使用經驗。做伺服器的很少會用Ubuntu,所以我們最後分析這個。先來看看使用率較高的CentOS和Debian。CentOS很多商業性公司伺服器都是使用CentOS系統,CentOS簡約,命令行下的人性化做得比較好,穩定,有著強大的英文文檔與開發社區的支持。相對debian來說,CentOS略顯體積大一點,是一個非常成熟的Linux發行版。DebianDebian更適合於作為伺服器的操作系統,它比Ubuntu要穩定得多。Debian整個系統基礎核心非常小,不僅穩定,而且佔用硬碟空間小,佔用內存小。128M的VPS即可以流暢運行Debian,而CentOS則會略顯吃力。但是由於Debian的發展路線,使它的幫助文檔相對於CentOS略少,技術資料也少一些。CentOS與Debian哪個好?在國內伺服器中,使用CentOS的要多於Debian,而國外則Debian稍多些。選擇Debian是因為它是最大的社區發行版,有著嚴格的組織來維護,有著成千上萬個超級黑客在貢獻,而且有著最大的軟體倉庫,現在已經達到30000多個,有著大量的文檔資源。而CentOS的更新比較慢,軟體庫軟體版本過於陳舊,雖說穩定但是無法發揮出VPS的硬體特性。雖然也有社區,但是它沒有固定的組織來管理,沒有收入來源。另外,Debian

6涉及到WEB伺服器的軟體包都更新到了比較新的穩定版本,並且藉助apt命令直接安裝非常快捷。選擇CentOS大多是因為系統的穩定和可靠性,Debian發展過快,各個版本、組合之間測試較少稍顯不成熟,系統有許多內核和穩定性問題。Debian很時髦,有什麼新玩意就上,而CentOS開啟的內核選項都是非常保守。所以,從安全、穩定角度出發,主要的服務商和項目都仍然首選CentOS系統。下面看一些具體的比較:從安全上說CentOSDebian從性能下降說CentOSDebian硬體支持特別是虛擬化CentOSDebian默認內核配置性能測試DebianCentOS發開環境通用性DebianCentOS最後,如果你是開發者和狂熱的性能追求者或者是VPS中的伺服器建議用Debian,如果是VPS供應商、電子商務網站,要求很高的穩定性、安全性,則建議採用CentOS。另外,對於初玩者,如果VPS配置太低(OPENVZ內存在128M以下,或者XEN架構內存在192M以下)建議採用Debian,否則建議採用CentOS,以獲取更多的在線幫助與支持,讓自己入門更輕松。UbuntuUbuntu近些年的使用率有所增加,它用戶界面漂亮、管理系統完善、軟體源支持強大、技術社區豐富,對硬體的兼容性也不錯。然而,伺服器更需要的並非這些,所以決定了它更適合於桌面操作系統,在自己電腦上安裝或許要比伺服器中更適合一些。對於Linux,ubuntu系統資源消耗且不穩定只能被比喻成雞肋。伺服器需要的只是一個簡約、穩定、易用的系統而已!Ubuntu比較雞肋還有一個原因就是對NGINX的支持太弱,而Nginx性能要遠遠高於Apache。所以,對於新手,基本應該選擇CentOS系統而非Debian和Ubuntu。在確定選擇CentOS後,我們還需要確定是用32位系統還是64位系統。在此,笨鳥的建議是,如果你用的VPS是非常牛的配置,那你用64位比較合適;但如果伺服器一般,還是老老實實的用32位吧!

⑵ PHP框架的PHP開發框架

一直以來php框架被廣泛利用,多半都是基於mvc架構模式的,還有基於事件驅動模式的,大致列舉幾個。ThinkPHP是一個性能卓越並且功能豐富的輕量級PHP開發框架,本身具有很多的原創特性,並且倡導大道至簡,開發由我的開發理念,用最少的代碼完成更多的功能,宗旨就是讓WEB應用開發更簡單、更快速。從1.*版本開始就放棄了對PHP4的兼容,因此整個框架的架構和實現能夠得以更加靈活和簡單。2.0版本更是在之前的基礎上,經過全新的重構和無數次的完善以及改進,達到了一個新的階段,足以達到企業級和門戶級的開發標准。國人開發的PHP框架,目前最新版本為3.2.3版本。

Canphp是一個中國開源的php框架,主要的設計理念就是為了追求簡單,減少php初學者的學習成本,而且追求高效率,模版類不提供其他標簽,直接應用php的源代碼,還有它是微內核設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。其中集成的http類相當的強大,採集圖片速度相當的快,為什麼這樣呢?因為適用了模擬非同步多進程的原理。

KYPHP是一個中國開源的PHP框架,kyphp嚴格遵守OOP和MVC的理念,具有控制項化、可擴展性強。kyphp設計彎虧理念是自由、簡單。既可以用php源碼編程,也可以使用標簽,支持多語言,多陸鬧鏈資料庫,多皮膚,多模型部署等,為程序員節省更多的時間。

InitPHP是一款輕量級的php開發框架,採用分層體系架構,適合大中型網站架構。提供豐富的library類庫,以及簡單的框架擴展機制。InitPHP還提供詳細的開發文檔,可以讓您在使用該框架的時候更加簡單實用。InitPHP實現了抽象DB層、分層體系架構、緩存無縫切換機制、簡單模板機制、多模型部署機制、強大的安全體系,是您快速開發php應用的利器!

SpeedPHP是一款全功能的國產PHP應用框架系統。她以「快速開發、快速學習、快速運行」為理念,在提高團隊開發效率、容易學習及使用、輕量級架構以增加執行速度等方面有著突出的表現。SpeedPHP框架是從實際運行的商業系統中取其精華而成的,在穩定性和運行速度上都非常出色;同時有著清晰的架構,更有利於提高團隊開發效率,教程眾多,入門容易,號稱最適合初學者的PHP框架,快速帶你進入PHP高手的行列。

CdvPHP一款簡單開源PHP框架,靈感來源於DX,根據實際開發總結匯成快捷方便的輕量級框架。沒有太多的硬性要求,也沒有一本超厚的幫助手冊。快速開發、部署、學習必備利器。KPHP即(kphp開源框架)是為了提高PHP開發效率而研發php開源框架,其核心簡單精煉,代碼安全並易於理解,功能更符合php學習開發的的需要,而且易於學習不改變程序員的開發習慣。ZendFramework在開發社區中有大量的追隨者,它致力於Web2.0風格的程序。因為它眾多的追隨者組成的活躍用戶開發的擴展支持,Zend被稱為「ThePHPCompany」。Zend是一個(也可能不是)今天可用的最受歡迎的PHP開發框架。它有健壯的特徵能夠支持協作開發,它需要一些PHP的額外知識。

Codelgniter以它的簡單易用,性能和速度而聞名。與Symphony不同,這款PHP開發框架對於共享主機的用戶而言很理想,如果你想有一個小型覆蓋面的框架。它提供了簡單的解決方案,還有擴展的知識庫,通過視頻教程,用戶指南和wiki來提供支持。

CakePHP無論對於初學者還是職業PHP開發者都是很好的選擇。它基於與RubyonRails同樣的原則而設計,它十分注重快速開發——這使得它成為一個非常好的用於RAD的開發框架。它快速增長的支持系統,簡潔性和可測量性使得CakePHP成為今天可用的最受歡迎的PHP開發框架之早孫一。

Symfony是為那些更加職業的主要開發企業級程序的開發者而准備的——特別是Askeet和Yahoo!Bookmarks。這款開源PHP開發框架有著豐富的特性,做起這些來綽綽有餘,它主要的缺點是比其他的框架略微慢一些。

Yii是一個基於組件、用於開發大型Web應用的高性能PHP框架。它將Web編程中的可重用性發揮到極致,能夠顯著加速開發進程。Yii(讀作「易」),代表簡單(easy)、高效(efficient)、可擴展(extensible)。

Seagull是一個良好的PHP開發框架,可以用來開發Web,命令行和GUI程序。這是一款無論對初學者還是職業程序員而言都及其簡單的開發框架。對於初學者,Seagull提供一套包含樣常式序的庫,經過簡單修改就能符合你的要求,而對於專家級程序員,Seagull提供了一整套設置選項——包括最佳練習,標準的和模塊化的代碼庫——來快速簡單地構建Web程序。Seagull有一個活躍的用戶社區以及豐富的支持文檔。

Laravel是一套簡潔、優雅的PHPWeb開發框架(PHPWebFramework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網路APP,而且每行代碼都可以簡潔、富於表達力。E是一款非常簡潔優秀開源的超輕量級PHP框架,致力於追求簡潔,安全,自由,高效,是中小型項目首選框架。框架構架合理,一鍵生成完全合乎規范的大型網站文件夾架構,網站架構一目瞭然。強大的外部類庫支持,分布式存儲,強大的緩存系統,內置smarty模板引擎,單入口MVC模式,面向對象編程,具有微內核設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。無論您是一個NewPHPer還是OLDPHPER,那麼E框架是您的首選。學習完E框架後您可以快速並且輕松的駕馭其他框架,步入php高手之列。

DuoLamPHP是一款超輕量級的PHP框架,命名是按照多啦A夢動漫給改成的拼音形式。DP是一個簡單、高效、上手容易的PHP框架,遵循apache開源協議。可以快速搭建出一個項目,作為一個超輕量級的PHP框架,完美支持MVC,完全面向對象。

Difeye框架是一款超輕量級PHP框架,由Kohana框架精簡而來,主要特點有:資料庫連接自動主從讀寫分離配置,適合單機和分布式站點部署;支持Smarty模板機制;支持mysql、nosql類的mongodb等第三方資料庫模塊;完全分離頁面和動作,自動執行Page_Load入口函數,支持二級路由,將頁面模塊和頁面上的動作完全分離,使站點升級遷移更簡單;框架簡單易學容易部署;

GalaxixPhp是一套專業的php建站框架,主要用於讓用戶在網上的建站,開發人員使用用GalaxixPhp可以大大的縮小中型甚至大型網站的開發周期。GalaxixPhp兼容JavaScript,可以無縫地與Javascript,flash,PHP等程序集成,適合構建展示、CMS、商城、論壇、博客、Wiki、等各種網站。並且官網上學習和說明文檔以及視頻教程齊全。是針對專業開發的人員的收費框架。並且官方正在不斷推出更新更實用的框架插件。

PhpPeanuts是一個用以開發資料庫後端應用的PHP框架,包含一個可擴展的動態腳手架用來創建一個完整的web應用,提供用戶界面和ORM,包括CRUD操作、關聯關系以及一些示例查詢。phpPeanuts2.0完全支持PHP5,遵循ESTRICT標准,不再使用變數引用來傳遞對象;提升了靈活性;更獨立的模塊,以及迭代的對象復制等等。

RongFramework是一個國產的基於php5的面向對象開發框架,開發的主要目的是簡化開發、高性能開發。支持資料庫文件緩存、資料庫通用操作及封裝。簡化CRUD代碼編寫。支持在線生成CRUD代碼,只要選中數據表名稱,就可以生成CRUD代碼。不懂編程的人也可以做到。rongframework分為php代碼模板(classRong_View_PHP)和Rong_View_Wudimei(無敵美模板引擎,類似smarty)兩種模板機制。擁有良好的MVC機制和url美化方式、可以在代碼中實現URL重寫(由Rong_Countroller_Route實現)。

OpenbizFramework是為搭建企業應用而設計的PHP的基於面向對象的快速開發框架。它可以幫助專業軟體開發人員和技術咨詢專家來構建用於網路上的企業級應用。OpenbizFramework的設計目標是節省構建復雜應用系統的開發投入和縮短開發時間。藉助於Openbiz的幫助,應用程序的開發將基於完善的MVC架構建立,以Metadata驅動為核心描述業務邏輯,支持多種ORM邏輯,並且有OpenbizAppbuilder作為圖形化集成開發環境的快速開發平台。

⑶ linux 怎麼學啊

一.為什麼要學linux?

http://ph4nt0m.net/bbs/showthread.php?threadid=22510
http://ph4nt0m.net/bbs/showthread.php?threadid=857
當然如果沒有這種必要,請不要浪費時間

二.起步

你應該為自己創造一個學習linux的環境--在電腦上裝一個linux或unix
問題1:版本的選擇

北美用redhat,歐洲用SuSE,桌面mandrake較多,而debian是技術最先進的linux
開發人員中用debian的最多,其次是redhat,從全球linux各應用領域市場份額來看
無疑redhat是最多的,此外還有很多出名的發行版本,不再列舉。
對於初學linux的人來說,我建議是使用redhat,原因如下:
1)現在很多書都是以redhat為例講的,為了與書本協調一致
2)周圍的人都用redhat,交流比較方便
3)redhat應用范圍廣,有典型性和代表性
4)它易於使用和安裝,我們沒有必要把時間浪費在「裝系統」上
而應集中精力學習最有用的東西。

//註:現在覺得RH很死板,AS,ES等用在伺服器上或許不錯,
Personal desktop用mandrake,debian,suse都不錯,筆者現在用Mandrake,因為她長得漂亮

如果你並不打算深入學習linux,而是有諸如適應北京市政府辦公平台遷移到
linux上這種需要,那麼中軟,紅旗等中文linux是不錯的選擇

我強烈建議:自己親自動手把linux裝到你的硬碟上,
你必須學會獨立安裝linux系統的技能,對於現在的版本來說,其實跟裝WinXP一樣簡單

從此現在開始,請不要以windows的工作方式來考慮問題,
應該嘗試挖掘linux身上的「天才unix」的氣質。

三.進階
掌握至少50個以上的常用命令
理解shell管道"|",文件流重定向">"及追加">>"等
熟悉Gnome/KDE等X-windows桌面環境操作
掌握.tgz.rpm.biz等軟體包的常用安裝方法
學習添加外設,安裝設備驅動程序(比如modem)
熟悉Grub/Lilo引導器及簡單的修復操作
熟悉系統固有目錄的名稱及公用
學會用mount命令訪問其他文件系統
了解vi,gcc,gdb等常用編輯器,編譯器,調試器
學習linux環境下的簡單組網

建議:買一本不需要太厚的linux教材,大致可以滿足要求
//現在的書越來越多了,還帶很多圖,我當時可沒這么多書:)

四.高級應用

澄清一些概念:
linux的普通操作與真正的系統管理不能相提並論,後者需要很多知識

我個人認為比較重要幾種linux語言
1.英語
即使你不學linux,我也強烈建議你學好英文[U.S.english]
因為實質上計算機語言就是英文和字元,所謂的多國語言只是外部包裝
你必須能無障礙的閱讀大量的英文技術文檔
在搜索引擎找到的英文網站和網頁中熟練的檢索
最好能有用英文直接交流的能力,
擺脫了這個障礙,你的學習和理解速度就能快很多,你就有機會拉開和別人的差距

2.shell[sed/awk]
shell是命令解釋器,是內核與用戶界面交流通道,shell寫的小腳本有點類似於win下的.bat
但shell比.bat強大的多,shell不只是解釋命令,更是一種編程語言,有時候幾百行的c用shell
幾十行就能代替完成工作,因為shell的工作方式建立在系統已有的眾多應用程序之上
這也是CS中的一個重要思想。
此外,shell可以實現工作自動化,這個概念也比較重要
sed,awk用來處理文本,歷來很常用

3.Perl/PHP
漂亮的腳本, CGI的首選,比ASP好,應用面很廣

4.C\C++
C、C++是linux/unix的核心語言,系統代碼都是C寫的

5.ASM
系統底層及內核,硬體,設備驅動程序,嵌入式開發都需要
//走核心路線的話,個人認為c\c++,asm最重要

6.Java,python,Tcl,XML

*系統管理篇
在熟悉linux的基礎上還需要掌握至少一種unix
我首推Solaris,其次是FreeBSD
比如運營級系統一般是Solaris+Oracle/DB2之類的
學習apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind
等各種應用伺服器的構架及電子商務的應用
熟悉TCP/IP協議族,學習諸如apache+php+proftp+mysql+quota的實現以及大型區域網,分布式集群
等各種企業級應用解決方案
熟悉多用戶管理,資料庫管理,文件系統,邏輯存儲管理,日誌分析,備份與災難數據修復
系統補丁,內核升級,以及在此基礎上的防火牆構架等以保障系統安全在內的各種系統管理技能

我覺得,如果在此基礎上再掌握路由/交換設備便是一個不錯的系統管理員 :D

各種基於linux的解決方案可參考相關書籍和文獻,必要時用google或各大linux站點站內
搜索引擎尋找最新文檔,以避免錯誤和漏洞
有幾本技術大全和技術內幕我認為都是這方面不錯的書

*深入學習linux

我個人理解的讀linux內核需要的基礎:
在此之前,希望先把應用層的東西學一下,那樣會比較好理解
1.C
如果學過潭浩強的大學教科書(除了編幾個數學模型好像什麼也做不了的那種),
建議再看一下
《The C Programming Language》Second Edition這本聖經
/*如果想學緩沖區溢出,這點C的功力可能是不夠的*/
還有,<C陷阱與缺陷>,<C專家編程>,<C\C++深層探索>
反正經典書看多了是沒有壞處的:)

2.asm (AT&T語法,保護模式)
保護模式下的比較復雜,基本上每本講內核的書都會有介紹
有80x86 Intel語法的基礎就行,
有興趣可以看看Intel的官方白皮書

3.數據結構(離散數學)
計算機專業的核心課程,重要性我就不說了

4.操作系統原理
看懂這個再去讀linux吧

5.微機原理/組成原理(數字電路)
底層直接和硬體打交道,所以這個也要

6.了解linux/unix
我想至少你要會操作吧,了解unix的API

7.軟體工程/編譯原理

這方面的經典書去www.china-pub.com可以搜到很多
我覺得APUE這種書不適合初學者,還是先看看UPE之類的吧

APUE:
《advanced programming in the unix environment》
《unix環境高級編程》
作者:W.Richard.Stevens共有6本經典書,尊為「聖經」
他的書為全世界黑客所拜讀!

UPE:《unix programming environment》
《unix編程環境》比較適合初學者的,深入淺出,
其中有一些比較重要的思想
另外,介紹linux下應用層編程的書也有很多,比如
<GNU\Linux編程指南>,redhat,redflag出的書...........
經典書還有很多很多......
操作系統:設計與實現 //交大的考研參考書目,講Minix的
unix操作系統設計
4.4BSD操作系統設計與實現
昂萊氏unix源代碼分析
ulk:understanding the linux kernel (2nd)深入理解linux內核
linux設備驅動程序 (2nd)
linux內核源代碼情景分析
保護方式下的80386及其編程(次書已絕版,只有超星的電子版,如果誰能搞到紙書,清一定告訴我一下,非常感激!!!)

在這里你能明白"黑客"及"haching"一詞所代表的真正意義
希望我寫的這篇文章能造就更多的黑客,而不是駭客

五.一些資源
www.linuxforum.net //國內最高水平GNU站點
www.chinaunix.net //unix、系統管理的不錯
www.linuxeden.com //下載軟體不錯
www.linuxaid.com.cn
www.linuxsir.org

其實還有很多,包括國外的

以上內容是轉載別人的
這些是關於linux的
至於嵌入式的學習,需要很高深的硬體知識
對編程和系統移植有很深的認識才行
嵌入式是一種包括了DSP及arm等最小系統板的統稱
其結構也各不相同,有些是傳統的馮諾依曼結構,在DSP領域大部分用的是改進的哈佛結構
學嵌入式一定要學linux,這個是很關鍵的環節

⑷ 如何配置linux內核

在做Virtualization這段時間,編譯過多次Linux kernel,編譯Kernel過程中配置config這一步是相對來說比較復雜的。對編譯內核過程中的配置這一步做詳細的說明吧,總結一下,多數內容源於網上的多篇文章。

首發在我的博客:http://renyongjie668.blog.163.com/blog/static/1600531201143010295156/

首先,配置時可能出現的選項,對其選擇先來個說明吧。
Typically, your choices for each option are shown in the format [Y/m/n/?] The capitalized letter is the default, and can be selected by just pressing the Enter key. The four choices are:
y Build directly into the kernel.
n Leave entirely out of the kernel.
m Build as a mole, to be loaded if needed.
? Print a brief descriptive message and repeat the prompt.
y表示是(相應功能將直接編譯進內核),m表示模塊(相應功能將編譯為一個模塊,在需要時載入),以及n表示否(相應功能不會包含進內核)。?則(對該配置項)列印出簡要的描述信息並重復剛才的選擇提示。
其次,我使用的最多的兩個配置命令分別是:make muneconfig和make oldconfig
make oldconfig和make config類似,但是它的作用是在現有的內核設置文件基礎上建立一個新的設置文件,只會向用戶提供有關新內核特性的問題,在新內核升級的過程 中,make oldconfig非常有用,用戶將現有的配置文件.config復制到新內核的源碼中,執行make oldconfig,此時,用戶只需要回答那些針對新增特性的問題。
make menuconfig基於終端的一種配置方式,提供了文本模式的圖形用戶界面,用戶可以通過游標移動來瀏覽所支持的各種特性。使用這用配置方式時,系統中必須安裝有ncurese庫。

在內核樹的根目錄中,有一個.config文件,它記錄了內核的配置選項,可直接對它進行修改,再運行。在.config文件中,每個配置和選項的值只能為」y」和」m」兩者之一,如果不需要這個特性不再支持她,那麼可以將對應的選項用」#」注釋掉。實際上,如果你手頭有合適的.config文件,可以運行make oldconfig 直接按.config的內容來配置$ sudo make oldconfig
對內核的配置都是圍繞.config來展開的. 即便開始.config文件不存在,進行配置後會創造它.
一般來說,內核配置保存於/usr/src/linux-*/.config文件中。在/boot/config-<版本>有其備份。請保留它以備後用。

常見的幾種配置方式:
為了完成內核的配置,必須切換到root用戶,然後轉入內核源碼目錄(就是你下載新內核的目錄):
#cd /usr/src/linux/linux-2.6.38
然後執行下面命令之一:
#make config
#make oldconfig
#make menuconfig
#make gconfig
#make defconfig
#make allyesconfig
#make allmodconfig

1.make config
基於文本的最為傳統的也是最為枯草的一種配置方式,但是它可以使用任何情況,這種方式會為每一個內核支持的特性向用戶提問,如果用戶回答「y」,則把特性編譯進內核;回答「m」,則它特性作為模塊進行編譯;回答「n」,則表示不對該特性提供支持
如果回答每個問題前,必須考慮清楚,如果在配置過程中犯了錯誤給了錯誤的回答,就只能按「ctcl+c」強行退出了

2.make oldconfig
make oldconfig和make config類似,但是它的作用是在現有的內核設置文件基礎上建立一個新的設置文件,只會向用戶提供有關新內核特性的問題,在新內核升級的過程 中,make oldconfig非常有用,用戶將現有的配置文件.config復制到新內核的源碼中,執行make oldconfig,此時,用戶只需要回答那些針對新增特性的問題
make silentoldconfig : Like above, but avoids cluttering the screen with questions already answered.和上面oldconfig一樣,但在屏幕上不再出現已在.config中配置好的選項。

3.make menuconfig
基於終端的一種配置方式,提供了文本模式的圖形用戶界面,用戶可以通過游標移動來瀏覽所支持的各種特性。使用這用配置方式時,系統中必須安裝有ncurese庫,否則會顯示「Unable to find the Ncurses libraies」的錯誤提示

4.make xoncifg
基 於X Winodws的一種配置方式,提供了漂亮的配置窗口,不過只有能夠在X Server上使用root用戶欲行X應用程序時,才能夠使用,它依賴於QT,如果系統中沒有安裝QT庫,則會出現「Unable to find the QT installation」的錯誤提示

5.make gconfig
與make xocnifg類似,不同的是make gconfig依賴於GTK庫

6.make defconfig
按照默認的配置文件arch/i386/defconfig對內核進行配置,生成.config可以用作初始化配置,然後再使用make menuconfig進行定製化配置

7.make allyesconfig
盡量多地使用「y」設置內核選項值,生成的配置中包含了全部的內核特性
make allnoconfig :除必須的選項外,其它選項一律不選. (常用於嵌入式系統).

8.make allmodconfig
盡可能多的使用「m」設置內核選項值來生成配置文件

下載好Linux內核源代碼後,在源代碼的根目錄執行
make localyesconfig或者make localmodconfig
然後系統就會根據你的硬體自動生成一個適應你的硬體的.config (內核的配置文件)
make localmodconfig會執行lsmod命令查看當前系統中載入了哪些模塊(Moles),並最後將原來的.config中不需要的模塊去掉,僅保留前面lsmod出來的這些模塊,從而簡化了內核的配置過程。
這樣做確實方便了很多,但是也有個缺點:該方法僅能使編譯出的內核支持當前內核已經載入的模塊。因為該方法使用的是lsmod的結果,如果有的模塊當前沒有載入,那麼就不會編到新的內核中。
There』s an additional 「make localyesconfig」 target, in case you don』t want to use moles and/or initrds.

幾條好的建議:
除非您使用初始化ramdisk (initrd),否則絕不要把掛載根文件系統必需的驅動程序(硬體驅動以及文件系統驅動)編譯成模塊!而如果您確實使用初始化ramdisk,請為ext2FS支持選項選擇Y,因為ramdisk使用該文件系統。您還需要initrd支持。
如果您系統中有網卡,將它們的驅動編譯成模塊。這樣,您就能夠在/etc/moles.conf中用別名定義哪一塊網卡第一,哪一塊第二,等等。如果您將驅動程序編譯進了內核,它們載入的順序將取決於當初它們鏈接進內核的順序,而這不一定是您想要的。
最後,如果您不清楚某個選項的含義,請閱讀其幫助!而如果該幫助信息依然不能解決您的困惑,請保留該選項原來的樣子。(在config和oldconfig中可以按?鍵訪問幫助。)
配置最終結束後,請保存您的配置並退出。

參考資料:

http://www.cnmaizi.com/tech/elebuild/simplify-linux-kernel-config-rapid-compile-method-collect/

http://man.ddvip.com/linux/Mandrakelinuxref/compiling-conf.html

http://www.huomo.cn/os/article-5d18.html

編譯 Linux2.6 內核總結: http://www.cublog.cn/u/13991/showart.php?id=79823

編譯內核:http://my.chinaunix.net/space.php?uid=25806768&do=blog&id=302764

內核_.config 內核配置及Makefile:http://www.cnblogs.com/parrynee/archive/2010/05/13/1734689.html

⑸ 如何編寫makefile

你先用gcc把它給編譯出來。然後再想用makefile

gcc最一般的用法就是:
gcc -o 要生成的可執行文件名 源代碼文件名
如:gcc -o hello.x hello.c
如果一些頭文件要指明的話,可以這樣:
gcc -o hello.x -I頭文件所在的文件夾 -l一些庫名 hello.c
最通常,我們用到一些數學庫。gcc -o hello.x -lm hello.c

makefile的話,你可以基於上述的語句進行修改:建議你看點資料,或一些典型的例子。但是注意的是規則那一行,得用Tab鍵打頭。
hello.x : hello.o
gcc -o hello.x hello.o (這一行,得用Tab打頭)
hello.o : hello.c 頭文件
gcc -c hello.o hello.c -I頭文件所在目錄 -lm (這一行,得用Tab打頭)

⑹ 有哪些學習Java的網站

1、Stack overflow


Stack overflow可能是編程界中非常流行的網站了 , 是一個與程序相關的 IT 技術問答網站,用戶可以在網站免費提交問題,瀏覽問題,索引相關內容,在創建主頁的時候使用簡單的 HTML 。一部分的程序員學習 API 或者編程語言 , 通常依賴於代碼示例 ,stackoverflow 就可以提供大量的代碼片段。


2、CSDN


國內非常大的技術交流平台,很多大牛的博客都有一定的參考價值,可以在上面找一些自己需要的技術文檔。


3、Github


你也許知道可以免費的將你的項目託管在哪 , 但你不一定知道它還是一個學習當今流行的 Java庫和框架的優秀資源。比如 , 你想學 Spring MVC Framework, 你可以搜索並且找到一些開源的項目。遵循“照葫蘆畫瓢”的原則 , 你能夠通過實例快速的學習框架 , 尤其是你已經具有使用類似框架的經驗。


4、LeetCode


如果有 Java 方面的面試問題 , 例如“在 Java 中 , 內存中的數組是什麼樣的” , 你可以從很多 Java 教程中找到答案。這個網站還有一個好的地方就是 , 它可以通過大小不同的數據在線檢查你的代碼是否正確。很多人認為 , 面試成功的關鍵在於重復這三個重要步驟 : 編碼 -> 閱讀 -> 討論。


5、簡書


也是一個技術交流網站,很多人都會在上面發表自己的技術文章,還有一些書籍推薦等等,平時沒事的時候,可以自己瀏覽一下。


6、Java SE 技術文檔


這個網站包含了在使用 Java SE API 時會用到的所有文檔 , 即使你是 Java 開發牛人 , 我敢肯定在這里你仍能發現一些有用的東西。比如 , 你可以閱讀一些像“ Java 類的本質”、“部署”這樣的教程。

⑺ php新手學習路線是怎樣的

第一階段:基礎階段(基礎PHP程序員)

重點:把LNMP搞熟練(核心是安裝配置基本操作) 目標:能夠完成基本的LNMP系統安裝,簡單配置維護;能夠做基本的簡單系統的PHP開發;能夠在PHP中型系統中支持某個PHP功能模塊的開發。

時間:完成本階段的時間因人而異,有的成長快半年一年就過了,成長慢的兩三年也有。

  1. Linux

    基本命令、操作、啟動、基本服務配置(包括rpm安裝文件,各種服務配置等);會寫簡單的shell腳本和awk/sed 腳本命令等。

  2. Nginx

    做到能夠安裝配置nginx+php,知道基本的nginx核心配置選項,知道 server/fastcgi_pass/access_log 等基礎配置,目標是能夠讓nginx+php_fpm順利工作。

  3. MySQL

    會自己搭建mysql,知道基本的mysql配置選項;知道innodb和myisam的區別,知道針對InnoDB和MyISAM兩個引擎的不同配置選項;知道基本的兩個引擎的差異和選擇上面的區別;能夠純手工編譯搭建一個MySQL資料庫並且配置好編碼等正常穩定運行;核心主旨是能夠搭建一個可運行的MySQL資料庫。

  4. PHP

    基本語法數組、字元串、資料庫、XML、Socket、GD/ImageMgk圖片處理等等;熟悉各種跟MySQL操作鏈接的api(mysql/mysqli/PDO),知道各種編碼問題的解決;知道常規熟練使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);了解基本MVC的運行機制和為什麼這么做,稍微知道不同的PHP框架之間的區別;能夠快速學習一個MVC框架。能夠知道開發工程中的文件目錄組織,有基本的良好的代碼結構和風格,能夠完成小系統的開發和中型系統中某個模塊的開發工作。

  5. 前端

    如果條件時間允許,可以適當學習下 HTML/CSS/JS 等相關知識,知道什麼web標准,div+css的web/wap頁面模式,知道HTML5和HTML4的區別;了解一些基本的前端只是和JS框架(jQuery之類的);了解一些基本的JavaScript編程知識;(本項不是必須項,如果有時間,稍微了解一下是可以的,不過不建議作為重點,除非個人有強烈興趣)。

  6. 系統設計

    能夠完成小型系統的基本設計,包括簡單的資料庫設計,能夠完成基本的:瀏覽器 -> Nginx+PHP -> 資料庫 架構的設計開發工作;能夠支撐每天幾十萬到數百萬流量網站的開發維護工作;

    第二階段:提高階段 (中級PHP程序員)

    重點:提高針對LNMP的技能,能夠更全面的對LNMP有熟練的應用。 目標:能夠隨時隨地搭建好LNMP環境,快速完成常規配置;能夠追查解決大部分遇到的開發和線上環境的問題;能夠獨立承擔中型系統的構架和開發工作;能夠在大型系統中承擔某個中型模塊的開發工作。

    1. Linux

    在第一階段的基礎上面,能夠流暢的使用Shell腳本來完成很多自動化的工作;awk/sed/perl 也操作的不錯,能夠完成很多文本處理和數據統計等工作;基本能夠安裝大部分非特殊的Linux程序(包括各種庫、包、第三方依賴等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之類的);了解基本的Linux服務,知道如何查看Linux的性能指標數據,知道基本的Linux下面的問題跟蹤等。

    2. Nginx

    在第一階段的基礎上面,了解復雜一些的Nginx配置;包括 多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超時等相關配置和性能影響;知道nginx除了web server,還能夠承擔代理伺服器、反向靜態伺服器等配置;知道基本的nginx配置調優;知道如何配置許可權、編譯一個nginx擴展到nginx;知道基本的nginx運行原理(master/worker機制,epoll),知道為什麼nginx性能比apache性能好等知識。

    3. MySQL/MongoDB

    在第一階段的基礎上面,在MySQL開發方面,掌握很多小技巧,包括常規SQL優化(group by/order by/rand優化等);除了能夠搭建MySQL,還能夠冷熱備份MySQL數據,還知道影響innodb/myisam性能的配置選項(比如key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit等),也知道這些選項配置成為多少值合適;另外也了解一些特殊的配置選項,比如 知道如何搭建mysql主從同步的環境,知道各個binlog_format的區別;知道MySQL的性能追查,包括slow_log/explain等,還能夠知道基本的索引建立處理等知識;原理方面了解基本的MySQL的架構(Server+存儲引擎),知道基本的InnoDB/MyISAM索引存儲結構和不同(聚簇索引,B樹);知道基本的InnoDB事務處理機制;了解大部分MySQL異常情況的處理方案(或者知道哪兒找到處理方案)。條件允許的情況,建議了解一下NoSQL的代表MongoDB資料庫,順便對比跟MySQL的差別,同事能夠在合適的應用場景安全謹慎的使用MongoDB,知道基本的PHP與MongoDB的結合開發。

    4. Redis/Memcached

    在大部分中型系統裡面一定會涉及到緩存處理,所以一定要了解基本的緩存;知道Memcached和Redis的異同和應用場景,能夠獨立安裝 Redis/Memcached,了解Memcahed的一些基本特性和限制,比如最大的value值,知道PHP跟他們的使用結合;Redis了解基本工作原理和使用,了解常規的數據類型,知道什麼場景應用什麼類型,了解Redis的事務等等。原理部分,能夠大概了解Memcached的內存結構(slab機制),redis就了解常用數據類型底層實現存儲結構(SDS/鏈表/SkipList/HashTable)等等,順便了解一下Redis的事務、RDB、AOF等機制更好。

    5. PHP

    除了第一階段的能力,安裝配置方面能夠隨意安裝PHP和各種第三方擴展的編譯安裝配置;了解php-fpm的大部分配置選項和含義(如max_requests/max_children/request_terminate_timeout之類的影響性能的配置),知道mod_php/fastcgi的區別;在PHP方面已經能夠熟練各種基礎技術,還包括各種深入些的PHP,包括對PHP面向對象的深入理解/SPL/語法層面的特殊特性比如反射之類的;在框架方面已經閱讀過最少一個以上常規PHP MVC框架的代碼了,知道基本PHP框架內部實現機制和設計思想;在PHP開發中已經能夠熟練使用常規的設計模式來應用開發(抽象工廠/單例/觀察者/命令鏈/策略/適配器 等模式);建議開發自己的PHP MVC框架來充分讓開發自由化,讓自己深入理解MVC模式,也讓自己能夠在業務項目開發里快速升級;熟悉PHP的各種代碼優化方法,熟悉大部分PHP安全方面問題的解決處理;熟悉基本的PHP執行的機制原理(Zend引擎/擴展基本工作機制)。

    6. C/C++

    開始涉獵一定的C/C++語言,能夠寫基本的C/C++代碼,對基本的C/C++語法熟悉(指針、數組操作、字元串、常規標准API)和數據結構(鏈表、樹、哈希、隊列)有一定的熟悉下;對Linux下面的C語言開發有基本的了解概念,會簡單的makefile文件編寫,能夠使用簡單的GCC/GDB的程序編譯簡單調試工作;對基本的網路編程有大概了解。(本項是為了向更高層次打下基礎)。

    7. 前端

    在第一階段的基礎上面,熟悉基本的HTTP協議(協議代碼200/300/400/500,基本的HTTP交互頭);條件允許,可以在深入寫出稍微優雅的HTML+CSS+JavaScript,或者能夠大致簡單使用某些前端框架(jQuery/YUI/ExtJS/RequireJS/BootStrap之類);如果條件允許,可以深入學習JavaScript編程,比如閉包機制、DOM處理;再深入些可以讀讀jQuery源碼做深入學習。(本項不做重點學習,除非對前端有興趣)。

    8. 系統設計

    能夠設計大部分中型系統的網站架構、資料庫、基本PHP框架選型;性能測試排查處理等;能夠完成類似:瀏覽器 -> CDN(Squid) -> Nginx+PHP -> 緩存 -> 資料庫 結構網站的基本設計開發維護;能夠支撐每天數百萬到千萬流量基本網站的開發維護工作;

    第三階段:高級階段 (高級PHP程序員)

    重點:除了基本的LNMP程序,還能夠在某個方向或領域有深入學習。(縱深維度發展) 目標:除了能夠完成基本的PHP業務開發,還能夠解決大部分深入復雜的技術問題,並且可以獨立設計完成中大型的系統設計和開發工作;自己能夠獨立hold深入某個技術方向,在這塊比較專業。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)

    1. Linux

    除了第二階段的能力,在Linux下面除了常規的操作和性能監控跟蹤,還能夠使用很多高級復雜的命令完成工作(watch/tcpmp/starce/ldd/ar等);在shell腳本方面,已經能夠編寫比較復雜的shell腳本(超過500行)來協助完成很多包括備份、自動化處理、監控等工作的shell;對awk/sed/perl 等應用已經如火純青,能夠隨意操作控制處理文本統計分析各種復雜格式的數據;對Linux內部機制有一些了解,對內核模塊載入,啟動錯誤處理等等有個基本的處理;同時對一些其他相關的東西也了解,比如NFS、磁碟管理等等;

    2. Nginx

    在第二階段的基礎上面,已經能夠把Nginx操作的很熟練,能夠對Nginx進行更深入的運維工作,比如監控、性能優化,復雜問題處理等等;看個人興趣,更多方面可以考慮側重在關於Nginx工作原理部分的深入學習,主要表現在閱讀源碼開始,比如具體的master/worker工作機制,Nginx內部的事件處理,內存管理等等;同時可以學習Nginx擴展的開發,可以定製一些自己私有的擴展;同時可以對Nginx+Lua有一定程度的了解,看看是否可以結合應用出更好模式;這個階段的要求是對Nginx原理的深入理解,可以考慮成為Nginx方向的深入專業者。

    3. MySQL/MongoDB

    在第二階段的基礎上面,在MySQL應用方面,除了之前的基本SQL優化,還能夠在完成一些復雜操作,比如大批量數據的導入導出,線上大批量數據的更改表結構或者增刪索引欄位等等高危操作;除了安裝配置,已經能夠處理更多復雜的MySQL的問題,比如各種問題的追查,主從同步延遲問題的解決、跨機房同步數據方案、MySQL高可用架構等都有涉及了解;對MySQL應用層面,對MySQL的核心關鍵技術比較熟悉,比如事務機制(隔離級別、鎖等)、對觸發器、分區等技術有一定了解和應用;對MySQL性能方面,有包括磁碟優化(SAS遷移到SSD)、伺服器優化(內存、伺服器本身配置)、除了二階段的其他核心性能優化選項(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout等)、連接池軟體選擇應用,對show *(show status/show profile)類的操作語句有深入了解,能夠完成大部分的性能問題追查;MySQL備份技術的深入熟悉,包括災備還原、對Binlog的深入理解,冷熱備份,多IDC備份等;在MySQL原理方面,有更多了解,比如對MySQL的工作機制開始閱讀部分源碼,比如對主從同步(復制)技術的源碼學習,或者對某個存儲引擎(MyISAM/Innodb/TokuDB)等等的源碼學習理解,如果條件允許,可以參考CSV引擎開發自己簡單的存儲引擎來保存一些數據,增強對MySQL的理解;在這個過程,如果自己有興趣,也可以考慮往DBA方向發展。MongoDB層面,可以考慮比如說在寫少讀多的情況開始在線上應用MongoDB,或者是做一些線上的數據分析處理的操作,具體場景可以按照工作來,不過核心是要更好的深入理解RMDBS和NoSQL的不同場景下面的應用,如果條件或者興趣允許,可以開始深入學習一下MongoDB的工作機制。

    4. Redis/Memcached

    在第二階段的基礎上面,能夠更深入的應用和學習。因為Memcached不是特別復雜,建議可以把源碼進行閱讀,特別是內存管理部分,方便深入理解;Redis部分,可以多做一些復雜的數據結構的應用(zset來做排行榜排序操作/事務處理用來保證原子性在秒殺類場景應用之類的使用操作);多涉及aof等同步機制的學習應用,設計一個高可用的Redis應用架構和集群;建議可以深入的學習一下Redis的源碼,把在第二階段積累的知識都可以應用上,特別可以閱讀一下包括核心事件管理、內存管理、內部核心數據結構等充分學習了解一下。如果興趣允許,可以成為一個Redis方面非常專業的使用者。

    5. PHP

    作為基礎核心技能,我們在第二階段的基礎上面,需要有更深入的學習和應用。從基本代碼應用上面來說,能夠解決在PHP開發中遇到95%的問題,了解大部分PHP的技巧;對大部分的PHP框架能夠迅速在一天內上手使用,並且了解各個主流PHP框架的優缺點,能夠迅速方便項目開發中做技術選型;在配置方面,除了常規第二階段會的知識,會了解一些比較偏門的配置選項(php auto_prepend_file/auto_append_file),包括擴展中的一些復雜高級配置和原理(比如memcached擴展配置中的memcache.hash_strategy、apc擴展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之類的);對php的工作機制比較了解,包括php-fpm工作機制(比如php-fpm在不同配置機器下面開啟進程數量計算以及原理),對zend引擎有基本熟悉(vm/gc/stream處理),閱讀過基本的PHP內核源碼(或者閱讀過相關文章),對PHP內部機制的大部分核心數據結構(基礎類型/Array/Object)實現有了解,對於核心基礎結構(zval/hashtable/gc)有深入學習了解;能夠進行基本的PHP擴展開發,了解一些擴展開發的中高級知識(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式細節(mod_php/fastcgi);除了開發PHP擴展,可以考慮學習開發Zend擴展,從更底層去了解PHP。

    6. C/C++

    在第二階段基礎上面,能夠在C/C++語言方面有更深入的學習了解,能夠完成中小型C/C++系統的開發工作;除了基本第二階段的基礎C/C++語法和數據結構,也能夠學習一些特殊數據結構(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工作中需求;在系統編程方面,熟悉多進程、多線程編程;多進程情況下面了解大部分多進程之間的通信方式,能夠靈活選擇通信方式(共享內存/信號量/管道等);多線程編程能夠良好的解決鎖沖突問題,並且能夠進行多線程程序的開發調試工作;同時對網路編程比較熟悉,了解多進程模型/多線程模型/非同步網路IO模型的差別和選型,熟悉不同非同步網路IO模型的原理和差異(select/poll/epoll/iocp等),並且熟悉常見的非同步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和使用,如果閑暇也可以看看一些國產自己開發的庫(比如muo);同時能夠設計好的高並發程序架構(leader-follow/master-worker等);了解大部分C/C++後端Server開發中的問題(內存管理、日誌列印、高並發、前後端通信協議、服務監控),知道各個後端服務RPC通信問題(struct/http/thirft/protobuf等);能夠更熟絡的使用GCC和GDB來開發編譯調試程序,在線上程序core掉後能夠迅速追查跟蹤解決問題;通用模塊開發方面,可以積累或者開發一些通用的工具或庫(比如非同步網路框架、日誌庫、內存池、線程池等),不過開發後是否應用要謹慎,省的埋坑去追bug。

    7. 前端

    深入了解HTTP協議(包括各個細致協議特殊協議代碼和背後原因,比如302靜態文件緩存了,502是nginx後面php掛了之類的);除了之前的前端方面的各種框架應用整合能力,前端方面的學習如果有興趣可以更深入,表現形式是,可以自己開發一些類似jQuery的前端框架,或者開發一個富文本編輯器之類的比較瑣碎考驗JavaScript功力。

    8. 其他領域語言學習

    在基礎的PHP/C/C++語言方面有基本積累,建議在當前階段可以嘗試學習不同的編程語言,看個人興趣愛好,腳本類語言可以學學 Python/Ruby 之類的,函數式編程語言可以試試 Lisp/Haskell/Scala/Erlang 之類的,靜態語言可以試試 Java/Golang,數據統計分析可以了解了解R語言,如果想換個視角做後端業務,可以試試 Node.js還有前面提到的跟Nginx結合的Nginx_Lua等。學習不同的語言主要是提升自己的視野和解決問題手段的差異,比如會了解除了進程/線程,還有輕量級協程;比如在跨機器通信場景下面,Erlang的解決方案簡單的驚人;比如在不想選擇C/C++的情況下,還有類似高效的Erlang/Golang可用等等;主要是提升視野。

    9. 其他專業方向學習

    在本階段裡面,會除了基本的LNMP技能之外,會考慮一些其他領域知識的學習,這些都是可以的,看個人興趣和長期的目標方向。目前情況能夠選擇的領域比較多,比如、雲計算(分布式存儲、分布式計算、虛擬機等),機器學習(數據挖掘、模式識別等,應用到統計、個性化推薦),自然語言處理(中文分詞等),搜索引擎技術、圖形圖像、語音識別等等。除了這些高大上的,也有很多偏工程方面可以學習的地方,比如高性能系統、移動開發(Android/IOS)、計算機安全、嵌入式系統、硬體等方向。

    10. 系統設計

    系統設計在第二階段的基礎之上,能夠應用掌握的經驗技能,設計出比較復雜的中大型系統,能夠解決大部分線上的各種復雜系統的問題,完成類似 瀏覽器 -> CDN -> 負載均衡 ->接入層 -> Nginx+PHP -> 業務緩存 -> 資料庫 -> 各路復雜後端RPC交互(存儲後端、邏輯後端、反作弊後端、外部服務) -> 更多後端 醬紫的復雜業務;能夠支撐每天數千萬到數億流量網站的正常開發維護工作。

⑻ linux的源代碼

www.kernel.org里有linux的內核源代碼,人家編譯內核都要去那裡下載最新的內核代碼。至於Linux下其他軟體的源代碼,你可以去相關的地址下載。最好使用google.com,英文的,不要用中文的網路或谷歌。還有很多人寫了關於閱讀linux源代碼的書,比如趙炯寫的一本分析早期內核1.01的。
ps文件是postscript語言格式的文件,在Linux下,可以用ps2pdf轉換成pdf文件,也可以用GhostView、GSview或者RoPS直接打開。
學習linux有很多種方法,我以前看過一遍文章,不過上面的書我都沒讀過,你自己看吧。http://blog.chinaunix.net/u2/83205/showart.php?id=1918540

哦,趙炯博士的主頁:http://www.oldlinux.org/homepage/
他那本完全注釋linux源代碼: http://oldlinux.org/download/clk011c-1.9.5.pdf

呵呵,我不知道你下載的是什麼,我上面這個地址可是pdf文件,你看後綴就知道了。

⑼ 運維 為什麼要用python 不用php

現階段,掌握一門開發語言已經成為高級運維工程師的必備計能,不會開發,你就不能充分理解你們系統的業務流程,你就不能幫助調試、優化開發人開發的程序, 開發人員有的時候很少關注性能的問題,這些問題就得運維人員來做,一個業務上線了,導致 CPU 使用過高,內存佔用過大,如果你不會開發,你可能只能查到進程級別,也就是哪個進程佔用這么多,然後呢?然後就交給開發人員處理了,這樣咋體現你的價值?

另外,大一點的公司,伺服器都上幾百,上千,甚至數萬台,這種情況下怎樣做自動化運維?用 SHELL 寫腳本 FOR 循環?呵呵,歇了吧, SHELL 也就適合簡單的系統管理工作。到復雜的自動化任務還得要用專門的開發語言。你可能說了,自動化管理有專門的開源軟體\監控也有,直接拿來用下就好了,但是現有的開源軟體如 puppet\saltstack\zabbix\nagio 多為通用的軟體,不可能完全適用你公司的所有需求,當你需要做定製、做二次開發的時候,你咋辦?找開發部門?開發部門不懂運維的實際業務邏輯,寫出來的東西爛爛不能用,這活最後還得交給運維開發人員來做。

其次,不會運維開發,你就不能自己寫運維平台\復雜的運維工具,一切要藉助於找一些開源軟體拼拼湊湊,如果是這樣,那就請不要抱怨你的工資低,你的工作不受重視了。

為什麼要學 PYTHON ?

PYTHON 第一是個非常牛 B 的腳本語言, 能滿足絕大部分自動化運維的需求,又能做後端 C/S 架構,又能用 WEB 框架快速開發出高大上的 WEB 界面,只有當你自已有能力做出一套運維自動化系統的時候,你的價值才體現出來,你才有資格跟老闆談重視, 否則,還是老老實實回去裝機器吧。

運維開發為什麼要用 PYTHON ?

Good question, 為什麼不用 PHP , JAVA , C++ , RUBY ,這里我只能說,見人見智, 如果你碰巧已經掌握了除 PYTHON 之外的其它語言,那你愛用啥用啥,如果你是一個連 SHELL 都還沒寫明白的新手,想學個語言的話,請用 PYTHON , 為什麼呢?首先, PHP 是跟 PYTHON 比的最多的,其實他倆根本就不用比,為什麼呢?兩個語言適用性不同, PHP 主要適用於 WEB 開發,可以迅速的做出中小型,輕量級的 WEB 網站,但後端嘛,基本還是要藉助其它語言, 藉助什麼語言呢? SHELL ? PYTHON ?呵呵。 而 PYTHON 呢, 是個綜合語言, 前後端都可以,單拿出來比 WEB ,也一點不比 PHP 差,但為什麼WEB方向上 PHP 比 PYTHON 要火? 先入為主嘛, PHP 90 年代誕生就是做 WEB 的, PYTHON2000 年後才出現 WEB 框架,但論優秀程度上, PYTHON 的 WEB 框架基本上出其無左,至少是跟 PHP 比。

那 JAVA 呢?好吧,一個臃腫\中庸\豪無新意的語言,還是老老實實用它來做 ERP 吧,搞個運維小平台,用 JAVA 真心沒啥必要,在我看來, JAVA 就是穩定的中年男人,穩定\成熟\禿頂,而 PYTOHN 代表的就是青春, 簡潔\快\干凈\帥!

C++ \ C ,這個嘛,我只能說,如果你會了 PYTHON, 又會 C 的話,那你會更吃香,但是不會 C 的話,其實也無大礙,基本上做運維的人,搞搞 C 就是為了來裝 B 的,因為多數情況下你都到不了看系統底層源碼的程度。

RUBY ,小日本開發的,還不錯,風格跟 PYTHON 有點像,因為 ruby onrails 出了名,國外用的比較多,國內,放心吧,沒戲, PYTHON 已經把它的想像空間都占死了。

當然還有新的語言 GO , 有些搞運維的看見做開發的人員搞 GO ,也想湊熱鬧,覺得是未來,我想說,別瞎沒事跟風, GO 再成功,也不會變成運維開發語言。

有些人覺得 PYTHON 效率底,說他不能支持多線程, OH ,好吧,這個還有點說對了,但是我想問,看我這篇文章的有幾個做過搜索引擎開發?有幾個做個上億 PV 的並發網站開發? 有幾個看過 LINUX 內核源碼?如果沒有,請別瞎跟著傳了,知道 PYTHON 為什麼不支持多線程嗎?這句話問錯了,其實 PYTHON 支持多線程,只是不支持多 CPU 多線程,也就是一個程序 spawn 出來的多線程只能佔用一個 CPU ,但是為什麼呢?噢,因為 GIL , GIL 是什麼東東,請自行補腦。。。但是你非得用多線程嗎?你可以用多進程呀,再牛 B 你還可以用協程呀,這些 PYTOHN 支持的都很好呀,如果你的程序邏輯不好,搞個多線程也快不起來。我認識一個博士講過一句話,我覺得不錯,他說,程序效率高低, 80% 都是寫程序的人決定了,語言本身就占 20% ,所以下次有人再說 PYTHON 效率低的時候,請讓他先回去自己檢查下自己的程序多了多少無用的邏輯、循環等等。 這個博士自己用 PYTHON 寫的 WEB 程序,一台伺服器每天能處理上億請求,一秒並發近兩萬, 什麼 WEB 框架這么牛 B ? 別問它是誰, 它叫 tornado 。

PYTHON 能否自學?

當然可以,什麼都可以自學,前提是你得能學得會,見過 N 多菜鳥踏上上自學的不歸路,他媽的什麼都能自學的話,還用大學干什麼?自己在家鱉不就行了?動不動就說 PYTHON 是個腳本語言,自己看看就不會了,說這話的只可能有兩種人,一種是高手,一種是 SB ,對於高手來講,他肯定已經會其它語言, PYTHON 在這種情況下,自學當然就很容易學會,幾年前我剛接觸 PYTHON 時,代碼遇到問題,找了個開發的哥們幫調試,哥們幫調了十幾分鍾就搞定了,結果人家以前一句 PYTHON 代碼也沒寫過,為什麼,因為語言都有相通之處,一門掌握好了,其它門自己學學就會了。但對於新手來講,沒任何語言基礎就開始自學,那麼恭喜你,菜鳥們見此文章為證,從今天開始自學,一年後,你要是能自己做出個軟體來,來找我要一千塊錢。 哈哈,真的。 基本上自學是屬於專業人員乾的事情,就像會一門樂器了,自己學下就可能學會另一門,但我之前沒音樂基礎,跟著老師都沒把吉它學會。

所以奉勸沒基礎又想學 PYTHON 的同學,花點錢去報個班學吧,拿錢換時間,時間是生命,錢沒了可再掙錢,時間過去了就再也不會回來,如果你不信邪,非要自己學,那我佩服你的勇氣,不過自己試試就知道了。

說了這么多,只想告訴那些迷茫不知所措該學什麼語言的新手們, 在你還沒學好走路的時候,不要老想著,將來我當上老闆了,我是開寶馬呢?還是開賓士呢?先學會騎自行車吧。。。
轉載

⑽ 發起socket連接的機器需要開埠嗎 - PHP內核源碼分析

那這個問題就奇怪了如果本地是要開放一個埠供發起連接但是防火牆卻並沒有允許這個埠(也並不知道需要開哪個埠)去發起連接那為什麼使用
fsocket,file_get_contents等卻沒有問題?理論上應該是無法獲得內容的?

閱讀全文

與php內核源碼入口相關的資料

熱點內容
5x的解壓密碼 瀏覽:480
如何創建tomcat80伺服器 瀏覽:389
一個真正隱世的程序員 瀏覽:822
飢荒聯機為什麼開不了伺服器 瀏覽:28
程序員的甜品製作方法 瀏覽:200
找幾本關於程序員職場的小說 瀏覽:356
拼多多app這是怎麼回事 瀏覽:811
程序員那麼可愛小說作者 瀏覽:204
pdf文件打不開怎麼辦 瀏覽:607
數字化校園系統源碼 瀏覽:194
androidxml虛線 瀏覽:861
小學生催眠按摩解壓視頻 瀏覽:417
報修管理系統源碼 瀏覽:76
java列印調用棧 瀏覽:792
網頁加密視頻怎麼下載 瀏覽:555
程序員上班了可以學什麼有用 瀏覽:564
程序員的謀生手段 瀏覽:431
泉州電視台直播源碼 瀏覽:682
路徑規劃演算法比較 瀏覽:87
墨刀開發APP如何設置背景圖片 瀏覽:139