編程革命
① java是什麼意思哦
Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執行的語言,語法規則和C++類似,java技術廣泛運用手機游戲開發當中
Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執行的語言,語法規則和C++類似。同時,Java也是一種跨平台的程序設計語言。用Java語言編寫的程序叫做「Applet」(小應用程序),用編譯器將它編譯成類文件後,將它存在WWW頁面中,並在HTML檔上作好相應標記,用戶端只要裝上Java的客戶軟體就可以在網上直接運行「Applet」。 Java非常適合於企業網路和Internet環境,現在已成為Internet中最受歡迎、最有影響的編程語言之一。 Java有許多值得稱道的優點,如簡單、面向對象、分布式、解釋性、可靠、安全、結構
中國互聯網路調查問卷 新浪免費郵箱升到30兆
搶注旺鋪得超值禮物 進入伊妹兒的網路豪宅
中立性、可移植性、高性能、多線程、動態性等。Java擯棄了C++中各種弊大於利的功能和許多很少用到的功能。 Jave可以運行與任何微處理器,用Java開發的程序可以在網路上傳輸,並運行於任何客戶機上。
② 人工智慧為核心的第四次工業革命,孩子需要學編程嗎
編程主要看愛好,興趣是最好的老師嘛。
至於能否在編程中的所建樹,那還需要點天賦,,,但博學並熟練是能夠勝任一般的工作需要的。
③ 請問一下可編程邏輯控制器的未來趨勢是什麼
向高集成、高性能、高速度,大容量發展 微處理器技術、存儲技術的發展十分迅猛,功能更強大,價格更便宜,研發的微處理器針對性更強。這為可編程序控制器的發展提供了良好的環境。大型可編程序控制器大多採用多CPU結構,不斷地向高性能、高速度和大容量方向發展。 在模擬量控制方面,除了專門用於模擬量閉環控制的PID指令和智能PID模塊,某些可編程序控制器還具有模糊控制、自適應、參數自整定功能,使調試時間減少,控制精度提高。
向普及化方向發展 由於微型可編程序控制器的價格便宜,體積小、重量輕、能耗低,很適合於單機自動化,它的外部接線簡單,容易實現或組成控制系統等優點,在很多控制領域中得到廣泛應用。
向模塊化、智能化發展 可編程序控制器採用模塊化的結構,方便了使用和維護。智能I/O模塊主要有模擬量I/O、高速計數輸人、中斷輸入、機械運動控制、熱電偶輸入、熱電阻輸入、條形碼閱讀器、多路BCD碼輸人/輸出、模糊控制器、PID迴路控制、通信等模塊。智能I/O模塊本身就是一個小的微型計算機系統,有很強的信息處理能力和控制功能,有的模塊甚至可以自成系統,單獨工作。它們可以完成可編程序控制器的主CPU難以兼顧的功能,簡化了某些控制領域的系統設計和編程,提高了可編程序控制器的適應性和可靠性。
向軟體化發展 編程軟體可以對可編程序控制器控制系統的硬體組態,即設置硬體的結構和參數,例如設置各框架各個插槽上模塊的型號、模塊的參數、各串列通信介面的參數等。在屏幕上可以直接生成和編輯梯形圖、指令表、功能塊圖和順序功能圖程序,並可以實現不同編程語言的相互轉換。可編程序控制器編程軟體有調試和監控功能,可以在梯形圖中顯示觸點的通斷和線圈的通電情況,查找復雜電路的故障非常方便。歷史數據可以存檔或列印,通過網路或Modem卡,還可以實現遠程編程和傳送。 個人計算機(PC)的價格便宜,有很強的數學運算、數據處理、通信和人機交互的功能。目前已有多家廠商推出了在PC上運行的可實現可編程序控制器功能的軟體包,如亞控公司的KingPLC。「軟PLC"在很多方面比傳統的「硬PLC"有優勢,有的場合「軟PLC"可能是理想的選擇。
向通信網路化發展 伴隨科技發展,很多工業控制產品都加設了智能控制和通信功能,如變頻器、軟啟動器等。可以和現代的可編程序控制器通信聯網,實現更強大的控制功能。通過雙絞線、同軸電纜或光纖聯網,信息可以傳送到幾十公里遠的地方,通過Modem和互聯網可以與世界上其他地方的計算機裝置通信。 相當多的大中型控制系統都採用上位計算機加可編程序控制器的方案,通過串列通信介面或網路通信模塊,實現上位計算機與可編程序控制器交換數據信息。組態軟體引發的上位計算機編程革命,很容易實現兩者的通信,降低了系統集成的難度,節約了大量的設計時間,提高了系統的可靠性。國際上比較著名的組態軟體有Intouch、Fix等,國內也涌現出了組態王、力控等一批組態軟體。有的可編程序控制器廠商也推出了自己的組態軟體,如歐姆龍PLC、西門子PLC等。
望採納。。。。。。
④ 雲語言是什麼
我們不知道明天會發生什麼,昨天發生的事情,我們回不去。剛逝去的一秒宛如一夢,未來的一秒遙不可及,我們要做的就是全力以赴、開創現在。我們是一個人,為了一個共同的目標,我們都放棄了很多,我們用一個燦爛的昨天交接希望的明天。我們要改變,從現在開始。我們渴望被認可、希望實現價值、我們在猶豫、我們在尋找、終於我們聚在一起了,我們完成了完美的拼圖,我們相信一場新的革命、一場人才的核裂變在我們身上呈現,我們相信對未來的慷慨,就是把所有美好給予現在,我們抓住了機遇、我們會創造奇跡,因為我們本身就是為創造奇跡而生的。
我是一切的根源、我們是一個向內尋求的團隊。我們願意用絕大部分的時間學習,學習最先進的文化、管理知識、和服務理念、我們相信一切付出都是為了愛,只有付出才會有收獲。
人是按照習慣生活的,昨天是這樣、是因為我們前天是這樣、今天是這樣、是因為我們昨天是這樣、我們懊惱、我們悔恨、但我們不知道過去做的事情成就了現在的我們、也是我們只能走到今天這樣局面的原因。抓緊時間,「今天是我生命中的最後一天」,我們將全力以赴,用我們博大的愛、和胸懷、用感恩的心做人、用勇敢的心做事。我們相信、想壯志凌雲、做腳踏實地,只要我們有亮劍精神一定會劍鋒指處所向披靡。
雲語言是雲計算的核心技術之一
一、認識雲語言
「雲語言」是雲計算時代的產物,它是60年來編程必須寫代碼的終結者。它與在它之前的所有軟體網路開發環境有兩個明顯的不同:
一 它的目標用戶是普通人(沒有任何編程能力和知識)
二 它的程序不再有任何形式的資料庫。為了實現這個目標,它把:
1 頁面顯示
2 數據源的准備和採集
3 邏輯動作
三部分合成一體。以頁面描述的形式由普通終端用戶完成。
簡單認識——「雲語言」:
1 「雲語言」是一個編程工具
2 使用雲語言編程不需要寫任何代碼,也就是說你不用學C語言或者JAVA,也不用學資料庫課程。
3 使用雲語言可以開發網站、企業ERP系統等,也可以開發游戲。但雲語言不能開發WINDOWS操作系統。記住可以開發所有的應用軟體。
雲語言的價值
1 微軟、GOOGLE、蘋果等公司多次邀請丁博士加入,丁博士都婉言謝絕了,因為丁博士希望中國的軟體產品應該有自己的知識產權。
2 你應該知道微軟是靠WINDOWS起家的,因為WINDOWS可以讓所有人都可以學會使用電腦。
3 你也知道OFFICES,如果沒有OFFICES,那麼大多數人都不會用電腦寫文章。
4 每個人都希望有自己的網站,雖然很多網站都提供個人空間,但是這些個人空間畢竟還是屬於網站的,很多規則你都無法修改,個人空間的功能你也無法修改,當然你也不會修改。所以很多人的空間都是閑著。這是因為技術的限制,導致應用無法推廣。如果你用雲語言開發一個自己的網站。那你的感覺就會不一樣。
再想想WINDOWS、OFFICES,你一定會明白雲語言的價值。
5 企業老闆一定會用你用雲語言開發的網站和軟體產品,因為老闆不喜歡被程序員控制,因為老闆也不會編程,但老闆會使用雲語言。
三、雲語言的商業價值
雲語言
雲語言是我們自定義的一個編程軟體的名稱
雲語言是雲技術核心技術之一
雲語言位於雲技術高端層面
雲計算——硬體方面(低端),雲服務——應用方面(高端)
雲語言是開發雲服務的編程語言
目前雲技術最普遍的應用——郵箱
打開瀏覽器即可收發郵件,你無須了解你的郵件保存在哪台伺服器上。
雲語言可以做什麼?
雲語言是一個編程軟體,編程軟體可以被稱為工具
1 雲語言可以開發偷菜游戲、大富豪游戲等網頁類游戲
2 雲語言可以開發網站、博客、QQ、MSN、QQ空間,淘寶網、新浪網、財務ERP、進銷存系統、OA系統。
3 雲語言可以開發股票分析軟體、小學生學習軟體、家庭財務管理軟體、個人管理軟體等。
雲語言可以把你想到的你需要使用軟體的任何事情,開發出來。
提示:軟體是否能開發出來,通常不依賴於編程軟體,而是決定於編程的人。
◇雲語言是目前為止世界范圍內唯一一款打開瀏覽器即可開發互聯網應用的編程軟體。
◇雲語言實現了軟體開發的終極目標:所見,即所得!
◇雲語言改變了軟體開發的模式
傳統編程是每個頁面後面都有一段程序,雲語言開發的頁面都是數據,這樣每個頁面都可以復制、粘貼、修改,大大提高軟體開發的效率。
湖北雲語簡介
在全球掀起雲計算風潮的時候、在微軟、聯想、蘋果、GOOGLE等國際知名企業都爭先恐後的介入與計算市場的時候,計算機行業不知不覺中進入雲的時代。
湖北雲語言科技有限公司帶著普及雲語言、讓過去不懂編程的人打開瀏覽器即可開發互聯網應用的使命。在2010年10月成立了。
因為雲語言是一次計算機編程的革命,雲語言的出現時計算機發展的必然。目前企業信息化程度不高,都是由於編程太難造成的。有了雲語言人們使用互聯網的門檻大大降低,雲語言可以為企業開發管理系統、降低企業網站維護成本提高企業效益。為加快雲語推廣進程和雲語言普及的速度,湖北雲語科技有限公司,本著「眾包,人人合作、人人受益,所見即所得」的理念,為廣大客戶提供學習最先進技術的平台、了解最新信息的平台、最全面的創業指導和受益最快的平台。 湖北雲語用雲語言讓所有人用好互聯網,領航雲時代互聯網編程技術
成為全球最大的互聯網編程運用推動平台和創業幫扶服務的創業沃爾瑪。
⑤ 隨著人工智慧時代的到來,有必要從小讓孩子學編程嗎
著人工智慧時代的到來,編程已經成為未來人類必備的技能之一,同時,學習編程在提升孩子綜合素養以及助力升學方面,佔有重要位置。有遠見的家長,都在帶孩子學編程。
80後、90後家長們,可能對少兒編程的認知有些了解,不管是學校的引入,還是政策的推動,還是國外的潮流,少兒編程作為新時代、人工智慧背景下的產物,無疑是每位家長和孩子甚至是資本需要去詳細了解和解讀的一場教育革命!
編程不止是一種計算機語言,編程不止是一種計算機語言,更是未來人工智慧時代的「溝通"語言,能培養孩子的邏輯思維能力,語言表達能力,數學計算能力,空間想像力,自我反省能力,自然觀察能力,注意力,創造力,計算思維等等。
喬布斯曾說過:「人人都應該學習一門計算機語言,因為它將教會你如何思考」。美國前總統奧巴馬也曾為了推廣編程教育,親自寫了一段Java代碼,並表示向美國學校資助40億美元用於計算機科學教育。英國也將2014年設立為"Year of Code",規定所有5-16歲的學生都必須學習計算機編程。
少兒編程到底學什麼,有家長認為,我的孩子又不一定要當程序員,學編程有用嗎?其實,少兒編程學的不是程序代碼,而是從小培養孩子的思維和能力。
學思維:學的是「利用計算機科學的基本概念來解決問題、設計系統和理解人類行為」,即現在常說的「計算思維」。計算思維是一套方法論,一套思維框架,是孩子改造世界的有力工具。
學能力:人工智慧、物聯網、智能家電已經逐漸進入大眾家庭和城市生活。所以具備一些編程技能,至少可以理解更多的新技術和產品,也能具備很重要的解決問題和創新創造的能力。
編程不僅僅是興趣課,在以往家長的觀念中,編程屬於「興趣課」,通常是在課後興趣小組里才出現的科目。但如今卻能在必修學分中占據一席之地,不能不說這是教育部針對編程教育釋放的又一次重要信號!
少兒編程已經是大勢所趨,它將在未來幾年裡飛速發展,而對於所有孩子們而言,編程不止是一種計算機語言,更是未來人工智慧時代的「溝通」語言,少兒編程也將成為舉足輕重的學科之一,也許在未來更要列入高考科目中去。
從現在起,每一位家長都應重視起編程行業的發展,幫助孩子更好地適應這個時代,更好的面對全民編程的來臨。
⑥ 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長
前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用Javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習php,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構
學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼。
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
⑦ 你對軟體危機和軟體工程有哪些自己的理解
軟體與硬體的區別在於,一組規則允許在物理設備上進行服務。實際上,軟體行業只是整個計算機編程活動的一小部分,因為它涉及軟體生產商和軟體消費者之間交易的軟體。內部為特定用途創建的許多軟體程序從未在公司外部出售。自1950年代開始該行業以來,它經歷了許多革命性的變化,從為那些在1955年擁有計算機的公司提供的簡單打孔卡編程服務,到軟體即服務(SaaS),設備編程等革命性趨勢。為大型公司接受物聯網(IoT)和開源替代方案。Java是一門簡單易學的語言,幾乎運營在所有設備上,Java也可以自學,可以參考零基礎學編程-Java300集。
⑧ 學編程是VB簡單些, 還是易語言簡單些
1991年,美國微軟公司推出了Visual Basic 1.0(可簡稱VB),1992年,Microsoft公司又推出 VB6.0[1]了VB 1.0的升級版VB 2.0……目前的最新版本是VB 2010 測試版。 Visual 意為可視的、可見的,指的是開發像Windows操作系統的圖形用戶界面(Graphic User Interface,GUI)的方法,它與其他編程軟體不同的是不需要編寫大量代碼去描述界面元素的外觀和位置,只要把預先建立好的對象拖放到屏幕上相應的位置即可。應該說,這是一次質的飛躍,是一次編程技術的革命。 Basic 實際上是一個短語的縮寫,這個短語就是 Beginners all_purpose symbolic instruction code ,其中文意思為「初始者通用符號指令代碼語言」。 Visual Basic 6 有學習版、專業版和企業版三種版本,以滿足不同的開發需要。學習版適用於普通學習者及大多數使用 Visual Basic 開發一般 Windows 應用程序的人員;專業版適用於計算機專業開發人員,包括了學習版的全部內容功能以及Internet控制項開發工具之類的高級特性;企業版除包含專業版全部的內容外,還有自動化構件管理器等工具,使得專業編程人員能夠開發功能強大的組骨子裡分布式應用程序。 隨著版本的提高,Visual Basic的功能也越來越強。自從5.0版,Visual Basic 推出了中文版,與前個版本相比,其功能有了很大提升。 但是,功能再強大,Visual Basic 仍然有一個缺點:在沒有MSVBVM**.DLL的計算機上必須安裝所需的DLL文件(同樣Visual C++在沒有MSVCRT*.DLL情況下亦無法運行)。 在21世紀初,Microsoft 公司推出 Visual Studio .NET 2003,它與 Visual Basic 之間有了重大變化,Visual Studio 為各種編程工具做了一個平台,Visual Basic.NET 可在這種平台上運行。相對於傳統VB,有很大的不同。VB .Net首次使用.Net構架進行可視化編程,並且能很好地與COM構架兼容,Visual Studio .NET 2003 應用 .NET Framework 1.1 。 2005年 Visual Studio 2005 則運用了 NET 2.0 的技術,更加的方便了程序員的工作。可是新的程序對系統配置要求也較高,需要微軟.Net Framework 2.0以上的.Net構架支持。 2007年12月,微軟(Microsoft)推出了Visual Studio 2008 Beta 2 發生了重大的變化(見附圖)在代碼輸入的時候,可以比VB2005快很多,在非特殊的情況下,VB2008都會自動開啟 自動完成關鍵字 這個命令 而且支持最新的 .NET Framework 3.5 SP1 Beta
⑨ 我想學編程,應該學哪一類,求助
原文地址:http://coolshell.cn/articles/4990.html
博文如下:
前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/Linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、學習一門腳本語言,例如Python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv(關鍵詞pythoncsv,pythonopen,pythonsys)讀一個本地文件,逐行處理(例如wordcount,或者處理log)
遍歷本地文件系統(sys,os,path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道(pythonsqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google(phrase,domain,usereadertofollowtechblogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、用熟一種程序員的編輯器(不是IDE)和一些基本工具
Vim/Emacs/Notepad++,學會如何配置代碼補全,外觀,外部命令等。
SourceInsight(或ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、熟悉Unix/LinuxShell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux,vmwareplayer是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip…
學會使用一些文本操作命令sed/awk/grep/tail/less/more…
學會使用一些管理命令ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、學習Web基礎(HTML/CSS/JS)+伺服器端技術(LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:boxmodel)
學會用Firefox+Firebug或chrome查看你覺得很炫的網頁結構,並動態修改。
學習使用Javascript操縱HTML元件。理解DOM和動態網頁(DynamicHTML:TheDefinitiveReference,3rdEdition-O'ReillyMedia)網上有免費的章節,足夠用了。或參看DOM。
學會用Firefox+Firebug或chrome調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache或Nginx
學習PHP,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫MySQL(MySQL和SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php)不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery或ExtJS)+Ajax(非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP:TheDefinitiveGuide讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy,gateway,browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習WindowsSDK編程(Windows程序設計,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作WindowsSDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows圖形界面的編程。@virushuo說:「我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java的學習主要是看經典的CoreJava《Java核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱JavaAPIDocJavaPlatformSE6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDEEclipse,使用Eclipse編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構
學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTPServer的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx+PHP-FPM+靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQLJoin的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的codingstandard或codingguideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++/Java和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hashtable。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念-容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼。
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如:MFC(看看候捷老師的《深入淺出MFC》),Boost,ACE,CPPUnit,STL(STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STLstring類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《EffectiveJava》and《Java解惑》
學習Java的框架,Java的框架也是多,如Spring,Hibernate,Struts等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS,RMI,等消息傳遞和遠程調用的技術。
學習使用Java做WebService(官方教程在這里)
實踐任務:嘗試在Spring或Hibernate框架下構建一個有網路的WebService的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解卷1:協議》-這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select,poll,epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC……這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event,信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統–客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統–就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。
Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的
一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(HadoopDistributedFile
System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),
不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們
所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的
有:MemcacheDB、Redis、TokyoCabinet(升級版為Kyoto
Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
寫了那麼多,回顧一下,覺得自己相當的有成就感。希望大家不要嚇著,我自己這十來年也在不斷地學習,今天我也在學習中,人生本來就是一個不斷學習和練級的過程。不過,一定有漏的,也有不對的,還希望大家補充和更正。(我會根據大家的反饋隨時更新此文)歡迎大家通過我的微博(@左耳朵耗子)和twitter(@haoel)和我交流。
—–更新2011/07/19—–
1)有朋友奇怪為什麼我在這篇文章開頭說了web+移動,卻沒有在後面提到iOS/Android的前端開發。因為我心裡有一種感覺,移動設備上的UI最終也會被Javascript取代。大家可以用iPhone或Android看看google+,你就會明白了。
2)
有朋友說我這里的東西太多了,不能為了學習而學習,我非常同意。我在文章的前面也說了要思考。另外,千萬不要以為我說的這些東西是一些新的技術,這份攻略
里95%以上的全是基礎。而且都是久經考驗的基礎技術。即是可以讓你一通百通的技術,也是可以讓你找到一份不錯工作的技術。
3)有朋友說學
這些東西學完都40了,還不如想想怎麼去掙錢。我想告訴大家,一是我今年還沒有40歲,二是學無止境啊,三是我不覺得掙錢有多難,難的是怎麼讓你值那麼多
錢?無論是打工還是創業,是什麼東西讓你自己的價值,讓你公司的價值更值錢?別的地方我不敢說,對於互聯網或IT公司來說,技術實力絕對是其中之一。
4)有朋友說技術都是工具,不應該如此痴迷這句話沒有錯,有時候我們需要更多的是抬起頭來看看技術以外的事情,或者是說我們在作技術的時候不去思考為什麼會有這個技術,為什麼不是別的,問題不在於技術,問題在於我們死讀書,讀死書,成了技術的書獃子。
5)對於NoSQL,最近比較火,但我對其有點保守,所以,我只是說了解就可以。對於Hadoop,我覺得其在分布式系統上有巨大的潛力,所以需要學習。對於關系型資料庫,的確是很重要的東西,這點是我的疏忽,在原文里補充。