java界面設計工具推薦,java界面設計工具

作為一枚Java程序員,需要掌握哪些技術和工具才能完成一個JavaWeb項目呢?今天羅列一些常用技術和工具,這些技術都是我這10年工作中用的比較多的,我知道技術棧遠不止這些,本人只列自己熟悉和用的最多的,完成一個項目絕對夠用了。說這麼多技術不是讓大家都要熟悉,有些太老的現在也用的少了甚至不用了,本人主要結合我這10年開發經驗告訴大家JavaWeb的常用技術棧。

下面這張是技術棧思維導圖:

2021Java 程序員最常用技術棧和工具集合(建議收藏)

技術棧

什麼是技術棧? 舉個例子: 開發一個普通管理系統,會用到Sprin Boot+MyBatis+Spring+Mysql+Redis+RabbitMq+Nginx+Vue+Shiro+html+等等,這些技術合起來就可以稱為技術棧。

我將技術棧大致分為5大塊:前端、後端、中間件、資料庫和工具。

前端

2021Java 程序員最常用技術棧和工具集合(建議收藏)

JSP

JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用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完成前端頁面開發。

前端框架

DWZ、EasyUI、EXT、BootStrap、KendoUI 都是基於基於 HTML、CSS、JavaScript/jquery的一些富文本客戶端UI框架,在當時簡直是後端開發人員的福音。這些框架最大的特點就是官網上提供了各種組件的使用方法,後端人員只要套到JSP頁面中,進行數據渲染即可。這些UI框架風格基本已經固定,更適合開發一些管理類系統,都包括:強大的數據源,通用的拖拉(Drag-and-Drop)功能,模板,和UI控制項。

DWZ

是中國人自己開發的基於jQuery實現的Ajax RIA開源框架,設計目標是簡單實用,快速開發,降低ajax開發成本。

官網:https://jui.org/

2021Java 程序員最常用技術棧和工具集合(建議收藏)

EasyUI

easyui是一種基於jQuery的用戶界面插件集合,為創建現代化,互動,JavaScript應用程序,提供必要的功能。使用easyui你不需要寫很多代碼,你只需要通過編寫一些簡單HTML標記,就可以定義用戶界面,為網頁開發的時間和規模。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

官網;http://www.jeasyui.com/

EXT

ExtJS是基於YUI(雅虎用戶界面)的sencha的JavaScript框架和產品,它基本上是具有現代UI的桌面應用程序開發平台。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

中文官網:
http://extjs-doc-cn.github.io/ext4api/#!/api/Ext

BootStrap

bootstrap是Twitter推出的一個用於前端開發的開源工具包

2021Java 程序員最常用技術棧和工具集合(建議收藏)

中文官網:https://www.bootcss.com/

KendoUI

是一套 JavaScript 函式庫,提供抽象化、可自訂主題的 GUI 控制項與動畫效果。基於 jQuery JavaScript 函式庫,可用來建構互動式的 Web 應用

官網:http://www.kendoui.io/

FreeMarker

FreeMarker是一個免費的模板引擎,一個基於模板生成文本輸出的通用工具,使用純Java編寫的,用來生成HTML Web頁面,特別是基於MVC模式的應用程序。通常由Java程序準備要顯示的數據,由FreeMarker生成頁面,通過模板顯示準備的數據(如下圖)

2021Java 程序員最常用技術棧和工具集合(建議收藏)

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

上面很多前端框架都是基於html的,需要你有js/jq、css基礎,這是所有前端框架的基礎。因為光框架有時並不能滿足我們的需求,有時需要對框架無法實現的功能需要在框架基礎上調整;還有這個飛速發展的互聯網時代,對前端的要求越來越高,原生html得到了快速發展,基本所有前端效果使用原生時可以實現的。

VUE

vue.js 使用了基於 HTML 的模板語法,允許開發者聲明式地將 DOM 綁定至底層 Vue 實例的數據。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循規範的瀏覽器和 HTML 解析器解析。

在底層的實現上,Vue 將模板編譯成虛擬 DOM 渲染函數。結合響應系統,Vue 能夠智能地計算出最少需要重新渲染多少組件,並把 DOM 操作次數減到最少。

VUE+elementUI目前使用最多的,尤其是開發一些後台管理系統還是比較簡單便捷的。

後端

2021Java 程序員最常用技術棧和工具集合(建議收藏)

servlet

servlet是Server Applet的簡稱,翻譯過來就是服務程序,簡單的講就是是運行在伺服器上的一個小程序,用來處理伺服器請求的。我們通過瀏覽器訪問一個應用,在這個過程中,我們的瀏覽器發送訪問請求,伺服器接收請求,並對瀏覽器的請求作出相應的處理,這就是我們熟悉的B/S模型(瀏覽器-伺服器模型).而servlet就是對請求作出處理的組件,運行於支持Java的應用伺服器中。如圖如是:

2021Java 程序員最常用技術棧和工具集合(建議收藏)

struts

struts主要是指struts1和struts2,是經典的MVC框架,除去一些老項目,現在用的越來越少了。但struts1和struts2還是有區別的,主要區別二者本質不一樣。

struts1:通過採用Java Servlet/JSP技術,實現了基於Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典產品。

struts2:以WebWork為核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。

最經典的組合strutsMVC+SPring+Hibernate,號稱SSH,當年都是面試必問的技術。

Spring

Spring框架是一個開源Java應用框架,解決了開發者在開發中遇到的許多常見的問題,提供了功能強大IOC、AOP及Web MVC等功能。Spring可以單獨應用於應用程序,也可以和Struts、Webwork等眾多Web框架組合使用。Spring框架主要由七部分組成,分別是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

持久層框架

jdbc

JDBC(Java Data Base Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據此可以構建更高級的工具和介面,使資料庫開發人員能夠編寫資料庫應用程序。

早期項目大部分都是通過對JDBC封裝來操作資料庫,實現增刪改查,對性能考慮也不多,隨時間推移不斷衍生出很多框架,例如:mybatis,hibernate等。

2021Java 程序員最常用技術棧和工具集合(建議收藏)
2021Java 程序員最常用技術棧和工具集合(建議收藏)

ibatis

iBATIS一詞來源於「internet」和「abatis」的組合,是一個由Clinton Begin在2001年發起的開放源代碼項目。最初側重於密碼軟體的開發,現在是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO),同時還提供一個利用這個框架開發的JPetStore實例。

iBATIS 目前提供了三種語言實現的版本,包括:Java、.NET以及Ruby。

mybatis

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。

MyBatis 是一款優秀的持久層框架,它支持定製化SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。

MyBatis-Plus

Mybatis 增強工具包 – 只做增強不做改變,簡化CRUD操作

JPA

JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體對象持久化到資料庫中。

Sun引入新的JPA ORM規範出於兩個原因:其一,簡化現有Java EE和Java SE應用開發工作;其二,Sun希望整合ORM技術,實現天下歸一。

Spring Boot

SpringBoot是由Pivotal團隊在2013年開始研發、2014年4月發布第一個版本的全新開源的輕量級框架。它基於Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本衝突,以及引用的不穩定性等問題得到了很好的解決。

分散式/微服務

Spring Cloud

Spring Cloud 為開發者提供了在分散式系統(如配置管理、服務發現、斷路器、智能路由、微代理、控制匯流排、一次性 Token、全局鎖、決策競選、分散式會話和集群狀態)操作的開發工具。使用 Spring Cloud 開發者可以快速實現上述這些模式。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Spring Cloud 的 GitHub 主頁:
https://github.com/spring-cloud

dubbo

Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫集成。

主要核心部件:

Remoting: 網路通信框架,實現了 sync-over-async 和 request-response 消息機制

RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集群功能

Registry: 服務目錄框架用於服務的註冊和服務事件發布和訂閱

Spring Cloud Alibaba

Spring Cloud Alibaba 致力於提供分散式應用服務開發的一站式解決方案。此項目包含開發分散式應用服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分散式應用服務。

依託 Spring Cloud Alibaba,您只需要添加一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里分散式應用解決方案,通過阿里中間件來迅速搭建分散式應用系統。

安全框架

shiro

Apache Shiro 是 Java 的一個安全框架。目前,使用 Apache Shiro 的人越來越多,因為它相當簡單,對比 Spring Security,可能沒有 Spring Security 做的功能強大,但是在實際工作時可能並不需要那麼複雜的東西,所以使用小而簡單的 Shiro 就足夠了。對於它倆到底哪個好,這個不必糾結,能更簡單的解決項目問題就好了。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Spring Security

Spring Security是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應用系統提供聲明式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重複代碼的工作。

oauth2.0

OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。

OAuth 2.0 是目前比較流行的做法,它率先被Google, Yahoo, Microsoft, Facebook等使用。之所以標註為 2.0,是因為最初有一個1.0協議,但這個1.0協議被弄得太複雜,易用性差,所以沒有得到普及。2.0是一個新的設計,協議簡單清晰,但它並不兼容1.0,可以說與1.0沒什麼關係。

項目管理

maven

Maven 是 Apache 下的一個純 Java 開發的開源項目。利用一個中央信息片斷能管理一個項目的構建、報告和文檔等步驟。是一個項目管理工具,可以對 Java 項目進行構建、依賴管理。

ant

ant 是一個將軟體編譯、測試、部署等步驟聯繫在一起加以自動化的一個工具,大多用於Java環境中的軟體開發。在實際軟體開發中,有很多地方可以用到ant。

gradle

Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化構建開源工具。它使用一種基於Groovy的特定領域語言(DSL)來聲明項目設置,目前也增加了基於Kotlin語言的kotlin-based DSL,拋棄了基於XML的各種繁瑣配置。

伺服器軟體

tomcat

Tomcat 伺服器是一個免費的開放源代碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選

Apache

Apache(阿帕奇)是世界使用排名第一的Web伺服器軟體。它可以運行在幾乎所有廣泛使用的計算機平台上,由於其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一

Jetty

Jetty 是一個開源的servlet容器,它為基於Java的web容器,例如JSP和servlet提供運行環境。

weblogic

WebLogic Server是專門為企業電子商務應用系統開發的。企業電子商務應用系統需要快速開發,並要求伺服器端組件具有良好的靈活性和安全性,同時還要支持關鍵任務所必需的擴展、性能、和高可用性。WebLogic Server簡化了可移植及可擴展的應用系統的開發,並為其它應用 系統和系統提供了豐富的互操作性。

nginx

Nginx是一款輕量級的Web伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有內存少,並發能力強。

中間件

2021Java 程序員最常用技術棧和工具集合(建議收藏)

緩存

緩存是現在系統中必不可少的模塊,並且已經成為了高並發高性能架構的一個關鍵組件。緩存的主要作用:提升性能緩解資料庫壓力

Redis

Redis是一個開源的內存數據結構存儲,用作資料庫、緩存和消息代理。提供諸如字元串、哈希、列表、集合、帶範圍查詢的排序集合、點陣圖、超日誌、地理空間索引和流等數據結構。具有內置的複製、Lua腳本、LRU逐出、事務和不同級別的磁碟持久性,並通過Redis Sentinel和Redis Cluster的自動分區提供高可用性。

MongoDB

MongoDB 是一個基於分散式文件存儲的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。

Memcached

Memcached是一個自由開源的,高性能,分散式內存對象緩存系統,用來提高Web應用擴展性的重要因素。是一個基於內存的key-value存儲,用來存儲小塊的任意數據(字元串、對象)。簡潔而強大,它的簡潔設計便於快速開發,減輕開發難度,解決了大數據量緩存的很多問題。一般的使用目的是,通過緩存資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

差異性我就不多說了,簡單說下他們的使用場景:

  • Memcached:動態系統中減輕資料庫負載,提升性能;做緩存,適合多讀少寫,大數據量的情況(如人人網大量查詢用戶信息、好友信息、文章信息等)。
  • Redis:適用於對讀寫效率要求都很高,數據處理業務複雜和對安全性要求較高的系統(如新浪微博的計數和微博發布部分系統,對數據安全性、讀寫要求都很高)。
  • MongoDB:主要解決海量數據的訪問效率問題。

搜索

solr

Solr是一個獨立的企業級搜索應用伺服器,它對外提供類似於Web-service的API介面。用戶可以通過http請求,向搜索引擎伺服器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。

Elasticsearch

Elasticsearch是一個基於Lucene的搜索伺服器。它提供了一個分散式多用戶能力的全文搜索引擎,基於RESTful web介面

二者主要區別

es基本是開箱即用,非常簡單,Solr略微複雜。

Solr 支持更多格式的數據,比如JSON、XML、CSV,而 Elasticsearch 僅支持json文件格式。

Solr 查詢快,但更新索引時慢(即插入刪除慢),ES建立索引快(即查詢慢),即實時性查詢快。

ELK

之所以推薦ELK是因為面對分散式微服務情況下,會顯示出他的威力,不管是數據收集、數據處理、還是數據分析可以節約很多時間。ELK是Elasticsearch + Logstash + Kibana三個開源軟體的組合,但是通常為了提高性能需要藉助kafka,利用Filebeat進行日誌收集,下面這個架構圖是我做過的一個日誌服務平台。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

定時任務

說定定時任務大家可能都接觸過,例如Spring自帶的定時任務SpringTask,但是SpringTask是存在很多問題的,例如:最致命的一個問題就是一旦定時拋出異常,生命就結束,下一次不會再執行。複雜業務中使用起來是不方便的,這裡推薦兩個定時任務框架Quartz和xx-job,第三方的功能比較強大,好用。

Quartz

Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,完全由Java開發,可以用來執行定時任務,類似於java.util.Timer。但是相較於Timer, Quartz增加了很多功能:

  • 持久性作業 – 就是保持調度定時的狀態;
  • 作業管理 – 對調度作業進行有效的管理;

xx-job

XXL-JOB是一個輕量級分散式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。

目前已有多家公司接入xxl-job,包括比較知名的大眾點評,京東,優信二手車,北京尚德,360金融 (360),聯想集團 (聯想),易信 (網易)等等…. Quartz作為開源作業調度中的佼佼者,是作業調度的首選

Quartz在集群環境下只能通過API的方式對任務管理,同時,系統侵入性相當嚴重,而XX-JOB可以完美解決集群下任務額管理。所以,可以根據自己業務情況選擇合適定時任務框架,

配置中心

什麼是配置中心?

集中將應用系統中對配置信息的管理作為一個新的應用功能模塊,區別與傳統的配置信息分散到系統各個角落方式,進行集中統一管理,並且提供額外功能。尤其是在微服務架構中,是不可或缺組件,甚至是必要組件之一。

為什麼要使用配置中心?

在微服務體系中,服務的數量以及配置信息的日益增多,比如各種伺服器參數配置、各種資料庫訪問參數配置、各種環境下應用配置信息的不同、配置信息修改之後實時生效等等,傳統的配置文件方式或者將配置信息存放於資料庫中的方式已無法滿足開發人員對配置管理的要求。常見的配置中心中間件有:SpringCloud Config ,Nacos,apollo等。

SpringCloud Config

2014年9月開源,Spring Cloud 生態組件,可以和Spring Cloud體系無縫整合,Spring Cloud Config支持通過/bus/refresh端點的destination參數來指定要更新配置的機器,不過整個流程不夠自動化和體系化。相對於Apollo和Nacos還是比較弱的。

Nacos

2018年6月,阿里開源的配置中心,也可以做DNS和RPC的服務發現。Nacos使用起來相對比較簡潔,在對性能要求比較高的大規模場景更適合。此外,Nacos除了提供配置中心的功能,還提供了動態服務發現、服務共享與管理的功能,降低了服務化改造過程中的難度。

apollo(阿波羅)

2016年5月,攜程開源的配置管理中心,具備規範的許可權、流程治理等特性,Apollo可以直接在控制台上點灰度發布指定發布機器的IP,接著再全量發布,做得比較體系化。

三者對比如何選擇:

核心功能: Apollo和Nacos相對於Spring Cloud Config的生態支持更廣

實時推送: Nacos和Apollo在配置實時推送鏈路上是比較簡單高效的,Spring Cloud Config比較複雜。

高可用部署: Nacos的部署結構比較簡單,運維成本較低。Apollo部署組件較多,運維成本比Nacos高。Spring Cloud Config生產高可用的成本最高。

監控

伺服器監控是實時掌握伺服器工作狀態,並在需要時可以隨時調用監控記錄進行查看。

SpringBootAdmin

Spring Boot Admin用來管理和監控Spring Boot應用程序,通過UI來查看應用程序的狀態,例如Spring Beans,系統屬性,線程,http的調用情況等有限狀態。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Druid

我知道Druid更多的用途就是連接池,其實他還有一個對SQL監控功能。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

SkyWalking

Skywalking是由國內開源愛好者吳晟(原OneAPM工程師,目前在華為)開源並提交到Apache孵化器的產品,它同時吸收了Zipkin/Pinpoint/CAT的設計思路,支持非侵入式埋點。是一款基於分散式跟蹤的應用程序性能監控系統。另外社區還發展出了一個叫OpenTracing的組織,旨在推進調用鏈監控的一些規範和標準工作。

存儲

把涉及到資料庫相關或者可以作為數據倉庫的中間件都歸到一起了。

MyCat

Mycat是一個開源資料庫中間件,是一個實現了MySQL協議的的資料庫中間件伺服器,我們可以把它看作是一個資料庫代理,用MySQL客戶端工具和命令行訪問Mycat,而Mycat再使用用MySQL原生(Native)協議與多個MySQL伺服器通信,也可以用JDBC協議與大多數主流資料庫伺服器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流資料庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲;一般地,Mycat主要用於代理MySQL資料庫,雖然它也支持去訪問其他類型的資料庫;

Mycat官網:http://www.mycat.io/

Canal

我們先看官網的介紹

canal,譯意為水道/管道/溝渠,主要用途是基於 MySQL 資料庫增量日誌解析,提供增量數據訂閱和消費

這句介紹有幾個關鍵字:增量日誌,增量數據訂閱和消費

這裡我們可以簡單地把canal理解為一個用來同步增量數據的一個工具

接下來我們看一張官網提供的示意圖:

2021Java 程序員最常用技術棧和工具集合(建議收藏)

sharing-jdbc

定位為輕量級Java框架,在Java的JDBC層提供的額外服務。 它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。

主要功能

  • 分庫 & 分表
  • 讀寫分離
  • 分散式主鍵

zookeeper

ZooKeeper是Hadoop的正式子項目,它是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分散式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和性能高效、功能穩定的系統提供給用戶。

事務

這個事務更多指的是分散式事務處理插件。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Apache ShardingSphere

Apache ShardingSphere(Incubator) 是一套開源的分散式資料庫中間件解決方案組成的生態圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(規劃中)這3款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的數據分片、分散式事務和資料庫治理功能,可適用於如Java同構、異構語言、容器、雲原生等各種多樣化的應用場景。

Seata

Seata 是 Simple Extensible Autonomous Transaction Architecture 的簡寫,由 feascar 改名而來。是阿里開源的分散式事務框架,屬於二階段提交模式。

消息隊列

什麼是消息隊列

消息隊列是一個存放消息的容器,當我們需要使用消息的時候可以取出消息供自己使用。消息隊列是分散式系統中重要的組件,使用消息隊列主要是為了通過非同步處理提高系統性能和削峰、降低系統耦合性。目前使用較多的消息隊列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。

為什麼需要消息隊列

1.通過非同步處理提高系統性能(削峰、減少響應所需時間);

2.降低系統耦合性;

Kafka

Kafka是由Apache軟體基金會開發的一個開源流處理平台,由Scala和Java編寫。Kafka是一種高吞吐量的分散式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。

RabbitMQ

AMQP,即Advanced Message Queuing Protocol,高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。消息中間件主要用於組件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。 AMQP的主要特徵是面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全。 RabbitMQ是一個開源的AMQP實現,伺服器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用於在分散式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗。

ActiveMQ

ActiveMQ是一種開源的基於JMS(Java Message Servie)規範的一種消息中間件的實現,ActiveMQ的設計目標是提供標準的,面向消息的,能夠跨越多語言和多系統的應用集成消息通信中間件。

三者區別及其使用場景

特性 ActiveMQ RabbitMQ kafka 開發語言 java erlang scala 單機吞吐量 萬級 萬級 10萬級 時效性 ms級 us級 ms級以內 可用性 高(主從架構) 高(主從架構) 非常高(分散式架構) 功能特性 成熟的產品,在很多公司得到應用;有較多的文檔;各種協議支持較好 基於erlang開發,所以並發能力很強,性能極其好,延時很低;管理界面較豐富 只支持主要的MQ功能,像一些消息查詢,消息回溯等功能沒有提供,畢竟是為大數據準備的,在大數據領域應用廣。

資料庫

2021Java 程序員最常用技術棧和工具集合(建議收藏)

該資料庫主要是指關係型資料庫,是按照數據結構來組織、存儲和管理數據的倉庫,資料庫是存放數據的倉庫,是一個系統或者軟體必不可少的一部分。每個資料庫都有一個或多個不同的 API 用於創建,訪問,管理,搜索和複製所保存的數據。我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。

所以,現在我們使用關係型資料庫管理系統來存儲和管理大數據量。所謂的關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據。

關係資料庫管理系統的特點:

  • 1.數據以表格的形式出現
  • 2.每行為各種記錄名稱
  • 3.每列為記錄名稱所對應的數據域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成database

常見的數據管理系統主要有:oracle、mysql、SQL Server、access、TiDB。

oracle

Oracle Database,簡稱 Oracle。Oracle 資料庫系統是美國 Oracle 公司(甲骨文)提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(client/server)的資料庫之一。Oracle 資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的數據管理功能;作為一個關係型資料庫,它是一個完備關係的產品;作為分散式資料庫它實現了分散式處理功能,但它的所有知識,只要在一種機型上學習了Oracle知識,便能在各種類型的機器上使用它。

mysql

MySQL 是最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係資料庫管理系統)應用軟體之一。目前也是Oracle 公司來託管。

SQL Server

美國Microsoft公司推出的一種關係型資料庫系統。SQL Server是一個可擴展的、高性能的、為分散式客戶機/伺服器計算所設計的資料庫管理系統,實現了與WindowsNT的有機結合,提供了基於事務的企業級信息管理系統方案。

access

Access是微軟把資料庫引擎的圖形用戶界面和軟體開發工具結合在一起的一個資料庫管理系統。它是微軟OFFICE的一個成員, 在包括專業版和更高版本的office版本裡面被單獨出售。

TiDB

TiDB 是 PingCAP 公司自主設計、研發的開源分散式關係型資料庫,是一款同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分散式資料庫產品,具備水平擴容或者縮容、金融級高可用、實時 HTAP、雲原生的分散式資料庫、兼容 MySQL 5.7 協議和 MySQL 生態等重要特性。目標是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數據規模較大等各種應用場景。

上面這幾個資料庫優缺點都比較明顯,不在啰嗦了,大家在工作中可以根據自己實際情況選擇合適的數據。

工具

2021Java 程序員最常用技術棧和工具集合(建議收藏)

開發

IntelliJ IDEA

2021Java 程序員最常用技術棧和工具集合(建議收藏)

IntelliJ在業界被公認為最好的java開發工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創新的GUI設計等方面的功能可以說是超常的。IDEA是JetBrains公司的產品,這家公司總部位於捷克共和國的首都布拉格,開發人員以嚴謹著稱的東歐程序員為主。它的旗艦版本還支持HTML,CSS,PHP,MySQL,Python等。免費版只支持Java,Kotlin等少數語言。

eclipse

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Eclipse 是一個開放源代碼的、基於 Java 的可擴展開發平台, 是 Java 的集成開發環境(IDE),當然 Eclipse 也可以作為其他開發語言的集成開發環境,如C,C++,PHP,和 Ruby 等。

MyEclipse

2021Java 程序員最常用技術棧和工具集合(建議收藏)

MyEclipse,是在Eclipse 基礎上加上自己的插件開發而成的功能強大的企業級集成開發環境,主要用於Java、Java EE以及移動應用的開發。在最新版本的MyEclipse中,配合CodeMix使用支持也十分廣泛,尤其是對各種開源產品和主流開發框架的支持相當不錯。目前已支持PHP、Python、Vue、Angular、React、Java、Java EE等語言和框架開發。

這三款工具好壞我也不做任何評價,每個工具用戶都不少,我周圍IntelliJ IDEA和MyEclipse都有,我個人比較喜歡用IntelliJ IDEA。

客戶端工具

版本控制

常見的版本空間工具svn和git

svn

2021Java 程序員最常用技術棧和工具集合(建議收藏)

TortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,可以超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改以外,版本庫非常像普通的文件伺服器。你可以將文件恢復到過去的版本,並且可以通過檢查歷史知道數據做了哪些修改,誰做的修改。這就是為什麼許多人將 Subversion 和版本控制系統看作一種「時間機器」。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

git

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Git 是用於Linux內核開發的版本控制工具。與常用的版本控制工具 Subversion 不同,它採用了分散式版本庫的方式,不必伺服器端軟體支持,代碼的發布和交流極其方便。 Git 的速度很快,這樣的大項目來說自然很重要。 Git 最為出色的是它的合併跟蹤(merge tracing)能力。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

SVN的特點是簡單,只是需要一個放代碼的地方時用是OK的。

Git的特點版本控制可以不依賴網路做任何事情,對分支和合併有更好的支持(這應該算是開發者最關心的地方)。

資料庫

Navicat

Navicat是一套快速、可靠並價格相當便宜的資料庫管理工具,專為簡化資料庫的管理及降低系統管理成本而設。它的設計符合資料庫管理員、開發人員及中小企業的需要。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全並且簡單的方式創建、組織、訪問並共用信息。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

PLSQL

PL/SQL Developer是一個集成開發環境,專門開發面向Oracle資料庫的應用。PL/SQL也是一種程序語言,叫做過程化SQL語言(Procedural Language/SQL)。PL/SQL是Oracle資料庫對SQL語句的擴展。在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環等操作實現複雜的功能或者計算,PL/SQL 只有 Oracle 資料庫有

2021Java 程序員最常用技術棧和工具集合(建議收藏)

Redis Desktop Manager

Redis Desktop Manager是一款windows平台下的可視化redis資料庫桌面管理工具,使用它你可以查看、刪除、修改你的redis資料庫數據!

2021Java 程序員最常用技術棧和工具集合(建議收藏)

linux遠程

XShell

XShell是一個強大的安全終端模擬軟體,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNET協議。 XShell可以在Windows界面下用來訪問遠端不同系統下的伺服器,從而比較好的達到遠程控制終端的目的。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

WinSCP

2021Java 程序員最常用技術棧和工具集合(建議收藏)

寶塔

寶塔面板是一個可以安裝在伺服器上的集成環境,並配套了web管理面板,可以在瀏覽器上直接控制你的伺服器,非常方便。 可以一鍵創建網站、FTP、資料庫、SSL;安全管理,計劃任務,文件管理,PHP多版本共存及切換;自帶基礎網站環境,支持windows系統(apache)和linux系統(apache或nginx)。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

SecureCRT

Secure CRT 是一款SSH客戶端軟體,通過使用內含的VCP命令行程序可以進行加密文件的傳輸。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

postMan

Postman一款非常流行的API調試工具。其實,開發人員用的更多。因為測試人員做介面測試會有更多選擇,例如Jmeter、soapUI等。不過,對於開發過程中去調試介面,Postman確實足夠的簡單方便,而且功能強大。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

輔助

Typora+PicGo

Typora+PicGo,最好用的Markdown+最好用的圖床工具!如果寫博客的可以收藏起來。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

notepad++

Notepad++中文版是程序員必備的文本編輯器,Notepad++中文版小巧高效,支持27種編程語言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等,Notepad++中文版編輯器可完美地取代微軟的記事本。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

畫圖

visio

Office Visio 是Office軟體系列中的負責繪製流程圖和示意圖的軟體,是一款便於IT和商務人員就複雜信息、系統和流程進行可視化處理、分析和交流的軟體。使用具有專業外觀的 Office Visio 圖表,可以促進對系統和流程的了解,深入了解複雜信息並利用這些知識做出更好的業務決策。常見軟體架構、流程圖都可以在裡面完成。

processon

ProcessOn是一個在線作圖工具的聚合平台, 它可以在線畫流程圖、思維導圖、UI原型圖、UML、網路拓撲圖、組織結構圖等等, 您無需擔心下載和更新的問題,不管Mac還是Windows,一個瀏覽器就可以隨時隨地的發揮創意,規劃工作。

官網:
https://www.processon.com/

PowerDesigner

owerDesigner是一款非常全面的資料庫設計工具。使用PowerDesigner可以快速創建表,支持表與表之間建立關係,界面簡潔,功能強大。同時支持將sql腳本導出,多種導出類型任意挑選,簡單實用。

Xmind

XMind 是一個全功能的思維導圖和頭腦風暴軟體,為激發靈感和創意而生。作為一款有效提升工作和生活效率的生產力工具,受到全球百千萬用戶的青睞。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

iReport

說到 iReport 不得不先介紹 Jasperreport,Jasperreport 是一個報表製作程序,用戶需要按照它制定的規則編寫一個 XML 文件,然後得到用戶需要輸出的格式文件。它支持輸出的文件格式包括 PDF,HTML,XML,XLS,CVS 等等。而 iReport 就是一個製作 Jasperreport 的 XML 文件的可視化開發工具。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

瀏覽器

Chrome

Google Chrome是一款由Google公司開發的網頁瀏覽器,該瀏覽器基於其他開源軟體撰寫,包括WebKit,目標是提升穩定性、速度和安全性,並創造出簡單且有效率的使用者界面。

搜狗

搜狗瀏覽器 由搜狗公司開發,基於谷歌chromium內核,力求為用戶提供跨終端無縫使用體驗,讓上網更簡單、網頁閱讀更流暢的瀏覽器。

火狐

Mozilla Firefox,中文俗稱「火狐」,是一個由Mozilla開發的自由及開放源代碼的網頁瀏覽器。其使用Gecko排版引擎,支持多種操作系統,如Windows、macOS及GNU/Linux等

IE

Internet Explorer(簡稱:IE)是微軟公司微軟公司推出的一款網頁瀏覽器。原稱Microsoft Internet Explorer(6版本以前)和Windows Internet Explorer(7、8、9、10、11版本)。在IE7以前,中文直譯為「網路探路者」,但在IE7以後官方便直接俗稱”IE瀏覽器”。

如果做前端開發,這幾款瀏覽器兼容性都得兼顧。很早之前IE瀏覽器市場是比較大,隨著時間推移,谷歌瀏覽器佔據了比較大的市場。我個人日常開發中谷歌用的比較多,特殊情況才會使用其它瀏覽器。

性能分析

jmeter

JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java 服務程序、CGI 腳本、Java 對象、資料庫, 等等。

ab

apache bench簡稱ab,它是apache自帶的壓力測試工具。ab非常實用,它不僅可以對apache伺服器進行網站訪問壓力測試,也可以對或其它類型的伺服器進行壓力測試。

MAT

MAT是Java堆內存分析工具,可從
http://www.eclipse.org/mat/中下載。

2021Java 程序員最常用技術棧和工具集合(建議收藏)

你在成為大神的路上都學習了哪些技術,歡迎留言交流。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/229582.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-10 12:30
下一篇 2024-12-10 12:30

相關推薦

發表回復

登錄後才能評論