『壹』 普通人學python有什麼用
用途:
一、Web開發
Python的誕生歷史比Web還要早,由於Python是一種解釋型的腳本語言,開發效率高,所以非常適合用來做Web開發。
Python有上百種Web開發框架,有很多成熟的模板技術,選擇Python開發Web應用,不但開發效率高,而且運行速度快。
二、網路爬蟲
網路爬蟲是Python比較常用的一個場景,國際上google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。
如:從各大網站爬取商品折扣信息,比較獲取最優選擇;對社交網路上發言進行收集分類,生成情緒地圖,分析語言習慣;爬取網易雲音樂某一類歌曲的所有評論,生成詞雲;應用實在太多,幾乎每個人學習爬蟲之後都能夠通過爬蟲去做一些好玩有趣有用的事。
三、人工智慧
人工智慧的核心演算法大部分還是依賴於C/C++的,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬體之類的介面,這些都只有C/C++能做到。
而Python是這些庫的API binding,使用Python是因為CPython的膠水語言特性,要開發一個其他語言到C/C++的跨語言介面,Python是最容易得,比其他語言的門檻要低不少,尤其是使用Cython的時候。
四、數據分析
數據分析處理方面,Python有很完備的生態環境。「大數據」分析中涉及到的分布式計算、數據可視化、資料庫操作等,Python中都有成熟的模塊可以選擇完成其功能。對於Hadoop-MapRece和Spark,都可以直接使用Python完成計算邏輯,這無論對於數據科學家還是對於數據工程師而言都是十分便利的。
五、自動化運維
Python對於伺服器運維而言也有十分重要的用途。由於目前幾乎所有linux發行版中都自帶了Python解釋器,使用Python腳本進行批量化的文件部署和運行調整都成了Linux伺服器上很不錯的選擇。
(1)linux能帶圖擴展閱讀
Python的優勢:
1、Python易於學習
相較於其它編程語言而言,Python更容易一些。Python 的語言沒有多少儀式化的東西,所以就算不是一個 Python 專家,也能讀懂它的代碼。通過實例來學習和教授 Python要比採取同樣的方式去接觸比方說 Ruby 或者 Perl 更加容易,因為 Python 的語法裡面條條框框以及特殊的處理場景要少得多。 它所專注的並非語言表現的豐富程度,而是你想要用你的代碼完成什麼。
2、它能用少量的代碼構建出很多功能
Python 能帶給所有開發者一種快速的學習體驗。通過實踐,可以在最多兩天之內輕松實現一個具備基礎功能的游戲。另外一些讓 Python 成為一門引人注目的編程語言的因素就是它的可讀性和高效性。
3、Python 多才多藝
Python應用場景廣泛,可被應用於如今你所能想得到的相當多的軟體開發和操作場景,目前已廣泛應用於人工智慧、雲計算開發、大數據開發、數據分析、科學運算、網站開發、爬蟲、自動化運維、自動化測試、游戲開發等領域,因此,只需要你將 Python 了解得更加深入一點點,就能讓你具備可以適應范圍更寬泛的工作角色的技能。
『貳』 學嵌入式linux需要先學什麼
剛入門的時來候,淘寶買一塊cortex m3開發板源即可入手,通過項目,你需要了解:任務調度、進程間通信、內存管理、設備驅動、文件系統、TCP/IP協議棧、同步非同步、中斷、軟體架構插件化等等基本原理,這些對你後面轉Linux應用開發,安卓開發,後台開發大有好處。
到這一步,就看自己職業方向想往哪裡發展,如果是想深入IOT物聯網做端雲連接,那麼可以把幾種基本匯流排驅動,I2C、SPI、USART理解透,如果是想擁抱互聯網轉入應用開發,那麼可以把基礎組件,如協議棧、文件系統吃透,BAT面試不是很難,問的都是這些基礎。
順便說一下,學東西就要學對市場有用的,不要過於學習屠龍之術,炫技給個人帶來不了財富,公司需要的是能幹活的人。
不準備講過於偏硬體的知識如Cortex-M3的多種中斷模式,操作寄存器組,晶元降噪等內容,而是專注於操作系統基本知識和項目經驗,這些對於開發者後面接觸Linux系統大有脾益,這些軟體開發經驗也是去互聯網公司看重的能力。如有需要學習Linux命令請如下查找:
『叄』 推薦幾個電腦上用的P圖軟體
電腦上用的P圖軟體有:光影魔術手、Adobe Photoshop、美圖秀秀、CorelDRAW Graphics Suite、GIMP。
1、光影魔術手
光影魔術手是款針對圖像畫質進行改善提升及效果處理的軟體。簡單、易用,不需要任何專業的圖像技術。擁有反轉片效果、黑白效果、數碼補光、沖版排版等功能。是攝影作品後期處理、圖片快速美容、數碼照片沖印整理時使用的圖像處理軟體。
5、GIMP
GIMP是GNU Image Manipulation Program(GNU圖像處理程序)的縮寫,它是Peter Mattis和Spencer Kimhall開發的免費照片和圖像處理和創作工具,功能十分強大。GIMP支持多種圖像處理工具、全通道、多級撤銷操作恢復舊貌與映像修飾等功能。它也支持數目總多的效果插件。
『肆』 如何學好C語言
所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。沒有學習交流地方可以來
所以我建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用Turbo C 2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標准幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過於復雜了)。
等你學完一本C語言的教材,你一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的(比如《C專家編程》)。轉變的過程是痛苦的,你需要面對的是各種紛繁復雜的命令,完全不同於Windows平台的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。在Unix下,你可以找到無數優秀的源代碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。
歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在准備向「高手」方向努力時,請先轉向Unix平台。
三、萬事俱備,你就是東風
書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴你需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。
學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要「創造」一些例子,比如學習運算符優先順序的時候,可以寫幾個相同的表達式,在不同的位置加上括弧,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書上的例子以及改造之後的例子,還有自己「創造」的例子,都應該仔細地歸類保存,並且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。
例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。
也許你認為這樣學習太慢,其實不然。學得細致就不用走回頭路,等你學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清Windows的系統編程了,但只要花幾分鍾翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。
仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。
寫到最後,還有非常非常重要的一點沒有提及──代碼風格,從最開始學習就必須強迫自己模仿最優秀的代碼風格。因為代碼風格太重要內容也太多,我會用專門的一篇文章來詳細討論,請大家關注《程序員之路──關於代碼風格》。
題目是關於C語言,其實我主要想說說程序該怎麼學,或者一點感悟罷了,在這里,我只想引用身邊的幾個人的例子,來談一下對程序學習的理解
第一個人要說到我了,我對程序產生興趣,是聽說程序可以作游戲,那時候是在初一,然而借來一本G-BASIC簡明教材後,我便傻了眼。
陌生的詞彙,古怪的邏輯,都是些天文的中文譯本,頭疼了好一陣子。
然而當時又沒有別的閑書可看,我就整天捧著那一本書,什麼方法都試過了,甚至倒著看過了,都沒看出什麼眉目,自己又沒有電腦,只能不停地大膽地想像,然後滿腦子的疑惑……
在這里停一下,上面說的便是我學習的風格:總要經歷一番波折,瞎折騰幾下,然後才會有偶然間的明悟-開竅了!我甚至沒見過幾個人有我這么笨,現在明白過來了,我總是一開始把事情想得過於復雜,造成狗咬刺蝟的難堪的局面,然而竟然有意想不到的收獲!但是不建議大家模仿這種風格,起碼追女朋友的時候不能這樣,生活中很多機會在於接手的那一瞬間,失去就永遠找不回來了。
現在回來,後來偶然間,我看懂了一行代碼,是print 語句,當時興奮得要命,又仔細看了這個看了那個,一下子看懂了很多東西,像是在霎那間被什麼給擊中似的,立刻間醍醐灌頂。。。。
初三在學校學了FOXBASE,基本上自學的,我發現了一件奇怪的事,我這人是出了名的記性不好,然而當時背程序中的命令卻是過目不忘,到現在還記得很多,也許是感興趣吧,也感謝我的微機老師給我提供自由上機的機會!後來我又自學了QBASIC,初四暑假又學了一點C,那時學C遇到不少困難,當時我們學校機房連C語言都沒有,我只好悶在家裡,一本二級C教材,一本配套習題,整天發呆地想,把自己的腦袋當電腦cpu使,有時進入死循環,有時又徹底崩潰。我花十幾天看完了一本書,做完了一本題,然而腦袋裡充滿了疑惑,由於沒有上機實踐的機會,我就憑自己的猜測與推理己慢慢建立了一大堆理論,十分得意與自信,但後來證明大部分是錯的,害我花了很長時間去糾正,這是後話。可是,還是那句話不破不立,不阻不行。就像我現在有了電腦,整天泡在互聯網的海洋里,感受著快餐文化,好久都沒靜下心來好好想點東西了.
高中還上過幾節電腦課,只不過忙於應付高考,我將學程序的打算放棄了,到這里我該說下一個人了。
高中時坐我旁邊一女生,她的文曲星里有BASIC,我偶爾拿過來編了幾個小程序玩,她看到後很感興趣,令人驚訝的是,她只看了三五個程序,聽我講了幾個命令的功能,就能根據自己的想像編出小動畫來,她此前是絕沒有學過程序的!我曾一度懷疑過她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當年高了好幾個境界!我後來經常在想,是不是我當時的方法不對,程序到底應該怎樣學。。。
一晃就到了大學,我碰到另一個讓我佩服的人,跟我一樣是學計算機的,他是偶爾看到我在編動畫,然後十分感興趣,便開始自學。他令人吃驚的是,指針,結構體,位運算等等,都沒搞懂(更不用說演算法和數據結構),只學了三種程序結構,現在只學了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有很多叫不出名字的小游戲來,現在又在寫黑白棋,我知道我確實是走了不少彎路。
程序應該怎樣學,對C來講,我覺得應該從畫圖學起。
原因有二。
一,畫圖程序很能振奮人心的,它能帶給你濃厚的興趣,這是學程序的關鍵。
二,畫圖程序容易上手,很簡單的道理,就能做出很漂亮的東西來。有很多東西甚至不用看課本,就能自己推出來(我認為推理的方法很重要,它是你自學的必要條件)。
比如畫一個圓,從數學角度來分析,要確定一個圓,只需知道它的圓心(x,y)與半徑r,那好一個圓就畫出來了,circle(x,y,r);
其它的類推,再畫一個立體的,選擇立方體,再分析,只要知道兩個對角的坐標就行了吧,翻一下課本,不是這樣,為什麼?你或許會想到,電腦屏幕本來就是平面的,用立體坐標的理論在這里,恐怕就不是最簡單的方法。所以它採用的應該是兩個平面圖形平移。此處留下疑問,立體圖形在平面坐標中怎麼表示?自己慢慢研究,很淺的東西。
想作動畫吧,想像一下動畫的原理只是從一個圖形變幻到另一個圖形,不同地變幻就出現動畫效果,那就可以畫一個,擦了,再畫一個新的,再變化。。。
數學功底好的話,從二維到三維,從靜態到動態我認為是很快的過渡。
具體該怎麼學呢,你可以多找幾個畫圖的例子,敲到電腦里,多敲幾個,慢慢地你就會知道哪些東西是干什麼的,慢慢地就會自己做出東西來。
但這里不要沉溺太久了,先學畫圖只是幫助你輕松地入門(很多人C學完了還沒有入門)。
從畫圖里暫時走出來,你應該打打基礎了,這里不再贅述。可以邊學邊實踐,物理,數學課本中很多問題都可以用程序來演示,來解決,嘗試著多做些東西,這比你老學課本中的模型強多了,只有你自己去體會才能知道。
談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。
了解一些基本知識
一.C語言的背景
就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。
C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。C語言的優點很多,主要的有如下四點:
1.兼備高級語言與低級語言的優點,屬於一種中間語言。
2.它是一種結構化程序設計語言,非常適合結構化程序設計。
3.有較豐富的數據類型、運算符以及函數供以選用。
4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
二.二大語系二種不同的學習方法
筆者學習過很多程序語言,例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVA,J ,VB,JAVA,ASP,FOXPRO,PERL等等,就本人實踐所得,其實高級程序語言分為兩大語系。一路是以C為主的程序語言,例如:JAVA,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。另一路是以BASIC為首的程序語言,例如:FOXPRO,VB等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那麼在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那麼基本上就大功告成了。
怎樣才能學好c語言
有人問我c語言是不是很難學,我說不是,後來問的人多了,我就萌生了寫一篇關於c語言如何入門的文章的念頭來。
其實c語言很簡單,它只是一種交流的規則,一種表達的工具,一種承載思想的容器而已,之所以感覺難,我覺得是還不習慣使用計算機特點來考慮問題。這就好比中國人從到英國定居一樣,雖然你學過英語,但是那隻是想像中的英國,和現實的英國的情況還相差很遠,所以要有一個適應的過程,也就是常說的過渡期或磨合期。
想盡快上手就得掌握計算機的特點,計算機的特點包括:
1、 計算機在問題的處理方式上要求全,將所有的可能都要告訴它。人可以根據習慣忽略一些東西,但計算機不行。比如說求解一元二次方程,我們考慮問題就已經默認了a不等於0,更有甚者把b方減4ac也默認大於等於零了。這是我們的習慣,既然有解,我們一般習慣上就把它定為實數解,所以你做出來的程序一般是不考慮這兩個條件的,但是計算機不行,計算機是有名的弱智。計算機沒有象人一樣的智能處理能力,它是人忠實的信徒,不管你怎麼想,它都會執行你的命令。由於你的習慣,導致一些別有用心的人或者無意犯錯的人來犯錯誤,致使計算機有時無所適從。很疲憊,甚至崩潰,報錯,造成你的程序是不成功的,所以你感覺很難。
2、 計算機要求程序的描述精確,無二義性。人的語言有很強的隨機性和二義性。我們平時說話時,有時是一些招呼,有時說話的邏輯性可以不太清楚,話既可以表達這樣的意思,也可以表達那樣的意思,人可以根據環境和對方想表達的含義進行分析,最終得到正確的結果,但是計算機很弱智,雖然它很聽話,但是他不能理解你表達的思想,只會按你交給的指令執行,這樣導致執行時報警和出錯。
3、 計算機編程是要求有很強的全局性和邏輯性,不存在起伏的問題。人的思維有很強的活躍期和蟄伏期,計算機不會,它隨時待命。人在考慮問題時,有很多盡興的東西,但這不是處理問題的整體,而是一部分,所以就出現做完一段代碼後,就不願意再寫,或感覺很吃力,所以感覺很難。
計算機要求它的主人,考慮問題要全面,所有可能的情況及處理都要告訴它,要求學會沉穩,心態要穩定,要求交流的語句一定要明了含義單一。
怎樣才能很快的學會c語言,更快的度過磨合期呢?C語言的語法規則記憶理解當然是不可少的,除此之外還應注意以下幾個方面:
1、 好好理解一下變數和函數的概念,至少要重新回頭看看初等數學。這是基礎,否則就會先天不足,你學的再好,也成不了大氣候。
2、 平衡心態,雖然不能做到「不以物喜,不以己悲」的水平,但至少不要浮躁,不要急於求成,欲速則不達。
3、 培養自身的全局意識,既能小無內,也能大無外,才行。
4、 嚴格按照程序設計過程設計程序,不要跳脫,天馬行空,沒有規矩是不成方圓的。
5、 努力提高自身的綜合素質。程序是人思維的表達形式,是人處理問題思路和語言的結合體。你對客觀看成到什麼程度和你掌握的知識成正比。如果你對處理的問題不理解,不會處理,你怎麼也寫不出程序。
6、 學會交流,多交流,相互補益,同時團隊合作也是很重要的。
總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。
『伍』 如何對待日新月異的軟體技術
軟體行業的技術更新換代比較快,從事軟體相關工作的人要時刻關注新技術的誕生和發展,以求緊跟技術潮流。那麼究竟我們應該怎樣對待這種現狀呢?本文給出了一些見解。 對於日新月異的新技術,你是什麼態度? 遇到新技術我會去了解,但不會把很大的精力放在這些技術(如:NoSQL,Node.js,等)。這些技術尚不成熟,只需要跟得住就可以了。技術十年以上可能是一個門檻。有人說技術更新換代很快,我一點兒都不覺得是這樣想。雖然有不成熟的技術不斷地湧出,但是成熟的技術,比如Unix,40多年,C,40多年,C++,30多年,TCP/IP,20多年,Java也有將近20年了……,所以,如果你著眼成熟的技術,其實並不多。 我的觀點是——要了解技術就一定需要了解整個計算機的技術歷史發展和進化路線。因為,你要朝著球運動的軌跡去,而不是朝著球的位置去,要知道球的運動軌跡,你就需要知道它歷史上是怎麼跑的。 如果要捋一個技術的脈絡,70年代Unix的出現,是軟體發展方面的一個里程碑,那個時期的C語言,也是語言方面的里程碑。(當時)所有的項目都在Unix/C上,全世界人都在用這兩樣東西寫軟體。Linux跟隨的是Unix, Windows下的開發也是 C/C++。這時候出現的C++很自然就被大家接受了,企業級的系統很自然就會遷移到這上面,C++雖然接過了C的接力棒,但是它的問題是它沒有一個企業方面的架構,而且太隨意了,否則也不會有今天的Java。C++和C非常接近,它只不過是C的一個擴展,長年沒有一個企業架構的框架。而Java在被發明後,被IBM把企業架構這部分的需求接了過來,J2EE的出現讓C/C++捉襟見肘了,在語言進化上,還有Python/Ruby,後面還有了.NET,但可惜的是這只局限在Windows平台上。這些就是企業級軟體方面語言層面就是C -> C++ -> Java這條主幹,操作系統是Unix -> Linux/Windows這條主幹,軟體開發中需要了解的網路知識就是Ethernet -> IP -> TCP/UDP 這條主幹。另外一條脈絡就是互聯網方面的(HTML/CSS/JS/LAMP…)。我是一個有技術憂慮症的人,這幾條軟體開發的主線一定不能放棄。 另外,從架構上來說,我們可以看到: 從單機的年代,到C/S架構(界面,業務邏輯,數據SQL都在Client上,只有資料庫服庫在S上); 再到B/S結構(用瀏覽器來充當Client,但是傳統的ASP/PHP/JSP/Perl/CGI這樣的編程也都把界面,業務邏輯,和SQL都放在一起),但是B/S已經把這些東西放到了Web Server上; 再到後來的中間件,把業務邏輯再抽出一層,放到一個叫App Server上,經典的三層結構; 然後再到分布式結構,業務層分布式,數據層分布式; 再到今天的雲架構——全部移到伺服器。 我們可以看到技術的變遷都一直再把東西往後端移,前端只剩一個瀏覽器或是一個手機。通過這個你可以看到整個技術發展的趨勢。所以,如果你了解了這些變遷,了解了這些變遷過程「不斷填坑」的過程,你將會對技術有很強的把握。 另外,我聽到有很多人說,一些技術不適用,一些技術太學院派,但對我來說,無論是應用還是學術,我都會看,知識不愁多。何必搞應用的和搞學術的分開陣營,都是知識,學就好了。 技術的發展要根植於歷史,而不是未來。不要和我描述這個技術的未來會多麼美好(InfoQ 的 ArchSummit大會上有一個微軟來的人把Node.js說得跟仙女一樣,然後給了一個Hello World),我承認你用一些新的技術可以實現很多花哨的東西。但是,我認為技術都是承前的,只有承前的才會常青。所以說「某某(技術)要火」這樣的話是沒有意義的,等它火了、應用多了,規模大了,再說。有些人說:「不學C/C++也是沒有問題的」,我對此的回應是:如果連技術主幹都可以不學的話,還有什麼其他的好學呢?這些是計算機發展的根、脈絡、祖師爺,這樣的東西怎麼可以不學呢? 另外,我們要去了解整個計算機文化,我覺得計算機文化源起於Unix/C這條線上(注意,我說的是文化不是技術)。 可是在應用環境中,對新技術的需求是很高的,你覺得在教育領域計算機科學的側重應該是什麼樣的? 學校教的大部分都是知識密集型的技術,但是社會上的企業大部分都是勞動密集型的。什麼是勞動密集型的企業呢?麥當勞炸薯條就是勞動密集型的工作,用不到學校教授的那些知識。如果有一天你不炸薯條了,而要去做更大更專業的東西,學校里的知識就會派上用場。有人說一個語言、一個技術,能解決問題能用就行了,我不這樣認為。我覺得你應該至少要知道這些演變和進化的過程。而如果你要解決一些業務和技術難題,就需要抓住某種技術很深入地學習,當成藝術一樣來學習。 軟體開發的三重門:第一重門是業務功能,在這重門里,的確是會編程就可以了;第二重門是業務性能,在這一重門里,技術的基礎就很管用了,比如:操作系統的文件管理,進程調度,內存管理,網路的七層模型,TCP/UDP的協議,語言用法、編譯和類庫的實現,數據結構,演算法等等就非常關鍵了;第三重門是業務智能,在這一重門里,你會發現很多東西都很學院派了,比如,搜索演算法,推薦演算法,預測,統計,機器學習,圖像識別,分布式架構和演算法,等等,你需要讀很多計算機學院派的論文。 總之,這主要看你職業生涯的背景了,如果你整天被當作勞動力來使用,你用到的技術就比較淺,比較實用,但是如果你做一些知識密集型的工作,你就需要用心來搞搞研究,就會發現你需要理論上的知識。比如說,我之前做過的跨國庫存調配,需要知道最短路徑的演算法,而我現在在亞馬遜做的庫存預測系統,數據挖掘的那些東西都需要很強的數學建模、演算法、數據挖掘的功底。 我覺得真正的高手都來自知識密集型的學院派。他們更強的是,可以把那些理論的基礎知識應用到現在的業務上來。但很可惜,我們國內今天的教育並沒有很好地把那些學院派的理論知識和現實的業務問題很好地接合起來。比如說一些哈希表或二叉樹的數據結構,如果我們的學校在講述這些知識的時候能夠接合實際的業務問題,效果會非常不錯,如:設計一個IP地址和地理位置的查詢系統,設計一個分布式的NoSQL的資料庫,或是設計一個地理位置的檢索應用等等。在學習操作系統的時候,如果老師可以帶學生做一個手機或嵌入式操作系統,或是研究一下Unix System V或是Linux的源碼的話,會更有意思。在學習網路知識的時候,能帶學生重點學一下乙太網和TCP/IP的特性,並調優,如果能做一個網路上的pub/sub的消息系統或是做一個像Nginx一樣的web server,那會更好。如果在學圖形學的過程中能帶領學生實踐一個作圖工具或是一個游戲引擎,那會更有意思。 總之,我們的教育和現實脫節太嚴重了,教的東西無論是在技術還是在實踐上都嚴重落後和脫節,沒有通過實際的業務或技術問題來教學生那些理論知識,這是一個失敗。 那麼,現在做一個軟體開發者是否更加困難了? 我覺得倒不是。做一個軟體開發者更簡單了。因為現在互聯網很發達,你可以找到很多共享的知識——相對於我那個時候。第一,知識你容易查到,然後社區很多,文章、分享的人也越來越多。我們那個時候沒有的。上網一查,什麼都沒有。都得去自己琢磨,自己去調查。所以我覺得相比我們那個時候更容易了。第二,工具變多了。現在的工具比那個時候好用多了。我們那個時候就是一天到晚在vi裡面,連個自動提示都沒有,連個版本庫管理都沒有。不光工具變多,框架也多了,各種各樣的編程框架。我們那時候都是生寫。寫JavaScript,生寫,連個jQuery都沒有。沒有這些輔助性的、讓你提高生產力的東西。J2EE那時候也沒有。而且整個(開發環境)都很不成熟。一個伺服器的最高配置就1GB的情況下,一個WebSphere起來就佔了900多MB——這還能跑什麼應用?所以只能去用最基礎的系統。所以我覺得現在,無論是環境,還是開發的過程,都更規范了。以前我做開發的時候就是,什麼都不懂就上了,瞎搞,沒有什麼開發規范,沒有人理你,反正你搞得好就搞好,搞不好就搞不好了,全靠自己,包括做測試維護等等。我覺得現在的軟體開發就很好,你一上去,就有好的工具,有好的知識庫,有好的社區,有好的開發框架,還有好的流程,方法,甚至還有人幫你做測試,還有人告訴你應該怎麼做。幸福得很。現在好多人還說這個不好那個不好,開發難什麼的。其實容易多了。 但是,有個東西我覺得是現在的軟體開發者比我們那時候變得更難的。就是,你享福了以後,人就變懶,變嬌氣了。對很多東西的抱怨就開始多了。我們那個時候哪有什麼好抱怨的?沒啥好抱怨的,有活就干,有東西學就趕快學。現在呢,學個什麼東西還挑挑揀揀的,抱怨這個語言太扯,那個IDE不好,這個框架太差,版本管理工具太扯,等等。這就好像以前我沒東西吃,只有個糠吃,要是有麵包有饅頭,我就覺得非常非常好了。現在是,好吃的東西多了我們還學會挑食了,這也不好用,那也不好用。 根本就不是技術變難了,環境變差了,是程序員變嬌氣了。所以軟體開發變難,歸根結底還是程序員們自己變嬌氣了。 你如何在進度壓力下,享受技術帶來的快樂? 中國人中庸的思想,入世和出世,每天的工作就是入世。舉個例子,我十年前在上海的時候,給交通銀行做項目的時候,每周休息一天,早九點到晚十點,每天工作12個小時,這樣的工作持續了一整年,沒有節假日,項目上的技術也沒什麼意思。當時我晚上十點回到住處,還想學一些C++/Java和Unix/Windows的技術,於是就看書到晚上11:30,每天如此,一年下來學到很多東西,時間沒有荒廢,心裡就很開心。我覺得當時是快樂的,因為有成長的感覺是快樂的。 現在的我,工作、寫博客、養孩子,事情其實更多。我早上7:30起床,會瀏覽一下國外的新聞,hacker news, tech church, reddit, highavailability之類的站點,9點上班。晚上6、7點鍾下班,開始帶孩子。十點鍾孩子睡了覺,我會開始重新細讀一下這一天都發生了些什麼事情。這個時間也有可能會用來看書。學習的過程(我)是不喜歡被打斷的,所以從十點到十二點,家人都睡了,這正是我連續學習的好時間。可能從晚上11:30開始,我會做點筆記或者寫博客。我現在對酷殼文章的質量要求比較高一些,所以大概積累一個星期的時間才可以生成一篇文章。每天我大概都在一兩點鍾才會睡覺。沒辦法,我有技術焦慮症。但是覺得這樣的生活很充實,也很踏實。 另外,任何一門技術玩深了,都是很有意思的。有些人形成了一個價值取向,「我只做什麼,絕不做什麼」。前段時間有一個剛來亞馬遜的工程師,他原來做的是數據挖掘推薦系統,原來的公司重組要讓他做前端,他不肯就離職了,他說他不想做前端。我覺得,前端後端都是編程,Javascript是編程,C++也是編程。編程不在於你用什麼語言去coding,而是你組織程序、設計軟體的能力,只要你上升到腦力勞動上來,用什麼都一樣,技術無貴賤。你可以不喜歡那個技術,但是還是要了解了解,也沒有必要完全不用,完全拋棄。Javascript啊——只要能被Javascript實現的,未來總有一天會被Javascript所取代。 回到問題,怎麼才能享受到快樂呢? 第一,入世和出世要分開,不要讓世俗的東西打擾到你的內心世界,你的情緒不應該為別人所控,也不應該被世俗所污染,活得真實,活得真實你才會快樂。
『陸』 自學Java如何入門
自學Java看這一篇就夠啦!Java學習路線圖分享給你,跟著學習吧!
一、Java基礎
『柒』 windows分區和linux分區的區別
fdisk是windows用的一種分區工具,在dos下使用.和linux沒有什麼太大的關系.給你粘過來一些答案
windows下的分區:
1.FAT12格式
FAT12分區格式只能管理32M的磁碟空間,所以早就被淘汰了,在這里只是提一下,讓大家了解。
2. FAT16格式
FAT16分區格式的應用十分廣泛,從DOS時期一直到Win95直至現在,可以說無處不見。但它最大的缺點就是2GB分區的限制和對磁碟空間的浪費。大家從前一定遇到過這樣一個問題,當我們用DOS6.2分區命令FDISK對一塊大容量硬碟進行分區時,發現最大隻能分出2GB的分區來,這就是FAT16在作怪。一塊超過2GB的大容量硬碟,在這種情況下也就只能分成許多小於2GB的分區使用。
3. FAT32格式
由於FAT16所帶來的諸多不便,從Win97開始,FAT32的出現也就成為了必然。FAT32採用了32位的文件分配表,輕易地突破了FAT16對磁碟分區容量2GB的限制,達到了創紀錄的128TB,從而可以使我們對這些大容量硬碟定義成一個分區或幾個大分區,極大地方便了廣大用戶對磁碟的綜合管理。
4.FAT16與FAT32的比較
從管理硬碟的能力來看,當然FAT32佔有很大的優勢,但由於FAT32的文件分配表較FAT16大,磁碟文件的讀寫速度也就較FAT16慢。由於FAT16在磁碟分區大於1GB時,文件簇的大小達32KB之多,較FAT32的4KB大得多。因為一個簇只能存儲一個文件,哪怕這個文件只有1個位元組,所以FAT16對磁碟空間的浪費很大。從理論計算可知,FAT16較FAT32浪費磁碟空間多6~7倍以上。
5.NTFS格式
微軟之所以建議使用NTFS就是因為對於Windows NT/2000、Windows XP而言,NTFS是最有效、最安全,也是最穩定的文件系統。NTFS支持數據集成所需的數據訪問控制和所有者許可權。基於Windows NT、Windows 2000、Windows XP的計算機在實現目錄共享時,可以對共享目錄指定許可許可權;而NTFS文件和目錄則不管是否共享都可以分配許可許可權。NTFS能夠支持比FAT文件系統更大的文件和分區。在一般的硬體上,最大的文件從4GB到64GB不等,NTFS的最大分區為2TB,這是受到工業標準的限制。NTFS在格式化分區時將同時寫入冗餘信息,因此NTFS的系統開銷較大。
linux操作系統是去年it媒體炒得最為火爆的操作系統。由於該系統為自由軟體,幾乎不用花錢就能裝入電腦,所以贏得了許多用戶。它的磁碟分區格式與其他操作系統完全不同,共有兩種格式:一種是linux native主分區,一種是linux swap交換分區。這兩種分區格式的安全性與穩定性極佳,結合linux操作系統後,死機的機會大大減少,能讓我們擺脫windows常常崩潰的噩夢。但是,目前支持這一分區格式的操作系統只有linux,對linux系統不感興趣的用戶也只能望洋興嘆了。
另種答案:
win常用的分區格式有三種,分別是FAT16、FAT32、NTFS格式。在Linux操作系統里有Ext2、Ext3、Linux swap和VFAT四種格式。
FAT16:
作為一種文件名稱,FAT(File Allocation Table,文件分配表)自1981年問世以來,已經成為一個計算機術語。由於時代的原因,包括Windows、MacOS以及多種Unix版本在內的大多數操作系統均對FAT提供支持。
這是MS-DOS和最早期的Windows 95操作系統中使用的磁碟分區格式。它採用16位的文件分配表,是目前獲得操作系統支持最多的一種磁碟分區格式,幾乎所有的操作系統都支持這種分區格式,從DOS、Windows 95、Windows OSR2到現在的Windows 98、Windows Me、Windows NT、Windows 2000、Windows XP都支持FAT16,但只支持2GB的硬碟分區成為了它的一大缺點。FAT16分區格式的另外一個缺點是:磁碟利用效率低(具體的技術細節請參閱相關資料)。為了解決這個問題,微軟公司在Windows 95 OSR2中推出了一種全新的磁碟分區格式——FAT32。
FAT32:
這種格式採用32位的文件分配表,對磁碟的管理能力大大增強,突破了FAT16下每一個分區的容量只有2GB的限制。由於現在的硬碟生產成本下降,其容量越來越大,運用FAT32的分區格式後,我們可以將一個大容量硬碟定義成一個分區而不必分為幾個分區使用,大大方便了對磁碟的管理。而且,FAT32與FAT16相比,可以極大地減少磁碟的浪費,提高磁碟利用率。目前,Windows 95 OSR2以後的操作系統都支持這種分區格式。但是,這種分區格式也有它的缺點。首先是採用FAT32格式分區的磁碟,由於文件分配表的擴大,運行速度比採用FAT16格式分區的磁碟要慢。另外,由於DOS和Windows 95不支持這種分區格式,所以採用這種分區格式後,將無法再使用DOS和Windows 95系統。
NTFS:
為了彌補FAT在功能上的缺陷,微軟公司創建了一種稱作NTFS的文件系統技術。它的優點是安全性和穩定性方面非常出色,在使用中不易產生文件碎片。並且能對用戶的操作進行記錄,通過對用戶許可權進行非常嚴格的限制,使每個用戶只能按照系統賦予的許可權進行操作,充分保護了系統與數據的安全。Windows 2000、Windows NT、以及Windows XP都支持這種分區格式。
Ext2:
Ext2是GNU/Linux系統中標準的文件系統。這是Linux中使用最多的一種文件系統,它是專門為Linux設計的,擁有極快的速度和極小的CPU佔用率。Ext2既可以用於標準的塊設備(如硬碟),也被應用在軟盤等移動存儲設備上。
Ext3:
Ext3是Ext2的下一代,也就是保有Ext2的格式之下再加上日誌功能。Ext3是一種日誌式文件系統(Journal File System),最大的特點是:它會將整個磁碟的寫入動作完整的記錄在磁碟的某個區域上,以便有需要時回溯追蹤。當在某個過程中斷時,系統可以根據這些記錄直接回溯並重整被中斷的部分,重整速度相當快。該分區格式被廣泛應用在Linux系統中。
Linux swap:
它是Linux中一種專門用於交換分區的swap文件系統。Linux是使用這一整個分區作為交換空間。一般這個swap格式的交換分區是主內存的2倍,如果物理內存超過1G則設為2G。在內存不夠時,Linux會將部分數據寫到交換分區上。
VFAT:
VFAT叫長文件名系統,這是一個與Windows系統兼容的Linux文件系統,支持長文件名,可以作為Windows與Linux交換文件的分區。
『捌』 新手學電腦入門該怎麼學
方法/步驟
理論知識。很多關於電腦知識的書籍,自己尋找合適的看就可以。對電腦基本知識有了了解,這樣才能更好的去實際操作中使用。根據自己所要學習的電腦知識進行整理,總結。
勤於練習。電腦知識面太廣了,掌握基本的操作後,應付日常的事情就可以,如果是想要涉及電腦的某一領域,那就需要多動手,多學習,多實踐,只有不斷學習,不斷練習才能掌握真才實學。