❶ 想要系統學習java到底要學習哪些知識
一、java基礎
學習任何一門編程語言,首先要學習的是基礎語法,開啟Java學習的第一步,當然就是深入掌握計算機基礎、編程基礎語法,面向對象,集合、IO流、線程、並發、異常及網路編程,這些我們稱之為JavaSE基礎。當你掌握了這些內容之後,你就可以做出諸如:電腦上安裝的迅雷下載軟體、QQ聊天客戶端、考勤管理系統等桌面端軟體。
java學習路線大陸傳送門
❷ 曝光一個網站,我周末就耗在上面了
你好呀,我是why。
剛剛過去的周末你幹啥了,是捲起來了,還是躺平了?
我其實是想躺平的,但是無意間發現一個學習的網站,居然被這個網站吸引了,然後就跟著網站捲起來了。
真是一個非常不錯的網站,好東西,要大家分享,於是我決定「曝光」一下。
介紹這個網站之前,我先問你一個問題:
我相信絕大部分同學都是知道的,但是也有很大一部分同學僅僅是在「紙上談兵」的階段而已。
沒有自己實際操作過。
為什麼呢?
我猜你剛剛知道 Arthas 的時候,肯定是被它各種炫酷的操作、頁面給吸引到了。
心想:卧槽,這么 6?
興致勃勃的准備實操一把,結果一看:需要自己搞個 Demo ,把 Demo 扔到伺服器上運行起來,然後在伺服器上安裝 Arthas,才能分析。
這一套操作對於大部分人來說是沒有啥問題的。
但是還是有相當大的一部分同學,都沒有一個屬於自己的伺服器。
巧婦也是難為無米之炊的呀。
第一步就被卡的死死的。
有心實操,奈何條件有限。
於是這事就被擱淺了,放著放著,由於自己沒有實操過,關於 Arthas 的各種騷操作也就忘的差不多了。
沒有一個趁手的 Demo,沒有伺服器,沒有一個安裝好環境的伺服器。
這種問題經常出現,也算是學習中遇到的「最後一公里」的問題。
我碰到的這個網站,就是為了解決「最後一公里」這一問題的。
也許它還不夠完善,但是至少在 Arthas 上的支持已經是屬於無可挑剔了,真正的手摸手教學。
鋪墊了這么多,那麼網站是啥呢?
就是下面這個網站:
知行動手實驗室,是阿里旗下的阿里雲弄出來的雲原生開源技術體驗平台。
它自帶運行環境。
使用者只需要關心教程內容本身,無需為繁瑣的運行環境准備工作浪費時間。所有實驗都在一個事先准備好運行環境的容器中運行。
它具有沉浸式學習體驗。
集互動式文檔、終端、編輯器三個窗口於一個瀏覽器頁面,無需在多個窗口來回復制粘貼。
它可以一鍵自動執行命令、代碼自動修改。
文檔實時可交互,通過滑鼠點擊即可一鍵自動執行命令、代碼自動修改等操作;也可以選擇在終端、編輯器內手動輸入查看效果。
我知道,這里的畫風看起來很像是一個廣告。
但是我發誓,我真的是自來水,真心推薦。
知行動手實驗室,看這個名字就知道強調的是「行知合一」,是「動手」。
我曾經看到過阿里的一篇名叫《我看技術人的成長路徑》的文章。
但是實際情況呢,我們不得不承認,大家自學占據了相當大的比重。
而大家自學的時候都有一個通病就是:只看、只想,基本不動手。
關於動手,我印象最深的就是我看這本書的時候:
我記得看這本書的時候,是我剛剛畢業一年多的時候。
當時覺得技術書還挺貴的,還是和同事一起合買的,一人出一半的錢,書放在辦公室大家一起看看。
我那個時候一有時間就去翻翻這書。
第一次看的時候感覺:哇塞,這真是一本好書啊。裡面全是我不知道的知識點。
但是看完之後,沒隔多久,遇到一個問題然後想了半天:呃,這個問題書上好像講過啊,怎麼就想不起來了呢?
於是我就問同事:你是怎麼看這個書的呀?我前段時間把書每一頁都翻完了,但是現在好多東西都想不起來了。
他告訴我:首先得多看,書中的信息量對你來說還是太大了,看一遍吸收不完全是很正常的。還有,書裡面的這么多動手操作的實例,你跟著敲了沒?我都操作了一遍,遇到了各種各樣的坑。印象自然而然的就深刻了一點。
可謂是一語點醒夢中人,我確實是沒有實操過。
不僅沒有實操過,甚至一看到實操部分的具體命令,我都是幾眼就瞟完了,因為我覺得這部分不重要。
後來我又看了一遍,看這遍的時候,我搞了幾個伺服器,就跟著書上,把上面的命令都敲了一遍。
進度慢了很多很多,但是吸收的東西也多了很多很多。
過去這么幾年了,時至今日,我都記得周末的時候我跑到公司去翻這本書的場景。我都記得我跟著書上搭建集群的時候遇到的各種各樣奇奇怪怪的問題。我都記得那 16384 個槽,還有那我怎麼也運行不起來的 redis-trib.rb。
我都記得幾年以後的一次,面試官問我:你了解 Redis 的集群嗎,你自己搭過集群嗎?
我當然記得了,畢竟之前那個只有一年經驗的小夥子硬著頭皮搭集群的時候,心態都被搞崩過數次。
還有近段時間斷斷續續在看的《MySQL實戰45講》、《MySQL是怎樣運行的》、《高性能MySQL》。
裡面其實都有大量的實例,特別是 45 講,好東西呀,老師全是基於案例去講的。
我看的時候也看的很慢,反正不管懂不懂,先動手開幾個窗口,然後把實驗的 SQL 准備好,跟著老師一步步的來。
總之,就是要動手。動手,才是學習新技術的不二法門。
做中學,就是動手去做,邊做邊學。
但是動手的時候大多數時間都是在環境的准備上,導致效率稍微有了那麼一點點的低下。
而這個網站,就在部分項目上,解決了這個問題。
回到知行動手實驗室,帶大家一起逛一下這個網站。
說真的,目前這個網站的東西不算特別多,也就是花費了我一個周末的時間研究了一圈。
主要是裡面還有一些我不太了解的開源項目,去了解了一下,開拓了一下眼界。
主打的都是阿里生態下的一些技術棧,目前一共有 16 個教程:
可以看到,首先映入眼簾的就是 Arthas 這個診斷工具,畢竟是阿里的親兒子中比較有出息的一個嘛。
全力推廣,不過分。
Arthas 其中分為了四個教程,從入門到實踐一應俱全。
接著是 Spring Cloud Alibaba 系列體驗:
裡面的六個小實驗,其中分布式配置、服務注冊與發現都是基於 Nacos 做的。 RPC 調用使用的是 Dubbo Spring Cloud、限流與熔斷基於 Sentinel、分布式事務使用 Seata、分布式消息基於 RocketMQ。
基本涵蓋了微服務開發的主要模塊。
算的上是一次完整的體驗。
當然了,還有一些其他的 RocketMQ、Dapr、Dubbogo、ChaosBlade、k8s 的實操教程,就不一一解釋了。
大家知道目前裡面有這些東西就行。
上面提到的大家可能對於 Dapr 和 ChaosBlade 稍微陌生一點。
簡單的說一下。
Dapr 的全稱是 Distributed Application Runtime,翻譯過來就是分布式應用運行時。
它主要是為了雲原生而服務的。
應該是屬於服務網格中的一種技術,是一種運行時,支持k8s,目的是為了更好的隔離業務,讓業務更少的感知中間件等基礎建設。
其實與它對標的,應該就是 istio 架構。
需要注意的是 Dapr 是由微軟發起的一個開源項目,並不是阿里。
阿里是 Dapr 開源項目的深度參與者和早期採用者,相當於是對於 Dapr 的一個國內大廠背書。
而 ChaosBlade 就是阿里巴巴開源的一款遵循混沌工程原理和混沌實驗模型的實驗注入工具,幫助企業提升分布式系統的容錯能力,並且在企業上雲或往雲原生系統遷移過程中業務連續性保障。
引用其 git 上的描述:
該項目的生態如下:
目前支持這么多場景:
比如在知行動手實驗室裡面就有三個實驗場景:
總之,關於 ChaosBlade 你就記住一句話:
它是來搞破壞的。給系統或者系統運行的環境注入各種各樣的故障,以測試並提升系統的穩定性和高可用性。
在知行動手實驗室裡面,除了前面提到的官方教程外,它還支持大家自己上傳教程。
下面這幾種情況就很適合在上面發布教程:
你想想,要是我前面提到的《Redis開發與運維》書裡面的隨書實驗能發布到這里,那豈不是美滋滋?
學習效率肯定又高了起來。
教程,是該實驗室的一大核心功能。
但是,它還有另外一大功能:
Java 工程腳手架,下面的標語是:
更適合亞太區開發者的 Java 工程腳手架。
雖然我目前還不明白為什麼是「更適合亞太區」,但是反正聽著就很厲害的樣子。
其頁面是這樣的,是不是很眼熟?
一看就是對標的大家更為熟悉的這個:
但是通過我的實際使用,我不得不說,還是阿里的腳手架更好用一點。
比如我用阿里的腳手架,搭建的時候選擇一個 web 項目的示例代碼:
該項目結構如下:
而且這個 web 項目不需要改一行代碼,甚至不需要你啟動資料庫,就能直接運行起來。
因為其使用的 h2 資料庫:
運行起來後,訪問 h2 控制台如下:
雖然 Demo 項目運行的過程中我發現了幾個 bug,但是整體無傷大雅,修改起來也很簡單,對於初學者來說,還是很友好的。
在這個頁面我還發現了一個叫做 COLA 的項目架構:
COLA 是啥玩意?
我在官網上拉了一個 COLA 的 Demo,跑了起來,項目結構如下:
官方給了這樣的一個代碼結構圖:
看到這里的時候,我大概明白了,有 App 層、Domain 層、 Infrastructure 層,這個架構其實就是 DDD 思想的一種落地吧。
經過這兩天短暫的了解,我發現如果想要理解一下抽象的 DDD 思想,那麼 COLA 架構,我感覺是一個不錯的切入點。
前面介紹了這么多東西,我還是來帶著你實操一把,裡面的黃金教程:
其實我覺得真的沒有這個必要,因為它上面的教程已經是一步步的手摸手教學了。
比如,你看這個 Arthas 基礎教程,我給你錄個屏幕:
左邊是操作文檔,右邊是運行環境。所及即所得,多香啊。
我是強烈建議你把四個教程都自己去看一遍,操作一把。
但是重心可以放到這個教程裡面:
你看看這個教程裡面的 14 個實驗:
比如其中的「Arthas熱更新代碼案例」,這個其實就是一個生產環境常常會遇到的一個問題:
有一個判斷邏輯有問題,我不想修改代碼之後,重新打包,然後走上線流程,怎麼辦?
Arthas 熱更新了解一下?
比如,下面的代碼:
現在當請求的 id 小於 1 的時候會拋出異常。但是上線之後,我們經過評估發現這個地方也許返回一個默認的值,不拋出異常會更好一點。
那麼我們就可以用 Arthas 對這段代碼進行熱更新。
左邊是修改之後,右邊是修改之前:
具體怎麼去修改,怎麼去用 ClassLoader 載入修改之後的代碼,這個案例裡面都有詳細的使用說明:
當然了,如果你要是在實操之後,又再去了解了其熱更新背後的工作原理,那麼是再好不過的了。
知道了使用方式,掌握了實現原理。恭喜你,再給自己的套一個生產案例,不經意間面試的時候有多了一個加分點。
另外,悄悄的說個騷操作。
你可以隨便找個教程,領個窗口,然後......
比如我裝個 Redis:
用起來也是不錯的:
而且它也支持文件的上傳和下載:
誒,反正就是玩嘛。就當熟悉 Linux 命令了。
❸ rocketMq No route info for this topic 問題
安裝mq的時候設置了環境變數了後來把mq安裝包換到別的工作路徑下,環境變數沒修改,發生了這個錯誤後來把環境變數改了,就過了........