沒有IT背景的人,怎麼系統的學習web後端開發?

比方說用什麼語言?資料庫?該如何入手呢?


以下是我認為比較好的web開發相關的網路資源搜集,拿走吧,不用謝。

Web後端開發,HTTP協議相關的知識是必須掌握的。

1.HTTP協議相關

HTTP協議 (一) HTTP協議詳解 (這個鏈接好像壞了,可以看這裡:HTTP協議詳解)

HTTP協議 (二) 基本認證

HTTP協議 (三) 壓縮

HTTP協議 (四) 緩存

HTTP協議 (五) 代理

HTTP協議 (六) 狀態碼詳解

HTTP協議 (七) Cookie

以及阮一峰老師的兩篇入門文章:

互聯網協議入門(一)

互聯網協議入門(二)

2.Python Web開發教程

廖學峰大大的Python教程,我見過的寫得最好的Python開發教程之一。

地址:Python教程 - 廖雪峰的官方網站

3.TCP/IP協議相關教材

關於TCP/IP協議,初學者暫時不用投入太多精力,等以後需要網路相關的知識時參考即可。

地址:TCP/IP協議 - code123

4.Web開發肯定是要用到一些框架。如果是使用Python,Django是個不錯的Web開發框架。以下是我收集的一些還不錯的學習資料。

1)Django基礎教程

  • 被解放的姜戈01 初試天涯
  • 被解放的姜戈02 莊園疑雲
  • 被解放的姜戈03 所謂伊人
  • 被解放的姜戈04 各取所需
  • 被解放的姜戈05 黑面管家
  • 被解放的姜戈06 假作真時
  • 被解放的姜戈07 馬不停蹄

2)Django練手項目(使用Django開發博客):

  • django常用命令
  • django開發博客(1) 入門
  • django開發博客(2) 模板和數據查詢
  • django開發博客(3) 靜態文件、from應用與自定義
  • django開發博客(4) comments庫使用及ajax支持
  • django開發博客(5) markdown支持、代碼高亮、gravatar頭像服務
  • Django最佳實踐(中文版)

5.如果選擇Java當做主要開發語言,則以下肯定是你想要的。

包括Java初級教程/進階教程/Play框架(作者是Vamei,畫面太美,所以全部收藏到我自己博客了)。

1)Java初級教程

  • Java基礎01 從HelloWorld到面向對象
  • Java基礎02 方法與數據成員
  • Java基礎03 構造器與方法重載
  • Java基礎04 封裝與介面
  • Java基礎05 實施介面
  • Java基礎06 組合
  • Java基礎07 包
  • Java基礎08 繼承
  • Java基礎09 類數據與類方法
  • Java基礎10 介面的繼承與抽象類
  • Java基礎11 對象引用
  • Java基礎12 類型轉換與多態

2)Java進階教程

  • Java進階01 String類
  • Java進階02 異常處理
  • Java進階03 IO基礎
  • Java進階04 運行時類型識別(RTTI)
  • Java進階05 多線程
  • Java進階06 容器
  • Java進階07 嵌套類
  • Java進階08 GUI
  • Java進階09 事件響應
  • Java進階10 內存管理與垃圾回收

3)Java Play框架教程

  • Java Play框架教程01 簡介
  • Java Play框架教程02 響應
  • Java Play框架教程03 模板
  • Java Play框架教程04 表單
  • Java Play框架教程05 資料庫
  • Java Play框架教程06 用戶驗證
  • Java Play框架教程07 靜態文件

更多:Java學習資源整理


@塗國強 題主都說沒有IT背景了,那前端必然也是不會的。

先來科普一下,開發一個網站(注意不是網頁)到底需要什麼樣的技術:

UI+(html+css+javascript)+(後台開發語言+資料庫+框架)+(域名+主機)

UI+(html+css+javascript)這一部分就是屬於前端了,說簡單點,就是網站的皮膚,

題主想知道的是中間的一部分,即(後台開發語言+資料庫+框架)

(域名+主機)這個最簡單,一般一個下午就能學會,就不再多說了,下面開始分析下,

沒有IT背景,到底該如何入門學習web後端開發(back-end develop)

-----------------------------我是後端開發的分割線┏ (゜ω゜)=?---------------------

首先開發後端的話,大概有下面這些語言可以選擇

Ruby/ PHP/ ASP.NET/ Java/ Python/ Perl/ Coldfusion

選擇一門語言很重要,這會決定你今後使用的服務和開發工具,

當然裡面有一些還是要花不少錢的,比如(Coldfusion, ASP.NET)

Ruby/ PHP/ Python在創業公司裡面很流行,反之,其他幾個就

相對比較重了,一般在成熟大公司裡面使用。

我猜比較適合你的應該是有更多開源資源的語言,那選擇就很簡單了:

Ruby/ PHP/ Python

一旦你選擇好了開發語言,那就需要選擇一個使用的資料庫

MySQL/ PostgreSQL

你需要了解他們,但並不需要達到專業級別的程度

好,到這裡相信你應該已經選好你的開發語言和資料庫了,

接下來就要開始找資料了。在google上輸入PHP tutorials

Ruby on Rails tutorials" , "MySQL tutorials" ,"SQL tutorials", "Python tutorials"

你可以得到一堆資料(別說你都想學習網站開發了還翻不了牆)

當然還有一個在線學習編程的網站也很不錯學習編程 | Codecademy

當你學完基礎之後,可以開始學習後台裡面另外一個重要的東西了,框架(framework)

每種開發語言都有自己相應的框架

  • PHP (Zend framework, CakePHP, CodeIgniter, Symfony, Yii, even Drupal can be considered a framework)
  • Ruby on Rails, Sinatra
  • Python (Django, Pylons/Pyramid, BlueBream, Web.py, Web2Py)

在學習開發語言的同時,也要同時學習資料庫,大多數人都會選擇MySQL, 有著最多的

開源資源

  • PHP (Zend framework, CakePHP, CodeIgniter, Symfony, Yii, even Drupal can be considered a framework)
  • Ruby on Rails is a framework of Ruby but there are some other Ruby frameworks, like Sinatra
  • Python (Django, Pylons/Pyramid, BlueBream, Web.py, Web2Py)

學習語言的同時,也要同時學習資料庫,推薦學習MySQL, 有著最多的開源資源MySQL :: The world"s most popular open source database

至於編譯器這塊,你還是用個最簡單先的吧,先別扎著研究這些了,一個編譯器引發的程序員血案簡直數不勝數。

之後你還會接觸到不少專業術語:SSL, HTTPS, DNS等等..

最後來一發各種資料的鏈接

Server-side web programming languages

  • Overview http://en.wikipedia.org/wiki/Ser...
  • PHP www.php.net
  • Python www.python.org
  • Ruby on Rails www.rubyonrails.org
  • Perl www.perl.org
  • Java www.java.com
  • ASP.NETwww.asp.net
  • Coldfusion/CFML www.adobe.com/products/coldfusion-family.html andwww.getrailo.org

Databases

  • Overview http://en.wikipedia.org/wiki/Dat...
  • MySQL www.mysql.com
  • PostgreSQL www.postgresql.org
  • SQL language, for databases use: SQL,SQL Tutorial, and others

Shared hosting

  • Overview http://en.wikipedia.org/wiki/Sha...
  • Bluehost www.bluehost.com
  • Dreamhost www.dreamhost.com
  • Godaddy www.godaddy.com
  • LunarPages www.lunarpages.com
  • Hostgator www.hostgator.com
  • Site5 www.site5.com
  • Hostingrails www.hostingrails.com

Advanced text editors

  • Overview http://en.wikipedia.org/wiki/Sou...
  • Editplus www.editplus.com
  • Textpad www.textpad.com
  • Notepad++ www.notepad-plus-plus.org
  • UltraEdit www.ultraedit.com

FTP software

  • Overview http://en.wikipedia.org/wiki/Fil...
  • Filezilla www.filezilla-project.org
  • WinSCP www.winscp.net

IDE tools

  • Overview http://en.wikipedia.org/wiki/Int...
  • Eclipse www.eclipse.org
  • Aptana www.aptana.com
  • Netbeans www.netbeans.org
  • Komodo www.activestate.com/komodo-ide
  • Zend Studio www.zend.com/products/studio/

Virtual machine software

  • Overview http://en.wikipedia.org/wiki/Vir...
  • VMware www.vmware.com (VMware Player www.vmware.com/products/player/)
  • VirtualBox www.virtualbox.org

Virtual machines

  • Overview http://en.wikipedia.org/wiki/Vir...
  • Virtual appliances for VMware Player: http://www.vmware.com/appliances...(Ubuntu http://www.vmware.com/appliances..., Linux Minthttp://www.vmware.com/appliances...)
  • Virtual appliances for VirtualBox: www.virtualboximages.com (Ubuntuhttp://virtualboximages.com/Ubun..., Linux Mint http://virtualboximages.com/Linu...)

Web frameworks

  • Overview http://en.wikipedia.org/wiki/Web...
  • Zend framework Zend Framework, CakePHP www.cakephp.org, CodeIgniter www.codeigniter.com, Symfony www.symfony.com, Yiiwww.yiiframework.com, Drupal www.drupal.org (PHP)
  • Ruby on Rails www.rubyonrails.org, Sinatra www.sinatrarb.com (Ruby)
  • Django www.djangoproject.com, Pylons/Pyramid www.pylonsproject.org, BlueBream BlueBream - The Web Component Framework, WebPy www.webpy.org, Web2Pywww.web2py.com (Python)
  • Comparisons http://en.wikipedia.org/wiki/Com...

Miscellaneous

  • High performances websites http://stevesouders.com/hpws/rul...

萬事俱備,只欠你碼了。

http://weixin.qq.com/r/bkOagubElLvrraLh9xZ8 (二維碼自動識別)

這裡有產品經理的術、道,最重要的是還有生活,掃一掃會有個更奇妙的世界。


沒有 IT 背景我理解的是零基礎,對於零基礎來講快速上手比「系統」更加重要。

從這個角度來看,上來就 HTTP 並不是一個很好的選擇。對於 Web 來說,HTTP的重要性不言而喻,但是也應該考慮零基礎的人的承受能力,再好的知識學不下去也不合適。所以一開始應該追求的是順利入行,然後再補缺少的知識。

既然是寫 Web,那麼先了解 HTML 和 CSS 是比較好的,看上去簡單,寫起來立馬就能出效果,這樣不容易讓人放棄。在掌握了基本的 HTML 和 CSS 之後,學一些 JavaScript 的知識,這樣可以快速寫出能看到實際效果的程序,並且在學習 JavaScript 的過程中掌握基礎的編程語言的語法,如變數、運算、循環、判斷、函數等。

這個階段我覺得有兩本書不錯,

Head First HTML與CSS(第2版)

講非常基礎的 HTML 和 CSS 知識,零基礎看起來也不廢力氣

Head First HTML5 Programming(中文版)

這本名字寫著 HTML5,實際上是講解 JavaScript 的知識,對於零基礎,深入淺出,很適合學習

在掌握了基礎的 HTML、CSS 和 JavaScript 之後就可以開始進一步的學習(Web 後端離不開前端的知識,掌握基礎的前端知識是非常有必要的,並且通過 JavaScript 來學習通過的編程語言知識也是一個不錯的選擇)。Web 後端的編程語言有很多,比如 Java、PHP、Python、Ruby、Scala、Go 等。考慮到這個階段的學習目的是快速上手,所以選一個方便使用的語言就可以。

以 Python 為例,在上個階段學習了基礎的語法知識,這個階段要繼續學習,Python 這方面的語法書很多,選一本自己能看得下去的(學習 Python 很吃力,我是不是可以放棄編程了? 里有提到),如果不知道選什麼,就看 Python學習手冊(第4版),不管是作為語法書還是參考書都是不錯的選擇。

在這個階段可以通過一些練習讓自己更加熟悉 Python 這門語言,熟悉常見的語法知識和用法之後就可以進入下一階段。

到這個階段才算是真正學習核心的知識,通常為了更加方便地寫 Web 後端程序,我們會使用 Web 框架,Python 也不例外。如果不知道選哪個框架,就選擇 Flask。這方面有一本還可以的書 Flask Web開發:基於Python的Web應用開發實戰,對於初學者算是能接受的一本書,或者看 flask mega-tutorial 1.1 documentation,上面那本書的作者整理的,內容上有所更新。

當然這本書看著很薄,但是讀起來可能並沒有那麼輕鬆,特別是在熟悉一些慣用的處理方式之前,讀起來有一定難度,所以可能這階段要花的時間相對多一些。

書裡面有完整的項目,跟著做下來好好理解(有必要的話可能需要重複幾遍),然後可以考慮自己寫一個類似的項目。在掌握這階段的知識之後,已經具備寫 Web 的能力,當然如果繼續學習一些其他知識會更好。

在掌握 Python 和 Flask 的知識之後,可以學習一些更加基礎的知識。比如 HTTP 協議,這個是 Web 開發中的重點知識,摘一部分 其他答案 的內容

比如最基本的 HTTP 協議需要熟練掌握吧,那麼 HTTP 的 request 和 response 實質上是什麼樣的要做到心中有數。

以 request 為例,掌握 request 的格式可以更好地理解 request 的原始信息,同時從原始信息中區分 request method、request path、query string、headers 和 request body 也是需要掌握的。還有 headers 中常見欄位的含義也屬於必備的知識。

比如說 Content-Type 常見的是 application/json、 application/x-www-form-urlencoded 和 multipart/form-data(不常用的比如知乎目前使用的 application/x-protobuf),這三個分別應用在什麼場景中,以及如何獲取這些格式的值都是有必要掌握的。

這還只是 request 部分,response 也是一樣的道理。在掌握這些知識之後,可以輕鬆應付不少工作中的類似問題:

1. 405 報錯怎麼回事

2. parse JSON 怎麼取不到值

3. 如何以 GET 的形式傳遞 city=[1, 2, 3] 這樣的數據

4. 如何發送一個文件(能發送文件就能發送 HTML 了,也就能清楚為什麼 你見過哪些讓你瞠目結舌的 Java 代碼技巧? 里的做法是不可取的了)

圖解HTTP 是一本講解 HTTP 協議的書,用來學習挺合適的。掌握 HTTP 協議之後可以考慮找一份 Web 後端的工作,然後在工作中繼續提升自己,到了這個階段對於需要學習哪些知識才能更有效地掌握後端已經有很好的判斷能力了,比如演算法和數據結構、抽象能力等。


答案中提到的:

Head First HTML與CSS(第2版)

Head First HTML5 Programming(中文版)

Python學習手冊(第4版)

Flask Web開發:基於Python的Web應用開發實戰、flask mega-tutorial 1.1 documentation

知乎用戶:Java應屆生,怎樣才能擺脫各類管理系統的開發?

圖解HTTP


你們答的這都是啥?還http協議?這答案都是兩屏幕起,別說沒有IT背景的人了,有IT背景的人也有多一半學不會。

沒有IT背景的人,要系統學習web後端,是不可能的。你要把系統這兩個字去掉。

完全沒有背景的人,比如我家小蘿莉,純文科出生,高數都沒學過,專業讀語言的,她現在也在維護一個web站,主要還是靠PHP為基礎的wordpress入門。

這是最容易的部分了,wordpress很多主題都可以所見即所得修改,加上PHP的修改既生效特性,你只需要手邊準備一個php手冊+百度,基本上就能很快在一個星期內入門。


分享牛客網上,一位後端大佬總結的:後端開發所需要的技能

希望能給題主一些幫助!

-------以下搬運上述帖子內容,方便大家觀看--------

一、計算機網路

基礎部分

  • TCP報頭格式
  • UDP報頭格式
  • TCP/UDP區別(不僅是宏觀上的,最好能根據各自的機制講解清楚)
  • HTTP狀態碼(最好結合使用場景,比如在緩存命中時使用哪個)
  • HTTP協議(一些報頭欄位的作用,如cace-control、keep-alive)
  • OSI協議、TCP/IP協議以及每層對應的協議。
  • SESSION機制、cookie機制
  • TCP三次握手、四次揮手(這個問題真的要回答吐了,不過真的是面試官最喜歡問的,建議每天手擼一遍,而且不只是每次請求的過程,各種FIN_WAIT、TIME_WAIT狀態也要掌握)。
  • 打開網頁到頁面顯示之間的過程(涵蓋了各個方面,DNS解析過程,Nginx請求轉發、連接建立和保持過程、瀏覽器內容渲染過程,考慮的越詳細越好)。
  • http和https區別,https在請求時額外的過程,https是如何保證數據安全的
  • IP地址子網劃分
  • POST和GET區別
  • DNS解析過程

深入部分

  • TCP如何保證數據的可靠傳輸的(這個問題可以引申出很多子問題,擁塞控制慢開始、擁塞避免快重傳、滑動窗口協議、停止等待協議、超時重傳機制,最好都能掌握)
  • 地址解析協議ARP
  • 交換機和路由器的區別

二、資料庫

基礎部分

  • 事務四大特性(ACID)
  • 資料庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別
  • MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景
  • 資料庫的優化(從sql語句優化和索引兩個部分回答)
  • 索引有B+索引和hash索引,各自的區別
  • B+索引數據結構,和B樹的區別
  • 索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效
  • 聚集索引和非聚集索引區別。
  • 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖
  • 關係型資料庫和非關係型資料庫區別
  • 了解nosql
  • 資料庫三範式,根據某個場景設計數據表(可以通過手繪ER圖)
  • 資料庫的主從複製
  • 使用explain優化sql和索引
  • long_query怎麼解決
  • 內連接、外連接、交叉連接、笛卡兒積等

深入

  • MVCC機制
  • 根據具體場景,說明版本控制機制
  • 死鎖怎麼解決
  • varchar和char的使用場景。
  • mysql並發情況下怎麼解決(通過事務、隔離級別、鎖)

Redis

  • redis數據結構有哪些
  • redis隊列應用場景
  • redis和Memcached(支持數據持久化)
  • 分散式使用場景(儲存session等)
  • 發布/訂閱使用場景

三、操作系統

  • 內存的頁面置換演算法
  • 進程調度演算法
  • 進程間通信方式
  • 進程線程區別
  • 進程之間的通信
  • 父子進程、孤兒進程
  • fork進程時的操作

這個部分我回答的都不好,只能是死記硬背,建議基礎好的同學多看看操作系統這部分,能大大加分。

四、演算法

基礎

  • 劍指OFFER的各個題目是最常見的,即使不是原題也是題目的變體,因為面試不像筆試,一般不會出特別困難的題目,所以劍指OFFER上小而精的題目就非常適合。建議手刷一遍。PHP的同學可以參考專欄劍指OFFER
  • 二叉樹相關(層次遍歷、求深度、求兩個節點距離、翻轉二叉樹、前中後序遍歷)
  • 鏈表相關(插入節點、鏈表逆置、使用鏈表進行大數字的加減,雙向鏈表實現隊列、尋找鏈表中的環)
  • 堆(大量數據中尋找最大N個數字幾乎每次都會問,還有堆在插入時進行的調整)
  • 排序(八大排序,各自的時間複雜度、排序演算法的穩定性。快排幾乎每次都問)
  • 二分查找(一般會深入,如尋找數組總和為K的兩個數字)
  • 兩個棧實現隊列。
  • 圖(深度廣度優先遍歷、單源最短路徑、最小生成樹)
  • 動態規劃問題。

深入

  • 紅黑樹性質
  • 分治法和動態規劃的區別
  • 計算時間複雜度
  • 二叉樹和哈希表查找的時間複雜度

棧和鏈表是面試演算法的時候經常用到的工具,多考慮怎麼用數據結構的性質解決,因為面試不像筆試,對基礎數據結構關注的比較多一些,一般問題也比較簡單。然後取模也是常用的工具(比如有一次問怎麼讓100個進程按規定的權重被調用,就可以用取模的方式)。

面試官一般會先出簡單的問題,然後深入地問下去,最好是根據他的思路走,因為能聽懂他的提示也是需要考察的能力。

LINUX

  • 硬鏈接和軟連接區別
  • kill用法,某個進程殺不掉的原因(進入內核態,忽略kill信號)
  • linux用過的命令
  • 系統管理命令(如查看內存使用、網路情況)
  • 管道的使用 |
  • grep的使用,一定要掌握,每次都會問在文件中查找
  • shell腳本
  • find命令
  • awk使用

語言部分(PHP)

  • 數組操作函數
  • 字元串操作函數(數組和字元串的函數是最常問的,非常多,一定不要記混了)
  • 指針和引用區別
  • 堆和棧的區別
  • == ===區別
  • PHP的垃圾回收機制
  • zval結構
  • 防sql注入
  • 跨域問題
  • 長鏈接和長輪詢

面向對象、設計模式

  • 介面和抽象類區別
  • 單繼承
  • construct的調用順序(子類父類之間)
  • 設計模式(工廠模式、策略模式、單例模式、裝飾模式比較常見)
  • OOP特性,通過哪些機制實現的
  • 重寫和重載區別
  • 靜態類靜態方法
  • 根據某個需求設計一個類(主要考慮類之間的繼承關係和屬性的許可權設置)

項目

  • 項目中遇到的困難(提前想好,並且把實現或者優化方法說清楚)
  • 系統的量級、pv、uv等
  • 應對高並發的解決辦法(分散式)
  • 在項目中主要負責了哪些工作。
  • nginx的負載均衡
  • 分散式緩存的一致性,伺服器如何擴容(哈希環)

總之要把寫在簡歷上的項目部分熟悉一遍,技術棧、項目功能、難點都要考慮好。


無恥地打個廣告:如果英文OK,不妨看看WebCoursify - FullStack Web Development Course

看20本精品教程不如自己從頭到尾寫一個簡單的網站,遇到不會的就查。


作為農村教師裡面改代碼比較好的來答一答。

本人就是毫無it背景的那一個。

學後端,默認你對前端掌握的很好了。那麼,

看看書店裡面關於那種後端開發語言的書多,就可以選那種。書多說明大眾化(有誤導嫌疑,但是我就是這麼乾的)我發現php和asp比較多,百度了一下,好像說asp是微軟的,花錢多一些,php就大眾一點,那麼就php了。

然後,怎麼學呢?自然是買書、亞馬遜一搜,找個評分高的就買了一本。很厚,大概花了70多,帶著對人民幣負責的態度,開始了學習之路。

這個時刻就看你學習的決心有多強烈了。我這種不怎麼強烈的人,結果就是看了開頭的幾章,一遍沒明白,就又看了一兩遍,偶爾做一些筆記。。。

這樣,基本理解了php的入門概念。

然後就是照著代碼寫,改,改,寫。作為打字速度超慢,打英文更慢,且英文極爛的我來說,學習編程是無比痛苦的。我都是一個字母一個字母照著打。。。因為好多單詞不認識。

這樣持續了數月,(只是利用業餘時間),忽然聽說了有框架。於是開始找到一些網上搜到的資料,學起來yii框架。這玩意不錯,照著教程寫了一遍,又寫了一遍,克服了一個個困難,跟一個個錯誤戰鬥了一次又一次,終於,改代碼的能力得到了一個量的飛躍。。

目前已經能搞定了一些基本功能,

如果這算是系統的學習了後端開發的話,那麼我想我的經驗還是可以借鑒的。

核心答案:我這種各種天賦不足者都能學會一些東西,那麼可見學習語言是不難的,當然,精通是另外一回事。那麼只要你肯學習,嚴格按照一本體系完整的教程學下去,估計也就系統了。

語言:php 資料庫 mysql 框架:yii


題主,他們都在嚇你,怕你入行搶飯碗。我告訴你捷徑吧:去書店買xxx入門到精通即可


送你一個技能表,拿來打通關吧http://blog.goody365.com/lamp/Lamp%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91%E6%8A%80%E8%83%BD%E8%A1%A8v0.html


給沒有計算機學歷 轉行的,寫個簡單、可行性高的流程:

先看個Java入門視頻 認真學習java基本語法和特性 以及常用的數據結構

學習MySQL 增刪改查 怎麼建表 表與表之間的關係

用 SpringMVC 為網站做個簡單的後端 跟著教學視頻抄一遍都可以 但一定要動手敲代碼

做完基本就入門了。後端還應該會的:

最基礎的那幾種演算法: 排序 DFS BFS 二分 動態規劃、設計模式、NoSQL、Linux的常用命令

然後你跟科班的差距就剩下:

計算機組成原理、計算機網路、操作系統、編譯原理

(不用怕 這些內容 科班出來的也大部分忘了 但很多概念應該要聽說過 找幾本書 有時間過一下就行了 這些東西其實不是必須的 但決定你的上限


從做一個網頁開始吧


作為一個超級業餘選手, 從業餘IT人員的視角來回答一下樓主的問題:

時間和精力有限, 沒有IT背景自學, 重要的是不斷地保持信心, 少受打擊. 所以我的思路有一個宗旨: 先摸清事情背後的本質是什麼, 自己最需要關注的部分是什麼, 不需要特別關注的部分是否有比較現成的輪子好用. 然後要儘快的能夠實現原型, 程序跑起來, 才能增加信心

WEB編程的本質:

WEB的本質, 就是把數據展示給瀏覽者(用戶).

好像有人說過, 程序並不生產數據, 只是管理和組織數據. 比如知乎網站上的提問, 回答, 圖片, 頭像, 都是會員們錄入的數據, 存儲在資料庫中. 程序通過運算, 把需要的數據, 按照需要的樣式, 展示給我們.

了解這個本質的好處: 知識的海洋浩瀚無邊, 花一生都學不完. 理解了本質, 不容易鑽進某一個具體學科或者知識分支的牛角尖, 時刻提醒自己主要目標是什麼, 自學過程中不要跑題太遠.

編程語言的本質:

編程語言本質就是使用該計算機語言的語法規則, 讓計算機按照我們的預期去一步步執行一系列任務. 推薦廖雪峰老師的網站, 他的網站上有好幾種語言的教程, 可以很明顯的看出來, 雖然編程語言不同, 但背後的本質是一樣的.

編程語言有很多, 哪個語言更好的爭論也隨處可見. 但我感覺編程語言很多都是相通的. 入門某個編程語言, 主要是了解:

  1. 學習該語言約定的語法規則, 比如基本的流程式控制制, 如何劃分語句塊等.
  2. 了解該語言支持的特性, 比如支持哪些數據結構, 是否支持面向對象等.
  3. 了解該語言的保留關鍵字, 比如如何定義變數, 如何定義類, 如何定義數組, MAP, 如何迭代等.
  4. 了解語言內置的和常用的函數, 方法, 類等. 比如字元串操作, 數組操作等常用內置方法.

推薦學習:

選擇編程語言: PHP

1. PHP環境搭建比較簡單, 本地開發有一鍵安裝的XAMPP安裝包. 無腦下一步就完成了. 伺服器上也可以安裝一個WDCP面板, 或者虛擬主機自帶就支持了. 部署也基本上就是往伺服器上丟PHP文件. PYTHON之類的語言, 或許在環境搭建那一關就夠喝一小壺了.

2. PHP網上實例教程比較豐富, 現成免費的CMS系統, MVC框架教程, 都非常多.

了解HTTP協議

HTTP是無狀態協議, 客戶端發送一次請求, 服務端作出相應的響應. 時刻牢記.

請求是什麼樣子, 什麼格式, 有哪些內容. 發送了什麼, 接收了什麼. 可以用chrome瀏覽器控制台, 一個請求一個請求地看看.

POST GET COOKIE SESSION是什麼, 和伺服器怎麼交互的, 服務端是怎麼處理的.

學習關係型資料庫MySQL

建議還是用命令行操作MySQL去學習, 映像比較深刻. 如何創建資料庫, 如何創建表.

了解MySQL支持哪些數據類型. 什麼樣的數據, 用什麼類型存儲. 比如常見的用戶名和什麼數據類型, 密碼用什麼類型, 文章用什麼類型, 價格用什麼類型. 等等.

學習如何用SQL語句對資料庫進行增刪改查.

學了以上, 應該就可以亂七八糟地堆一個後端了, 最後發現就是各種組織SQL語句. 各種select 各種insert, 通篇都在湊SQL搞資料庫. 各種if else判斷. 各種for each while循環. 且不說程序安全性, 且不說代碼可讀性, 可維護性. 且不說運行效率. 好歹自己弄出來了, 跑通了, 就成.

再到後來, 自己發現重複寫的內容太多了, 邏輯太混亂, 要增加或修改功能好難. if嵌套太多, 程序寫得太死. 程序不夠健壯, 輸入驗證不夠, 等等一系列問題慢慢就會發覺了. 這個時候, 自然而然就要去想辦法. 要去學習一些演算法, 數據結構. 想了解面向對象, 想把一些東西封裝成函數. 想了解別人是怎麼去思考和實現程序邏輯的. 想了解WEB安全的一些基礎的 通用的做法.

純業餘, 各位專業的老師輕拍.


建議先入門,先會寫代碼,然後再求原理,循序漸進。

一般想達到會寫代碼的目標,無非:html + css + js &>&> 選擇你喜歡的動態腳本 + mysql + linux + 緩存系統,然後找到一份工作。

慢慢實踐,如何考慮邏輯,如何設計好的代碼和資料庫,然後要考慮如何應對 高並發 和負載均衡的伺服器架構,集群 分散式等。

當你沒需要一個技術的時候,希望是你的自我驅動去想嘗試研究一個東西,弄懂一個東西,慢慢的去嘗試了解更多計算機原理,操作系統管理和內存進程線程這些東西的時候,慢慢就成為了一個體系。每一個語言都有一個最佳實踐,想知道計算機專業他們都學什麼,也可以直接看下《計算機導論》比較全的東西。


學技術這東西是不需要所謂的IT背景的。如今網上的慕課泛濫,自己隨手一搜,就噗噗噗冒出一大批的學習視頻。後台語言小子我主要用的是PHP,資料庫自然而然就是MYSQL了。其次吧就是JSP與oracle資料庫了,時間充足精力杠杠的也稍微知道點asp和C#。比較熟練的自然還是第一種了。其他知識需要的HTML、CSS、JS,還有各種亂七八糟的網路協議。進一步提升就是選擇國內或者國外的框架一兩種熟悉並熟練使用,這個就看國人自己的選擇了,如TP、yii都還算比較普及。其他再深入點的,小子我就沒法說了。數據結構?演算法?應該是小子我做的項目太少,接觸的太少,沒感覺用上多少。所謂的系統學習,個人認為就是略知一二加上大量重複的實踐工作然後進一步的了解並深入掌握。大概我說的這些算是廢話吧~~隨便說說,不可信。LZ加油吧,代碼這東西還是得自己多瞧瞧,思想固然重要,實踐同樣有很大的比重。


2015年Java重新榮登編程語言排行榜第一,再次王者歸來,截止2016年6月,Java佔據全球20.8%的市場份額,遙遙領先。隨著DevOps在全球的盛行,複合型全棧Java人才更是成為研發團隊的絕對骨幹和主力,也是作為為高級架構師的重點培養對象。而2015年以來隨著互聯網公司創業的爆發,Java人才需求在國內處於嚴重供不應求的態勢。無論一線城市、二線城市、大公司還是小公司,普遍缺乏基礎紮實、技能全面、視野開闊的優秀Java人才,造成這一現象的根本原因在於缺乏好導師,因為從本質上來說,學開發是學習一門技術,跟武功一樣,除了自身的天賦和後天的努力之外,學習路上還需要遇到一些好的師傅帶領。

IT新人里,可能有50%的人,有天資有潛力,但被公司毀了的,要麼拚命做重複的低級工作,一年又一年,要麼閑置,3年後,都毀了一半職業路 ;另外50%的人,可能只有1/3的人 靠自己,不停的奔跑,艱難勝出,而另外2/3的人,卻迷路了。推薦一套《Java全棧工程師實戰培訓》系列課程分為八套進行講解,每一套都圍繞全棧開發的一個主題方向獨立開展,第一套:Java高端面試寶典、第二套:Java Web開發、第三套:資料庫設計、第四套:Android入門、第五套:Linux Docker、第六套:各種中間件的掌握、第七套:微服務架構、第八套:大型電商系統開發實踐等領域。http://www.roncoo.com


推薦眾學視頻教程-世界名校公開課視頻 | 國外高手視頻教程 | 精品課程答疑論壇 | 國外原版英文專業書免費下載,有很多高手視頻課程,並且配有字幕,目前有HTML,CSS,JavaScript編程, PHP編程以及PHP面向對象編程, JQuery, Ajax等一列

關於網站前端和後台的課程,,還有一些如何建立論壇網站, CMS以及電子商務網站的實例工程教程,都是手把手教你的傻瓜教程,並且大部分課程都提供源代碼和相關的課件。


學習php語言,然後試著做項目,在做項目的過程中,會遇到很多問題,解決這些問題,就很系統了。


【沒有IT背景】

這麼大的前提沒看到嗎?瞎雞巴答。

好比從來沒有學過英語,你特么上來就說:三大從句要好好學。非謂語動詞比較難,要特別注意。還有,不要上來就學冠詞,太慢了…balabala

拜託,對方是零基礎誒,你先解釋什麼叫「從句」吧。

對於完全零基礎,我只推薦看視頻!看書都看不懂你信不?

評論里有人對上面這句話有異議的,先別急,請回答我:你大學時是從來沒去上課,躲圖書館獨立看書學會編程的嗎?

如果不是,你憑什麼讓完全沒基礎的人去看書?

萬事開頭難,恐怕你們早就忘了當年學會用筷子吃飯花了多長時間咯。


按照題主的情況,沒有超強的毅力,強烈的興趣,和較高的智商(我這個較高是放在全國範圍說的,不要舉你自己的例子,能讀211,985的一般智商都已經很好了)。還是不要趟渾水。有大神列了常常的書單,殊不知人不是計算機。拿一堆書直接輸進去是沒作用的。反之如果你有我說的那些條件,加上熟練計算機操作,那我祝福你。


很簡單,花個兩三萬,報個培訓班?


別學了…轉行吧,賣特斯拉…


推薦閱讀:

學習PHP不如JAVA嗎?
PHP 為什麼沒有取代 Python ?
那些精通前後端的大神是如何做到的?
前端跟後端的MVC架構有什麼不同?
到底是前端根據後端來寫還是後端根據前端來寫呢?

TAG:後端技術 | 網站 | 計算機網路 | 系統架構 |