Java開發和運行環境的搭建

来源:http://www.cnblogs.com/xiadongqing/archive/2016/04/20/5414649.html
-Advertisement-
Play Games

Java開發需要準備的東西?JDK+Eclipse 其中JDK的意思是Java開發工具包,Eclipse是進行用於做Java程式開發的工具(當然你也可以用記事本什麼的去做)。其他開發工具:JCreator,JBuilder,... jdk的介紹和安裝教程度娘裡面到處都是,這裡自己也在啰嗦一下吧。 關 ...


Java開發需要準備的東西?

JDK+Eclipse 其中JDK的意思是Java開發工具包,Eclipse是進行用於做Java程式開發的工具(當然你也可以用記事本什麼的去做)。

其他開發工具:JCreator,JBuilder,...

jdk的介紹和安裝教程度娘裡面到處都是,這裡自己也在啰嗦一下吧。


關於jdk的詳細介紹:

JDK是Java Development Kit的縮寫,即Java開發工具集。JDK是整個Java的核心,包括了Java運行環境(JRE)、Java開發工具和Java基礎類庫。

JRE是Java Runtime Environment的縮寫,即Java運行時環境。Java程式運行時必需要JRE的支持。

Java的平臺版本:
Java分為J2SE、J2EE和J2ME三個不同的平臺版本,即標準版(Java 2 Platform, Standard Edition)、企業版(Java 2 Platform, Enterprise Edition)和微型版(Java 2 Platform, Micro Edition)。從Java 1.5(或者Java 5.0)開始,它們被改稱為Java SE、Java EE和Java ME。

各平臺版本之間的差別在於適用範圍不同:

  • 標準版平臺(Java SE)允許開發和部署在桌面、伺服器、嵌入式和實時環境中使用的Java應用程式。另外,Java SE包含了支持實現Java Web服務的類庫,因此標準版是企業版的基礎。

  • 企業版平臺(Java EE)幫助開發者開發和部署Java Web應用。企業版提供Web服務、組件模型、管理和通信API,可以用來實現企業級的面向服務的體繫結構(Service-Oriented Architecture, SOA)和Web 2.0 應用程式。

  • 而微型版平臺(Java ME)主要用於移動設備和嵌入式設備,如手機、PDA、電視機頂盒等等。微型版包括靈活的用戶界面、健壯的安全模型、許多內置的網路協議、以及對可動態下 載的線上和離線應用的支持。基於Java ME規範的應用程式與普通Java程式一樣,只需編譯一次,即可在許多設備上運行。


Java的版本:

  • 1995年5月23日,Java語言誕生
  • 1996年1月,JDK 1.0發佈
  • 1997年2月18日,JDK 1.1發佈
  • 1998年12月4日,J2SE 1.2發佈,1.2版及其之後的版本也被稱為Java 2
  • 1998年12月8日,Java 2企業版發佈
  • 2000年5月8日,J2SE 1.3發佈
  • 2002年2月13日,J2SE 1.4發佈
  • 2004年9月30日,J2SE 1.5發佈,J2SE 1.5版也被稱為Java 5.0
  • 2006年12月,Java 6.0發佈
  • 2010年9月,Java 7.0發佈
  • 2014年3月,Java8.0發佈

Java開發與運行環境的搭建(Java SE):

1. 下載JDK/JRE:


首先,訪問Oracle公司的Java SE的下載主頁 (http://www.oracle.com/technetwork/java/javase/downloads/index.html),選擇一個版本(目前最新版為Java SE 8),如下圖:

,選擇一個版本(目前最新版為Java SE 8),如下圖:

 

此頁麵包含多個版本的JDK、JRE、幫助文檔、源代碼等下載內容的鏈接。如果不是Java 程式的開發者,僅僅想在自己的系統中運行Java程式,那麼只需要一個JRE就可以了;如果想使用Java開發自己的應用程式,則需要下載JDK,其中已 包含JRE,因此下載了JDK後無需再單獨下載JRE。

這裡以下載Java SE 8最新版本的JDK為例,點擊相應的Download按鈕,轉到下載頁面,如下圖:

在此頁面中,包含了對應各種操作系統的JDK下載鏈接,選擇自己系統對應的JDK,將其下載 到本地硬碟上。註意,在下載之前需要先閱讀“Oracle Binary Code License Agreement for Java SE”,必須接受其中的條款才能下載JDK(選中“Accept License Agreement”(註意上圖中紅線的標註))。

2. 安裝JDK/JRE:

無論是在Windows還是在Linux下安裝JDK都很簡單,與安裝其他程式沒什麼不同。

在Windows中,雙擊剛纔下載的“*****.exe”文件,就會打開安裝界面。點擊“下一步”按鈕,可以在此選擇需要安 裝的組件和安裝目錄,視窗右側是對所選組件的說明,包括組件功能和所需的磁碟空間;可以點擊“更改”按鈕來改變安裝目錄。點擊“下一步”即開始正式安裝。 安裝完畢後,將會顯示安裝已完成的信息,點擊“完成”按鈕即可完成安裝。

來到安裝文件夾下,即可以看到已安裝的JDK的目錄結構。(註意其中包含名為“jre”的文件夾,這就是前面說的JDK包含JRE的原因所在)(記住你jdk安裝的路徑配置的時候有用

整個安裝過程如下麵幾幅圖所示:

  

 


 

  



註意:操作系統分為32位操作系統和64位操作系統,對應 地,JDK也分為32位版和64位版(名稱中帶有“i586”或“x86”的為32位版,帶有“x64”則表示該JDK為64位版)。64位版JDK只能 安裝在64位操作系統上,32位版JDK則既可以安裝在32位操作系統上,也可以安裝在64位操作系統上。原因是64位的操作系統能夠相容32位的應用程 序。
換句話說,即使CPU是64位的,但如果安裝的操作系統是32位的,那麼也無法安裝64位版的JDK。

在Linux中安裝JDK與安裝其他程式相同。下載時可以選擇.rpm或.tar.gz格式的安裝文件,這裡以後者為例進行說明。

首先解壓縮下載的文件,輸入命令“tar -xf jdk-7-linux-i586.tar.gz -C /usr”,將文件解壓到/usr目錄下,這樣就完成了安裝(如圖):

Linux安裝JDK



3. 設置環境變數:

環境變數是指在操作系統中用來指定操作系統運行環境的一些參數,比如臨時文件夾位置和系統文件夾位置等。環境變數相當於給系統或應用程式設置的一些參數。

編譯或運行Java程式時,都是基於命令行的,因此在此之前必須設置一些環境變數的值。有些Java IDE(集成開發環境)內置了JDK,因此使用這些IDE時可以不指定環境變數。還有些程式需要個性化的環境變數(如Apache Tomcat需要JAVA_HOME環境變數)。

與JDK或JRE的使用有關的是PATH、CLASSPATH等幾個環境變數。這裡先解釋一下這些變數的含義:

PATH變數用來告訴操作系統到哪裡去查找一個命令。如果清空PATH變數的值,在Windows中運行一個外部命令時,將提示未知命令錯誤(當然,在Linux中也是一樣):

環境變數是指在操作系統中用來指定操作系統運行環境的一些參數,比如臨時文件夾位置和系統文件夾位置等。環境變數相當於給系統或應用程式設置的一些參數。

編譯或運行Java程式時,都是基於命令行的,因此在此之前必須設置一些環境變數的值。有些Java IDE(集成開發環境)內置了JDK,因此使用這些IDE時可以不指定環境變數。還有些程式需要個性化的環境變數(如Apache Tomcat需要JAVA_HOME環境變數)。

與JDK或JRE的使用有關的是PATH、CLASSPATH等幾個環境變數。這裡先解釋一下這些變數的含義:

PATH變數用來告訴操作系統到哪裡去查找一個命令。如果清空PATH變數的值,在Windows中運行一個外部命令時,將提示未知命令錯誤(當然,在Linux中也是一樣):



註意:在Windows中,如“dir”、“cd”等命令是內部命令,類似於DOS中的常駐命 令。這些命令在命令行視窗啟動時會自動載入到記憶體中,不需要到磁碟上去尋找對應的可執行文件,因此即使清空了PATH變數的值也不會影響這些命令的使用。 然而,像“java”這樣的外部命令,在執行時必須先由操作系統到指定的目錄找到對應的可執行程式,然後才能載入並運行。到哪裡去尋找這些程式就是依靠 PATH變數來指定的。
Linux也是類似,甚至可以說在Linux中,PATH環境變數更為重要,因為Linux的很多基本命令都屬於外部命令,如“ls”、“mkdir”等。當將PATH變數清空後,這些命令都將無法使用(當然,還是有一些內部命令我們仍然可以使用)。

CLASSPATH是編譯或運行Java程式時用來告訴Java編譯器或虛擬機到哪裡查找Java類文件的,後面會對其做詳細介紹。

在Windows XP或之前的版本中,依次點擊“右鍵我的電腦” -> “屬性” -> “高級” -> “環境變數”;在Windows Vista和Windows 7中則依次點擊“右鍵我的電腦” -> “屬性” -> “高級系統設置” -> “高級” -> “環境變數”,打開環境變數設置視窗:

 



選擇【新建系統變數】--彈出“新建系統變數”對話框,在“變數名”文本框輸入“JAVA_HOME”,在“變數值”文本框輸入JDK的安裝路徑(也就是jdk安裝的文件夾路徑),單擊“確定”按鈕。如圖:

然後:

在“系統變數”選項區域中查看PATH變數,如果不存在,則新建變數 PATH,否則選中該變數,單擊“編輯”按鈕,在“變數值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre \bin;”或者是直接“%JAVA_HOME%\bin;”,單擊確定按鈕。

在“系統變數”選項區域中查看CLASSPATH 變數,如果不存在,則新建變數CLASSPATH,否則選中該變數,單擊“編輯”按鈕,在“變數值”文本框的起始位置添加 “.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。

 

 

  

 


設置完成後,環境變數設置視窗如下圖所示。點擊確定按鈕,環境變數設置完成。

 



註意:在Windows中,環境變數分為“用戶變數”和“系統變數”,它們的區別是,“用戶變 量”只對當前的用戶起作用,而“系統變數”則對系統中的所有用戶起作用。如果希望在多個用戶之間共用環境變數的設置,可以將這些環境變數設置為系統變數, 否則,應該使用用戶變數,避免影響其他用戶。在Linux中也有類似的概念,接下來會講到。

在Linux中,可以通過編輯“~/.bashrc”文件來修改環境變數。在最後添加下麵幾行腳本,然後保存並退出:
JAVA_HOME=/usr/jdk1.7.0
JAVA_BIN=/usr/jdk1.7.0/bin
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.
export JAVA_HOME JAVA_BIN PATH CLASSPATH



註意:Linux中,每個用戶的home目錄下都有.bashrc文件,這個文件用來保存用戶 的個性化設置,如命令別名、路徑等,當然也可以用來定義環境變數。此文件是與每個用戶相關的,一個用戶的設置不會影響到其他用戶,在這裡設置環境變數相當 於前面講的Windows的用戶環境變數。Linux中全局設置通常保存在“/etc/profile”文件中。
另外,Linux中PATH和CLASSPATH的分割符都是“:”(冒號),而Windows中是“;”(分號)。

當環境變數設置完成後,在Windows中打開新的命令行視窗,在Linux中使用“source ~/.bashrc”命令重新載入.bashrc文件,即可使新的環境變數生效。輸入“java -version”命令,應該會列印出類似下麵兩幅圖所示的內容:

Windows命令行的輸出:


 


 

Linux的輸出:

 




對以上步驟補充說明幾點:

  1. 可以在Windows命令行或Linux Shell中使用命令設置環境變數。例如,在Windows中可以使用“set var_name=some value”,在Linux中使用“var_name=some value”,這種方式與上面介紹的方式的區別在於:這種方式的設置是臨時性的,當重新啟動一個新的命令行視窗(Windows)或重新登錄 (Linux)後,這些臨時變數就會丟失。

  2. JDK版本混亂:有時候,使用“java -version”命令可以列印出JDK的版本信息,但卻與我們剛剛安裝的JDK版本不一致。比如我們明明安裝的是JDK 7,但卻列印出JDK 6的版本信息,如下圖所示:

                          

    檢查PATH變數,發現其中有一個路徑為“C:\Program Files (x86)\Java\jdk1.6.0_25\bin”,原來我的系統中安裝了兩個版本的JDK,JDK 6和JDK 7。由於此JDK 6在系統環境變數PATH中,而Windows查找命令對應的程式時,首先查找的是系統變數,當找到了一個可用的java程式時,Windows將運行這 個程式,而不再進一步查找。也就是說,系統PATH環境變數屏蔽了用戶PATH環境變數。

    不光如此,靠近PATH變數前部的路徑中的程式將屏蔽其之後的路徑中的同名程式。如同樣是在系統PATH變數中,“C:\Program Files (x86)\Java\jdk1.6.0_25\bin;C:\Program Files (x86)\Java\jdk1.7.0\bin”,那麼JDK 6仍然將屏蔽JDK 7,如果將它們的順序交換:“C:\Program Files (x86)\Java\jdk1.7.0\bin;C:\Program Files (x86)\Java\jdk1.6.0_25\bin”,結果則相反。

    不只是用戶安裝了多個版本的JDK時可能導致JDK版本的混亂,而且很多軟體產品自身會包含JDK,即使用戶只安裝了一個JDK,但仍有可能與這些軟體中 的JDK互相屏蔽(如果這些軟體同時也設置了環境變數的話)。例如Oracle資料庫、MyEclipse等都包含自己的JDK。

    在Windows下我還遇到過一個問題,那就是居然在Windows\system32目錄下發現了java.exe、javaw.exe、javaws.exe三個文件,因為系統PATH變數中此目錄處於較靠前的位置,因此很容易將用戶自己安裝的JDK屏蔽掉。

    有三種方法來解決這個問題:

    第一種方法是使用絕對路徑,例如我們運行命令時使用“"C:\Program Files (x86)\Java\jdk1.7.0\bin\java.exe"”(當然,.exe可以省略)而不是“java”。使用絕對路徑時,操作系統會直接 根據路徑定位到命令所在的目錄,不再通過PATH變數來查找。這種方法的優點是絕對不會導致命令的覆蓋,但缺點也很明顯:必須輸入完整的路徑來運行命令 (通常也很長)。

    需要註意的是,當絕對路徑中存在空格時(如上面的例子那樣),需要將命令用英文雙引號引起來。在設置PATH變數時不需要這樣做,操作系統會自動完成這件事。

    第二種方法是將自己安裝的JDK路徑設置到系統PATH變數的開頭,這樣,操作系統查找命令時就會最先查找我們設置的路徑。但這種方法的缺點就是可能會影響其他用戶(設置在了系統PATH變數中),並且可能會影響其他程式(其他的JDK被我們的屏蔽了)。

    第三種方法就是設置一個新的環境變數,例如“JAVA_HOME”,將其值設置為我們安裝的JDK的路徑,如“C:\Program Files (x86)\Java\jdk1.7.0”,我們運行時,只需輸入“"%JAVA_HOME%\bin\java"”即可(註意當路徑中含有空格時要用雙 引號將命令引起來)。Apache Tomcat就使用這種方法。


4. 編譯並運行例子程式:

經過了以上的步驟,JDK的環境就搭建好了,此時,可能需要再編譯並運行一個Java例子程式來對剛搭建的環境做最終的檢驗。在這一節中,也會順便講到如 何編譯和運行一個Java程式,以及CLASSPATH的作用。更詳細的,可以參考另一篇文章《JDK下提供的工具詳解》。

此程式包含兩個.java文件:ExceptionDemo.java和HelloWorldException.java,前者屬於main包,而後者 位於exceptions包(雖然它位於test\exceptions文件夾,這樣安排的目的是為了更好地描述CLASSPATH的作用):


 


下麵是它們的源代碼:

(1) ExceptionDemo.java:

 

[java] view plain copy
  1. package main;  
  2. import exceptions.HelloWorldException;  
  3. public class ExceptionDemo {  
  4.       /** 
  5.        * 
  6.        * @param args 
  7.        * @throws HelloWorldException 
  8.        */  
  9.       public static void main(String[] args)  
  10.                   throws HelloWorldException {  
  11.             throw new HelloWorldException();  
  12.       }  
  13. }  


(2) HelloWorldException.java:

[java] view plain copy
  1. package exceptions;  
  2. public class HelloWorldException extends Exception {  
  3.       private static final long serialVersionUID = 8679349130620681877L;  
  4.       public HelloWorldException() {  
  5.             super("Hello World!");  
  6.       }  
  7. }  


此程式仍然是一個經典的HelloWorld程式(雖然這次它是以很不友好的方式向世界問好——通過拋出異常)。

要編譯這個程式,首先嘗試第一種方法(下麵的操作是在Windows命令行下進行的,Linux與此類似):進入src文件夾,輸入“javac main\ExceptionDemo.java”,但編譯報錯:



為什麼會提示找不到HelloWorldException呢?那是因為該Java文件位於“test\exceptions\”目錄下,但它的包名卻是 “exceptions”,從當前的src目錄,javac無法找到exceptions目錄,因為“src\exceptions”目錄是不存在的。

接下來,我們嘗試第二種方法:由src目錄進入test目錄,運行“javac ..\main\Exceptiondemo.java”:



編譯居然通過了!可以看到沒有報錯,並且main目錄下生成了ExceptionDemo.class文件(Java位元組碼文件),說明編譯確實成功了。 但是為什麼?我們使用了“..\main\Exceptiondemo.java”,這明顯不是ExceptionDemo的包路徑,為什麼編譯器卻不報 錯呢?另外我們還註意到,我錯誤地將“ExceptionDemo.java”寫成了“Exceptiondemo.java”,即將字母“D”的大小寫 弄錯了,編譯器同樣沒有報錯。

原來,javac只是將“..\main\Exceptiondemo.java”當做普通路徑來尋找Java源程式文件,找到後即開始編譯此文件,而當 其在編譯過程中發現程式還引用了其他類時(如ExceptionDemo.java中引用了HelloWorldException類),就會暫停對當前 文件的編譯,開始尋找這個引用的類文件,如果未找到,那麼將會報告錯誤,編譯失敗。前一種方法就是因為沒有找到HelloWorldException類 而出錯的。

那麼javac程式是如何查找程式引用的其他類的呢?答案是按照CLASSPATH指定的路徑加上程式所引用類的包名來查找的。CLASSPATH預設為 “.”,即當前路徑(我們之前也設置了CLASSPATH的值為“.”,但即使不設置,javac也會預設以當前路徑為起點來查找所引用的類文件)。

因此在這裡javac會檢查“src\test\exceptions\”中是否有HelloWorldException.class文件,如果有,則 繼續檢查其中是否有HelloWorldException.java文件,如果兩者都存在,則檢查HelloWorldException.class 是否比HelloWorldException.java更新,如果答案是肯定的,則載入HelloWorldException.class並繼續編譯 ExceptionDemo.java。而如果比較結果是HelloWorldException.java更新,或者不存在 HelloWorldException.class,則說明需要重新編譯HelloWorldException.java文件。如果只有.class 文件而不存在.java文件,則載入之並繼續編譯ExceptionDemo.java。

如果沒有找到目標文件(HelloWorldException.class或HelloWorldException.java),那麼javac將報告錯誤(如之前那樣)。

也就是說,編譯是遞歸進行的:當程式中引用了其他類時,javac會判斷是否需要編譯這些類,如果需要,則javac會首先編譯它們,如果這些類再次用到 了其他的類,javac將再次重覆此過程,直到完成全部編譯。只要在此過程中有任何類沒有找到,或者在其中發現了任何錯誤,那麼javac將報告錯誤並中 止編譯(javac可能在中止之前儘可能多地編譯,以儘量多地向用戶報告程式中的錯誤)。

可以用下麵的圖來形象地展示這一過程:



至於我們將大小寫弄錯了但javac卻沒有報錯的原因,其實前面的說明已經隱含瞭解釋:是因為javac只是將命令中的.java文件當做普通文件,又由於Windows是不區分大小寫的,因此不會報錯。如果換成Linux系統,將會提示文件無法找到的錯誤。

預設的CLASSPATH是當前目錄(“.”),我們也可以設置為需要的路徑,讓javac據此查找類文件(這就是前面所說的為什麼只是暫時將 CLASSPATH設置為“.”的原因)。在這個例子中,我們設置CLASSPATH為“.;D:\workspaces\workspace_v1.1 \my-test\src\test”,註意Linux中分隔符為“:”(冒號)。然後在src目錄下就可以使用命令“javac main\ExceptionDemo.java”進行編譯:



實際上,此時在任何目錄都可以對ExceptionDemo.java進行編譯,只是文件的路徑要適當更改。例如我們在D盤根目錄輸入以下命令編譯:



這是因為設置了CLASSPATH後,javac總能找到HelloWorldException類。

有時候必須使用CLASSPATH:當涉及到的類很多時,而這些類並不在同一個目錄下,此時我們只能使用CLASSPATH來指定這些類的路徑——我們無法同時處於多個類的“當前目錄”下。

另外一個需要註意的問題是,JDK包含的Java基礎類(例如java.lang包中的類)並不需要指定CLASSPATH——Java知道如何找到它們。

編譯完成後,運行我們的例子,例子將拋出一個異常,並向世界問好:



註意,必須輸入完整的包名和類名(不需要.class尾碼),且大小寫不能弄錯(因為Java是區分大小寫的)。完整的包名+類名在Java中稱為類的完全限定名。

至此為止,我們成功地搭建起了Java開發和運行環境。

 

 《本文引用了:http://blog.csdn.net/antineutrino/article/details/6763565,特此感謝。》


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本地事務 事務類型 事務可以分為本地事務和分散式事務兩種類型。這兩種事務類型是根據訪問並更新的數據資源的多少來進行區分的。本地事務是在單個數據源上進行數據的訪問和更新,而分散式事務是跨越多個數據源來進行數據的訪問和更新。在這裡要說的事務是基於資料庫這種數據源的。 JDBC事務 在JAVA中,我們使用 ...
  • python 的PIL安裝是一件很蛋痛的事, 如果你要在python 中使用圖型程式那怕只是將個圖片從二進位流中存檔(例如使用Scrapy 爬網存圖),那麼都會使用到 PIL 這庫,而這個庫是出名的難安裝. 它的表現為,如果你使用 Scrapy 的ImagePipeline 它就會預設使用PIL,如 ...
  • 版權聲明:本文為博主原創文章,如需轉載請註明出處。 準備 編譯好的Hotspot虛擬機 "Java虛擬機(HOTSPOT)源代碼編譯步驟" : GDB基本操作: "Linux編程基礎——GDB(入門)" "Linux編程基礎——GDB(設置斷點)" 系統: Ubuntu 14.04 調試步驟 可調試 ...
  • hibernate的Component,即組件,表示2個類之間的關係,即其中1個類可以作為另一個類的組件來使用。 1.先來看下annotation中關於component的API 2.2.2.3. 嵌入式對象(又名組件) 2.2.2.3. 嵌入式對象(又名組件) 2.2.2.3. 嵌入式對象(又名組 ...
  • 在實際項目中我使用antrun 和 closure-compiler壓縮JS項目。然後我就使用如下代碼: 首先加入依賴。 com.google.javascript closure-compiler v20160315 pom.xml文件加入插件代碼。 org.apache.maven.plugin... ...
  • 註:以下文章原文來自於Dr Charles Severance 的 《Python for Informatics》 11.3 組合查詢和抽取 如果我們想以“X-”字元串開頭的行中找到數字,就像下麵兩行字元串: X-DSPAM-Confidence: 0.8475X-DSPAM-Probabilit ...
  • CZPlayer CZPlayer是基於Qt開發的一款功能強大的音樂播放器,該播放器的論壇地址請點擊here,目前CZPlayer已經是第四個版本了,歷史版本也分別在我的github上, github地址:https://github.com/chxuan/CZPlayer.git,歡迎star和f ...
  • 今天,下了個模版,但是導進去的時候發現js會報錯。看了下其他都沒有錯誤。而有一個js報錯誤,請原諒我有點紅色強迫症,不能留一點紅色 。 錯誤如下:Syntax error on token "Invalid Regular Expression Options", no accurate corre ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...