本篇文章介紹了java軟件包的下載,環(huán)境搭建,及操作過(guò)程中出現(xiàn)的常見問(wèn)題,成都電腦培訓(xùn)在此進(jìn)行匯總,希望對(duì)大家有所幫助。
公司主營(yíng)業(yè)務(wù):做網(wǎng)站、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出建陽(yáng)免費(fèi)做網(wǎng)站回饋大家。
.搭建步驟1.安裝配置A.在官網(wǎng)上下載jdk;B.在本地安裝下載的jdk軟件;C.配置環(huán)境變量:右擊“我的電腦”--選擇“屬性”--“高級(jí)系統(tǒng)設(shè)置”--“環(huán)境變量”;D.在彈出的對(duì)話窗口中,在”系統(tǒng)變量”部分,點(diǎn)擊”新建”(下面一個(gè)新建按鈕),彈出”新建系統(tǒng)變量”對(duì)話框,在變量名中輸入%JAVA_HOME%,在變量值中輸入jdk安裝路徑,例如:d:/java/jdk1.8,點(diǎn)擊”確定”按鈕;E.在系統(tǒng)變量中,找到Path變量,點(diǎn)擊編輯”按鈕”,彈出”編輯系統(tǒng)變量”對(duì)話框,將光標(biāo)選中變量值輸入框,并且移動(dòng)到輸入框最前端,并輸入以下內(nèi)容:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar說(shuō)明:%JAVA_HOME%即為第4步配置的變量,代表了jdk的安裝路徑,配置在Path中,是為了讓計(jì)算機(jī)能夠找到j(luò)ava相關(guān)的命令,因?yàn)椴僮飨到y(tǒng)是從Path配置的路徑中尋找命令;在Path中還可以配置其他軟件的命令,需要注意的是所有命令中間必須用分號(hào)(;)相隔,保證配置內(nèi)容的完整性。
3.安裝測(cè)試打開運(yùn)行窗口(window+r),在窗口中輸入cmd,打開cmd窗口,輸入命令java-version顯示出java版本信息,即表示安裝成功二.常見錯(cuò)誤1.jdk下載版本出錯(cuò)A.在jdk的官網(wǎng)上,首先是按照操作系統(tǒng)進(jìn)行分類,主要是Linux和windows系統(tǒng)下的不同版本;B.其次是計(jì)算機(jī)處理器不同所需版本不同,下載jdk之前,應(yīng)先知道計(jì)算機(jī)處理器是哪種類型,一般來(lái)說(shuō)都是64位或者32位,在官網(wǎng)上都有相應(yīng)的版本,64位的jdk名稱內(nèi)都有x64字樣,而32位的jdk名稱內(nèi)都有x86字樣;C.最后是jdk版本的問(wèn)題,作為一門企業(yè)級(jí)的編程語(yǔ)言,java一直在不斷的升級(jí),相應(yīng)的jdk也一直在更新,如果下載了不適合本地其他軟件或?qū)嶋H需求的jdk,那么很可能會(huì)造成軟件不兼容的問(wèn)題,也會(huì)在程序中存在bug的隱患,所以在選擇jdk版本時(shí)一定要考慮實(shí)際開發(fā)環(huán)境,根據(jù)實(shí)際需求來(lái)選擇。
2.jdk環(huán)境配置出錯(cuò)A.JAVA_HOME配置出錯(cuò):jdk的安裝目錄下會(huì)有jre文件夾,通常只配置到bin和lib文件夾所在目錄(即jre上級(jí)目錄),在后續(xù)配置中引入JAVA_HOME變量即可,如%JAVA_HOME%/bin;B.在JAVA_HOME的變量值中,不能有標(biāo)點(diǎn)符號(hào),否則會(huì)路徑出錯(cuò);C.在編輯Path變量時(shí),每一項(xiàng)變量之間都要有分號(hào)進(jìn)行分割,否則操作系統(tǒng)會(huì)將兩個(gè)變量當(dāng)做一個(gè)變量來(lái)處理,所以為了安全起見,在path的變量值的最前面或最后面配置java路徑,同時(shí)用逗號(hào)分割,避免直接插入造成混淆;D.配置完成后切記點(diǎn)擊確定按鈕保存配置;E.配置完成后,在cmd命令窗口進(jìn)行測(cè)試一定要使用java-version,否則沒(méi)有效果。
3.不當(dāng)?shù)男遁d操作A.在安裝jdk后,控制面板中的程序內(nèi)會(huì)出現(xiàn)JavaSEDevelop字樣的程序,這些程序無(wú)需用戶進(jìn)行手動(dòng)升級(jí)或手動(dòng)設(shè)置,不要隨意進(jìn)行卸載;B.配置好jdk后,盡量避免更改jdk的安裝路徑,否則系統(tǒng)會(huì)找不到j(luò)ava相關(guān)名令,如果修改了jdk的安裝路徑,則將%JAVA_HOME%的變量值替換為新路徑即可。
相信作為程序員的我們?cè)趯?duì)程序進(jìn)行編譯過(guò)程中經(jīng)常會(huì)遇到錯(cuò)誤,或者在運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,在這里主要跟大家談?wù)劷?jīng)常遇到的一些異常與錯(cuò)誤,以及解決辦法。
異常是指程序在編譯或運(yùn)行過(guò)程出現(xiàn)的錯(cuò)誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯(cuò)誤) 和Exception(異常)
(1)Error(錯(cuò)誤)
一旦發(fā)生無(wú)法修復(fù),但可以避免發(fā)生。
常見錯(cuò)誤類:
IOError:I/O錯(cuò)誤,當(dāng)發(fā)生嚴(yán)重的I/O錯(cuò)誤時(shí),拋出此錯(cuò)誤。
VirtualMachineError?:虛擬機(jī)錯(cuò)誤,當(dāng) Java 虛擬機(jī)崩潰或用盡了它繼續(xù)操作所需的資源時(shí),拋出該錯(cuò)誤。
StackOverflowError:棧內(nèi)存滿了,當(dāng)應(yīng)用程序遞歸太深而發(fā)生堆棧溢出時(shí),拋出該錯(cuò)誤。
OutofMemoryError:堆內(nèi)存滿了,因?yàn)閮?nèi)存溢出或沒(méi)有可用的內(nèi)存提供給垃圾回收器時(shí),Java 虛擬機(jī)無(wú)法分配一個(gè)對(duì)象,這時(shí)拋出該異常。
以上是一些常見的錯(cuò)誤,在Error類中還有一些別的錯(cuò)誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發(fā)生,可以捕獲并處理,不會(huì)導(dǎo)致程序終止,有時(shí)可以避免有時(shí)無(wú)法避免。
異常的分類:
1.編譯時(shí)異常(需要強(qiáng)制處理)?????? 2.運(yùn)行時(shí)異常(不需要強(qiáng)制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數(shù)據(jù)格式化異常
NoSuchFieldException:沒(méi)有匹配的屬性異常
NoSuchMethodException:沒(méi)有匹配的方法異常
SQLException:數(shù)據(jù)庫(kù)操作異常
TimeoutException:執(zhí)行超時(shí)異常
常見的運(yùn)行時(shí)異常:
RuntimeException:運(yùn)行時(shí)異常
NullPointerException:空指針異常
ArrayIndexOutofBoundsException:數(shù)組越界異
ClassCastException:類型轉(zhuǎn)換異常
IllegalArgumentException:非法的參數(shù)異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會(huì)遇到一些異常,那我們?nèi)绾蝸?lái)處理這些異常就是一個(gè)急需解決的事情。
(1) 如何處理編譯時(shí)異常?
方法一:將需要處理的代碼塊放在一個(gè)try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進(jìn)行try一下,如果沒(méi)有異常,則不會(huì)觸發(fā)catch,沒(méi)有輸出,一旦出現(xiàn)異常,那么catch就會(huì)工作,在catch中捕獲異常信息,根據(jù)異常信息進(jìn)行補(bǔ)救措施。
如以下代碼:
方法二:在出現(xiàn)異常的方法上直接向上拋出異常,throws
void ff() throws XXXException{
}
將出現(xiàn)的異常的代碼中,放入如上的方法中,就會(huì)將異常拋給該方法的上一級(jí),在主函數(shù)上繼續(xù)向上拋,最終拋給JVM java虛擬機(jī),讓JVM來(lái)解決該問(wèn)題。
如代碼:
注意:在catch和throws的時(shí)候如果不確定是什么異常,就直接寫一個(gè)Exception.
(2) 如何處理運(yùn)行時(shí)異常?
1.一般情況下,運(yùn)行時(shí)異常是不用處理的?
2.在某些情況下,如果對(duì)發(fā)生異常的結(jié)果進(jìn)行處理,也可以對(duì)運(yùn)行時(shí)異常進(jìn)行try...catch...
以上就是一些我們處理編譯時(shí)異常和運(yùn)行時(shí)異常的方法。
在程序出現(xiàn)異常時(shí),有時(shí)候我們可以自定義異常,以便我們能夠發(fā)現(xiàn)是什么異常。
那么如何自定義異常??
1.當(dāng)運(yùn)行時(shí),程序出現(xiàn)意外,可以拋出異常對(duì)象來(lái)結(jié)束程序
如:
//拋出運(yùn)行時(shí)異常對(duì)象
RuntimeException ef = new RuntimeException("下標(biāo)越界!index:"+index+" ,size:"+size());
throw ef;
2.對(duì)于編譯時(shí)異常,同樣可以拋出異常對(duì)象
但在方法定義時(shí)候必須加上throws
如:
public void test(int t) throws Exception{
if (t 0 || t 100) {
Exception ef = new Exception("數(shù)據(jù)錯(cuò)誤");
throw ef;
}
}
例如:
運(yùn)行結(jié)果:
從結(jié)果可以看出,我們?cè)谳斎霐?shù)據(jù)的時(shí)候出現(xiàn)錯(cuò)誤,這樣通過(guò)自定義異常能夠讓我們更直接快速的找到運(yùn)行或編譯時(shí)的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那么到底三者有什么區(qū)別?
Throwable:是指在在Java.lang包中的一個(gè)類,其包含了所有的異常和錯(cuò)誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時(shí)異常,將方法中異常拋給上一級(jí),在方法后面要加Throw Exception來(lái)進(jìn)行拋。
throw:是指在自定義異常時(shí),如果方法出現(xiàn)異常,那么將作為引用方法的對(duì)象拋出。即拋出異常。
相信大家在開發(fā)軟件和進(jìn)行軟件維護(hù)的時(shí)候也會(huì)發(fā)現(xiàn),有時(shí)候我們會(huì)針對(duì)一些軟件的功能進(jìn)行代碼重構(gòu)來(lái)讓系統(tǒng)運(yùn)行更加的穩(wěn)定。
今天天津java培訓(xùn)就一起來(lái)了解一下,在代碼重構(gòu)的過(guò)程中都會(huì)遇到哪些問(wèn)題。
1、離線任務(wù)和模型的管理問(wèn)題。
我們做在線服務(wù)的都有體會(huì),我們經(jīng)常容易對(duì)線上業(yè)務(wù)邏輯代碼更關(guān)注一些,而往往忽視離線代碼任務(wù)的管理和維護(hù)。
但離線代碼任務(wù)和模型在推薦場(chǎng)景中又至關(guān)重要。
因此如何有效維護(hù)離線代碼和任務(wù),是我們面臨的一個(gè)問(wèn)題。
2、特征日志問(wèn)題。
在推薦系統(tǒng)中,我們常常會(huì)遇到特征拼接和特征的『時(shí)間穿越』的問(wèn)題。
所謂特征時(shí)間穿越,指的是模型訓(xùn)練時(shí)用到了預(yù)測(cè)時(shí)無(wú)法獲取的『未來(lái)信息』,這主要是訓(xùn)練label和特征拼接時(shí)時(shí)間上不夠嚴(yán)謹(jǐn)導(dǎo)致。
如何構(gòu)建便捷通用的特征日志,減少特征拼接錯(cuò)誤和特征穿越,是我們面臨的二個(gè)問(wèn)題。
3、服務(wù)監(jiān)控問(wèn)題。
一個(gè)通用的推薦系統(tǒng)應(yīng)該在基礎(chǔ)監(jiān)控上做到盡可能通用可復(fù)用,減少具體業(yè)務(wù)對(duì)于監(jiān)控的開發(fā)量,并方便業(yè)務(wù)定位問(wèn)題。
4、離線任務(wù)和模型的管理問(wèn)題。
在包括推薦系統(tǒng)的算法方向中,需要構(gòu)建大量離線任務(wù)支持各種數(shù)據(jù)計(jì)算業(yè)務(wù),和模型的定時(shí)訓(xùn)練工作。
但實(shí)際工作中,我們往往忽略離線任務(wù)代碼管理的重要性,當(dāng)時(shí)間一長(zhǎng),各種數(shù)據(jù)和特征的質(zhì)量往往無(wú)法保證。
為了盡可能解決這樣的問(wèn)題,我們從三方面來(lái)做,一,將通用推薦系統(tǒng)依賴的離線任務(wù)的代碼統(tǒng)一到一處管理;二,結(jié)合公司離線任務(wù)管理平臺(tái),將所有任務(wù)以通用包的形式進(jìn)行管理,這樣保證所有任務(wù)的都是依賴新包;三,建設(shè)任務(wù)結(jié)果的監(jiān)控體系,將離線任務(wù)的產(chǎn)出完整監(jiān)控起來(lái)。
5、特征日志問(wèn)題。
AndrewNg之前說(shuō)過(guò):『挖掘特征是困難、費(fèi)時(shí)且需要專業(yè)知識(shí)的事,應(yīng)用機(jī)器學(xué)習(xí)其實(shí)基本上是在做特征工程。
』我們理想中的推薦系統(tǒng)模型應(yīng)該是有干凈的RawData,方便處理成可學(xué)習(xí)的Dataset,通過(guò)某種算法學(xué)習(xí)model,來(lái)達(dá)到預(yù)測(cè)效果不斷優(yōu)化的目的。
但現(xiàn)實(shí)中,我們需要處理各種各樣的數(shù)據(jù)源,有數(shù)據(jù)庫(kù)的,有日志的,有離線的,有在線的。
這么多來(lái)源的RawData,不可避免的會(huì)遇到各種各樣的問(wèn)題,比如特征拼接錯(cuò)誤,特征『時(shí)間穿越』等等。
這里邊反應(yīng)的一個(gè)本質(zhì)問(wèn)題是特征處理流程的規(guī)范性問(wèn)題。
那么我們是如何來(lái)解決這一點(diǎn)呢,先,我們用在線代替了離線,通過(guò)在線落特征日志,而不是RawData,并統(tǒng)一了特征日志Proto,如此就可以統(tǒng)一特征解析腳本。
1、空指針異常類:NullPointerException
調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象。經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯(cuò)誤等等。對(duì)數(shù)組操作中出現(xiàn)空指針, 即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來(lái)了。
數(shù)組的初始化是對(duì)數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒(méi)有實(shí)例化, 依然是空的,所以還需要對(duì)每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)。
2、數(shù)據(jù)類型轉(zhuǎn)換異常:java.lang.ClassCastException
當(dāng)試圖將對(duì)某個(gè)對(duì)象強(qiáng)制執(zhí)行向下轉(zhuǎn)型,但該對(duì)象又不可轉(zhuǎn)換又不可轉(zhuǎn)換為其子類的實(shí)例時(shí)將引發(fā)該異常,如下列代碼。
Object obj?=?new?Integer(0);
String str = obj;
3、沒(méi)有訪問(wèn)權(quán)限:java.lang.IllegalAccessException
當(dāng)應(yīng)用程序要調(diào)用一個(gè)類,但當(dāng)前的方法即沒(méi)有對(duì)該類的訪問(wèn)權(quán)限便會(huì)出現(xiàn)這個(gè)異常。對(duì)程序中用了Package的情況下要注意這個(gè)異常。
4、方法的參數(shù)錯(cuò)誤:java.lang.IllegalArgumentException
比如g.setColor(int red,int green,int blue)這個(gè)方法中的三個(gè)值,如果有超過(guò)255的也會(huì)出現(xiàn)這個(gè)異常,因此一旦發(fā)現(xiàn)這個(gè)異常,我們要做的,就是趕緊去檢查一下方法調(diào)用中的參數(shù)傳遞是不是出現(xiàn)了錯(cuò)誤。
5、數(shù)組下標(biāo)越界異常:java.lang.IndexOutOfBoundsException
查看調(diào)用的數(shù)組或者字符串的下標(biāo)值是不是超出了數(shù)組的范圍,一般來(lái)說(shuō),顯示(即直接用常數(shù)當(dāng)下標(biāo))調(diào)用不太容易出這樣的錯(cuò),但隱式(即用變量表示下標(biāo))調(diào)用就經(jīng)常出錯(cuò)了。
還有一種情況,是程序中定義的數(shù)組的長(zhǎng)度是通過(guò)某些特定方法決定的,不是事先聲明的,這個(gè)時(shí)候先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常。
6、文件已結(jié)束異常:EOFException
當(dāng)程序在輸入的過(guò)程中遇到文件或流的結(jié)尾時(shí),引發(fā)異常。因此該異常用于檢查是否達(dá)到文件或流的結(jié)尾
7、文件未找到異常:FileNotFoundException
當(dāng)程序試圖打開一個(gè)不存在的文件進(jìn)行讀寫時(shí)將會(huì)引發(fā)該異常。該異常由FileInputStream,FileOutputStream,RandomAccessFile的構(gòu)造器聲明拋出,即使被操作的文件存在,但是由于某些原因不可訪問(wèn),比如打開一個(gè)只讀文件進(jìn)行寫入,這些構(gòu)造方法仍然會(huì)引發(fā)異常。
8、字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException
當(dāng)試圖將一個(gè)String轉(zhuǎn)換為指定的數(shù)字類型,而該字符串確不滿足數(shù)字類型要求的格式時(shí),拋出該異常.如現(xiàn)在講字符型的數(shù)據(jù)“123456”轉(zhuǎn)換為數(shù)值型數(shù)據(jù)時(shí),是允許的。
但是如果字符型數(shù)據(jù)中包含了非數(shù)字型的字符,如123#56,此時(shí)轉(zhuǎn)換為數(shù)值型時(shí)就會(huì)出現(xiàn)異常。系統(tǒng)就會(huì)捕捉到這個(gè)異常,并進(jìn)行處理。
9、指定的類不存在:?java.lang.ClassNotFoundException
這里主要考慮一下類的名稱和路徑是否正確即可,通常都是程序試圖通過(guò)字符串來(lái)加載某個(gè)類時(shí)可能引發(fā)異常。比如:調(diào)用Class.forName;或者調(diào)用ClassLoad的finaSystemClass;或者LoadClass;
10、實(shí)例化異常:java.lang.InstantiationException
當(dāng)試圖通過(guò)Class的newInstance方法創(chuàng)建某個(gè)類的實(shí)例,但程序無(wú)法通過(guò)該構(gòu)造器來(lái)創(chuàng)建該對(duì)象時(shí)引發(fā)。Class對(duì)象表示一個(gè)抽象類,接口,數(shù)組類,基本類型 。該Class表示的類沒(méi)有對(duì)應(yīng)的構(gòu)造器。
網(wǎng)頁(yè)標(biāo)題:常見的java代碼問(wèn)題 java代碼常見問(wèn)題匯總
當(dāng)前路徑:http://jinyejixie.com/article10/dopspgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、關(guān)鍵詞優(yōu)化、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)