漢服放量是什么意思(漢服的放量)
2024-07-03
更新時間:2024-07-03 09:01:27作者:未知
作為一枚Java程序員,需要掌握哪些技術和工具才能完成一個JavaWeb項目呢?今天羅列一些常用技術和工具,這些技術都是我這10年工作中用的比較多的,我知道技術棧遠不止這些,本人只列自己熟悉和用的最多的,完成一個項目絕對夠用了。說這么多技術不是讓大家都要熟悉,有些太老的現在也用的少了甚至不用了,本人主要結合我這10年開發(fā)經驗告訴大家JavaWeb的常用技術棧。
下面這張是技術棧思維導圖:
什么是技術棧? 舉個例子: 開發(fā)一個普通管理系統(tǒng),會用到Sprin Boot+MyBatis+Spring+Mysql+Redis+RabbitMq+Nginx+Vue+Shiro+html+等等,這些技術合起來就可以稱為技術棧。
我將技術棧大致分為5大塊:前端、后端、中間件、數據庫和工具。
JSP全稱Java Server Pages,是一種動態(tài)網頁開發(fā)技術。它使用JSP標簽在HTML網頁中插入Java代碼。
JSP本質上是一個servlet,主要用于實現Java web應用程序的用戶界面部分。
<html> <head> <title>第一個 JSP 程序</title> </head> <body> <% out.println("Hello World!"); %> </body></html>
JSP這種網頁技術我猜5年以下的程序員基本沒接觸過,10年前我接觸的項目前端基本都是采用的JSP技術,jsp配合各種html+jquery/JavaScript+css完成前端頁面開發(fā)。
DWZ、EasyUI、EXT、BootStrap、KendoUI 都是基于基于 HTML、CSS、JavaScript/jquery的一些富文本客戶端UI框架,在當時簡直是后端開發(fā)人員的福音。這些框架最大的特點就是官網上提供了各種組件的使用方法,后端人員只要套到JSP頁面中,進行數據渲染即可。這些UI框架風格基本已經固定,更適合開發(fā)一些管理類系統(tǒng),都包括:強大的數據源,通用的拖拉(Drag-and-Drop)功能,模板,和UI控件。
是中國人自己開發(fā)的基于jQuery實現的Ajax RIA開源框架,設計目標是簡單實用,快速開發(fā),降低ajax開發(fā)成本。
官網:https://jui.org/
easyui是一種基于jQuery的用戶界面插件集合,為創(chuàng)建現代化,互動,JavaScript應用程序,提供必要的功能。使用easyui你不需要寫很多代碼,你只需要通過編寫一些簡單HTML標記,就可以定義用戶界面,為網頁開發(fā)的時間和規(guī)模。
官網;http://www.jeasyui.com/
ExtJS是基于YUI(雅虎用戶界面)的sencha的JavaScript框架和產品,它基本上是具有現代UI的桌面應用程序開發(fā)平臺。
中文官網:
http://extjs-doc-cn.github.io/ext4api/#!/api/Ext
bootstrap是Twitter推出的一個用于前端開發(fā)的開源工具包
中文官網:https://www.bootcss.com/
是一套 JavaScript 函式庫,提供抽象化、可自訂主題的 GUI 控制項與動畫效果?;?jQuery JavaScript 函式庫,可用來建構互動式的 Web 應用
官網:http://www.kendoui.io/
FreeMarker是一個免費的模板引擎,一個基于模板生成文本輸出的通用工具,使用純Java編寫的,用來生成HTML Web頁面,特別是基于MVC模式的應用程序。通常由Java程序準備要顯示的數據,由FreeMarker生成頁面,通過模板顯示準備的數據(如下圖)
FreeMarker不是一個Web應用框架,FreeMarker與容器無關,也可以在模板中使用JSP標記庫。
<html><head> <title>Welcome!</title></head><body> <h1>Welcome ${user}!</h1> <p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>!</body></html>
上面很多前端框架都是基于html的,需要你有js/jq、css基礎,這是所有前端框架的基礎。因為光框架有時并不能滿足我們的需求,有時需要對框架無法實現的功能需要在框架基礎上調整;還有這個飛速發(fā)展的互聯網時代,對前端的要求越來越高,原生html得到了快速發(fā)展,基本所有前端效果使用原生時可以實現的。
vue.js 使用了基于 HTML 的模板語法,允許開發(fā)者聲明式地將 DOM 綁定至底層 Vue 實例的數據。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循規(guī)范的瀏覽器和 HTML 解析器解析。
在底層的實現上,Vue 將模板編譯成虛擬 DOM 渲染函數。結合響應系統(tǒng),Vue 能夠智能地計算出最少需要重新渲染多少組件,并把 DOM 操作次數減到最少。
VUE+elementUI目前使用最多的,尤其是開發(fā)一些后臺管理系統(tǒng)還是比較簡單便捷的。
servlet是Server Applet的簡稱,翻譯過來就是服務程序,簡單的講就是是運行在服務器上的一個小程序,用來處理服務器請求的。我們通過瀏覽器訪問一個應用,在這個過程中,我們的瀏覽器發(fā)送訪問請求,服務器接收請求,并對瀏覽器的請求作出相應的處理,這就是我們熟悉的B/S模型(瀏覽器-服務器模型).而servlet就是對請求作出處理的組件,運行于支持Java的應用服務器中。如圖如是:
struts主要是指struts1和struts2,是經典的MVC框架,除去一些老項目,現在用的越來越少了。但struts1和struts2還是有區(qū)別的,主要區(qū)別二者本質不一樣。
struts1:通過采用Java Servlet/JSP技術,實現了基于Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典產品。
struts2:以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業(yè)務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。
最經典的組合strutsMVC+SPring+Hibernate,號稱SSH,當年都是面試必問的技術。
Spring框架是一個開源Java應用框架,解決了開發(fā)者在開發(fā)中遇到的許多常見的問題,提供了功能強大IOC、AOP及Web MVC等功能。Spring可以單獨應用于應用程序,也可以和Struts、Webwork等眾多Web框架組合使用。Spring框架主要由七部分組成,分別是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
JDBC(Java Data Base Connectivity,java數據庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數據庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發(fā)人員能夠編寫數據庫應用程序。
早期項目大部分都是通過對JDBC封裝來操作數據庫,實現增刪改查,對性能考慮也不多,隨時間推移不斷衍生出很多框架,例如:mybatis,hibernate等。
iBATIS一詞來源于“internet”和“abatis”的組合,是一個由Clinton Begin在2001年發(fā)起的開放源代碼項目。最初側重于密碼軟件的開發(fā),現在是一個基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時還提供一個利用這個框架開發(fā)的JPetStore實例。
iBATIS 目前提供了三種語言實現的版本,包括:Java、.NET以及Ruby。
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis 。
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
Mybatis 增強工具包 – 只做增強不做改變,簡化CRUD操作
JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0注解或XML描述對象-關系表的映射關系,并將運行期的實體對象持久化到數據庫中。
Sun引入新的JPA ORM規(guī)范出于兩個原因:其一,簡化現有Java EE和Java SE應用開發(fā)工作;其二,Sun希望整合ORM技術,實現天下歸一。
SpringBoot是由Pivotal團隊在2013年開始研發(fā)、2014年4月發(fā)布第一個版本的全新開源的輕量級框架。它基于Spring4.0設計,不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發(fā)過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性等問題得到了很好的解決。
Spring Cloud 為開發(fā)者提供了在分布式系統(tǒng)(如配置管理、服務發(fā)現、斷路器、智能路由、微代理、控制總線、一次性 Token、全局鎖、決策競選、分布式會話和集群狀態(tài))操作的開發(fā)工具。使用 Spring Cloud 開發(fā)者可以快速實現上述這些模式。
Spring Cloud 的 GitHub 主頁:
https://github.com/spring-cloud
Dubbo 是阿里巴巴公司開源的一個高性能優(yōu)秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫集成。
主要核心部件:
Remoting: 網絡通信框架,實現了 sync-over-async 和 request-response 消息機制
RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集群功能
Registry: 服務目錄框架用于服務的注冊和服務事件發(fā)布和訂閱
Spring Cloud Alibaba 致力于提供分布式應用服務開發(fā)的一站式解決方案。此項目包含開發(fā)分布式應用服務的必需組件,方便開發(fā)者通過 Spring Cloud 編程模型輕松使用這些組件來開發(fā)分布式應用服務。
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以將 Spring Cloud 應用接入阿里分布式應用解決方案,通過阿里中間件來迅速搭建分布式應用系統(tǒng)。
Apache Shiro 是 Java 的一個安全框架。目前,使用 Apache Shiro 的人越來越多,因為它相當簡單,對比 Spring Security,可能沒有 Spring Security 做的功能強大,但是在實際工作時可能并不需要那么復雜的東西,所以使用小而簡單的 Shiro 就足夠了。對于它倆到底哪個好,這個不必糾結,能更簡單的解決項目問題就好了。
Spring Security是一個能夠為基于Spring的企業(yè)應用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應用系統(tǒng)提供聲明式的安全訪問控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫大量重復代碼的工作。
OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯系人列表),而無需將用戶名和密碼提供給第三方應用。
OAuth 2.0 是目前比較流行的做法,它率先被Google, Yahoo, Microsoft, Facebook等使用。之所以標注為 2.0,是因為最初有一個1.0協議,但這個1.0協議被弄得太復雜,易用性差,所以沒有得到普及。2.0是一個新的設計,協議簡單清晰,但它并不兼容1.0,可以說與1.0沒什么關系。
Maven 是 Apache 下的一個純 Java 開發(fā)的開源項目。利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟。是一個項目管理工具,可以對 Java 項目進行構建、依賴管理。
ant 是一個將軟件編譯、測試、部署等步驟聯系在一起加以自動化的一個工具,大多用于Java環(huán)境中的軟件開發(fā)。在實際軟件開發(fā)中,有很多地方可以用到ant。
Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化構建開源工具。它使用一種基于Groovy的特定領域語言(DSL)來聲明項目設置,目前也增加了基于Kotlin語言的kotlin-based DSL,拋棄了基于XML的各種繁瑣配置。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP 程序的首選
Apache(阿帕奇)是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一
Jetty 是一個開源的servlet容器,它為基于Java的web容器,例如JSP和servlet提供運行環(huán)境。
WebLogic Server是專門為企業(yè)電子商務應用系統(tǒng)開發(fā)的。企業(yè)電子商務應用系統(tǒng)需要快速開發(fā),并要求服務器端組件具有良好的靈活性和安全性,同時還要支持關鍵任務所必需的擴展、性能、和高可用性。WebLogic Server簡化了可移植及可擴展的應用系統(tǒng)的開發(fā),并為其它應用 系統(tǒng)和系統(tǒng)提供了豐富的互操作性。
Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發(fā)行。其特點是占有內存少,并發(fā)能力強。
緩存是現在系統(tǒng)中必不可少的模塊,并且已經成為了高并發(fā)高性能架構的一個關鍵組件。緩存的主要作用:提升性能和緩解數據庫壓力,
Redis是一個開源的內存數據結構存儲,用作數據庫、緩存和消息代理。提供諸如字符串、哈希、列表、集合、帶范圍查詢的排序集合、位圖、超日志、地理空間索引和流等數據結構。具有內置的復制、Lua腳本、LRU逐出、事務和不同級別的磁盤持久性,并通過Redis Sentinel和Redis Cluster的自動分區(qū)提供高可用性。
MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。
Memcached是一個自由開源的,高性能,分布式內存對象緩存系統(tǒng),用來提高Web應用擴展性的重要因素。是一個基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。簡潔而強大,它的簡潔設計便于快速開發(fā),減輕開發(fā)難度,解決了大數據量緩存的很多問題。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態(tài)Web應用的速度、提高可擴展性。
差異性我就不多說了,簡單說下他們的使用場景:
Memcached:動態(tài)系統(tǒng)中減輕數據庫負載,提升性能;做緩存,適合多讀少寫,大數據量的情況(如人人網大量查詢用戶信息、好友信息、文章信息等)。Redis:適用于對讀寫效率要求都很高,數據處理業(yè)務復雜和對安全性要求較高的系統(tǒng)(如新浪微博的計數和微博發(fā)布部分系統(tǒng),對數據安全性、讀寫要求都很高)。MongoDB:主要解決海量數據的訪問效率問題。Solr是一個獨立的企業(yè)級搜索應用服務器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果。
Elasticsearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口
es基本是開箱即用,非常簡單,Solr略微復雜。
Solr 支持更多格式的數據,比如JSON、XML、CSV,而 Elasticsearch 僅支持json文件格式。
Solr 查詢快,但更新索引時慢(即插入刪除慢),ES建立索引快(即查詢慢),即實時性查詢快。
之所以推薦ELK是因為面對分布式微服務情況下,會顯示出他的威力,不管是數據收集、數據處理、還是數據分析可以節(jié)約很多時間。ELK是Elasticsearch + Logstash + Kibana三個開源軟件的組合,但是通常為了提高性能需要借助kafka,利用Filebeat進行日志收集,下面這個架構圖是我做過的一個日志服務平臺。
說定定時任務大家可能都接觸過,例如Spring自帶的定時任務SpringTask,但是SpringTask是存在很多問題的,例如:最致命的一個問題就是一旦定時拋出異常,生命就結束,下一次不會再執(zhí)行。復雜業(yè)務中使用起來是不方便的,這里推薦兩個定時任務框架Quartz和xx-job,第三方的功能比較強大,好用。
Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,完全由Java開發(fā),可以用來執(zhí)行定時任務,類似于java.util.Timer。但是相較于Timer, Quartz增加了很多功能:
持久性作業(yè) – 就是保持調度定時的狀態(tài);作業(yè)管理 – 對調度作業(yè)進行有效的管理;XXL-JOB是一個輕量級分布式任務調度平臺,其核心設計目標是開發(fā)迅速、學習簡單、輕量級、易擴展?,F已開放源代碼并接入多家公司線上產品線,開箱即用。
目前已有多家公司接入xxl-job,包括比較知名的大眾點評,京東,優(yōu)信二手車,北京尚德,360金融 (360),聯想集團 (聯想),易信 (網易)等等…. Quartz作為開源作業(yè)調度中的佼佼者,是作業(yè)調度的首選
Quartz在集群環(huán)境下只能通過API的方式對任務管理,同時,系統(tǒng)侵入性相當嚴重,而XX-JOB可以完美解決集群下任務額管理。所以,可以根據自己業(yè)務情況選擇合適定時任務框架,
什么是配置中心?
集中將應用系統(tǒng)中對配置信息的管理作為一個新的應用功能模塊,區(qū)別與傳統(tǒng)的配置信息分散到系統(tǒng)各個角落方式,進行集中統(tǒng)一管理,并且提供額外功能。尤其是在微服務架構中,是不可或缺組件,甚至是必要組件之一。
為什么要使用配置中心?
在微服務體系中,服務的數量以及配置信息的日益增多,比如各種服務器參數配置、各種數據庫訪問參數配置、各種環(huán)境下應用配置信息的不同、配置信息修改之后實時生效等等,傳統(tǒng)的配置文件方式或者將配置信息存放于數據庫中的方式已無法滿足開發(fā)人員對配置管理的要求。常見的配置中心中間件有:SpringCloud Config ,Nacos,apollo等。
2014年9月開源,Spring Cloud 生態(tài)組件,可以和Spring Cloud體系無縫整合,Spring Cloud Config支持通過/bus/refresh端點的destination參數來指定要更新配置的機器,不過整個流程不夠自動化和體系化。相對于Apollo和Nacos還是比較弱的。
2018年6月,阿里開源的配置中心,也可以做DNS和RPC的服務發(fā)現。Nacos使用起來相對比較簡潔,在對性能要求比較高的大規(guī)模場景更適合。此外,Nacos除了提供配置中心的功能,還提供了動態(tài)服務發(fā)現、服務共享與管理的功能,降低了服務化改造過程中的難度。
2016年5月,攜程開源的配置管理中心,具備規(guī)范的權限、流程治理等特性,Apollo可以直接在控制臺上點灰度發(fā)布指定發(fā)布機器的IP,接著再全量發(fā)布,做得比較體系化。
核心功能: Apollo和Nacos相對于Spring Cloud Config的生態(tài)支持更廣
實時推送: Nacos和Apollo在配置實時推送鏈路上是比較簡單高效的,Spring Cloud Config比較復雜。
高可用部署: Nacos的部署結構比較簡單,運維成本較低。Apollo部署組件較多,運維成本比Nacos高。Spring Cloud Config生產高可用的成本最高。
服務器監(jiān)控是實時掌握服務器工作狀態(tài),并在需要時可以隨時調用監(jiān)控記錄進行查看。
Spring Boot Admin用來管理和監(jiān)控Spring Boot應用程序,通過UI來查看應用程序的狀態(tài),例如Spring Beans,系統(tǒng)屬性,線程,http的調用情況等有限狀態(tài)。
我知道Druid更多的用途就是連接池,其實他還有一個對SQL監(jiān)控功能。
Skywalking是由國內開源愛好者吳晟(原OneAPM工程師,目前在華為)開源并提交到Apache孵化器的產品,它同時吸收了Zipkin/Pinpoint/CAT的設計思路,支持非侵入式埋點。是一款基于分布式跟蹤的應用程序性能監(jiān)控系統(tǒng)。另外社區(qū)還發(fā)展出了一個叫OpenTracing的組織,旨在推進調用鏈監(jiān)控的一些規(guī)范和標準工作。
把涉及到數據庫相關或者可以作為數據倉庫的中間件都歸到一起了。
Mycat是一個開源數據庫中間件,是一個實現了MySQL協議的的數據庫中間件服務器,我們可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問Mycat,而Mycat再使用用MySQL原生(Native)協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲;一般地,Mycat主要用于代理MySQL數據庫,雖然它也支持去訪問其他類型的數據庫;
Mycat官網:http://www.mycat.io/
我們先看官網的介紹
canal,譯意為水道/管道/溝渠,主要用途是基于 MySQL 數據庫增量日志解析,提供增量數據訂閱和消費。
這句介紹有幾個關鍵字:增量日志,增量數據訂閱和消費。
這里我們可以簡單地把canal理解為一個用來同步增量數據的一個工具。
接下來我們看一張官網提供的示意圖:
定位為輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
主要功能
分庫 & 分表讀寫分離分布式主鍵ZooKeeper是Hadoop的正式子項目,它是一個針對大型分布式系統(tǒng)的可靠協調系統(tǒng),提供的功能包括:配置維護、名字服務、分布式同步、組服務等。ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
這個事務更多指的是分布式事務處理插件。
Apache ShardingSphere(Incubator) 是一套開源的分布式數據庫中間件解決方案組成的生態(tài)圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(規(guī)劃中)這3款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的數據分片、分布式事務和數據庫治理功能,可適用于如Java同構、異構語言、容器、云原生等各種多樣化的應用場景。
Seata 是 Simple Extensible Autonomous Transaction Architecture 的簡寫,由 feascar 改名而來。是阿里開源的分布式事務框架,屬于二階段提交模式。
消息隊列是一個存放消息的容器,當我們需要使用消息的時候可以取出消息供自己使用。消息隊列是分布式系統(tǒng)中重要的組件,使用消息隊列主要是為了通過異步處理提高系統(tǒng)性能和削峰、降低系統(tǒng)耦合性。目前使用較多的消息隊列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。
1.通過異步處理提高系統(tǒng)性能(削峰、減少響應所需時間);
2.降低系統(tǒng)耦合性;
Kafka是由Apache軟件基金會開發(fā)的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者在網站中的所有動作流數據。這些數據通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop一樣的日志數據和離線分析系統(tǒng),但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的并行加載機制來統(tǒng)一線上和離線的消息處理,也是為了通過集群來提供實時的消息。
AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、隊列、路由(包括點對點和發(fā)布/訂閱)、可靠性、安全。 RabbitMQ是一個開源的AMQP實現,服務器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲轉發(fā)消息,在易用性、擴展性、高可用性等方面表現不俗。
ActiveMQ是一種開源的基于JMS(Java Message Servie)規(guī)范的一種消息中間件的實現,ActiveMQ的設計目標是提供標準的,面向消息的,能夠跨越多語言和多系統(tǒng)的應用集成消息通信中間件。
特性 ActiveMQ RabbitMQ kafka 開發(fā)語言 java erlang scala 單機吞吐量 萬級 萬級 10萬級 時效性 ms級 us級 ms級以內 可用性 高(主從架構) 高(主從架構) 非常高(分布式架構) 功能特性 成熟的產品,在很多公司得到應用;有較多的文檔;各種協議支持較好 基于erlang開發(fā),所以并發(fā)能力很強,性能極其好,延時很低;管理界面較豐富 只支持主要的MQ功能,像一些消息查詢,消息回溯等功能沒有提供,畢竟是為大數據準備的,在大數據領域應用廣。
該數據庫主要是指關系型數據庫,是按照數據結構來組織、存儲和管理數據的倉庫,數據庫是存放數據的倉庫,是一個系統(tǒng)或者軟件必不可少的一部分。每個數據庫都有一個或多個不同的 API 用于創(chuàng)建,訪問,管理,搜索和復制所保存的數據。我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。
所以,現在我們使用關系型數據庫管理系統(tǒng)來存儲和管理大數據量。所謂的關系型數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。
關系數據庫管理系統(tǒng)的特點:
1.數據以表格的形式出現2.每行為各種記錄名稱3.每列為記錄名稱所對應的數據域4.許多的行和列組成一張表單5.若干的表單組成database常見的數據管理系統(tǒng)主要有:oracle、mysql、SQL Server、access、TiDB。
Oracle Database,簡稱 Oracle。Oracle 數據庫系統(tǒng)是美國 Oracle 公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是目前最流行的客戶/服務器(client/server)的數據庫之一。Oracle 數據庫是目前世界上使用最為廣泛的數據庫管理系統(tǒng),作為一個通用的數據庫系統(tǒng),它具有完整的數據管理功能;作為一個關系型數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能,但它的所有知識,只要在一種機型上學習了Oracle知識,便能在各種類型的機器上使用它。
MySQL 是最流行的關系型數據庫管理系統(tǒng),在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關系數據庫管理系統(tǒng))應用軟件之一。目前也是Oracle 公司來托管。
美國Microsoft公司推出的一種關系型數據庫系統(tǒng)。SQL Server是一個可擴展的、高性能的、為分布式客戶機/服務器計算所設計的數據庫管理系統(tǒng),實現了與WindowsNT的有機結合,提供了基于事務的企業(yè)級信息管理系統(tǒng)方案。
Access是微軟把數據庫引擎的圖形用戶界面和軟件開發(fā)工具結合在一起的一個數據庫管理系統(tǒng)。它是微軟OFFICE的一個成員, 在包括專業(yè)版和更高版本的office版本里面被單獨出售。
TiDB 是 PingCAP 公司自主設計、研發(fā)的開源分布式關系型數據庫,是一款同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式數據庫產品,具備水平擴容或者縮容、金融級高可用、實時 HTAP、云原生的分布式數據庫、兼容 MySQL 5.7 協議和 MySQL 生態(tài)等重要特性。目標是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數據規(guī)模較大等各種應用場景。
上面這幾個數據庫優(yōu)缺點都比較明顯,不在啰嗦了,大家在工作中可以根據自己實際情況選擇合適的數據。
IntelliJ在業(yè)界被公認為最好的java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設計等方面的功能可以說是超常的。IDEA是JetBrains公司的產品,這家公司總部位于捷克共和國的首都布拉格,開發(fā)人員以嚴謹著稱的東歐程序員為主。它的旗艦版本還支持HTML,CSS,PHP,MySQL,Python等。免費版只支持Java,Kotlin等少數語言。
Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺, 是 Java 的集成開發(fā)環(huán)境(IDE),當然 Eclipse 也可以作為其他開發(fā)語言的集成開發(fā)環(huán)境,如C,C++,PHP,和 Ruby 等。
MyEclipse,是在Eclipse 基礎上加上自己的插件開發(fā)而成的功能強大的企業(yè)級集成開發(fā)環(huán)境,主要用于Java、Java EE以及移動應用的開發(fā)。在最新版本的MyEclipse中,配合CodeMix使用支持也十分廣泛,尤其是對各種開源產品和主流開發(fā)框架的支持相當不錯。目前已支持PHP、Python、Vue、Angular、React、Java、Java EE等語言和框架開發(fā)。
這三款工具好壞我也不做任何評價,每個工具用戶都不少,我周圍IntelliJ IDEA和MyEclipse都有,我個人比較喜歡用IntelliJ IDEA。
常見的版本空間工具svn和git
TortoiseSVN 是 Subversion 版本控制系統(tǒng)的一個免費開源客戶端,可以超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改以外,版本庫非常像普通的文件服務器。你可以將文件恢復到過去的版本,并且可以通過檢查歷史知道數據做了哪些修改,誰做的修改。這就是為什么許多人將 Subversion 和版本控制系統(tǒng)看作一種“時間機器”。
Git 是用于Linux內核開發(fā)的版本控制工具。與常用的版本控制工具 Subversion 不同,它采用了分布式版本庫的方式,不必服務器端軟件支持,代碼的發(fā)布和交流極其方便。 Git 的速度很快,這樣的大項目來說自然很重要。 Git 最為出色的是它的合并跟蹤(merge tracing)能力。
SVN的特點是簡單,只是需要一個放代碼的地方時用是OK的。
Git的特點版本控制可以不依賴網絡做任何事情,對分支和合并有更好的支持(這應該算是開發(fā)者最關心的地方)。
Navicat是一套快速、可靠并價格相當便宜的數據庫管理工具,專為簡化數據庫的管理及降低系統(tǒng)管理成本而設。它的設計符合數據庫管理員、開發(fā)人員及中小企業(yè)的需要。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創(chuàng)建、組織、訪問并共用信息。
PL/SQL Developer是一個集成開發(fā)環(huán)境,專門開發(fā)面向Oracle數據庫的應用。PL/SQL也是一種程序語言,叫做過程化SQL語言(Procedural Language/SQL)。PL/SQL是Oracle數據庫對SQL語句的擴展。在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環(huán)等操作實現復雜的功能或者計算,PL/SQL 只有 Oracle 數據庫有。
Redis Desktop Manager是一款windows平臺下的可視化redis數據庫桌面管理工具,使用它你可以查看、刪除、修改你的redis數據庫數據!
XShell是一個強大的安全終端模擬軟件,它支持SSH1,SSH2,以及Microsoft Windows平臺的TELNET協議。 XShell可以在Windows界面下用來訪問遠端不同系統(tǒng)下的服務器,從而比較好的達到遠程控制終端的目的。
寶塔面板是一個可以安裝在服務器上的集成環(huán)境,并配套了web管理面板,可以在瀏覽器上直接控制你的服務器,非常方便。 可以一鍵創(chuàng)建網站、FTP、數據庫、SSL;安全管理,計劃任務,文件管理,PHP多版本共存及切換;自帶基礎網站環(huán)境,支持windows系統(tǒng)(apache)和linux系統(tǒng)(apache或nginx)。
Secure CRT 是一款SSH客戶端軟件,通過使用內含的VCP命令行程序可以進行加密文件的傳輸。
Postman一款非常流行的API調試工具。其實,開發(fā)人員用的更多。因為測試人員做接口測試會有更多選擇,例如Jmeter、soapUI等。不過,對于開發(fā)過程中去調試接口,Postman確實足夠的簡單方便,而且功能強大。
Typora+PicGo,最好用的Markdown+最好用的圖床工具!如果寫博客的可以收藏起來。
Notepad++中文版是程序員必備的文本編輯器,Notepad++中文版小巧高效,支持27種編程語言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等,Notepad++中文版編輯器可完美地取代微軟的記事本。
Office Visio 是Office軟件系列中的負責繪制流程圖和示意圖的軟件,是一款便于IT和商務人員就復雜信息、系統(tǒng)和流程進行可視化處理、分析和交流的軟件。使用具有專業(yè)外觀的 Office Visio 圖表,可以促進對系統(tǒng)和流程的了解,深入了解復雜信息并利用這些知識做出更好的業(yè)務決策。常見軟件架構、流程圖都可以在里面完成。
ProcessOn是一個在線作圖工具的聚合平臺, 它可以在線畫流程圖、思維導圖、UI原型圖、UML、網絡拓撲圖、組織結構圖等等, 您無需擔心下載和更新的問題,不管Mac還是Windows,一個瀏覽器就可以隨時隨地的發(fā)揮創(chuàng)意,規(guī)劃工作。
官網:
https://www.processon.com/
owerDesigner是一款非常全面的數據庫設計工具。使用PowerDesigner可以快速創(chuàng)建表,支持表與表之間建立關系,界面簡潔,功能強大。同時支持將sql腳本導出,多種導出類型任意挑選,簡單實用。
XMind 是一個全功能的思維導圖和頭腦風暴軟件,為激發(fā)靈感和創(chuàng)意而生。作為一款有效提升工作和生活效率的生產力工具,受到全球百千萬用戶的青睞。
說到 iReport 不得不先介紹 Jasperreport,Jasperreport 是一個報表制作程序,用戶需要按照它制定的規(guī)則編寫一個 XML 文件,然后得到用戶需要輸出的格式文件。它支持輸出的文件格式包括 PDF,HTML,XML,XLS,CVS 等等。而 iReport 就是一個制作 Jasperreport 的 XML 文件的可視化開發(fā)工具。
Google Chrome是一款由Google公司開發(fā)的網頁瀏覽器,該瀏覽器基于其他開源軟件撰寫,包括WebKit,目標是提升穩(wěn)定性、速度和安全性,并創(chuàng)造出簡單且有效率的使用者界面。
搜狗瀏覽器 由搜狗公司開發(fā),基于谷歌chromium內核,力求為用戶提供跨終端無縫使用體驗,讓上網更簡單、網頁閱讀更流暢的瀏覽器。
Mozilla Firefox,中文俗稱“火狐”,是一個由Mozilla開發(fā)的自由及開放源代碼的網頁瀏覽器。其使用Gecko排版引擎,支持多種操作系統(tǒng),如Windows、macOS及GNU/Linux等
Internet Explorer(簡稱:IE)是微軟公司微軟公司推出的一款網頁瀏覽器。原稱Microsoft Internet Explorer(6版本以前)和Windows Internet Explorer(7、8、9、10、11版本)。在IE7以前,中文直譯為“網絡探路者”,但在IE7以后官方便直接俗稱”IE瀏覽器”。
如果做前端開發(fā),這幾款瀏覽器兼容性都得兼顧。很早之前IE瀏覽器市場是比較大,隨著時間推移,谷歌瀏覽器占據了比較大的市場。我個人日常開發(fā)中谷歌用的比較多,特殊情況才會使用其它瀏覽器。
JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。 它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 服務程序、CGI 腳本、Java 對象、數據庫, 等等。
apache bench簡稱ab,它是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache服務器進行網站訪問壓力測試,也可以對或其它類型的服務器進行壓力測試。
MAT是Java堆內存分析工具,可從
http://www.eclipse.org/mat/中下載。
你在成為大神的路上都學習了哪些技術,歡迎留言交流。