-
1 # 會點程式碼的大叔
-
2 # 程式設計師小石同學
JAVA 常用框架和工具
整合開發工具(IDE):Eclipse、MyEclipse、Spring Tool Suite(STS)、Intellij IDEA、NetBeans、JBuilder、JCreator
JAVA伺服器:tomcat、jboss、websphere、weblogic、resin、jetty、apusic、apache
負載均衡:nginx、lvs
web層框架:Spring MVC、Struts2、Struts1、Google Web Toolkit(GWT)、JQWEB
服務層框架:Spring、EJB
持久層框架:Hibernate、MyBatis、JPA、TopLink
資料庫:Oracle、MySql、MSSQL
專案構建:maven、ant
持續整合:Jenkins
版本控制:SVN、CVS、VSS、GIT
私服:Nexus
訊息元件:IBM MQ、RabbitMQ、ActiveMQ
日誌框架:Commons Logging、log4j 、slf4j、IOC
快取框架:memcache、redis、ehcache、jboss cache
RPC框架:Hessian、Dubbo
Linux作業系統:SUSE Linux、CentOS
常用工具:PLSQL Developer(Oracle)、Navicat(MySql)、FileZilla(FTP)、Xshell(SSH)、putty(SSH)、SecureCRT(SSH)、jd-gui(反編譯)
Spring 全家桶,當為首選Spring Boot 是構建所有基於Spring的應用程式的起點。Spring Boot旨在透過最少的Spring前期配置使您儘快啟動並執行。
使用Spring Initializr在幾秒鐘內入門
構建任何內容:REST API,WebSocket,Web,流,任務等
簡化的安全性
對SQL和NoSQL的豐富支援
嵌入式執行時支援:Tomcat,Jetty和Undertow
開發人員生產力工具,例如LiveReload和Auto Restart
有效的策劃依賴
可用於生產的功能,例如跟蹤,指標和執行狀況
在您最喜歡的IDE中工作:Spring Tool Suite,IntelliJ IDEA和NetBeans
Spring Cloud 為最常見的分散式系統模式提供了一種簡單易用的程式設計模型,可幫助開發人員構建彈性、可靠且協調的應用程式。Spring Cloud建立在Spring Boot的基礎上,使開發人員可以輕鬆上手並快速提高生產力。
Spring Cloud Data Flow 使您可以輕鬆地針對用例(例如資料提取,實時分析和資料匯入/匯出)構建和編排雲原生資料管道。透過為最常見的整合方案提供開箱即用的聯結器,Spring Cloud Data Flow使連線系統變得簡單。
支援實時流和批處理資料
攝取,轉換,分析和儲存資料
FTP,RDBMS,Cassandra,RabbitMQ,GemFire,Redis等聯結器
支援現代訊息中介軟體:Kafka和RabbitMQ
Spring Flo管道視覺設計師
操作儀表板:指標,執行狀況檢查和遠端管理
支援的平臺:Cloud Foundry,Kubernetes,Apache YARN和Apache Mesos
-
3 # 北落師門Orz
這個問題問的好,Java常用的框架很多,早年struts2+Spring+hibernate 也就是著名的ssh三大框架,再到springmvc,再到一站式開箱框架springboot,再到現在號稱要一統天下的微服務架構springcloud,由於受到歷史專案的影響,以上框架幾乎在企業都有存在,那麼問題來了,這些玩意全部都要學?是否有捷徑?其實答案很簡單,沒有捷徑的,要想有優勢就是應該掌握基礎,好好的弄懂Java語言的特性,學習最基礎的理論知識servlet,request,response,session.......等等,等你掌握了紮實大理論基礎,你會發現你不管掌握任何一個流行框架只需要一週到兩週,並且每天僅需兩小時
-
4 # 科技少年星
十大常用框架:
一、SpringMVC
二、Spring
三、Mybatis
四、Dubbo
五、Maven
六、RabbitMQ
七、Log4j
八、Ehcache
九、Redis
十、Shiro
延展閱讀:
一、SpringMVC
Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動型別的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡化我們日常Web開發的。
模型(Model )封裝了應用程式的資料和一般他們會組成的POJO。
檢視(View)是負責呈現模型資料和一般它生成的HTML輸出,客戶端的瀏覽器能夠解釋。
控制器(Controller )負責處理使用者的請求,並建立適當的模型,並把它傳遞給檢視渲染。
Spring的web模型 - 檢視 - 控制器(MVC)框架是圍繞著處理所有的HTTP請求和響應的DispatcherServlet的設計。
Spring Web MVC處理請求的流程
具體執行步驟如下:
1、 首先使用者傳送請求————>前端控制器,前端控制器根據請求資訊(如URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖2-1中的1、2步驟;
2、 頁面控制器接收到請求後,進行功能處理,首先需要收集和繫結請求引數到一個物件,這個物件在Spring Web MVC中叫命令物件,並進行驗證,然後將命令物件委託給業務物件進行處理;處理完畢後返回一個ModelAndView(模型資料和邏輯檢視名);圖2-1中的3、4、5步驟;
3、 前端控制器收回控制權,然後根據返回的邏輯檢視名,選擇相應的檢視進行渲染,並把模型資料傳入以便檢視渲染;圖2-1中的步驟6、7;
4、 前端控制器再次收回控制權,將響應返回給使用者,圖2-1中的步驟8;至此整個結束。
二、Spring
2.1、IOC容器:http://www.cnblogs.com/linjiqin/archive/2013/11/04/3407126.html
IOC容器就是具有依賴注入功能的容器,IOC容器負責例項化、定位、配置應用程式中的物件及建立這些物件間的依賴。應用程式無需直接在程式碼中new相關的物件,應用程式由IOC容器進行組裝。在Spring中BeanFactory是IOC容器的實際代表者。
2.2、AOP:http://blog.csdn.net/moreevan/article/details/11977115
簡單地說,就是將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任封裝起來,便於減少系統的重複程式碼,降低模組間的耦合度,並有利於未來的可操作性和可維護性。AOP代表的是一個橫向的關係
AOP用來封裝橫切關注點,具體可以在下面的場景中使用:
Authentication 許可權 Caching 快取 Context passing 內容傳遞 Error handling 錯誤處理 Lazy loading 懶載入 Debugging 除錯 logging, tracing, profiling and monitoring 記錄跟蹤 最佳化 校準 Performance optimization 效能最佳化 Persistence 持久化 Resource pooling 資源池 Synchronization 同步 Transactions 事務
三、Mybatis
MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始對映,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。
總體流程:
(1)載入配置並初始化 觸發條件:載入配置檔案 將SQL的配置資訊載入成為一個個MappedStatement物件(包括了傳入引數對映配置、執行的SQL語句、結果對映配置),儲存在記憶體中。
(2)接收呼叫請求 觸發條件:呼叫Mybatis提供的API 傳入引數:為SQL的ID和傳入引數物件 處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求 觸發條件:API介面層傳遞請求過來 傳入引數:為SQL的ID和傳入引數物件
處理過程:
(A)根據SQL的ID查詢對應的MappedStatement物件。
(B)根據傳入引數物件解析MappedStatement物件,得到最終要執行的SQL和執行傳入引數。
(C)獲取資料庫連線,根據得到的最終SQL語句和執行傳入引數到資料庫執行,並得到執行結果。
(D)根據MappedStatement物件中的結果對映配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連線資源。
(4)返回處理結果將最終的處理結果返回。
MyBatis 最強大的特性之一就是它的動態語句功能。如果您以前有使用JDBC或者類似框架的經歷,您就會明白把SQL語句條件連線在一起是多麼的痛苦,要確保不能忘記空格或者不要在columns列後面省略一個逗號等。動態語句能夠完全解決掉這些痛苦。
四、Dubbo
Dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC(遠端過程呼叫協議)遠端服務呼叫方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有dubbo這樣的分散式服務框架的需求,並且本質上是個服務呼叫的東東,說白了就是個遠端服務呼叫的分散式框架。
1、透明化的遠端方法呼叫,就像呼叫本地方法一樣呼叫遠端方法,只需簡單配置,沒有任何API侵入。
2、軟負載均衡及容錯機制,可在內網替代F5等硬體負載均衡器,降低成本,減少單點。
節點角色說明: Provider: 暴露服務的服務提供方。 Consumer: 呼叫遠端服務的服務消費方。 Registry: 服務註冊與發現的註冊中心。 Monitor: 統計服務的呼叫次調和呼叫時間的監控中心。 Container: 服務執行容器。
五、Maven
Maven這個個專案管理和構建自動化工具,越來越多的開發人員使用它來管理專案中的jar包。但是對於我們程式設計師來說,我們最關心的是它的專案構建功能。
六、RabbitMQ
訊息佇列一般是在專案中,將一些無需即時返回且耗時的操作提取出來,進行了非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。
RabbitMQ是用Erlang實現的一個高併發高可靠AMQP訊息佇列伺服器。
Erlang是一門動態型別的函數語言程式設計語言。對應到Erlang裡,每個Actor對應著一個Erlang程序,程序之間透過訊息傳遞進行通訊。相比共享記憶體,程序間透過訊息傳遞來通訊帶來的直接好處就是消除了直接的鎖開銷(不考慮Erlang虛擬機器底層實現中的鎖應用)。
AMQP(Advanced Message Queue Protocol)定義了一種訊息系統規範。這個規範描述了在一個分散式的系統中各個子系統如何透過訊息互動。
七、Log4j
日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
八、Ehcache
EhCache 是一個純Java的程序內快取框架,具有快速、精幹等特點,是Hibernate中預設的CacheProvider。Ehcache是一種廣泛使用的開源Java分散式快取。主要面向通用快取,Java EE和輕量級容器。它具有記憶體和磁碟儲存,快取載入器,快取擴充套件,快取異常處理程式,一個gzip快取servlet過濾器,支援REST和SOAP api等特點。
優點: 1、 快速 2、 簡單 3、 多種快取策略 4、快取資料有兩級:記憶體和磁碟,因此無需擔心容量問題 5、 快取資料會在虛擬機器重啟的過程中寫入磁碟 6、可以透過RMI、可插入API等方式進行分散式快取 7、 具有快取和快取管理器的偵聽介面 8、支援多快取管理器例項,以及一個例項的多個快取區域 9、提供Hibernate的快取實現
缺點: 1、使用磁碟Cache的時候非常佔用磁碟空間:這是因為DiskCache的演算法簡單,該演算法簡單也導致Cache的效率非常高。它只是對元素直接追加儲存。因此搜尋元素的時候非常的快。如果使用DiskCache的,在很頻繁的應用中,很快磁碟會滿。
2、 不能保證資料的安全:當突然kill掉java的時候,可能會產生衝突,EhCache的解決方法是如果檔案衝突了,則重建cache。這對於Cache資料需要儲存的時候可能不利。當然,Cache只是簡單的加速,而不能保證資料的安全。如果想保證資料的儲存安全,可以使用Bekeley DB Java Edition版本。這是個嵌入式資料庫。可以確保儲存安全和空間的利用率。
九、Redis
redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set –有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
Redis資料庫完全在記憶體中,使用磁碟僅用於永續性。相比許多鍵值資料儲存,Redis擁有一套較為豐富的資料型別。Redis可以將資料複製到任意數量的從伺服器。
1.2、Redis優點:
(1)異常快速:Redis的速度非常快,每秒能執行約11萬集合,每秒約81000+條記錄。
(2)支援豐富的資料型別:Redis支援最大多數開發人員已經知道像列表,集合,有序集合,雜湊資料型別。這使得它非常容易解決各種各樣的問題,因為我們知道哪些問題是可以處理透過它的資料型別更好。
(3)操作都是原子性:所有Redis操作是原子的,這保證瞭如果兩個客戶端同時訪問的Redis伺服器將獲得更新後的值。
(4)多功能實用工具:Redis是一個多實用的工具,可以在多個用例如快取,訊息,佇列使用(Redis原生支援釋出/訂閱),任何短暫的資料,應用程式,如Web應用程式會話,網頁命中計數等。
1.3、Redis缺點: (1)單執行緒 (2)耗記憶體
十、Shiro
Apache Shiro是Java的一個安全框架,旨在簡化身份驗證和授權。Shiro在JavaSE和JavaEE專案中都可以使用。它主要用來處理身份認證,授權,企業會話管理和加密等。Shiro的具體功能點如下:
(1)身份認證/登入,驗證使用者是不是擁有相應的身份;
(2)授權,即許可權驗證,驗證某個已認證的使用者是否擁有某個許可權;即判斷使用者是否能做事情,常見的如:驗證某個使用者是否擁有某個角色。或者細粒度的驗證某個使用者對某個資源是否具有某個許可權;
(3)會話管理,即使用者登入後就是一次會話,在沒有退出之前,它的所有資訊都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;
(4)加密,保護資料的安全性,如密碼加密儲存到資料庫,而不是明文儲存;
(5)Web支援,可以非常容易的整合到Web環境; Caching:快取,比如使用者登入後,其使用者資訊、擁有的角色/許可權不必每次去查,這樣可以提高效率;
(6)shiro支援多執行緒應用的併發驗證,即如在一個執行緒中開啟另一個執行緒,能把許可權自動傳播過去;
(7)提供測試支援;
(8)允許一個使用者假裝為另一個使用者(如果他們允許)的身份進行訪問;
(9)記住我,這個是非常常見的功能,即一次登入後,下次再來的話不用登入了。
————————————————
原文連結:https://blog.csdn.net/qq_42603157/article/details/80916120
-
5 # 深夜最科技
十大常用框架: 一、SpringMVC 二、Spring 三、Mybatis 四、Dubbo 五、Maven 六、RabbitMQ 七、Log4j 八、Ehcache 九、Redis 十、Shiro
第一階段:java基礎知識要牢固,java程式設計思想,設計模式,effective java這些都算是基礎知識。在這基礎上,要結合多種專案經驗,利用實踐來提高基礎能力。第二階段:開闊眼光,借鑑優秀的專案或開原始碼。例如jstorm、hadoop等開源軟體,可以下載後利用業餘時間研讀,提升能力。
第三階段:結合業務進行架構設計和實踐,並多與行業高手交流,提升領域建模等能力 選一個方向,然後多閱讀一些高質量程式碼,站在前輩架構師的肩膀上,才能比較快速的進步,長時間的技術積累,業務專案的積累,合理的方案解決通用問題。多讀多寫多思考。多讀的目的是開拓自己的視野,讓自己具備舉一反三觸類旁通的能力。多寫是腳踏實地,避免誇誇其談紙上談兵。多思考是融會貫通所讀所寫。
架構師的學習之路也正式開始。
-
6 # Python進階學習交流
群友分享的,不過是關於Python的:
跟大家說下,我覺得重要的模組和框架和資料庫
numpy math os sys string random requests itertools collections openpyxl matplotlib requests bs4 pymongdb pymysql captcha winreg
scrapy selenium pandas Threading multiprocessing greenlet gevent pillow hashlib httplib urllib glob contextlib copy heapq queue calendar time datetime json pickle operator turtle jieba paramiko re lxml tkinter smtplib email gzip shelve pywin32 pyQt pygame socket socketserver ftplib nntplib subprocess concurrent xlrd xlwt tempfile cgitb cgi StringIo ByteIo array logging platform
框架 django flask Tornado
資料庫 mysql mongodb oracle redis
-
7 # IT極客老兵一、什麼是Java常用框架
是指常用的Java開發框架,比如:orm框架,mvc框架,日誌框架、快取框架等等,框架種類很多,沒有必要一次學完,在工作中不斷學習就好,隨著專案的增加,你用到的框架會越來越多。
二、為什麼要使用Java框架Java框架是開源社群或者是Java程式碼牛人貢獻出來的為了解決某類問題的Java程式碼模組,如果沒有使用Java框架,你為了實現類似的功能就要完全自己開發,從頭造輪子,費時又費力,完全沒有必要。Java開發一定要藉助開源的力量,站在巨人的肩膀上,你才能夠看得更遠。
三、如何學習Java常用框架最核心,使用的最多的Java框架是我們俗稱的“SSM”或“SSH”:
第一個“S”指SpringMVC,實現了MVC設計模式的Web框架,我們通常用它來接收和響應Web請求。
第二個“S”指Spring,用於簡化Java EE開發的POJO框架,是整個Java後端應用的核心,包括IOC和AOP等等。第三個指MyBatis或者是Hibernate,是ORM框架,用於POJO物件和資料庫的對映,透過它我們能夠做資料庫的常規操作。最先應該學習SSM或SSH框架,這樣一個企業軟體開發最常用的資料庫CRUD應用場景就可以快速搞定了。 -
8 # Java架構師CAT
Java的框架主要有:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。不過這十個我們不需要都學會,只要優先學會其中四五個比較常用的就可以。
第一、SpringMVC
Spring Web MVC是一種基於Java的,實現了Web MVC設計模式的請求驅動型別的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡化我們日常Web開發的。
第二、Mybatis
MyBatis 是支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架。
MyBatis 消除了幾乎所有的JDBC程式碼和引數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始對映,將介面和 Java 的POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。
第三、Spring
Spring深得企業的青睞。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限於伺服器端的開發。從簡單性、可測試性和松耦合性角度而言,絕大部分Java應用都可以從Spring中受益。
第四、Maven
越來越多的開發人員開始使用maven,Maven這個專案管理和構建自動化工具,越來越多的開發人員使用它來管理專案中的jar包。但是對於我們程式設計師來說,我們最關心的是它的專案構建功能。
掌握以上四種框架,你在找工作的時候就會比較吃香,不過想要拿到高薪還是需要掌握到精通程度的。在知識不斷更新迭代的時代,不斷更新自己的知識庫,絕對會讓你在職場的路上有意想不到的收穫。
回覆列表
作為一名 Java 程式設計師,接觸到的框架、軟體、中介軟體肯定不會少,並且升級換代比較頻繁,可能三五年就會淘汰一批,雖然有些框架看似“經久不衰”,比如很多年前非常流行的 SHH 中就有 Spring,但其實 Spring 早期和現在的版本,使用差異也挺大的。
我就說一說我目前用到的技術棧,以及我對 Java 框架學習的路線思考,大家可以參考參考。
01. 基礎在正式說之前,我還是要囉嗦一句,就是在學習這些 Java 框架的同時,也不要放鬆對演算法、資料結構、網路、Java 基礎知識的學習,框架變化的很快,但是這些基礎知識會一直伴隨著我們。
02. Java 框架我們現在絕大部分專案,都是基於 Spring Boot 開發的,所以我建議可以先學習 Spring 、Spring MVC、Spring Boot 這幾個框架,前兩個框架是基礎,Spring Boot 算是在 Spring 基礎之上發展而來的,使用 Spring Boot 可以很方便的與其他常用框架做整合。
大部分 Java 專案都離不開關係型資料庫,所以學習學習一個 ORM 框架,可以選擇學習 Mybatis 或 Hibernate,在之後,可以瞭解一下 Spring Data JPA,這個算是對 ORM 框架更高階的封裝。
還有一些框架,可能需要根據你的實際情況來選擇學習了,比如本地快取框架可以學習 EhCache,不過更重要的可能會要求你瞭解什麼是快取、儲存淘汰策略等知識。
在網上,可能就是現在比較流行的分散式服務框架、微服務框架了,現在比較流行的 Spring Cloud 和 Dubbo 了,當然了,它們並不是一個框架,而是一套框架,或者說一套解決方案,如果是個人喜好的話,建議學習 Spring Cloud。
03. 中介軟體Java 程式設計師需要掌握的中介軟體也不少,重點可以學習 Redis 和 訊息佇列 MQ。
Redis 是非關係型資料庫的一種,適用於很多場景,比如快取、分散式鎖等等,Redis 的相關知識簡直就是網際網路公司面試的必考題了;
訊息佇列 MQ 也是應用很廣泛的中介軟體之一,對於系統和系統之間的解耦,流量的限流削峰都起到了非常重要的作用,可以選擇 RabbitMQ 或 Kafka 學習一下。
04. 其他有一些我也不太好分類,就放在其他裡面了。
關係型資料庫,至少 SQL 和索引要精通一些吧,現在很多公司,特別是網際網路公司都會選擇 MySQL,那麼 MySQL 的一些底層知識最好能有所學習,比如資料庫引擎、索引的原理什麼的。
其餘的還有 Maven 、Git、自動化測試、自動化釋出、Docker 等等,最好也能有所瞭解和應用。