全棧開發學習路線
- 前後端分離
- 目前市面上都是前後端分離
前 主要目的是 解耦 分離架構. - 前後端使用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上傳送結構化資料的容易方法
- webService 三要素
-
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網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。
- Nginx (engine x) 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0釋出於2004年10月4日。
-
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伺服器所在機器藍屏或讀取其記憶體中的機密資料。
- 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]
- Apache
-
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)開發工具。
- WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基於JAVAEE架構的中介軟體,WebLogic是用於開發、整合、部署和管理大型分散式Web應用、網路應用和資料庫應用的Java應用伺服器。將Java的動態功能和Java Enterprise標準的安全性引入大型網路應用的開發、整合、部署和管理之中。
-
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 獨立的程序單獨執行的。
- Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 專案中的一個核心專案,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支援,最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現,Tomcat 5支援最新的Servlet 2.4 和JSP 2.0 規範。因為Tomcat 技術先進、效能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web
應用伺服器。
-
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用到的設計模式精華:觀察者模式、迭代器模式
- ReactiveX 是一個基於一系列可觀察的非同步和基礎事件程式設計組成的一個庫。
-
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 應用都可以進行同樣的業務處理,應用不同的模組共享邏輯元件;因此,內部的和外部的使用者都可以訪問新的和現有的應用系統,通過現有應用系統中的邏輯可以擴展出新的應用系統。這也就是目前應用系統的發展方向。
- B/S
- 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等都提供對它的支援。
- JWT
- wget & curl Linux常用命令
- curl
- curl是利用URL語法在命令列方式下工作的開原始檔傳輸工具。它被廣泛應用在Unix、多種Linux發行版中,並且有DOS和Win32、Win64下的移植版本。
- wget
- wget 是一個從網路上自動下載檔案的自由工具,支援通過 HTTP、HTTPS、FTP 三個最常見的 TCP/IP協議 下載,並可以使用 HTTP 代理。”wget” 這個名稱來源於 “World Wide Web” 與 “get” 的結合。
- curl
-
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則沒有這種煩惱。
- PHP-FPM(FastCGI Process Manager:FastCGI程序管理器)是一個PHPFastCGI管理器,對於PHP 5.3.3之前的php來說,是一個補丁包 [1] ,旨在將FastCGI程序管理整合進PHP包中。如果你使用的是PHP5.3.3之前的PHP的話,就必須將它patch到你的PHP原始碼中,在編譯安裝PHP後才可以使用。
-
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,是指程式執行的直譯器。
- Perl,一種功能豐富的計算機程式語言,執行在超過100種計算機平臺上,適用廣泛,從大型機到便攜裝置,從快速原型建立到大規模可擴充套件開發。 [1]
-
Java SE /EE /ME (java語言分類)
-
Java SE=Java Standard Edition
Java EE=Java Enterprise Edition
Java ME=Java Mobile EditionSE主要用於桌面程式,控制檯開發(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
然後,就可以使用了。
-
- less
-
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技術的簡單易用,完全的面向物件,具有平臺無關性且安全可靠,主要面向因特網的所有特點。
- JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計,它 [1] 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)檔案(.htm,.html)中插入Java程式段(Scriptlet)和JSP標記(tag),從而形成JSP檔案,字尾名為(*.jsp)。
用JSP開發的Web應用是跨平臺的,既能在Linux下執行,也能在其他作業系統上執行。
-
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版邁進了很大一步。
- ES6
-
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比較適合做序列化。因為它是宿主語言資料型別直轉的。
-
- YAML是“YAML不是一種記語言”的外語縮寫 [1] (見前方參考資料原文內容);但為了強調這種語言以資料做為中心,而不是以置標語言為重點,而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的資料序列化格式,是一個可讀性高並且容易被人類閱讀,容易和指令碼語言互動,用來表達資料序列的程式語言。
- 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
- Ajax 即“Asynchronous Javascript And XML”(非同步 JavaScript 和 XML),是指一種建立互動式網頁應用的網頁開發技術。
-
資料格式(如JSON、XML)
- JSON (輕量級的資料交換格式)
- JSON(JavaScript Object Notation, JS 物件標記) 是一種輕量級的資料交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
- XML (工作幾乎不用)
- 可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。
在電子計算機中,標記指計算機所能理解的資訊符號,通過此種標記,計算機之間可以處理包含各種的資訊比如文章等。它可以用來標記資料、定義資料型別,是一種允許使用者對自己的標記語言進行定義的源語言。 它非常適合全球資訊網傳輸,提供統一的方法來描述和交換獨立於應用程式或供應商的結構化資料。是Internet環境中跨平臺的、依賴於內容的技術,也是當今處理分散式結構資訊的有效工具。早在1998年,W3C就釋出了XML1.0規範,使用它來簡化Internet的文件資訊傳輸。
- 可擴充套件標記語言,標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。
- JSON (輕量級的資料交換格式)
-
構建系統(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,可以很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。
- NPM的全稱是Node Package Manager ,是一個NodeJS包管理和分發工具,已經成為了非官方的釋出Node模組(包)的標準。
- gulp
- Gulp基於Node.js的前端構建工具,通過Gulp的外掛可以實現前端程式碼的編譯(sass、less)、壓縮、測試;圖片的壓縮;瀏覽器自動重新整理,還有許多強大的外掛可以在這裡查詢。比起Grunt不僅配置簡單而且更容易閱讀和維護
- grunt
- Grunt基於Node.js,安裝之前要先安裝Node.js。
- 例如壓縮、編譯、單元測試、程式碼檢查等,自動化工具可以減輕你的勞動,簡化你的工作。
- npm
- gulp & grunt (前端構建工具) & npm (NodeJS包管理和分發工具)
- 程式碼質量(如JSLint / ESLint / TSLint / CSLint)
- JSLint & CSSLint & TSLint (靜態程式碼分析) &CodeClimate(程式碼質量分析) (工程化)
- JSLint
- JSLint定義了一組編碼約定,這比ECMA定義的語言更為嚴格。這些編碼約定汲取了多年來的豐富編碼經驗,並以一條年代久遠的程式設計原則 作為宗旨:能做並不意味著應該做。JSLint會對它認為有的編碼實踐加標誌,另外還會指出哪些是明顯的錯誤,從而促使你養成好的 JavaScript編碼習慣。
- CSSLint
- TSLint
- JSLint
- JSLint & CSSLint & TSLint (靜態程式碼分析) &CodeClimate(程式碼質量分析) (工程化)
- 安全性(如跨域)
- 跨域一詞從字面意思看,就是跨域名嘛,但實際上跨域的範圍絕對不止那麼狹隘。具體概念如下:只要協議、域名、埠有任何一個不同,都被當作是不同的域。之所以會產生跨域這個問題呢,其實也很容易想明白,要是隨便引用外部檔案,不同標籤下的頁面引用類似的彼此的檔案,瀏覽器很容易懵逼的,安全也得不到保障了就。什麼事,都是安全第一嘛。但在安全限制的同時也給注入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 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。
- Node.js是一個Javascript執行環境(runtime),釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下執行得更好。
-
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 標籤新增到網頁中。
- AngularJS [1] 誕生於2009年,由Misko Hevery 等人建立,後為Google所收購。是一款優秀的前端JS框架,已經被用於Google的多款產品當中。AngularJS有著諸多特性,最為核心的是:MVW(Model-View-Whatever)、模組化、自動化雙向資料繫結、語義化標籤、依賴注入等等。
- Node.js Javascript執行環境(runtime)
-
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 改進網格系統 預設彈性框支援 Dropped wells, thumbnails, and panels for cards 合併所有 HTML resets 到一個新的模組中:Reboot 全新自定義選項 不再支援 IE8 重寫所有的 JavaScript 外掛 改進工具提示和 popovers 的自動定位 改進文件 其他大量改進