整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          編程新手(二):Java最佳學(xué)習(xí)方式-主題式推進(jìn)

          編程新手(二):Java最佳學(xué)習(xí)方式-主題式推進(jìn)


          佳Java學(xué)習(xí)方式


          .導(dǎo)引

          學(xué)習(xí) Java 既簡(jiǎn)單又有趣,無(wú)論您有什么背景。有了這本綜合指南的幫助,您將可開(kāi)始 Java 之旅,并擁有掌握基本概念的所有資源。

          通過(guò)前面文章的介紹,理解了Java是——

          • ? 面向?qū)ο蟮木幊陶Z(yǔ)言;
          • ? 可移植而平臺(tái)無(wú)關(guān);
          • ? 能夠自動(dòng)垃圾收集;
          • ? 多線程并發(fā)開(kāi)發(fā);
          • ? 強(qiáng)健而安全;
          • ? 動(dòng)態(tài),高性能;
          • ? 分布式和擴(kuò)展等等……

          Java 代碼運(yùn)行在 Java 虛擬機(jī)上,該虛擬機(jī)將 Java 代碼轉(zhuǎn)換為操作系統(tǒng)能夠理解的語(yǔ)言。所有這些特性以及更多特性使 Java 依然是 2021 年(還將持續(xù)下去)的頂級(jí)編程語(yǔ)言之一。

          Java很有魅力,對(duì)于新手或初學(xué)者,有沒(méi)有最佳的學(xué)習(xí)方式呢?這就是本篇文章將要討論的和表達(dá)的內(nèi)容——這里主要是為初學(xué)者指明漸進(jìn)式的Java學(xué)習(xí)核心基礎(chǔ)點(diǎn),這是針對(duì)性編程學(xué)習(xí)必備以及進(jìn)階的支持基本面。根據(jù)這個(gè)學(xué)習(xí)方式,就可把主題知識(shí)點(diǎn)連成體系化知識(shí)線,然后再根據(jù)需要來(lái)拓展關(guān)聯(lián)技術(shù)面或深化體系知識(shí)“點(diǎn)”。

          友情提醒:我雖然寫(xiě)了不少,但主要請(qǐng)關(guān)注小標(biāo)題所說(shuō),以及最后的結(jié)論部分。具體的成長(zhǎng)還得靠你自己!如果有學(xué)習(xí)需要或咨詢,請(qǐng)給我留言或私信。

          2. 最佳方式:主題式迭代學(xué)習(xí)

          學(xué)習(xí)任何東西都沒(méi)有捷徑可走,Java 也是如此。如果你想掌握這門(mén)語(yǔ)言(相信我,這是值得的),你必須在你的系統(tǒng)上設(shè)置它并開(kāi)始練習(xí)。下載(https://www.oracle.com/java/technologies/downloads/)并安裝 JDK(Java 開(kāi)發(fā)工具包)和 JRE(Java 運(yùn)行時(shí)環(huán)境)以及您熟悉的任何 IDE。

          對(duì)于初學(xué)者來(lái)講,Easy Eclipse(http://easyeclipse.org/site-1.0.1/distributions/desktop-java.html) 非常適合編寫(xiě)程序和構(gòu)建獨(dú)立應(yīng)用程序,也很適合用來(lái)開(kāi)始Java編程的學(xué)習(xí);開(kāi)源的Eclipse(https://www.eclipse.org/downloads/packages/),建議初學(xué)者下載Eclipse IDE for Java Developers版即可,后續(xù)個(gè)根據(jù)需要下載企業(yè)版;NetBeans功能很強(qiáng)大,對(duì)于初學(xué)者來(lái)說(shuō)也很適用,只是先不要對(duì)其本身關(guān)注太多,初學(xué)者很多功能還用不上;IntelliJ IDEA社區(qū)版不收費(fèi),但對(duì)于初學(xué)者有較高的要求,需要慢慢適應(yīng) ;針對(duì)初學(xué)者的BlueJ(https://www.bluej.org/),更關(guān)注學(xué)習(xí)。

          隨著對(duì)Java技術(shù)的提高和實(shí)際工作的需要,將來(lái)IDE的選擇,建議NetBeans、Eclipse、以及IntelliJ IDEA(高級(jí)版收費(fèi)的)

          那在我們進(jìn)入核心概念之前,這里有一些你應(yīng)該永遠(yuǎn)記住的事情——

          • l 永遠(yuǎn)不要從“學(xué)習(xí) Java 有多難啊”的心態(tài)開(kāi)始。始終要認(rèn)為它必須是有保證的安全的,這也是為什么有這么多人學(xué)它的原因所在。
          • l 如果您不是程序員,請(qǐng)多加些耐心和堅(jiān)持——毫無(wú)疑問(wèn),您會(huì)更上一層樓,到達(dá)你的期望之地。
          • l 考慮個(gè)真實(shí)的場(chǎng)景并列出你將如何實(shí)現(xiàn)它。例如,如果您想從大潤(rùn)華購(gòu)買(mǎi)雜貨,結(jié)賬流程是什么?同樣的方法,你會(huì)怎么做?如果您想到了設(shè)計(jì)/流程,您就一定會(huì)找到實(shí)現(xiàn)它并獲得結(jié)果的方法。可以使用 Java 和 J2EE 構(gòu)建成熟的 Web 應(yīng)用程序。或者思考個(gè)簡(jiǎn)單的個(gè)人工作管理和跟著如何用程序?qū)崿F(xiàn)?
          • l 有很多資源可用于學(xué)習(xí) Java。如果您遇到困難,Java 社區(qū)非常重要且活躍,會(huì)為您提供幫助。
          • l IDE 會(huì)處理您的所有語(yǔ)法錯(cuò)誤。所以,專注于核心功能,但也要熟悉語(yǔ)法。
          • l 閱讀本文并遵循從簡(jiǎn)單程序開(kāi)始,然后在其上添加功能以使其更復(fù)雜和更具交互性的方法。

          現(xiàn)在我們有了積極的心態(tài)和學(xué)習(xí)的動(dòng)力,那就來(lái)看看學(xué)習(xí)用 Java 編寫(xiě)高效代碼所需的所有概念——

          1)變量和數(shù)據(jù)類型

          每天,我們都會(huì)遇到不同類型的數(shù)據(jù)。例如,您的司機(jī)的電話號(hào)碼是一個(gè)整數(shù),但他的名字是一個(gè)字符串(字符數(shù)組)。同樣,他給您車(chē)輛加的汽油價(jià)格是浮點(diǎn)數(shù)(十進(jìn)制小數(shù))。 Java 可處理很多數(shù)據(jù)類型,比如:

          String driverName;
          int telephoneNo;
          float petrolPrice;
          boolean isRegular;

          Java 中的最佳實(shí)踐之一是遵循正確的命名約定。上面的變量(driverName、telephone.etc...)和方法應(yīng)該以小寫(xiě)開(kāi)頭,后面的單詞以大寫(xiě)字母開(kāi)頭——driverName。同樣,由于布爾數(shù)據(jù)類型返回 true 或 false,因此以 is、are、has 等開(kāi)頭的變量命名是一個(gè)好習(xí)慣......

          將數(shù)據(jù)存儲(chǔ)在變量中的好處是我們可以在代碼的任何地方使用變量。使用變量的限制由其作用域定義,可以是局部的、靜態(tài)的或全局的。

          數(shù)據(jù)類型 char、int、float、boolean 和 double 被稱為原始類型(也叫基本類型),Java對(duì)每一種類型都有對(duì)應(yīng)的對(duì)象類。例如,int 有 Integer; boolean 有 Boolean 等等。一個(gè)字符串就是個(gè)String類型的對(duì)象。

          那么,我們?nèi)绾翁幚磉@些數(shù)據(jù)呢?我們要對(duì)其進(jìn)行一些操作!

          2)數(shù)據(jù)操作

          編程是要處理數(shù)據(jù)的,數(shù)據(jù)有很多種的。例如,根據(jù)司機(jī)是否規(guī)范合格,可以給他一些獎(jiǎng)勵(lì),或者根據(jù)他加的油量,我們可以知道他開(kāi)了多少公里。類似代碼可以這樣表示:

          if (isRegular){
          salary +=200;
          }

          條件表達(dá)式結(jié)果只能是布爾值(true或false)。如果我們比較兩個(gè)字符串,例如if(driverName==“Chand”),則可使用比較運(yùn)算符'==',它不同于賦值運(yùn)算符'='。同樣的,還有<、<=、> , >=等等。

          3)條件和循環(huán)

          就像我們?cè)谏厦婵吹降哪菢樱癷f”是一個(gè)條件判斷,用于測(cè)試某些內(nèi)容是否準(zhǔn)確并相應(yīng)地返回結(jié)果(true或false)。if通常與可以處理多種情況的 else if 和 else 語(yǔ)句結(jié)合使用。

          if(marks < 23)
              grade=‘F’;
          else if(marks > 23 && marks < 60)
              grade=‘D’;
          else
              grade=‘B’;

          請(qǐng)注意,&& 表示兩個(gè)表達(dá)式都必須為true,if 判斷檢測(cè)才能成功。

          還要記住的是代碼執(zhí)行中循環(huán)的相關(guān)應(yīng)用:while和for。

          4)函數(shù)/方法

          我們編寫(xiě)的很多代碼都可以分成代碼塊,以便應(yīng)用程序的許多其它部分可以重用它們。系統(tǒng)的此類塊稱為函數(shù)/方法(基于OOP的叫法)。例如,grade可以是基于分?jǐn)?shù)的函數(shù)。當(dāng)系統(tǒng)被分成更小的函數(shù)時(shí),它們看起來(lái)整潔、獨(dú)立并且易于理解。函數(shù)是模塊化的,可重復(fù)使用。

          Java 中的函數(shù)名以小寫(xiě)開(kāi)頭,后面的單詞首字母大寫(xiě)。例如,獲取成績(jī)的grades(float marks),返回字符的、 isRegular(String driverName)返回布爾值 等。

          接下來(lái)就才是 Java 的真正強(qiáng)大——

          5)面向?qū)ο缶幊?/h1>

          如果您想了解 OOPS 概念的詳細(xì)信息,請(qǐng)觀看我之前嵌入在本文中的上述視頻。盡管如此,對(duì)于本文,您需要知道的是,在 OOPS 中,一切都被視為對(duì)象。鉛筆是一個(gè)對(duì)象,汽車(chē)、植物、動(dòng)物,甚至司機(jī)也是一個(gè)對(duì)象。

          繼續(xù)我們的司機(jī)示例,假設(shè)以下屬性標(biāo)識(shí)司機(jī) – driverName、joinDate、isRegular、dateOfBirth 和 avgCustomerRating。

          假設(shè)像優(yōu)步這樣的服務(wù)提供商會(huì)有很多這樣的司機(jī)。每個(gè)司機(jī)都具有所有這些屬性,這些屬性將以其獨(dú)特的值加以區(qū)分。這意味著,我們可用這些屬性作為司機(jī)的成員變量來(lái)創(chuàng)建類“Driver”。每當(dāng)我們需要獲取或設(shè)置特定司機(jī)的詳細(xì)信息時(shí),我們將使用 new 運(yùn)算符創(chuàng)建 Driver 類的“對(duì)象”。

          Driver driver=new Driver();

          在創(chuàng)建類時(shí),我們還為成員創(chuàng)建了“getter 和 setter”方法,通過(guò)這些方法我們可以獲取屬性成員各個(gè)值。假如必須設(shè)置整個(gè)對(duì)象,我們可使用在類中定義的構(gòu)造函數(shù)。如下所示:

          public Driver(String driverName, String joiningDate, boolean isRegular,
          String dateOfBirth, float avgCustomerRating){
          this.driverName=driverName;
          this.joiningDate=joiningDate;
          this.isRegular=isRegular;
          this.dateOfBirth=dateOfBirth;
          this.avgCustomerRating=avgCustomerRating;
          }

          現(xiàn)在,當(dāng)想創(chuàng)建這樣一個(gè)對(duì)象時(shí),就可以通過(guò)調(diào)用 new 操作符和這個(gè)構(gòu)造函數(shù)來(lái)實(shí)現(xiàn):

          Driver driver1=new Driver(“John”, “21/12/2018”, true, “12-01-1983”, 4.5);

          如果您正在同時(shí)練習(xí)代碼,則在修復(fù)編譯錯(cuò)誤(如果有)之后,就可構(gòu)建并運(yùn)行程序,然后還可繼續(xù)擴(kuò)展項(xiàng)目。同時(shí)您也將看到與每個(gè) .java 文件對(duì)應(yīng)的 .class 文件。

          6)數(shù)據(jù)結(jié)構(gòu)和循環(huán)

          在Java中,有許多如數(shù)組、列表、映射、樹(shù)等的數(shù)據(jù)結(jié)構(gòu)。所有這些都在 Collection 框架下,除了 Array,它是 java.util 包的一部分。理解和掌握 Collection 將使您對(duì)存儲(chǔ)和檢索數(shù)據(jù)感到非常爽——這意味著您學(xué)習(xí)成功了一半。來(lái)用數(shù)組做一個(gè)簡(jiǎn)單的例子。在我的“何為Java...” (https://www.toutiao.com/a7045534771065438734/?log_from=4b2c72124184e_1640578614119)中,用 ArrayList 進(jìn)行了類似的操作,可去看看。

          Driver[] drivers=new Driver[5];

          //為每個(gè)司機(jī)設(shè)置詳細(xì)信息或從數(shù)據(jù)庫(kù)或用戶輸入中獲取它

          假設(shè)有五個(gè)司機(jī),我們想根據(jù)每個(gè)司機(jī)的一些條件設(shè)置工資。為此,我們使用“for”循環(huán)。

          for(int i=0; i<5; i++){
          if(driver[i].isRegular && driver[i].salary < 4000)
          driver[i].salary +=200;
          }

          請(qǐng)注意,我們獲取每個(gè)司機(jī)的詳細(xì)信息,然后對(duì)每個(gè)司機(jī)進(jìn)行一些檢查。之后,我們?cè)O(shè)置一個(gè)值。在這里,我們將 Driver 的硬編碼為 5個(gè),但在實(shí)際應(yīng)用程序中,我們將從數(shù)據(jù)庫(kù)或控制臺(tái)獲取它。

          那又該如何操作呢?請(qǐng)繼續(xù)……

          7)用戶輸入

          考慮從用戶那里獲取司機(jī)詳細(xì)信息。對(duì)于每個(gè)數(shù)據(jù),使用剛剛學(xué)習(xí)的 for 循環(huán)處理更多信息。首先,讓我們創(chuàng)建數(shù)組。這次我們不設(shè)定長(zhǎng)度,而是向用戶詢問(wèn)要多少。

          如果還沒(méi)有創(chuàng)建 Driver 類,現(xiàn)在使用您的 IDE 來(lái)創(chuàng)建(我這里用的是NetBeans)。這些東西最好在實(shí)踐中學(xué)習(xí)。要?jiǎng)?chuàng)建這個(gè)類,讓我們首先在 IDE 上創(chuàng)建一個(gè)項(xiàng)目。創(chuàng)建一個(gè)任何名稱的項(xiàng)目,例如 myLearning。然后創(chuàng)建一個(gè)名為 com.learning 的包(意思是源代碼)。在包內(nèi),使用成員創(chuàng)建類 Driver。只需單擊幾個(gè)按鈕,即可在 IDE 上生成 getter 和 setter。

          創(chuàng)建包c(diǎn)om.learning,完成后:

          創(chuàng)建Driver類

          在此類中編寫(xiě)或創(chuàng)建我們之前討論過(guò)的構(gòu)造函數(shù)

          接著可以創(chuàng)建Test類,此類擁有 public static void primary (String args[]) 方法以用于測(cè)試之用。

          要從用戶那里獲得輸入,最好的方式是使用“Scanner”方法。

          之后,我們可以使用Scanner的 next() 方法來(lái)一一獲取輸入。我們第一件事是要知道存儲(chǔ)司機(jī)數(shù)量的信息。然后,我們創(chuàng)建一個(gè)相同長(zhǎng)度的數(shù)組,循環(huán)遍歷它,實(shí)例化循環(huán)內(nèi)的每個(gè)對(duì)象,并使用構(gòu)造函數(shù)或 setter 方法設(shè)置類成員的值。


          8)連接數(shù)據(jù)庫(kù)

          為了讓我們的 java 代碼連接到數(shù)據(jù)庫(kù),我們需要一個(gè) JDBC 驅(qū)動(dòng)程序。不同的數(shù)據(jù)庫(kù)有不同的驅(qū)動(dòng);例如,對(duì)于 MySQL,驅(qū)動(dòng)程序?qū)⑹?com.mysql.jdbc.Driver。接下來(lái),我們需要連接到數(shù)據(jù)庫(kù)所在的 URL(位置)。為了訪問(wèn)數(shù)據(jù)庫(kù),我們還需要用戶名和密碼。獲取連接后,我們可以通過(guò)代碼執(zhí)行查詢以獲取或設(shè)置必要的詳細(xì)信息。

          對(duì)于任何簡(jiǎn)單或復(fù)雜的 Web 應(yīng)用程序,都必須了解 JDBC(Java 數(shù)據(jù)庫(kù)連接)——這一點(diǎn)要在學(xué)習(xí)的過(guò)程中牢記。

          9)文件處理

          Java 中的文件處理是使用兩個(gè)類 FileWriter 和 FileReader 完成的。 Java 文檔描述了這些類提供的所有方法和構(gòu)造函數(shù),它們非常簡(jiǎn)單。之前使用了 FileInputStream 和 FileOutputStream,但前兩者更可取,因?yàn)樗鼈儗?xiě)入字符流,而后兩個(gè)是字節(jié)流類。請(qǐng)記住,對(duì)于文件處理,必須捕獲像 FileNotFoundException 這樣的異常。

          當(dāng)然,隨著技能的提高,實(shí)際學(xué)習(xí)和應(yīng)用中,還有更多的IO相關(guān)的操作API需要深入研究的。

          10)異常處理

          Java 擁有很大的靈活性。但是作為開(kāi)發(fā)人員需要知道:我們的代碼在哪些情況下會(huì)給出錯(cuò)誤的結(jié)果。一種這樣的情況是用戶沒(méi)有輸入正確的值。比如你把driverName設(shè)置為String,用戶引入了一些數(shù)字或者隨機(jī)字符,這樣的情況我們應(yīng)該可以處理并通知用戶。這些通常在客戶端使用 JavaScript 完成相關(guān)校驗(yàn),但客戶端也可以禁用 JavaScript。作為開(kāi)發(fā)人員,我們也需要從我們這邊(后臺(tái))完成此驗(yàn)證。一些標(biāo)準(zhǔn)的異常如:

          • ü NullPointerException,當(dāng)試圖對(duì)空對(duì)象進(jìn)行一些操作時(shí)會(huì)報(bào)出。
          • ü NumberFormatException:當(dāng)嘗試將字符串轉(zhuǎn)換為數(shù)字時(shí),它是無(wú)效數(shù)字格式串。
          • ü ArrayIndexOutOfBoundsException:當(dāng)試圖訪問(wèn)大于列表大小的元素時(shí)。
          • ……

          Java 中有許多此類受檢查異常和非受檢異常,您需要注意這些異常才能獲得健壯的代碼。

          11)垃圾收集

          雖然我們總是厭惡垃圾,但 Java GC 會(huì)是您喜歡的東西。作為程序員,您不必?fù)?dān)心垃圾收集器線程的工作方式。它只是安靜地完成它的工作。但是,如果您有興趣,你要好好研究一下,因?yàn)樵谝恍┖诵?Java 面試中會(huì)被問(wèn)到。

          12)多線程

          為了處理并發(fā),Java 支持多線程并具有高效的內(nèi)置方法。雖然許多人認(rèn)為線程是一個(gè)可怕的話題,但在 Java 中卻并非如此,使用起來(lái)非常方便。線程的行為有時(shí)會(huì)有所不同,就如人們都會(huì)有某個(gè)時(shí)候情緒波動(dòng)一樣,沒(méi)啥大驚小怪的?只要處理得當(dāng),線程總是像處于最佳狀態(tài)。

          例如,您正在某地某事嘗試預(yù)訂出租車(chē),總會(huì)有很多用戶嘗試從相同的起點(diǎn)尋找相同的出租車(chē)——這里出現(xiàn)的多個(gè)人就像運(yùn)行的多線程一樣。

          那當(dāng)這樣時(shí),誰(shuí)獲得預(yù)訂確認(rèn)呢?

          第一個(gè)被確認(rèn)的人!如果您快速預(yù)訂了,則車(chē)子為您鎖定——其他打車(chē)人不會(huì)看到這輛特定的出租車(chē)。但是,如果您出于某種原因取消叫車(chē),則會(huì)解除鎖定,此車(chē)又可供其他人預(yù)定使用。線程也是如此。如果一個(gè)線程正在更改其他人想要訪問(wèn)的代碼的一部分,則其他線程必須等待輪到它們,以便所有線程不會(huì)同時(shí)處理相同的數(shù)據(jù)并破壞它。多線程讓我們的生活變得輕松——想想在線票務(wù)、銀行交易和所有安全交易——如果每個(gè)人都可以同時(shí)訪問(wèn)相同的數(shù)據(jù),那世界將肯定充滿混亂!

          13)創(chuàng)建Web應(yīng)用

          好的,現(xiàn)在我們來(lái)到了真正的地方!學(xué)習(xí) Java 的全部意義在于創(chuàng)建可交互且快速的強(qiáng)大 Web 應(yīng)用程序。如果您已經(jīng)安裝了 IDE,那么您需要做的就是將 Jakarta EE(以前叫J2EE) 組件安裝到您的 IDE 中。前面的掌握后,就要開(kāi)始學(xué)習(xí)如何構(gòu)建可擴(kuò)展且健壯的 Web 應(yīng)用程序了。

          要構(gòu)建 Web 應(yīng)用程序,需要了解 servlet 和 JSP(Java 服務(wù)器頁(yè)面)的基礎(chǔ)知識(shí),它們很容易學(xué)習(xí)。還有許多其他框架,如 Spring、Struts,等等,它們?cè)谂c Java 結(jié)合時(shí)提供了強(qiáng)大的 Web 應(yīng)用程序支持。這個(gè)我們可以選擇不同的相關(guān)教程來(lái)進(jìn)一步學(xué)習(xí)。

          14)創(chuàng)建web服務(wù)

          Java Web 服務(wù)用于與 MVC 架構(gòu)的不同層進(jìn)行交互。 Java Web 服務(wù) (JWS) 應(yīng)用程序有兩種通信方式——SOAP 和 RESTful 服務(wù)——這個(gè)通信是通過(guò) WSDL(Web 服務(wù)描述語(yǔ)言)完成的。在學(xué)習(xí)到這一步后,可以找些關(guān)于 SOAP 和 REST 的內(nèi)容豐富的教程,然后開(kāi)始使用 Java Web 服務(wù)。

          web服務(wù),這個(gè)是走向微服務(wù)的熱門(mén)抓手,請(qǐng)一定順溜地學(xué)到這里,那說(shuō)明你的技術(shù)已經(jīng)可以獨(dú)當(dāng)一面了 ^_^

          3.結(jié)論

          在本文中,我談?wù)摿苏莆?Java 所需了解的各種 子主題的摘要。 Java 還使用了許多其他 OOPS 概念——例如裝箱、拆箱、設(shè)計(jì)模式、泛型等,可以幫助您來(lái)更好地進(jìn)行編碼實(shí)踐,幫助您構(gòu)建功能性應(yīng)用程序。你還可通過(guò)做些面試題來(lái)檢驗(yàn)?zāi)闶欠衲芑卮疬@些 Java 面試問(wèn)題來(lái),以確保你的理解是正確的!

          通過(guò)上面的Java編程的子主題,作為初學(xué)者在具體學(xué)習(xí)時(shí)就有了更清晰的進(jìn)階路線,即可快速打通知識(shí)點(diǎn),由可針對(duì)性深挖“主題”知識(shí)。

          為了這些子主題有落腳點(diǎn),最后這里給出了一個(gè)Java學(xué)習(xí)的初級(jí)入門(mén)和高級(jí)進(jìn)階的書(shū)籍列表,基于我們談到的這些循序漸進(jìn)的學(xué)習(xí)主題,這些書(shū)籍將使你學(xué)習(xí) Java 擁有更愉快而徹底的體驗(yàn)。

          這些書(shū)籍是(都有對(duì)應(yīng)的中文版):

          • 1. Core Java Volume I – Fundamentals
          • 2. Effective Java
          • 3. Java: A Beginner’s Guide
          • 4. Java - The Complete Reference
          • 5. Head First Java
          • 6. Java Concurrency in Practice
          • 7. Test-Driven: TDD and Acceptance TDD for Java Developers
          • 8. Head First Object-Oriented Analysis Design
          • 9. Java Performance: The Definite Guide
          • 10. Head First Design Patterns
          • 11. Clean Code – A Handbook of Agile Software Craftsmanship

          除此之外,還……你先把上面的搞定再說(shuō)吧。

          習(xí)是一件很痛苦的事情,很多人們總問(wèn)別人有沒(méi)有捷徑,問(wèn)學(xué)習(xí)路線,好像問(wèn)完了就學(xué)會(huì)了一樣。其實(shí)我想說(shuō)是:要是你真的想做一件事,那么就立刻去做好了,因?yàn)闀r(shí)間是不會(huì)等你的,在你猶豫的時(shí)候,時(shí)間早就流走了。所以與其猶豫不決不如理科開(kāi)始行!

          有的人說(shuō)學(xué)Java要先學(xué)HTML,那就一起來(lái)看HTML是什么吧!

          首先HTML 并不是一種編程語(yǔ)言,而是一種標(biāo)記語(yǔ)超文本標(biāo)記語(yǔ)言,負(fù)責(zé)展示網(wǎng)站的外觀,用來(lái)控制各種屬性的展示,要想做JavaWeb開(kāi)發(fā),HTML是必須學(xué)會(huì)的基礎(chǔ)。

          既然要學(xué)習(xí)開(kāi)發(fā),那么必須要有工具呀!

          EditPlus 3

          嗯!就先來(lái)認(rèn)識(shí)一下HTML的一些標(biāo)簽

          其中的主要的標(biāo)簽如下

          <html>-------------------開(kāi)始html文檔

          <head>--------------------開(kāi)始文檔頭部

          <title>---------------------開(kāi)始文檔標(biāo)題

          This is first page

          </title>---------------------結(jié)束文檔標(biāo)題

          </head>----------------------結(jié)束文檔頭部

          <body>-----------------------開(kāi)始文檔體

          Hello World.

          </body>------------------------結(jié)束文檔體

          </html>------------------------結(jié)束html文檔

          新建 HTML 頁(yè)面就會(huì)出現(xiàn)代碼如下(綠色文字為注釋):

          一個(gè)頁(yè)面的整體結(jié)構(gòu)就是:

          所有的內(nèi)容都在<html></html>這兩個(gè)標(biāo)簽內(nèi)部。然后分為 <head> </head>頭部和 <body> </body>身體兩部分。

          文檔的頭部描述了文檔的各種屬性和信息,包括文檔的標(biāo)題、在 Web 中的位置以及和其他文檔的關(guān)系等。

          絕大多數(shù)文檔頭部包含的數(shù)據(jù)都不會(huì)真正作為內(nèi)容顯示給讀者。

          <body>標(biāo)簽包含文檔的所有內(nèi)容

          (比如文本、超鏈接、圖像、表格和列表等等。)

          <title> 定義文檔的標(biāo)題。

          瀏覽器會(huì)以特殊的方式來(lái)使用標(biāo)題,并且通常把它放置在瀏覽器窗口的標(biāo)題欄或狀態(tài)欄上。同樣,當(dāng)把文檔加入用戶的鏈接列表或者收藏夾或書(shū)簽列表時(shí),標(biāo)題將成為該文檔鏈接的默認(rèn)名稱。

          下面的就算是一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)了。

          讓我們保存執(zhí)行一下看看。


          hello world!Java學(xué)習(xí)我來(lái)了!

          AVA中將WORD轉(zhuǎn)換為HTML導(dǎo)入到WANGEDITOR編輯器中(解決圖片問(wèn)題,樣式,非常完美),wangEditor如何導(dǎo)入word文檔,如何實(shí)現(xiàn)導(dǎo)入WORD文檔到WANGEDITOR編輯器中?WANGEDITOR導(dǎo)入WORD文檔 WANGEDITOR WORD導(dǎo)入插件,HTML富文本編輯器導(dǎo)入WORD,Web富文本編輯器導(dǎo)入WORD,WANGEDITOR富文本編輯器導(dǎo)入WORD,WANGEDITOR導(dǎo)入WORD,WANGEDITORWORD導(dǎo)入編輯,wangEditor集成word導(dǎo)入功能,

          后端是用的JAVA,SpringBoot框架,實(shí)際上前端在集成的時(shí)候是不關(guān)心后端具體是用什么語(yǔ)言實(shí)現(xiàn)的。

          它這個(gè)版本有幾個(gè)wangEditor3,wangEditor4,wangEditor5,好用的是就3和4,5不支持插入HTML。但是用戶用插入HTML這個(gè)功能用的比較多。

          vue-cli-wangEditor3,vue3-cli-wangEditor4集成word導(dǎo)入功能。在VUE框架下面集成了WORD導(dǎo)入功能。

          用戶選擇word文件后,自動(dòng)轉(zhuǎn)換成html,自動(dòng)將word里面的圖片上傳到服務(wù)器中,自動(dòng)將HTML添加到編輯器中。

          主要的方案就是提供一個(gè)轉(zhuǎn)換接口,轉(zhuǎn)換接口使用RESTful協(xié)議,這樣的話兼容性更好一點(diǎn),其它的平臺(tái)用起來(lái)的話更方便簡(jiǎn)單一點(diǎn),而且測(cè)試起來(lái)也方便。

          現(xiàn)有項(xiàng)目需要為T(mén)inyMCE增加導(dǎo)入word文件的功能,導(dǎo)入后word文件里面的圖片自動(dòng)上傳到服務(wù)器中,返回圖片和文字HTML,word里面的文本樣式保留

          用戶一般在發(fā)新聞和發(fā)文章時(shí)用到,算是一個(gè)高頻使用功能,用戶體驗(yàn)上來(lái)講確實(shí)是很好,和以前的發(fā)新聞或者發(fā)文章的體驗(yàn)比起來(lái)要方便許多,用戶用的更爽。

          1.下載示例

          https://gitee.com/xproer/zyoffice-vue3-cli-wang-editor4

          2.引入組件

          3.添加按鈕

          4.配置轉(zhuǎn)換接口

          效果

          開(kāi)發(fā)文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsDazDKJ

          產(chǎn)品比較:https://drive.weixin.qq.com/s?k=ACoAYgezAAwh8oq8Zf

          產(chǎn)品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwjJM8412

          報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwsfyDdrf


          主站蜘蛛池模板: 中文字幕一区二区三区在线播放| 日本免费电影一区二区| 久久久久人妻一区精品| 日产亚洲一区二区三区| 国产伦精品一区二区三区无广告| 亚洲高清日韩精品第一区| 国产在线视频一区| 美女AV一区二区三区| 国模视频一区二区| 亚洲综合av一区二区三区不卡| 国产精品视频一区二区三区四| 色噜噜一区二区三区| 日韩aⅴ人妻无码一区二区| 国产香蕉一区二区在线网站| 制服丝袜一区在线| 色久综合网精品一区二区| 国产亚洲一区二区在线观看| 狠狠色婷婷久久一区二区| 国产无码一区二区在线| 中文字幕一区二区三区免费视频 | 人妻无码第一区二区三区| 亚洲乱码国产一区网址| 一区 二区 三区 中文字幕 | 一区二区三区观看免费中文视频在线播放 | 风间由美在线亚洲一区| 亚洲av无码一区二区三区天堂| 精品一区精品二区制服| 中文字幕人妻AV一区二区| 国产小仙女视频一区二区三区| 韩国福利一区二区美女视频| 亚洲国产成人久久一区二区三区| 无码夜色一区二区三区| 日韩高清一区二区| 精品国产不卡一区二区三区| 红桃AV一区二区三区在线无码AV | 台湾无码AV一区二区三区| 精品视频一区二区三区在线观看| 久久久精品一区二区三区| 蜜臀AV免费一区二区三区| 欧美日本精品一区二区三区| 日韩免费一区二区三区|