1. 程式人生 > >目前最火的Java主流技術棧及開發工具

目前最火的Java主流技術棧及開發工具

# Java主流的技術棧及工具 @[toc] ==java的學習路線和主流技術棧以及工具,算是對舊知識的回顧,溫故而知新,這條路線也見證了無數個只有程式碼陪伴我的夜晚,以== ==此共勉!順帶夾雜一些自己對技術的理解和感悟== # 提一嘴我對學習一門新技術的心得 --- 1. .一門新技術的誕生,必然會有它的作用,存在即合理,凡事都要問個為什麼?(不是鑽牛角尖的那種為什麼?你要是問我為什麼一加一等於二,我會覺得你二),新技術的誕生必然是解決某一類問題的,關於這個話題,又能扯到架構的發展是演化的還是設計出來的這個問題.... 答案是演化而來的!新技術的誕生其實也很像,就是由於軟體的不斷髮展,架構需要的技術舊的技術不能再完成時,這時候造輪子的人就要想著造新的輪子出來了,造的新輪子就是新的技術>>>> 2. 學習一門新的技術,最好的辦法是看官網(我剛開始學程式設計時,聽過我們老師說過這句話,可能因為當初菜如狗(現在勉強比之前好點), 內心很不屑,這tm誰看得懂?現在看官網真香!)看它解決了什麼問題,再看官網的Demo,還有api,還有看看利用Java怎樣操作,框架裡面怎樣整合等等..看不懂的地方查查部落格,看看視訊 3. 第三個就是關於學完新技術後,過兩天就忘了...然後無限套娃操作,學完忘,忘了又學....至於為什麼會出現這種情況,並不是我們沒有學會這門技術,而是技術這玩意,得用, 1.第一個記筆記 2.要結合具體的應用場景(專案),把這門技術用到,可以稱為場景式記憶! 3.這樣也就差不多不會忘了,就算忘了簡單看看也能很快用起來(概念性的東西能不能記得這個我也很無語,我就是屬於那種並不是太喜歡及概念的人) 4. 除了基礎要好,還有一個就是學習一門新技術的難度,自我認為哈!並不在這個新技術有多難,而是如何在專案裡用好,用的如魚得水!才是最難的,需要反覆的使用,反覆的練,(心中有劍,手裡無劍 能達到這個境界其實很厲害了) # 1.從基礎開始 --- JAVASE必學,沒啥好說的 --<-<-<@ 基礎不牢地動山搖,另外強調一下,<<計算機組成原理>>和<<計算機作業系統>>,<<計算機網路>>,<<資料結構與演算法>>真的特別重要!特別重要!特別重要!重要的事情說三遍 我為什麼這麼說,之前也是不理解,隨著所學技術越來越多,發現了一個很有趣的事情, 你會發現其實學一門新的技術並不是很難,一門新的技術,其實只要看看官方,看看官方的demo,不理解的地方查查部落格,看看視訊, 其實學一會一門新的技術也就是十天半個月,簡單的技術可能也就是兩三天,(這裡我指後端哈..前端我是真的只能看懂,可以cv別人的程式碼修改,但是自己真的一點都不會寫!) 一個很有趣的點是什麼?就是這些新技術的思想都用到了之前的基礎和知識,把之前的技術再次封裝起來變得更簡單!如果基礎不好,越往後學, 學會使用這門新技術並不是很困難,但是這個新技術的思想或者有的地方你理解起來很吃力(或者想不通為什麼可以這麼用! 就算你有"起夜級李姐"的腦子也沒有用ヾ(≧へ≦)〃) ==所以說,基礎真的很重要!!!(不止某一門計算機語言的基礎,計算機基礎也很重要!),我現在是深深感受到了這一點,所以才會有不斷的回頭看,溫故知新== JDK(罪惡之路的開始,還有這玩意更新太快了!官方這些人不睡覺的嗎??) [官方網址](https://www.oracle.com/java/technologies/javase-downloads.html) 順帶聊一嘴JDK,JRE,JVM的關係(看到JDK這傢伙就想聊聊這三個哥們的關係)..忍下,後面重新來諞一諞這三個傢伙什麼關係,學過java的應該都知道(肯定是正當關係,別亂想啊.) 1. java基礎語法 2. 流程控制與java方法 3. 陣列 4. 面向物件 5. 異常 6. 常用類 7. 集合 8. IO(Input/Output) 9. 多執行緒程式設計 10. 網路程式設計 11. 反射和註解 12. JUC(進階) 13. JVM(進階) 14. 23種設計模式(進階) # 2.前端基礎 --- 1. HTML5(網頁的骨架) 2. CSS3(網頁的衣服) 3. JavaScript(網頁的靈魂) 4. 至於前端框架,這裡推薦幾個(VUE_前後端分離很火,Bootstrap等等,這個玩意我只看的懂...不會用),如果CV還是會用一點點 # 3.資料庫 --- 1. MySQL(我沒壓歲錢了/瑪澀扣),這個玩意就叫資料庫,更新也挺快..你更任你更,我用5.7 [官方網址](https://www.mysql.com/cn/) 貼心小助手(msyql驅動jar包也放這裡) [點選下載,密碼:fn8r](https://wws.lanzous.com/i28J6n6joif) 2. JDBC(java操作MySQL資料庫的一套API而已) 3. 還有個玩意叫作資料庫連線池(想到的東西都會寫這裡,可以當作學習路線,也可以當作回顧來看,對於我自己來說,看作是溫故知新回顧更好!新的技術的太多了,學的這些玩意有的用不上的,甚至名字都忘記了..記錄下也好,免得白學一趟) 1.druid(這傢伙有一個叫作資料來源監控的功能,非常好用!) [官方網址](https://github.com/alibaba/druid) 2.c3p0 [官方網址](https://www.mchange.com/projects/c3p0/) # 4.框架 --- 1. Mybatis(持久層資料庫框架) [官方網址](https://mybatis.org/mybatis-3/zh/index.html) 貼心小助手(mybatis包也放這裡) [點選下載,密碼:b9q3](https://wws.lanzous.com/b025zkm4j) 2. Spring(目前Java最流行也是大腿的容器框架,Apache官方出品的大雜燴框架) [官方網址](https://spring.io/projects/spring-framework#learn) 3. SpringMVC(JavaWeb框架,目前主流框架) [官方網址](https://docs.spring.io/spring-framework/docs/current/reference/html/web.html) 4. Shiro(蟹肉,安全框架,apache旗下基於使用者-角色-許可權模型的安全框架) [官方網址](https://shiro.apache.org/) 5. SpringBoot(對spring的相關功能進行了封裝,完美的避開復雜的配置,開箱即用,能更專注於業務開發) [官方網址](https://spring.io/projects/spring-boot#learn) # 5.微服務 --- 1. SpringCloud(治理boot開發的微服務,提供了一套微服務的生態鏈/解決方案) [官方網址](https://spring.io/projects/spring-cloud-alibaba#learn) 1. eureka(服務註冊中心和zookepper那個傢伙一樣,充當服務與服務之間的橋樑) 2. gateway(閘道器) 3. fegin(負載均衡) 4. 等等... 3. Dubbo(這傢伙也是服務微服務架構的,不過只專注於微服務的服務,其他微服務的事情不管) [官方網址](https://dubbo.apache.org/zh/) 1. zookepper(註冊中心,註冊生產者和消費者,這傢伙長得像個管道工人) [官方網址](https://zookeeper.apache.org/) 2. dubbo這傢伙也有自己的管理控制檯和監控中心(可以管理微服務和監控微服務) # 6.專案構建工具 --- 1. Maven(這兄弟集中管理jar包的,沒那麼高大上) [官方網址](https://maven.apache.org/) 2. Gralde(這位兄弟也是管理jar包的,我是沒用過..只聽其名) [官方網址](https://gradle.org/) # 7.版本控制工具 --- 1. Git(目前主流的版本控制工具吧!有對應的倉庫的github,全球最大的同性交友網站) [官方網址](https://git-scm.com/) 2. SVN(沒用過,也是版本控制工具) # 8.中介軟體/容器 --- 1. Swagger(絲襪哥,這位哥是介面文件,提高前後端溝通的效率) [官方網址](https://swagger.io/) 2. Nginx(web伺服器,毛子用c語言寫的,一般用來給那隻tom貓做負載均衡/反向代理用,如有分散式檔案儲存需求,可和FastDFS這位兄弟聯手) [官方網址](https://www.nginx.com/)[中文文件](https://www.nginx.cn/doc/) 3. Redis(快取資料庫,有很多功能,一般就作為快取來用,最常用的就是SSO單點登入,還有前後端開發中的資料快取) [官方網址](https://redis.io/) 3.1.單點登入,這裡還有spring官方的一個傢伙叫作SpringSession,也可實現(後面寫一篇關於sso的文章吧..也是自己在專案中經常用到的) 4. RabbitMQ(訊息中介軟體,有6種工作模型,一個系統傳送訊息給這位兄弟,這位兄弟接收到訊息傳送給其他系統,比如...使用者註冊功能,註冊成功後,傳送手機簡訊同時傳送郵件提醒) [官方網址](https://www.rabbitmq.com/) 4.1.還有一位哥叫作Kafka也是訊息佇列,本人沒用過 6. 還有個傢伙叫作FastDFS(分散式檔案系統,學過沒用過..) [官方網址](https://github.com/happyfish100/fastdfs) 7. Docker(大鯨魚背上裝集裝箱,環境獨立,互不影響,容器化技術 解決運維與開發環境不同) [官方網址](https://www.docker.com/) # 9.雜七雜八的技術 --- 1. 資料庫層面的 1. jdbc(這沒啥說的.Java提供的操作資料庫的官方api) [學習網址](https://www.runoob.com/w3cnote/jdbc-use-guide.html) 2. mybatis-plus(支援逆向程式碼生成,偷懶工具.) [官方網址](https://mp.baomidou.com/) 3. springdata-jpa(spring官方的一個框架,這傢伙有一個利用其他語法代替sql的好處,新技術都是懶人搞出來的...) [官方網址](https://spring.io/projects/spring-data-jpa#learn) 2. 身份校驗層面的 1. jwt(java_web_token) 這位哥可比cookie/session好用多了!也更安全,也是單點登陸的一種方案(最常用的是把jwt存在redis中) [官方網址](https://jwt.io/introduction) 2. oauth2(第三方登入開源元件..),其實github上還有比這個更好用的開源專案,開箱即用 [官方網址](https://oauth.net/2/) # 10.Linux --- 1. 伺服器基本都是linux吧,安全開源輕量,當伺服器最合適不過了!(記不住沒關係,忘了百度查,知識大爆炸的時代..記不住會查會用就行) 1.1.最基本的防火牆操作要知道吧 1.2.把一個服務加到系統服務並且設定為開機自啟要知道吧 1.3.SSH要會用吧(阿里雲還有個安全組的東西也要會用,不要開了防火牆沒更新安全組...這就很尷尬了) 1.4.基本的linux操作要知道吧(java主流的技術棧在Linux中怎樣配置一定是要會的,) 1.5.最後是我對Linux這塊的看法(在工作中經常用到的也就那麼些,可以忘記,但是不能不會查,解決問題的能力和搜尋能力是每個優秀的程式設計師必備的技能) # 11.工具 --- 1. 開發工具 1.IntelliJ IDEA(推薦使用,這傢伙是真的好用!) [官方網址](https://www.jetbrains.com/idea/download/#section=windows) 2.Eclipse(前幾年還可,現在還有人再用) [官方網址](https://www.eclipse.org/downloads/packages/) 3.STS(Spring官方自研的開發工具,定製版的eclipse) [官方網址](https://spring.io/tools) 可能還有其他的開發工具..但是不實用也不主流,這裡不推薦 2. 壓測工具 1.jmeter(介面壓力測試工具,也可以當作介面測試工具來用) [官方網址](https://jmeter.apache.org/) 3. JVM調優工具 1.jprofile(jvm分析調優工具) [官方網址](https://www.ej-echnologies.com/products/jprofiler/overview.html) 4. 檢視程式碼工具 1.SublimeText(這個軟體針不戳 推薦) [官方網址](https://www.sublimetext.com/) 2.EditPlus(也還好,反之我裝了沒用過...) [官方網址](https://www.editplus.com/) 5. 遠端連線工具 1.XShell(遠端連線工具 穩定 使用者量大) [官方網址](https://www.netsarang.com/zh/xshell/) 2.XFTP(遠端檔案傳輸工具) [官方網址](https://www.netsarang.com/zh/xftp/) 6. 資料庫連線工具 1.Navicat Premium 12(介面清爽,支援各種資料庫連線,我用的挺爽,缺點:收費) [官方網址](https://www.navicat.com.cn/download/navicat-premium) 2.sqlyog(介面一般,功能和上面差不多 優點:免費) [官方網址](https://webyog.com/product/sqlyog/) 3.redis desktop manager(redis官方連線工具,大方美觀,穩定性好,用這也挺爽 缺點:收費) [官方網址](https://rdm.dev/pricing) 4.fastoredis(開源的redis管理工具) [官方網址](https://fastoredis.com/anonim_users_downloads) 7. 資料庫設計工具: 1.workbench(orcale官方出品的mysql資料庫設計工具) [官方網址](https://dev.mysql.com/downloads/workbench/) 2.PowerDesigner(功能齊全,也還好 缺點:收費) [官方網址](https://www.sap.com/cmp/td/sap-powerdesigner-trial.html) 3.PDMan(國產開源,功能齊全 優點:開源免費) [官方網址](http://www.pdman.cn/#/) 8. 介面測試工具 1.Postman(功能齊全,不收費 缺點:太重了 現在有很多外掛可以代替) [官方網址](https://www.postman.com/downloads/) 2.HTTP Client(idea中就自帶的一個外掛 挺好用) 9. JSON視覺化工具 1.JsonView(一般作為外掛使用,客戶端只有windows版本) [官方網址](https://www.softpedia.com/get/Programming/File-Editors/JSON-Viewer-Mitec.shtml) 10. HOST工具 1.SwitchHosts(支援修改本地Host以及遠端的) [官方網址](https://oldj.github.io/SwitchHosts/) 11. 虛擬機器工具 1.vmware workstation pro(這估計都沒啥說的,主流虛擬機器軟體就是這傢伙) [官方網址](https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html) # 12.映象倉庫/開源映象 --- 1. Maven倉庫(這傢伙經常讓人機驗證,不太喜歡用) [官方網址](https://mvnrepository.com/) 2. 阿里雲倉庫 [官方網址](https://maven.aliyun.com/mvn/view) 3. 國內常用開源軟體映象源 | | 開源專案映象| 國內映象源| |--|--|--| |CentOS | http://mirror-status.centos.org/#cn | | |Archlinux | https://www.archlinux.org/mirrors/status/| | |Ubuntu | https://launchpad.net/ubuntu/+cdmirrors | | |Debian | http://mirror.debian.org/status.html| | |Fedora Linux/Fedora EPEL | https://admin.fedoraproject.org/mirrormanager/mirrors | | |Apache | http://www.apache.org/mirrors/#cn | | |Cygwin | https://www.cygwin.com/mirrors.html | | |網易開源映象站 | | http://mirrors.163.com| |清華大學開源軟體映象站 | | https://mirrors.tuna.tsinghua.edu.cn| |中科大開源軟體映象站 | | http://mirrors.ustc.edu.cn/| |阿里巴巴開源軟體映象站| |http://mirrors.aliyun.com/ | |華中科技大學開源映象站| |http://mirror.hust.edu.cn/ | |蘭州大學開源映象站| | http://mirror.lzu.edu.cn/ | |淘寶 NPM 映象| |https://npm.taobao.org/ | |清華大學開源軟體映象站| |https://mirrors.tuna.tsinghua.edu.cn/| |中科大開源軟體映象站| | http://mirrors.ustc.edu.cn/ | |阿里巴巴開源軟體映象站| | http://mirrors.aliyun.com/ | |華中科技大學開源映象站| | http://mirror.hust.edu.cn/ | |蘭州大學開源映象站| | http://mirror.lzu.