1. 河豚號 > 生活百科 >

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應用程序的用戶界面部分。

 

 

 

 

 

<%

out.println("Hello World!");

%>

 

 

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標記庫。

 

 

 

 

 

 

Welcome ${user}!

 

 

Our latest product:

${latestProduct.name}!

 

 

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是一個輕量級分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展?,F已開放源代碼并接入多家公司線上產品線,開箱即用。

目前已有多家公司接入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 程序員最常用技術棧和工具集合(建議收藏)

 

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

本文由網上采集發布,不代表我們立場,轉載聯系作者并注明出處:http://www.seensnowboarding.com/shbk/39362.html

聯系我們

在線咨詢:點擊這里給我發消息

微信號:15705946153

工作日:9:30-18:30,節假日休息

国产精品亚洲w码日韩中文|国产高清露脸孕妇系列|久久国语露脸国产精品|久久久777精品电影网影网|欧美高大丰满freesex