目前最火的Java主流技術棧及開發工具
阿新 • • 發佈:2021-03-26
# 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.