全棧開發自學路線

築夢師Winston發表於2019-02-16

前言

這裡築夢師,是一名正在努力學習的iOS開發工程師,目前致力於全棧方向的學習,希望可以和大家一起交流技術,共同進步,用簡書記錄下自己的學習歷程.

個人學習方法分享

本文目錄&更新說明

目錄
1.學習方法
2.學習態度
3.全棧開發
4.學習路線(很長)
5.知識擴充(很長)

在這裡收取很多人的建議以後決定說明一下,這是我的第一篇使用Markdown語法寫的文章,版面可能會有瑕疵,或者易讀性並不是那麼高(但是知識點真的是這麼多),這篇文章主要收集了全棧涉及到各個知識點

後期會根據我本人學習進度進行總結,每個知識點,對,就是每個知識點,我會根據自己的理解寫成簡書,到時候迫切的希望各位幫我參考,我的看法有時候會出現偏差,還希望各位及時指出.我會認真的回覆評論.

我會一直使用簡書和個人部落格更新個人學習歷程~也希望各位能夠在這條路上一直走下去.

學習方法

這是個人學習方法,還請大家結合自身情況,制定適合自己的學習方法.

首先,我會去收集全棧工程師會涉及的方面,大致分為 前端,後臺,伺服器. 然後,細化各個階段不同的知識點,逐一百度進行了解.
瞭解相關知識的有名書籍,例如伺服器的鳥叔私房菜系列書籍,前端的Head First系列,後臺的Linux開發手冊. 本人整理過相關書籍,以及尋找書籍方法~傳送門

本人使用的筆記軟體是Omni outliner Mac版,windows的開發者可以使用 幕布 這個應用.一般學習時間會開啟3個視窗
自學筆記+視訊學習筆記+總結筆記
自學筆記為讀書時的筆記和百度到的所有知識點.
視訊學習筆記為視訊資料學習的筆記.會記錄視訊當中的各個知識點.
然後去其糟粕,取其精華,寫到總結筆記以後,再進行總結.
最後完成各個知識點的學習以及總結.
當遇到程式碼知識點時一定要進行實際操練以及考察.
要根據自身想法進行延伸考察.才能將知識學到手.

一定要整理適合自己的學習方法,保證學習效率,學習過程中都會遇到瓶頸,當自己無法理解新知識時就是瓶頸

1.可能是學習方法不夠完善,有些知識不夠融會貫通.
2.學習跨度不能太大,導致自己理解不了.
3.梳理自己的學習體系,程式語言不是死記硬背,而是靠理解和體會進行使用,一定要有自己的理解看法,而不是生搬硬套書和視訊當中的看法.

學習態度

謙虛,好學,內斂,成熟
學習態度,一定要是主動學習,主動延伸,而不是被動學習.
我會主動的去使用百度學習我每一個不懂的知識點.
例如 :

  1. Apache 配置這個知識點,我就會去搜尋 “Apache配置” 以及 “httpd.conf配置”.
  2. MySQL 資料庫這個知識點,我就會去搜尋 “MySQL開發”關鍵詞.
  3. 百度學習的效率如何提高,主要是在關鍵詞的搜尋上,當你學習一方面的知識時,例如HTML知識,你就搜尋”HTML開發” +”空格”+”你想搜尋的知識點”.例如JavaScript開發 “JS開發”+”空格”+”XXX效果實現”.重點關注簡書CSDNgithubStackoverflow等網站的結果,而不是侷限於百度知道,百度百科等.

知識很多,網路上資源也有很多,你不學永遠是0.
量雖然很大,但請一點點進行學習,循序漸進~

全棧開發

全棧開發這裡想說一下個人觀點,有很多人說:“全棧全棧,全都懂點,全都不精,全都不會.”

這個觀點,我不否定,但我不認同,我投入全棧的學習,有我自己的目的,那麼我為什麼要和那些全都不精的人在一個圈子裡.不是因為學的多,就一定學不會,那請問大神也都是什麼都會啊.請不要因為別人否定自己,否則你就已經輸了.
本文涉及的知識點也不是絕對的全棧,算是全棧入門,全棧水平也有高低,請勿學前自滿.


進行下面的學習時,請先確定自己學全棧的目的和動力.
下文主要分為兩部分,學習路線部分主要羅列出每一個全棧涉及的知識點.

學習路線

在進行學習路線學習時,會遇到很多自己不懂陌生知識點,請你毫不吝嗇的使用百度吧~

  • 學習路線

    • Web前端

      • 前端開發工具
      • SEO
    • HTML + CSS

      • HTML簡介
      • HTML標籤詳解
      • 標籤語義化
      • CSS概述
      • CSS屬性
      • CSS樣式的型別
      • CSS選擇器
      • CSS背景
      • 元素的顯示模式
      • CSS偽類
      • 字型相關屬性
      • 盒子模型
      • margin
      • padding
      • 浮動
      • 定位
      • CSS相關案例
    • HTML5 + CSS3

      • HTML5新增標籤
      • HTML5多媒體
      • HTML5音訊播放
      • HTML5視訊播放
      • HTML5DOM擴充套件
      • HTMl5自定義屬性
      • 地理定位
      • 檔案讀取
      • 元素拖拽
      • 應用快取
      • 歷史管理
      • web儲存
      • CSS3選擇器
      • CSS3新屬性
      • 2D轉換與過渡
      • 3D轉換
      • 動畫
      • Web字型
      • Flex彈性佈局
    • JavaScript + jQuery

      • JavaScript

        • JavaScript概述
        • 資料型別
        • 流程控制
        • 演算法基礎
        • 企業程式設計規範
        • JavaScript內建物件常用方法
        • 物件的建立方式
        • JavaScript中的物件
        • 物件導向
        • 原型
        • 作用域鏈
        • 函式的呼叫方式及this指向
        • 正規表示式
        • JavaScript高階

          • 遞迴與預解析
          • 資料型別
          • 函式
          • 詞法分析
          • 作用域鏈
          • 事件程式設計
          • canvas繪圖
          • 物件導向
          • JSON物件
          • 原型鏈
          • 設計模式
          • 正規表示式
        • JavaScript原理探究

          • 原型
          • 原型鏈
          • 繼承
          • 閉包
          • ES5
          • ES6
      • jQuery

        • jQuery簡介
        • jQuery的優勢
        • jQuery選擇器
        • jQuery中的動畫
        • jQuery外掛
        • jQueryUI
        • jQuery程式設計思想
        • 鏈式程式設計和隱式迭代
        • 編寫jQuery外掛
        • jQuery選擇器
        • 屬性操作
        • 事件程式設計
        • jQuery特效
        • 文件處理
        • 外掛機制
        • jQuery中的Ajax
        • 開源jQuery專案實踐
    • PHP +MySQL

      • 搭建環境

        • PHP簡介
        • WEB程式的訪問流程
        • 安裝Apache
        • MySQL
        • PHP7
        • 配置虛擬主機
      • PHP7基礎

        • 變數和常量
        • 資料型別
        • 運算子
        • 流程控制
        • 函式
        • 字串
        • 陣列
        • PSR規範
        • B/S結構
        • 引數傳遞GET/POST
        • 動態網站
        • 後臺介面開發
        • 分支迴圈語句
      • MySQL資料庫

        • MySQL簡介
        • 基礎SQL操作
        • 字符集
        • 列型別
        • 類屬性
        • 表關係
        • 高階查詢
        • 外來鍵
        • 正規化
        • 使用者管理
        • 許可權管理
        • 資料備份與還原
      • MySQL優化

        • MySQL優化概述
        • MySQL儲存引擎
        • 列型別的選擇
        • 資料庫設計三正規化與逆正規化
        • MySQL中的執行計劃
        • 資料庫中索引的設計
        • MySQL中的其他功能
        • MySQL分表技術
        • Sphinx
        • 讀寫分離
      • 表單傳值

        • 表單傳值的方式
        • PHP接收資料的三種方式
        • PHP處理核取方塊資料
        • 檔案上傳
      • MySQLi擴充套件

        • 基本操作
        • 執行增刪改操作
        • 執行查詢操作
        • 與MySQLi相關的函式
        • MySQLi擴充套件應用案例
      • 檔案程式設計

        • 檔案操作的分類
        • 目錄操作
        • 檔案操作
        • 檔案下載
      • 會話技術

        • 會話技術概述
        • Cookie與Session的區別
        • Cookie原理
        • Cookie操作
        • Session原理
        • Session操作
        • 垃圾回收機制
      • GD影像處理

        • GD庫概述
        • GD畫布實現
        • 驗證碼
        • 縮圖
        • 水印圖
      • 物件導向

        • 物件導向概述
        • 物件導向實現
        • 封裝
        • 繼承
        • 多型
        • 物件遍歷
        • 物件序列化
        • 反射機制
        • 名稱空間
        • Trait新特性
      • PDO擴充套件

        • PDO簡介
        • PDO類
        • PDOStatement類
        • PDO預處理
        • PDO事務處理
        • PDO異常處理
        • PDO屬性
        • 封裝PDO類
      • Smarty

        • Smarty概述
        • 模板設計
        • 程式設計
      • ThinkPHP5.0

        • ThinkPHP5框架概述
        • 基礎
        • 架構
        • 路由
        • 控制器
        • 檢視
        • 模型
        • 專案實用項
      • RESTful

        • RESTful概述
        • HTTP協議
        • RESTful API設計六要素
        • 編寫API介面文件
        • 使用Lumen實現RESTful
      • MVC設計模式

        • MVC設計模式
        • 搭建自定義MVC框架
      • 部落格專案

        • 專案開發流程
        • 資料表資料
        • 後臺實現
        • 前臺實現
        • 擴充套件功能
      • 資料表設計、後臺設計、前臺設計、會員設計、購物車設計、訂單設計、介面設計(微信/支付寶、簡訊、QQ登入、郵件、地圖、物流)、靜態化
      • PHP+Swoole多程式爬蟲

        • Swoole概述
        • Server
        • Client
        • Process
        • AsyncIO
        • Memory
        • HttpServer
        • WebSocket
        • Swoole綜合案例:PHP+Swoole多程式爬蟲
    • Web API

      • BOM操作
      • DOM操作
      • 事件處理
      • 瀏覽器相容性處理
      • 頁面動態效果
      • 動畫
    • HTTP/HTTPS協議

      • HTTP協議概念
      • HTTP協議的特點
      • HTTP協議的分類
      • HTTP請求
      • HTTP響應
      • HTTP狀態碼
      • PHP模擬HTTP請求
      • 擴充套件:HTTPS協議
    • Ajax

      • Ajax概述
      • Ajax物件
      • GET與POST請求
      • 同步與非同步概念
      • 快取問題
      • Ajax與XML
      • Ajax與JSON
      • 封裝Ajax框架
      • 跨域請求
      • 原生Ajax
      • jQuery的Ajax相關API使用
      • 低層原理分析
      • 快取問題及處理方式
      • 跨域請求及解決方法
      • 實用案例
    • VueJS

      • Vue概述
      • Vue指令
      • Vue屬性
      • 方法、事件、過濾器、事件處理、鉤子函式
      • 元件、動畫、路由、API請求
      • 常用系統指令
      • 資料繫結
      • 指令
      • 過濾器
      • 生命週期
      • 元件化
      • Vue元件
      • Vue過渡效果(動畫)
      • 路由(vue-router庫)
      • axios
    • WAMP & MAMP & LAMP

      • WEB程式的訪問流程
      • Apache
      • MySQL
      • PHP
      • 配置虛擬主機
    • 設計模式

      • MVC
      • MVVM
    • Git開發

      • 命令列
      • git的基本使用
      • 對比檔案差異、還原、合併 ,回滾操作
      • 遠端倉庫操作,使用github建立遠端倉庫,生成ssh key 並新增到github
    • Linux作業系統

      • Linux系統概述
      • VMware虛擬機器的安裝
      • CentOS系統安裝
      • Shell指令
      • VI編輯器
      • Linux核心分析
      • 使用者和組
      • 檔案操作
      • 網路配置
      • FTP
      • LAMP部署
    • Nginx伺服器叢集

      • Nginx概述
      • LNMP的安裝與配置
      • 快取設定
      • 壓縮設定
      • 負載均衡
    • Memcache快取設計

      • 大型專案優化概述
      • Memcache軟體的安裝
      • Memcache指令詳解
      • 使用PHP操作Memcache
      • Memcache應用場景
    • Redis 快取訊息佇列

      • Redis概述
      • Redis支援的資料型別
      • 持久化功能
      • Redis主從模式
      • PHP操作Redis
      • 訊息佇列
      • 商城系統快取設計與秒殺實現
    • MongoDB (NoSQL資料庫)

      • MongoDB概述
      • MongoDB進階
      • MongoDB的許可權機制
      • 使用PHP操作MongoDB
    • 網站優化(MySQL高階優化)

      • MySQL優化概述
      • MySQL儲存引擎
      • 列型別的選擇
      • 資料庫設計三正規化與逆正規化
      • 執行計劃
      • 索引
      • 分庫分表技術
    • 網站優化(Sphinx,Xunsearch)

      • 主從伺服器的講解
      • 主從複製
      • 讀寫分離實戰
    • 網站優化(主從複製,讀寫分離)

      • Sphinx概述
      • 安裝Sphinx
      • 使用PHP+API介面連線Sphinx
      • Sphinx的匹配模式
      • Sphinx增量索引
    • 網站優化(頁面靜態化)

      • 頁面靜態化技術簡介
      • 真靜態
      • 偽靜態
    • Laravel框架

      • Laravel概述
      • Laravel的安裝
      • 目錄分析
      • 控制器
      • 路由
      • 檢視
      • HTTP請求與響應
      • 資料庫
      • 模型
      • Laravel實用項
      • Redis資料庫
      • 訊息佇列
    • Laravel +VueJS 線上直播平臺

      • 前端介面開發
      • Laravel後臺程式設計
      • Socket程式設計
      • Redis叢集
      • ffmpeg轉碼
      • VOD點播
      • CDN加速
      • HLS技術
      • 線上教育平臺實戰
    • Canvas繪圖

      • canvas概述
      • 繪圖
      • echarts
      • svg
      • svg圖示的使用
    • 移動Web開發(響應式設計)

      • 移動端螢幕介紹
      • 移動端瀏覽器介紹
      • 移動端作業系統介紹
      • Chrome模擬除錯
      • 真機除錯
      • Viewport
      • rem
      • 觸屏touch事件
      • 手勢封裝
      • 媒體查詢,裝置尺寸劃分
      • 主流響應式佈局框架
      • 移動端框架
      • bootstrap
      • iScroll
      • swiper
      • fastclick
      • zepto
      • framework7
      • Canvas
      • Sass
      • vw
      • CSS前處理器LESS
    • 前端模組化

      • AMD
      • CMD
      • 模組化開發基本概念
      • 模組化演變過程分析
      • 設計規範
      • RequireJS
      • 淘寶的SeaJS
    • NodeJS詳解

      • NodeJS歷史
      • 發展
      • 特徵與現狀
      • ES6常用語法
      • 同步與非同步
      • 環境安裝
      • 檔案操作
      • 網路操作
      • 模組化思想及操作
      • npm
      • 非同步程式設計
      • Express
      • 工具模組
      • Web模組
      • 全域性物件
    • Express框架

      • Express 簡介
      • 安裝
      • 請求與響應
      • 路由
      • 靜態檔案
      • 檔案上傳
      • Cookiet管理
    • AngularJS實戰開發

      • 單頁應用
      • MVC
      • 常用指令
      • 雙向繫結和單向繫結
      • 模組
      • 控制器controller
      • $watch
      • 自定義指令
      • jqLite
      • 過濾器
      • 資料過濾
      • 服務$http $location
      • 前端路由
      • http攔截器
    • ReactJS實戰開發

      • 快速入門
      • 虛擬DOM
      • 互動與動態UI
      • 資料渲染
      • JSX 語法
      • 元件開發
      • 元件複用
      • 生命週期
      • React操作dom元素
      • React絕對路由
      • webpack和gulp整合構建專案
      • flux
      • redux
      • state props context 等
      • 附加模組
      • 整合工具
      • 重定向元件
      • 代理方式進行跨域
      • 按需載入
    • 移動端專案 (全棧必備)

      • mui框架使用
      • 前端校驗外掛
      • echarts資料視覺化
      • Ajax進度條元件
      • 模板引擎渲染
      • 圖片上傳外掛
    • 後臺專案 (全棧必備)

      • 後端渲染頁面,使用會話技術實現登入,PHP操作MySQL資料庫,開發介面,使用AJAX技術,模板引擎ArtTemplate完成頁面功能的實現
    • vue專案 (全棧必備)

      • webpack
      • vue-cli
      • vuex
      • 打包釋出
      • 元件開發
      • 許可權管理
      • 外部介面呼叫
    • 微服務Docker (PHP進階)

      • Docker概述
      • 為什麼需要Docker
      • Docker環境開發流程
      • Docker安裝與配置
      • Docker指令
      • DockerFile應用伺服器
    • Swoole聊天室 (PHP進階)

      • Swoole概述
      • Server
      • Client
      • Process
      • AsyncIO
      • Memory
      • HttpServer
      • WebSocket
      • PHP+Swoole聊天室
    • 微信開發(微擎/ EasyWechat)

      • 微信公眾平臺概述
      • 微信開發前期準備
      • 微信6大接收介面
      • 微信6大回復介面
      • 微信LBS介面開發
      • 微信機器人開發
      • 響應式設計
      • 微擎/EasyWechat
      • 微信綜合案例
    • 微信小程式 (前端進階)

      • 微信框架
      • 小程式介面設計
      • API介面設計
      • 小程式資料繫結
      • 小程式效能優化與實踐
      • 小程式入門概念及演示
      • 小程式開發工具介紹與建立quick_start專案
      • 小程式檔案結構
      • wxml
      • wxss
      • 常用元件(view,image,text,navigator,swiper等)
      • 小程式常用api
    • 微信公眾號 (前端進階)

      • 用JS-SDK技術做分享、拍照、支付、登入等功能。
  • 知識擴充

    • 前後端分離

      • 目前市面上都是前後端分離
      • 主要目的是 解耦 分離架構.
      • 前後端使用JSON交流,後端架構語言如何選擇將和前端沒有關係
      • 聽說 TDD (Test-driven development,測試驅動開發) 可以改善程式碼的質量,我們便實施了 TDD;接著,聽說 BDD (Behavior-driven development,行為驅動開發) 可以交付符合業務需求的軟體,我們便實施了 BDD;後來,聽說 DDD (Domain-driven design,領域驅動設計) 可以分離業務程式碼與基礎程式碼,我們便實施了 DDD。今天,聽說了前後端分離很流行,於是我們就實施了前後端分離——這就是傳說中的 HDD(Hype-driven Development,熱鬧驅動開發)
      • 前後端只通過 JSON 來交流,元件化、工程化不需要依賴後端去實現。
      • 前後端分離和微服務一樣,漸漸地影響了新的大型系統的架構。微服務和前後端分離要解決是類似的問題,解耦——可以解耦複雜的業務邏輯,解耦架構。可要是說相像吧,訊息隊伍和前後端便相似一些,通過傳遞資料的形式來解耦元件。
    • TCP/IP 協議

      • TCP/IP協議簇是Internet的基礎,也是當今最流行的組網形式。TCP/IP是一組協議的代名詞,包括許多別的協議,組成了TCP/IP協議簇。其中比較重要的有SLIP協議、PPP協議、IP協議、ICMP協議、ARP協議、TCP協議、UDP協議、FTP協議、DNS協議、SMTP協議等。
    • HTTP協議

      • 閱讀 圖解HTTP
    • OSI參考模型

      • OSI(Open System Interconnect),即開放式系統互聯。 一般都叫OSI參考模型,是ISO(國際標準化組織)組織在1985年研究的網路互聯模型。該體系結構標準定義了網路互連的七層框架(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層),即ISO開放系統互連參考模型。在這一框架下進一步詳細規定了每一層的功能,以實現開放系統環境中的互連性、互操作性和應用的可移植性。
    • web service 服務端應用

      • webService 三要素

        • SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一, soap用來描述傳遞資訊的格式, WSDL 用來描述如何訪問具體的介面, uddi用來管理,分發,查詢webService 。具體實現可以搜尋 Web Services簡單例項 ; SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文字傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支援從訊息系統到遠端過程呼叫(RPC)等大量的應用程式。SOAP使用基於XML的資料結構和超文字傳輸協議(HTTP)的組合定義了一個標準的方法來使用Internet上各種不同操作環境中的分散式物件。
        • SMTP 隸屬於 TCP/IP協議
      • Web service是一個平臺獨立的,低耦合的,自包含的、基於可程式設計的web的應用程式,可使用開放的XML(標準通用標記語言下的一個子集)標準來描述、釋出、發現、協調和配置這些應用程式,用於開發分散式的互操作的應用程式。 [1] 
      • Web Service技術, 能使得執行在不同機器上的不同應用無須藉助附加的、專門的第三方軟體或硬體, 就可相互交換資料或整合。依據Web Service規範實施的應用之間, 無論它們所使用的語言、 平臺或內部協議是什麼, 都可以相互交換資料。Web Service是自描述、 自包含的可用網路模組, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用介面的花費。Web Service為整個企業甚至多個組織之間的業務流程的整合提供了一個通用機制。
      • web廣泛用到的技術:
        . TCP/IP:通用網路協議,被各種裝置使用

        . HTML(標準通用標記語言下的一個應用):通用使用者介面,可以使用HTML標籤顯示資料

        . .NET: 不同應用程式間共享資料與資料交換

        . Java:寫一次可以在任何系統執行的通用程式語言,因為java具有跨平臺特性

        . XML(標準通用標記語言下的一個子集):通用資料表達語言,在web上傳送結構化資料的容易方法

    • Apache Nginx IIS >伺服器軟體

      • Apache

        • Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。
        • Apache HTTP伺服器是一個模組化的伺服器,源於NCSAhttpd伺服器,經過多次修改,成為世界使用排名第一的Web伺服器軟體。
      • Nginx

        • Nginx (engine x) 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0釋出於2004年10月4日。
      • 其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4釋出。
        Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同型別的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。
      • IIS

        • iis是Internet Information Services的縮寫,意為網際網路資訊服務,是由微軟公司提供的基於執行Microsoft Windows的網際網路基本服務。最初是Windows NT版本的可選包,隨後內建在Windows 2000、Windows XP Professional和Windows Server 2003一起發行,但在Windows XP Home版本上並沒有IIS。IIS是一種Web(網頁)服務元件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器,分別用於網頁瀏覽、檔案傳輸、新聞服務和郵件傳送等方面,它使得在網路(包括網際網路和區域網)上釋出資訊成了一件很容易的事。 [1] 
      • IIS的安全脆弱性曾長時間被業內詬病,一旦IIS出現遠端執行漏洞威脅將會非常嚴重。遠端執行程式碼漏洞存在於 HTTP 協議堆疊 (HTTP.sys) 中,當 HTTP.sys 未正確分析經特殊設計的 HTTP 請求時會導致此漏洞。 成功利用此漏洞的攻擊者可以在系統帳戶的上下文中執行任意程式碼,可以導致IIS伺服器所在機器藍屏或讀取其記憶體中的機密資料。
    • web server 網頁端伺服器

      • Web伺服器一般指網站伺服器,是指駐留於因特網上某種型別計算機的程式,可以向瀏覽器等Web客戶端提供文件, [1]  也可以放置網站檔案,讓全世界瀏覽;可以放置資料檔案,讓全世界下載。目前最主流的三個Web伺服器是Apache Nginx IIS。
    • Weblogic Tomcat Jboss > 應用伺服器

      • weblogic

        • WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基於JAVAEE架構的中介軟體,WebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。將Java的動態功能和Java Enterprise標準的安全性引入大型網路應用的開發、整合、部署和管理之中。
      • WebLogic是美商Oracle的主要產品之一,是併購BEA得來。是商業市場上主要的Java(J2EE)應用伺服器軟體(application server)之一,是世界上第一個成功商業化的J2EE應用伺服器, 已推出到12c(12.2.1.3) 版。而此產品也延伸出WebLogic Portal,WebLogic Integration等企業用的中介軟體(但當下Oracle主要以Fusion Middleware融合中介軟體來取代這些WebLogic Server之外的企業包),以及OEPE(Oracle Enterprise Pack for Eclipse)開發工具。
      • Tomcat

        • Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 專案中的一個核心專案,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支援,最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現,Tomcat 5支援最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、效能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。
        • Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 伺服器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 伺服器的擴充套件,但執行時它是獨立執行的,所以當你執行tomcat 時,它實際上作為一個與Apache 獨立的程式單獨執行的。
      • Jboss

        • 是一個基於J2EE的開放原始碼的應用伺服器。 JBoss程式碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和伺服器,支援EJB 1.1、EJB 2.0和EJB3的規範。但JBoss核心服務不包括支援servlet/JSP的WEB容器,一般與Tomcat或Jetty繫結使用。
    • RESTful API互動(如jQuery Ajax,Fetch API,ReactiveX)

      • Fetch API (新一代HTML請求方式)
      • ReactiveX (響應式程式設計)

        • ReactiveX 是一個基於一系列可觀察的非同步和基礎事件程式設計組成的一個庫。
        • 它繼承觀察者模式,支援序列資料或者事件。更高階的用法允許你將如下的一些抽象概念操作一起聯合使用,比如低執行緒,同步,執行緒安全,資料併發,非阻塞I/O流。
        • 它通常被稱為“函式響應式程式設計”,這是用詞不當的。ReactiveX 可以是函式式的,可以是響應式的,但是和“函式響應式程式設計”是不同的概覽。一個主要的不同點是“函式響應式程式設計”是對隨著時間不停變化的值進行操作的,而ReactiveX是對超時提交產生的離散值上。
        • ReactiveX 簡稱 Rx,全稱 Reactive Extensions,最初是LINQ的一個擴充套件,由微軟的架構師Erik Meijer領導的團隊開發,在2012年11月開源,Rx是一個程式設計模型,目標是提供一致的程式設計介面,幫助開發者更方便的處理非同步資料流,Rx庫支援.NET、JavaScript和C++,Java等幾乎所有的程式語言。Rx擴充套件了觀察者模式用於支援資料和事件序列,新增了一些操作符,它讓你可以宣告式的組合這些序列,而無需關注底層的實現:如執行緒、同步、執行緒安全、併發資料結構和非阻塞IO。
        • Reactive: 響應式
        • LINQ: Language Integrated Query的簡稱,它是整合在.NET程式語言中的一種特性。已成為程式語言的一個組成部分,在編寫程式時可以得到很好的編譯時語法檢查,豐富的後設資料,智慧感知、 靜態型別等強型別語言的好處。
        • 迭代器模式:核心思想是:通過定義遍歷或檢視物件中所有元素的方法的介面,並根據不同的類進行不同的方法實現相,已達到對類資料遍歷的抽象以及對類內部如何獲取資料的過程進行掩蓋的目的。當於Java中的Iterator(迭代器)有它的繼承介面如ListIterator和它的實現類等,我們在遍歷Set、Map時,用到他們的Iterator,這樣,他們具體怎麼拿出資料的過程,我們不用知道。
        • 觀察者模式:有時被稱作釋出/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。【下面RxJava的使用過程就是觀察者模式的體現】
        • Rx = Observables【用於表示非同步資料流】 + LINQ【用它的操作符查詢非同步資料流】 + Schedules【引數化非同步資料流的併發處理】
        • Rx用到的設計模式精華:觀察者模式、迭代器模式
    • MVC & MVVM (設計模式)

      • 閱讀 設計模式相關書籍
      • 針對不同語言有著不同定義.
      • 最典型的MVC就是JSP + servlet + javabean的模式
    • I/O (輸入輸出)

      • I/O(input/output),即輸入/輸出埠。每個裝置都會有一個專用的I/O地址,用來處理自己的輸入輸出資訊。CPU與外部裝置、儲存器的連線和資料交換都需要通過介面裝置來實現,前者被稱為I/O介面,而後者則被稱為儲存器介面。儲存器通常在CPU的同步控制下工作,介面電路比較簡單;而I/O裝置品種繁多,其相應的介面電路也各不相同,因此,習慣上說到介面只是指I/O介面。
    • C/S & B/S

      • B/S

        • B/S結構(Browser/Server,瀏覽器/伺服器模式),是WEB興起後的一種網路結構模式,WEB瀏覽器是客戶端最主要的應用軟體。這種模式統一了客戶端,將系統功能實現的核心部分集中到伺服器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器(Browser英 [`braʊzə]美 [`braʊzɚ]),如Netscape Navigator或Internet Explorer,伺服器安裝SQL Server、Oracle、MYSQL等資料庫。瀏覽器通過Web Server 同資料庫進行資料互動。
      • C/S

        • Client/Server結構(C/S結構)是大家熟知的客戶機和伺服器結構。它是軟體系統體系結構,通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。目前大多數應用軟體系統都是Client/Server形式的兩層結構,由於現在的軟體應用系統正在向分散式的Web應用發展,Web和Client/Server 應用都可以進行同樣的業務處理,應用不同的模組共享邏輯元件;因此,內部的和外部的使用者都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴充套件出新的應用系統。這也就是目前應用系統的發展方向。
    • SOA 面向服務架構

      • 面向服務的架構(SOA)是一個元件模型,它將應用程式的不同功能單元(稱為服務)通過這些服務之間定義良好的介面和契約聯絡起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平臺、作業系統和程式語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行互動。
    • J2EE 架構

      • J2EE(Java 2 Platform, Enterprise Edition)是一個為大企業主機級的計算型別而設計的Java平臺。Sun微系統(與其工業夥伴一起,例如IBM)設計了J2EE,以此來簡化在受客戶級環境下的應用開發。由於創造了標準的可重用模組元件以及由於構建出能自動處理程式設計中多方面問題的等級結構,J2EE簡化了應用程式的開發,也降低了對程式設計和對受訓的程式設計師的要求。
      • J2EE是一套全然不同於傳統應用開發的技術架構,包含許多元件,主要可簡化且規範應用系統的開發與部署,進而提高可移植性、安全與再用價值。
      • J2EE核心是一組技術規範與指南,其中所包含的各類元件、服務架構及技術層次,均有共同的標準及規格,讓各種依循J2EE架構的不同平臺之間,存在良好的相容性,解決過去企業後端使用的資訊產品彼此之間無法相容,企業內部或外部難以互通的窘境。
      • J2EE元件和“標準的” Java類的不同點在於:它被裝配在一個J2EE應用中,具有固定的格式並遵守J2EE規範,由J2EE伺服器對其進行管理。J2EE規範是這樣定義J2EE元件的:客戶端應用程式和applet是執行在客戶端的元件;Java Servlet和Java Server Pages (JSP) 是執行在伺服器端的Web元件;Enterprise Java Bean (EJB )元件是執行在伺服器端的業務元件。
    • 路由概念 (網路層)
    • 微服務

      • 在介紹微服務時,首先得先理解什麼是微服務,顧名思義,微服務得從兩個方面去理解,什麼是”微”、什麼是”服務”, 微 狹義來講就是體積小、著名的”2 pizza 團隊”很好的詮釋了這一解釋(2 pizza 團隊最早是亞馬遜 CEO Bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要2個披薩就夠了 )。 而所謂服務,一定要區別於系統,服務一個或者一組相對較小且獨立的功能單元,是使用者可以感知最小功能集。
      • 微服務可以在“自己的程式”中執行,並通過“輕量級裝置與HTTP型API進行溝通”。關鍵在於該服務可以在自己的程式中執行。通過這一點我們就可以將服務公開與微服務架構(在現有系統中分佈一個API)區分開來。在服務公開中,許多服務都可以被內部獨立程式所限制。如果其中任何一個服務需要增加某種功能,那麼就必須縮小程式範圍。在微服務架構中,只需要在特定的某種服務中增加所需功能,而不影響整體程式。
      • 為什麼需要微服務
      • 在傳統的IT行業軟體大多都是各種獨立系統的堆砌,這些系統的問題總結來說就是擴充套件性差,可靠性不高,維護成本高。到後面引入了SOA服務化,但是,由於 SOA 早期均使用了匯流排模式,這種匯流排模式是與某種技術棧強繫結的,比如:J2EE。這導致很多企業的遺留系統很難對接,切換時間太長,成本太高,新系統穩定性的收斂也需要一些時間。最終 SOA 看起來很美,但卻成為了企業級奢侈品,中小公司都望而生畏。
    • Spring (面向介面開源框架)

      • Spring是一個開放原始碼的設計層面框架,他解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向介面的程式設計思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。
    • RESTful (軟體架構風格)

      • 一種軟體架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。
    • 授權(如HTTP Basic、JWT等等)

      • JWT

        • Json web token (JWT), 是為了在網路應用環境間傳遞宣告而執行的一種基於JSON的開放標準((RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登入(SSO)場景。JWT的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取資源,也可以增加一些額外的其它業務邏輯所必須的宣告資訊,該token也可直接被用於認證,也可被加密。
      • HTTP Basic

        • Basic Auth是開放平臺的兩種認證方式,簡單點說明就是每次請求API時都提供使用者的username和password。
      • OAuth

        • OAuth為使用者資源的授權提供了一個安全、開放的標準,將會是以後開發平臺普遍遵守的,目前Twitter、Sina微博、豆瓣、Google等都提供對它的支援。
    • wget & curl Linux常用命令

      • curl

        • curl是利用URL語法在命令列方式下工作的開原始檔傳輸工具。它被廣泛應用在Unix、多種Linux發行版中,並且有DOS和Win32、Win64下的移植版本。
      • wget

        • wget 是一個從網路上自動下載檔案的自由工具,支援通過 HTTP、HTTPS、FTP 三個最常見的 TCP/IP協議 下載,並可以使用 HTTP 代理。”wget” 這個名稱來源於 “World Wide Web” 與 “get” 的結合。
    • php-fpm ∈ FastCGI (通用閘道器介面) (php處理程式的)

      • php-fpm

        • PHP-FPM(FastCGI Process Manager:FastCGI程式管理器)是一個PHPFastCGI管理器,對於PHP 5.3.3之前的php來說,是一個補丁包 [1]  ,旨在將FastCGI程式管理整合進PHP包中。如果你使用的是PHP5.3.3之前的PHP的話,就必須將它patch到你的PHP原始碼中,在編譯安裝PHP後才可以使用。
        • 相對Spawn-FCGI,PHP-FPM在CPU和記憶體方面的控制都更勝一籌,而且前者很容易崩潰,必須用crontab進行監控,而PHP-FPM則沒有這種煩惱。
      • FastCGI

        • CGI全稱是“通用閘道器介面”(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程式進行“交談”的一種工具,其程式一般執行在網路伺服器上。 CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變數。如php,perl,tcl等。
        • FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要啟用後,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。它還支援分散式的運算, 即 FastCGI 程式可以在網站伺服器以外的主機上執行並且接受來自其它網站伺服器來的請求。
        • FastCGI是語言無關的、可伸縮架構的CGI開放擴充套件,其主要行為是將CGI直譯器程式保持在記憶體中並因此獲得較高的效能。眾所周知,CGI直譯器的反覆載入是CGI效能低下的主要原因,如果CGI直譯器保持在記憶體中並接受FastCGI程式管理器排程,則可以提供良好的效能、伸縮性、Fail- Over特性等等。
    • Ruby 面嚮物件語言

      • Ruby,一種簡單快捷的物件導向(物件導向程式設計)指令碼語言,在20世紀90年代由日本人松本行弘(Yukihiro Matsumoto)開發,遵守GPL協議和Ruby License。它的靈感與特性來自於 Perl、Smalltalk、Eiffel、Ada以及 Lisp 語言。由 Ruby 語言本身還發展出了JRuby(Java平臺)、IronRuby(.NET平臺)等其他平臺的 Ruby 語言替代品。Ruby的作者於1993年2月24日開始編寫Ruby,直至1995年12月才正式公開釋出於fj(新聞組)。因為Perl發音與6月誕生石pearl(珍珠)相同,因此Ruby以7月誕生石ruby(紅寶石)命名。
    • perl 一門指令碼語言

      • Perl,一種功能豐富的計算機程式語言,執行在超過100種計算機平臺上,適用廣泛,從大型機到便攜裝置,從快速原型建立到大規模可擴充套件開發。 [1] 
      • Perl最初的設計者為拉里·沃爾(Larry Wall),於1987年12月18日發表。現在的版本為Perl 6,於2015年12月25日更新。
      • Perl借取了C、sed、awk、shell 指令碼語言以及很多其他程式語言的特性,其中最重要的特性是它內部整合了正規表示式的功能,以及巨大的第三方程式碼庫CPAN。簡而言之,Perl像C一樣強大,像awk、sed等指令碼描述語言一樣方便,被Perl語言愛好者稱之為“一種擁有各種語言功能的夢幻指令碼語言”、“Unix 中的王牌工具”。
      • Perl 一般被稱為“實用報表提取語言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小寫的。一般,“Perl”,有大寫的 P,是指語言本身,而“perl”,小寫的 p,是指程式執行的直譯器。
    • Java SE /EE /ME (java語言分類)

      •  Java SE=Java Standard Edition
      • Java EE=Java Enterprise Edition
      • Java ME=Java Mobile Edition
      • SE主要用於桌面程式,控制檯開發(JFC)
      • EE企業級開發(JSP,EJB)
      • ME嵌入式開發(手機,小家電) 
    • less & sass CSS擴充套件語言

      • less

        • Less 是一門 CSS 預處理語言,它擴充了 CSS 語言,增加了諸如變數、混合(mixin)、函式等功能,讓 CSS 更易維護、方便製作主題、擴充。Less 可以執行在 Node 或瀏覽器端。
      • sass

        • Sass 擴充套件了 CSS3,增加了規則、變數、混入、選擇器、繼承等等特性。Sass 生成良好格式化的 CSS 程式碼,易於組織和維護。
        • SASS是對CSS3(層疊樣式表)的語法的一種擴充,它可以使用巢狀、混入、選擇子繼承等功能,可以更有效有彈性的寫出Stylesheet。Sass最後還是會編譯出合法的CSS讓瀏覽可以使用,也就是說它本身的語法並不太容易讓瀏覽器識別(雖然它和CSS的語法非常的像,幾乎一樣),因為它不是標準的CSS格式,在它的語法內部可以使用動態變數等,所以它更像一種極簡單的動態語言。
        • SASS是Ruby語言寫的,但是兩者的語法沒有關係。不懂Ruby,照樣使用。只是必須先安裝Ruby,然後再安裝SASS。
        • 假定你已經安裝好了Ruby,接著在命令列輸入下面的命令:
        • gem install sass
        • 然後,就可以使用了。
    • JSP (java伺服器頁面)

      • JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它 [1]  是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)檔案(.htm,.html)中插入Java程式段(Scriptlet)和JSP標記(tag),從而形成JSP檔案,字尾名為(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下執行,也能在其他作業系統上執行。
      • 它實現了Html語法中的java擴充套件(以 <%, %>形式)。JSP與Servlet一樣,是在伺服器端執行的。通常返回給客戶端的就是一個HTML文字,因此客戶端只要有瀏覽器就能瀏覽。
      • JSP技術使用Java程式語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支援可重用的基於元件的設計,使基於Web的應用程式的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。
      • Java Servlet是JSP的技術基礎,而且大型的Web應用程式的開發需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的物件導向,具有平臺無關性且安全可靠,主要面向因特網的所有特點。
    • ES6 / CoffeScript / TypeScript 轉譯語言

      • ES6

        • ES6是ECMAScript標準十餘年來變動最大的一個版本,其中新增了許多新的語法特性,既有大家耳熟能詳的Promise,也有聞所未聞的Proxy代理和Reflection反射;既有可以通過轉譯器(Transpiler)等方式在舊版本瀏覽器中實現相容的let、const、不定引數、展開運算子等功能,亦有無論如何都無法實現向前相容的尾呼叫優化。深入理解ES6的特性對於所有JavaScript開發者而言至關重要,在可預見的未來,ES6中引入的語言特性會成為JavaScript應用程式的主流特性
      • coffeScript

        • CoffeeScript是一套JavaScript的轉譯語言,建立者 Jeremy Ashkenas 戲稱它是- JavaScript 的不那麼鋪張的小兄弟。因為 CoffeeScript 會將類似 Ruby 語法的程式碼編譯成 JavaScript,而且大部分結構都相似,但不同的是 CoffeeScript 擁有更嚴格的語法。
      • TypeScript

        • 是一種由微軟開發的自由和開源的程式語言。它是JavaScript的一個超集,而且本質上向這個語言新增了可選的靜態型別和基於類的物件導向程式設計。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。2012年十月份,微軟釋出了首個公開版本的TypeScript,2013年6月19日,在經歷了一個預覽版之後微軟正式釋出了正式版TypeScript 0.9,向未來的TypeScript 1.0版邁進了很大一步。
    • YAML語言

      • YAML是“YAML不是一種記語言”的外語縮寫 [1]  (見前方參考資料原文內容);但為了強調這種語言以資料做為中心,而不是以置標語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的資料序列化格式,是一個可讀性高並且容易被人類閱讀,容易和指令碼語言互動,用來表達資料序列的程式語言。
      • 它是類似於標準通用標記語言的子集XML的資料描述語言,語法比XML簡單很多。
      • 使用場景

        • 指令碼語言

          • 由於實現簡單,解析成本很低,YAML特別適合在指令碼語言中使用。列一下現有的語言實現:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 除了Java 和 Go,其他都是指令碼語言。
        • 配置檔案

          • YAML做配置檔案也不錯。寫YAML要比寫XML快得多(無需關注標籤或引號),並且比ini文件功能更強。
          • 比如Ruby on Rails的配置就選用的YAML。對ROR而言,這很自然,也很省事.
          • 由於相容性問題,不同語言間的資料流轉建議不要用YAML.
        • 序列化
        • YAML比較適合做序列化。因為它是宿主語言資料型別直轉的。
    • DOM (網頁文件物件)

      • 文件物件模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴充套件標誌語言的標準程式設計介面。在網頁上,組織頁面(或文件)的物件被組織在一個樹形結構中,用來表示文件中物件的標準模型就稱為DOM。Document Object Model的歷史可以追溯至1990年代後期微軟與Netscape的“瀏覽器大戰”,雙方為了在JavaScript與JScript一決生死,於是大規模的賦予瀏覽器強大的功能。微軟在網頁技術上加入了不少專屬事物,既有VBScript、ActiveX、以及微軟自家的DHTML格式等,使不少網頁使用非微軟平臺及瀏覽器無法正常顯示。DOM即是當時蘊釀出來的傑作。
    • ajax 前端處理方式

      • Ajax 即“Asynchronous Javascript And XML”(非同步 JavaScript 和 XML),是指一種建立互動式網頁應用的網頁開發技術。

        • Ajax = 非同步 JavaScript 和 XML(標準通用標記語言的子集)。
        • Ajax 是一種用於建立快速動態網頁的技術。
        • Ajax 是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術
      • XMLHttpRequest 是 AJAX 的基礎。

        • XmlHttpRequest 術語縮寫為XHR,中文可以解釋為可擴充套件超文字傳輸請求。 
        • XMLHttpRequest 物件可以在不向伺服器提交整個頁面的情況下,實現區域性更新網頁。 
        • 簡單來說就是網路請求,然後響應以後使用JavaScript操作DOM
    • 資料格式(如JSON、XML)

      • JSON (輕量級的資料交換格式)

        • JSON(JavaScript Object Notation, JS 物件標記) 是一種輕量級的資料交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
      • XML (工作幾乎不用)

        • 可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。
        • 在電子計算機中,標記指計算機所能理解的資訊符號,通過此種標記,計算機之間可以處理包含各種的資訊比如文章等。它可以用來標記資料、定義資料型別,是一種允許使用者對自己的標記語言進行定義的源語言。 它非常適合全球資訊網傳輸,提供統一的方法來描述和交換獨立於應用程式或供應商的結構化資料。是Internet環境中跨平臺的、依賴於內容的技術,也是當今處理分散式結構資訊的有效工具。早在1998年,W3C就釋出了XML1.0規範,使用它來簡化Internet的文件資訊傳輸。
    • 構建系統(gulp、grunt、webpack等等)

      • gulp & grunt (前端構建工具) & npm (NodeJS包管理和分發工具)

        • npm

          • NPM的全稱是Node Package Manager ,是一個NodeJS包管理和分發工具,已經成為了非官方的釋出Node模組(包)的標準。
          • 如果你熟悉ruby的gem,Python的pypi、setuptools,PHP的pear,那麼你就知道NPM的作用是什麼了。
          • Nodejs自身提供了基本的模組,但是開發實際應用過程中僅僅依靠這些基本模組則還需要較多的工作。幸運的是,Nodejs庫和框架為我們提供了幫助,讓我們減少工作量。但是成百上千的庫或者框架管理起來又很麻煩,有了NPM,可以很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。
        • gulp

          • Gulp基於Node.js的前端構建工具,通過Gulp的外掛可以實現前端程式碼的編譯(sass、less)、壓縮、測試;圖片的壓縮;瀏覽器自動重新整理,還有許多強大的外掛可以在這裡查詢。比起Grunt不僅配置簡單而且更容易閱讀和維護
        • grunt

          • Grunt基於Node.js,安裝之前要先安裝Node.js。
          • 例如壓縮、編譯、單元測試、程式碼檢查等,自動化工具可以減輕你的勞動,簡化你的工作。
    • 程式碼質量(如JSLint / ESLint / TSLint / CSLint)

      • JSLint & CSSLint & TSLint (靜態程式碼分析) &CodeClimate(程式碼質量分析) (工程化)

        • JSLint

          • JSLint定義了一組編碼約定,這比ECMA定義的語言更為嚴格。這些編碼約定汲取了多年來的豐富編碼經驗,並以一條年代久遠的程式設計原則 作為宗旨:能做並不意味著應該做。JSLint會對它認為有的編碼實踐加標誌,另外還會指出哪些是明顯的錯誤,從而促使你養成好的 JavaScript編碼習慣。
        • CSSLint
        • TSLint
    • 安全性(如跨域)

      • 跨域一詞從字面意思看,就是跨域名嘛,但實際上跨域的範圍絕對不止那麼狹隘。具體概念如下:只要協議、域名、埠有任何一個不同,都被當作是不同的域。之所以會產生跨域這個問題呢,其實也很容易想明白,要是隨便引用外部檔案,不同標籤下的頁面引用類似的彼此的檔案,瀏覽器很容易懵逼的,安全也得不到保障了就。什麼事,都是安全第一嘛。但在安全限制的同時也給注入iframe或是ajax應用上帶來了不少麻煩。所以我們要通過一些方法使本域的js能夠操作其他域的頁面物件或者使其他域的js能操作本域的頁面物件(iframe之間)。
    • 網頁設計

      • 切頁面
      • Flexbox佈局
      • 網格佈局(Grid Layout)
      • 響應式設計
      • 線框圖(Wireframe)
      • 向量圖形 / 向量圖形動畫(如SVG)

        • 可縮放向量圖形是基於可擴充套件標記語言(標準通用標記語言的子集),用於描述二維向量圖形的一種圖形格式。它由全球資訊網聯盟制定,是一個開放標準。
    • 常用前端三駕馬車 react、vuejs、angularjs jQuery工具庫

      • Node.js Javascript執行環境(runtime)

        • Node.js是一個Javascript執行環境(runtime),釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下執行得更好。
        • V8引擎執行Javascript的速度非常快,效能非常好。 [1]  Node.js是一個基於Chrome JavaScript執行時建立的平臺, 用於方便地搭建響應速度快、易於擴充套件的網路應用。Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。
      • jQuery JS框架

        • jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript程式碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的程式碼,做更多的事情。它封裝JavaScript常用的功能程式碼,提供一種簡便的JavaScript設計模式,優化HTML文件操作、事件處理、動畫設計和Ajax互動。
      • React (Facebook內部專案)

        • React 起源於 Facebook 的內部專案,因為該公司對市場上所有 JavaScript MVC 框架,都不滿意,就決定自己寫一套,用來架設Instagram 的網站。做出來以後,發現這套東西很好用,就在2013年5月開源了。
        • React主要用於構建UI。你可以在React裡傳遞多種型別的引數,如宣告程式碼,幫助你渲染出UI、也可以是靜態的HTML DOM元素、也可以傳遞動態變數、甚至是可互動的應用元件。
      • AngularJS

        • AngularJS [1]  誕生於2009年,由Misko Hevery 等人建立,後為Google所收購。是一款優秀的前端JS框架,已經被用於Google的多款產品當中。AngularJS有著諸多特性,最為核心的是:MVW(Model-View-Whatever)、模組化、自動化雙向資料繫結、語義化標籤、依賴注入等等。
        • AngularJS 是一個 JavaScript框架。它是一個以 JavaScript 編寫的庫。它可通過 <script> 標籤新增到HTML 頁面。
        • AngularJS 通過 指令 擴充套件了 HTML,且通過 表示式 繫結資料到 HTML。
        • AngularJS 是以一個 JavaScript 檔案形式釋出的,可通過 script 標籤新增到網頁中。
    • bootstrap 前端框架

      • Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JavaScript 的,它簡潔靈活,使得 Web 開發更加快捷。 [1]  它由Twitter的設計師Mark Otto和Jacob Thornton合作開發,是一個CSS/HTML框架。Bootstrap提供了優雅的HTML和CSS規範,它即是由動態CSS語言Less寫成。Bootstrap一經推出後頗受歡迎,一直是GitHub上的熱門開源專案,包括NASA的MSNBC(微軟全國廣播公司)的Breaking News都使用了該專案。 [2]  國內一些移動開發者較為熟悉的框架,如WeX5前端開源框架等,也是基於Bootstrap原始碼進行效能優化而來。
      • 在2017年8月下旬,Bootstrap四周歲之際,Bootstrap團隊釋出了Bootstrap 4 alpha版,4的最主要變化包括以下方面:
        從 Less 遷移到 Sass

        1.改進網格系統

        2.預設彈性框支援

        3.Dropped wells, thumbnails, and panels for cards

        4.合併所有 HTML resets 到一個新的模組中:Reboot

        5.全新自定義選項

        6.不再支援 IE8

        7.重寫所有的 JavaScript 外掛

        8.改進工具提示和 popovers 的自動定位

        9.改進文件

        10.其他大量改進

    • WeX5 多端部署工具

      • WeX5遵循Apache開源協議,完全開源免費,上百個元件框架,全部開放,視覺化的元件框架,開發者可自定義元件,整合第三方元件,採用MVC設計模式,資料和檢視分離,頁面描述和程式碼邏輯分離,支援瀏覽器除錯、真機除錯、原生除錯,等多種除錯模式,開發者可掌握每一行程式碼。
      • WeX5一直堅持採用H5+CSS3+JS標準技術,一次開發,多端任意部署,確保開發者成果始終通用、不受限制。WeX5的混合應用開發模式能輕鬆呼叫手機裝置,如相機、地圖、通訊錄等,讓開發者輕鬆應對各類複雜資料應用,程式碼量減少80%。同時開發出的應用能夠媲美原生的執行體驗。
    • express & koa (nodeJS框架)
    • swig (nodejs前端模板引擎)

    • 技能

      • CSS / CSS3 動畫
      • 能封裝業務元件和公用元件.
      • JavaScript 動畫
      • Web字型嵌入
      • Icon 字型
      • 圖形和圖表
      • CSS / SVG Sprite(如glue)
      • DOM操作(如jQuery、React等等)
      • 模板引擎(如JSX、Handlebars、JSP、Mustache等等)

        • JSX

          • JSX是陣營的核心組成部分,它使用XML標記的方式去直接宣告介面,介面元件之間可以互相巢狀。可以理解為在JS中編寫與XML類似的語言,一種定義帶屬性樹結構(DOM結構)的語法,它的目的不是要在瀏覽器或者引擎中實現,它的目的是通過各種編譯器將這些標記編譯成標準的JS語言。
        • JSP

          • JSP技術使用Java程式語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支援可重用的基於元件的設計,使基於Web的應用程式的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。
        • Handlebars

          • Handlebars 是 JavaScript 一個語義模板庫,通過對view和data的分離來快速構建Web模板。它採用”Logic-less template”(無邏輯模版)的思路,在載入時被預編譯,而不是到了客戶端執行到程式碼時再去編譯, 這樣可以保證模板載入和執行的速度。Handlebars相容Mustache,你可以在Handlebars中匯入Mustache模板。
      • 除錯

        • 瀏覽器除錯
        • Debug工具
        • Wireshark / Charles抓包
        • 遠端裝置除錯(如Chrome Inspect Devices)
        • 單元測試
        • 服務測試
        • UI測試
        • 整合測試
      • 版本管理(如git、svn)
      • PHP頁面跳轉、埠監聽
      • 依賴管理
      • 包管理(如npm、bower)
      • 模組化(如CommonJS、WebPack)

        • commonJS

          • CommonJS API定義很多普通應用程式(主要指非瀏覽器的應用)使用的API,從而填補了這個空白。它的終極目標是提供一個類似Python,Ruby和Java標 準庫。這樣的話,開發者可以使用CommonJS API編寫應用程式,然後這些應用可以執行在不同的JavaScript直譯器和不同的主機環境中。在相容CommonJS的系統中,你可以使用 JavaScript程式開發
        • WebPack

          • WebPack可以看做是模組打包機:它做的事情是,分析你的專案結構,找到JavaScript模組以及其它的一些瀏覽器不能直接執行的擴充語言(Scss,TypeScript等),並將其轉換和打包為合適的格式供瀏覽器使用。
          • 其實Webpack和另外兩個並沒有太多的可比性,Gulp/Grunt是一種能夠優化前端的開發流程的工具,而WebPack是一種模組化的解決方案,不過Webpack的優點使得Webpack在很多場景下可以替代Gulp/Grunt類的工具。
          • Grunt和Gulp的工作方式是:在一個配置檔案中,指明對某些檔案進行類似編譯,組合,壓縮等任務的具體步驟,工具之後可以自動替你完成這些任務。
          • Grunt和Gulp的工作流程
          • Webpack的工作方式是:把你的專案當做一個整體,通過一個給定的主檔案(如:index.js),Webpack將從這個檔案開始找到你的專案的所有依賴檔案,使用loaders處理它們,最後打包為一個(或多個)瀏覽器可識別的JavaScript檔案。
          • Webpack的工作方式是:把你的專案當做一個整體,通過一個給定的主檔案(如:index.js),Webpack將從這個檔案開始找到你的專案的所有依賴檔案,使用loaders處理它們,最後打包為一個(或多個)瀏覽器可識別的JavaScript檔案。
      • 自動構建(指令碼)
      • 前端工程化開發測試 打包 釋出
      • 前端效能優化.
      • 在技術選型上,能給出你選擇的方案是最優的資料說明
    • 相容性

      • 跨瀏覽器測試 (Chrome,IE,Firefox,Safari等等)
      • 跨平臺測試(Windows、GNU/Linux,Mac OS等等)
      • 跨裝置測試(Desktop,Android,iOS,Windows Phone)
      • 跨版本測試(同一個瀏覽器的不同版本)
    • 正規表示式

      • 正規表示式由一個或多個字元型文字和/或元字元組成。在最簡單的格式下,正規表示式僅由字元文字組成,如正規表示式 cat。它被讀作字母 c,接著是字母 a 和 t,這種模式匹配 cat、location 和 catalog 之類的字串。可以用它們驗證資料、識別重複關鍵字的出現、檢測不必要的空格、分析字串、驗證電話號碼、郵政編碼、電子郵件地址、社會安全號碼、IP 地址、檔名和路徑名等的格式,也可以查詢如 HTML 標記、數字、日期之類的模式,或任意文字資料中符合任意模式的任何事物,並用其它的模式來替換它們。
    • 效能與優化

      • 可用性
      • 效能測試(特別是移動Web
      • 載入優化(如gzip壓縮、快取等等
      • PageSpeed / Yslow 優化

        • Page Speed最 初是Google內部使用的改進網頁設計的工具——它整合在Firefox的著名外掛Firebug中。當使用者執行Page Speed,可以立即獲得如何改進網頁載入速度的建議。
      • 壓縮(如Minify、Uglify、CleanCSS等等)

        • CleanCSS是一個免費的CSS精簡壓縮工具,通過這個線上工具,可以將你的CSS檔案壓縮、優化成更精簡,這將大大提高你的網站的載入速度。
    • SEO

      • SEO

        • SEO(Search Engine Optimization):漢譯為搜尋引擎優化。搜尋引擎優化是一種利用搜尋引擎的搜尋規則來提高目前網站在有關搜尋引擎內的自然排名的方式。SEO的目的理解是:為網站提供生態式的自我營銷解決方案,讓網站在行業內佔據領先地位,從而獲得品牌收益;SEO包含站外SEO和站內SEO兩方面;SEO是指為了從搜尋引擎中獲得更多的免費流量,從網站結構、內容建設方案、使用者互動傳播、頁面等角度進行合理規劃,使網站更適合搜尋引擎的索引原則的行為;使網站更適合搜尋引擎的索引原則又被稱為對搜尋引擎優化,對搜尋引擎優化不僅能夠提高SEO的效果,還會使搜尋引擎中顯示的網站相關資訊對使用者來說更具有吸引力。
      • Sitemap(站點地圖)

        • Sitemap 可方便網站管理員通知搜尋引擎他們網站上有哪些可供抓取的網頁。最簡單的 Sitemap 形式,就是XML 檔案,在其中列出網站中的網址以及關於每個網址的其他後設資料(上次更新的時間、更改的頻率以及相對於網站上其他網址的重要程度為何等),以便搜尋引擎可以更加智慧地抓取網站。
      • 頁面靜態內容生成

        • 靜態頁面,即靜態網頁,是實際存在的,無需經過伺服器的編譯,直接載入到客戶瀏覽器上顯示出來。靜態頁面需要佔一定的伺服器空間,且不能自主管理髮布更新的頁面,如果想更新網頁內容,要通過FTP軟體把檔案DOWN下來用網頁製作軟體修改(通過fso等技術例外)。常見的靜態頁面舉例:.html副檔名的、.htm副檔名的。
      • MicroData / MicroFormat

        • MicroData

          • Microdata 以自定義的詞彙表(vocabulary)為中心,可以想象 HTML5 中所有的元素集合為一個詞彙表,這個詞彙表包含描述段落(section) 或文章(article)的元素,但是不包含描述事件(event) 或組織(organization)的元素。如果想在 Web 頁面中表示一個事件或組織,則需要定義自己的詞彙表,Microdata 允許你這麼做,任何人都可以定義自己的詞彙表,並且將其包含在自己的 Web 頁面中。
        • MicroFormat

          • 微格式(Microformat),是通過語意相關讓內容人機可讀。網頁上的允許的微格式資料包括事件、人物、地點等,它可以被其他的軟體檢測到,並提取出相應的資訊,以及對資訊進行索引、搜尋、跨平臺的參考,把這些資訊以其他形式重複使用或組合。
      • 內部連結建設
    • 物件導向 & 程式導向
    • Laravel (PHP框架)

      • Laravel是一套簡潔、優雅的PHP Web開發框架(PHP Web Framework)。它可以讓你從麵條一樣雜亂的程式碼中解脫出來;它可以幫你構建一個完美的網路APP,而且每行程式碼都可以簡潔、富於表達力。
      • 在Laravel中已經具有了一套高階的PHP ActiveRecord實現 — Eloquent ORM。它能方便的將“約束(constraints)”應用到關係的雙方,這樣你就具有了對資料的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支援Fluent中查詢構造器(query-builder)的所有方法。
    • 個人部落格 HEXO
    • Java後臺

      • Java基礎

        • 閱讀 Head First Java
        • 掌握DOS系統常用基本命令
      • 物件導向

        • 匿名物件
        • 繼承
        • 多型
        • 抽象類
        • 介面
        • 內部類
      • 異常

        • 異常概述
        • 異常分類
        • 異常處理方案
        • 自定義異常
      • 集合

        • Collection介面下的常用集合
        • Map介面下的常用集合
        • 泛型
        • Iterator介面
      • I/O

        • 檔案
        • 位元組流
        • 位元組緩衝流
        • 轉換流
        • 序列化流
      • 多執行緒

        • 多執行緒執行原理
        • 多執行緒的實現方案
        • 執行緒生命週期
        • 執行緒同步
        • 執行緒池
      • 網路程式設計

        • 網路程式設計三要素
        • Socket原理機制
        • UDP傳輸
        • TCP傳輸
      • 反射

        • 類載入機制原理
        • 反射構造方法、欄位、方法
        • Properties配置檔案
      • XML

        • XML基本語法
        • XML的約束
        • XML的解析
        • BeanUtils的使用
      • 註解及動態代理

        • 註解的使用
        • 自定義註解
        • 動態代理Proxy
        • 類載入器
      • Mysql及JDBC開發

        • MySQL資料庫
        • JDBC開發
        • 連線池
        • DBUtils
        • JDBC事物管理
      • 前端技術

        • html
        • css
        • js
        • jQuery
        • BootStrap
      • javaWeb核心

        • Tomcat
        • Servlet
        • Request和Response
        • Cookie和Session
        • jsp , el , jstl
        • Filter
        • Listener
      • ajax應用

        • ajax
        • jQuery ajax
        • EasyUI
      • linux和redis

        • Linux
        • Redis
      • javaWeb應用

        • 通用BaseServlet抽取
        • 快取技術
        • JavaMail
        • 線上支付
        • 檔案上傳
        • Linux專案部署
        • 能夠完成B/S結構網站開發,具備了真實環境的專案部署能力,能夠完成中小型企業管理系統等傳統專案的開發。
      • 框架

        • Hibernate5

          • hibernate.cfg.xml配置
          • hbm.xml對映檔案詳解
          • PO物件狀態及狀態的轉換分析
          • Hibernate高階對映技術
          • Hibernate資料檢索技術
          • Hibernate效能優化技術
        • Struts2

          • struts.xml詳解及使用
          • 使用萬用字元定義action、動態方法呼叫
          • ActionContext及ServletActionContext使用
          • 模型驅動ModelDriven、屬性驅動.
          • 預設攔截器分析、自定義攔截器
          • OGNL表示式、值棧ValueStack分析
        • Spring

          • applicationContext.xml配置檔案編寫
          • IoC思想、DI依賴注入
          • 使用AspectJ切面程式設計
          • JdbcTemplate模板使用
          • 宣告式事務管理
          • SSH整合
        • CRM專案

          • 使用struts2+spring4+hibernate5 +svn來開發專案
          • 使用Jquery EasyUI進行佈局
          • 使用svn進行程式碼管理
        • oracle

          • 簡單查詢
          • oracle的常用函式
          • 多表查詢
          • 集合操作
          • DDL操作管理表
          • DML管理資料
          • 其它資料庫物件
          • PL/SQL程式設計
          • 儲存過程與儲存函式
          • 觸發器
        • maven

          • maven介紹
          • maven安裝
          • maven的入門程式
          • maven倉庫
          • 專案構建
          • 依賴管理
          • maven綜合案例
          • maven的私服
        • mybatis框架

          • mybatis框架原理
          • mybatis入門案例
          • mybatis開發DAO方式
          • mybatis輸入輸出對映
          • 動態sql
          • spring整合mybatis
        • springmvc框架

          • springmvc框架原理
          • springmvc入門案例
          • springmvc整合mybatis
          • 引數繫結
          • json資料互動
          • 攔截器
        • Lucene、solr框架

          • 什麼是全文檢索
          • Lucene實現全文檢索
          • Analyzer分析器
          • 索引維護
          • solr安裝配置
          • solr索引、solr搜尋、SolrJ
      • 綜合專案技能

        • 掌握Apache poi實現資料匯入匯出;
        • 掌握圖形報表的生成技術,如JfreeChart、HighChart、AmChart
        • 掌握Apache Shiro技術
        • 掌握BRAC認證模型,有效進行使用者許可權管理
        • SSH框架整合
        • 使用maven進行專案的分模組開發
        • 頁面佈局採用前端主流jQuery外掛easyui
        • 採用Redis實現快取機制
        • 採用Oracle資料庫
        • 引入WebService的CXF開發方式,並與Spring結合
        • 採用了BRAC認證模型,有效進行使用者許可權管理,同時加入當前流行的Shiro安全框架,從而高效快捷保證系統安全可靠
        • 加入了Quartz與spring整合實現定時任務排程
        • 引入JavaMail郵件機制,並實現Spring與JavaMail整合開發
        • 使用PowerDesigner建立企業級PDM模型
        • SSM框架整合
        • jsp+easyui檢視層展現
        • KindEditor富文字編輯器應用
        • Freemarker模板引擎實現頁面靜態化
        • Dubbo分散式呼叫技術
        • Nginx反向代理
        • Redis快取
        • Lucene/Solr全文檢索解決方案
        • FastDFS圖片伺服器
        • ActivieMQ訊息佇列
        • maven專案管理
        • svn/git實現專案程式碼和文件管理
        • zookeeper分散式協調服務
        • mycat中介軟體
      • 分散式事物
      • 分散式查詢
      • 微服務
      • 高併發
      • 容災
      • 容器化

結尾

文章是本人日常使用筆記軟體總結下來的,可能不太方便觀看,知識點有很多,如果有什麼知識點有漏掉還請評論告訴我,我會補上~.
歡迎來我個人部落格,我每天都會更新一些自己的筆記.

相關文章