重構(gòu)可以說(shuō)是覆蓋,用覆蓋一詞來(lái)講就比較清楚。
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鐵山港,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220
在面向?qū)ο蟮囊粋€(gè)特性--繼承中就表現(xiàn)出重構(gòu)的意思。
重構(gòu),就是繼承于父類(lèi)方法的子類(lèi)將子類(lèi)的方法重寫(xiě),方法名及參數(shù)完全相同.
重用是繼承了就可以用父類(lèi)定義的方法和變量,不用再定義一次。
比如說(shuō)
class B {
public void see(){
System.out.println("this is b");
}
}
public class A extends B{
public void see() {
System.out.println("this is a");
}
public static void main(String[] args) {
B b=new A();
b.see();
}
}
這是重構(gòu)的意思。
class B {
public void see(){
System.out.println("this is b");
}
}
public class A extends B{
public static void main(String[] args) {
B b=new A();
b.see();
}
}
這是重用的意思
很多人在進(jìn)行軟件開(kāi)發(fā)和軟件維護(hù)的時(shí)候會(huì)發(fā)現(xiàn)一個(gè)嚴(yán)重的問(wèn)題,需要對(duì)軟件代碼進(jìn)行重構(gòu),讓系統(tǒng)更加穩(wěn)定的運(yùn)行。那么在進(jìn)行代碼重構(gòu)的過(guò)程中有哪些常見(jiàn)的問(wèn)題呢?下面云南電腦培訓(xùn)為大家具體介紹。
1、任務(wù)管理問(wèn)題和離線模式問(wèn)題。
我們的線服務(wù)是眾所周知的,我們往往容易受到網(wǎng)上商業(yè)邏輯守則的約束,這些守則往往忽略了在線規(guī)則的管理和維護(hù)。然而,在現(xiàn)場(chǎng),在線規(guī)則和守則也很重要。因此,云南IT培訓(xùn)發(fā)現(xiàn)有效維護(hù)守則和離線任務(wù)是我們面臨的問(wèn)題。
2、特征日志問(wèn)題
在推薦系統(tǒng)中,我們經(jīng)常遇到特征的拼寫(xiě)和特征的“穿越時(shí)間”問(wèn)題。特征時(shí)間穿越是指,使用在模型訓(xùn)練時(shí)無(wú)法預(yù)測(cè)無(wú)法得到的“未來(lái)信息”,這主要是因?yàn)橛?xùn)練label與特征的連接時(shí)間不嚴(yán)格。
3、服務(wù)監(jiān)制問(wèn)題
一個(gè)通用的推薦系統(tǒng)應(yīng)當(dāng)在基礎(chǔ)監(jiān)視上盡可能通用地再利用,具體的業(yè)務(wù)應(yīng)當(dāng)減少對(duì)監(jiān)視的開(kāi)發(fā)量,并且昆明IT培訓(xùn)發(fā)現(xiàn)這樣更加方便業(yè)務(wù)定位問(wèn)題。
4、離線任務(wù)的管理問(wèn)題
在包含推薦系統(tǒng)的算法方向上,需要構(gòu)建大量的脫機(jī)任務(wù),支持各種數(shù)據(jù)計(jì)算業(yè)務(wù),需要支持模型的定時(shí)訓(xùn)練工作。但是在實(shí)際工作中,我們往往忽略了離線任務(wù)代碼管理的重要性,當(dāng)時(shí)間變長(zhǎng)時(shí),昆明電腦培訓(xùn)發(fā)現(xiàn)各種數(shù)據(jù)和特征的質(zhì)量往往是不能保證的。
相信大家在開(kāi)發(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)控的開(kāi)發(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)依賴(lài)的離線任務(wù)的代碼統(tǒng)一到一處管理;二,結(jié)合公司離線任務(wù)管理平臺(tái),將所有任務(wù)以通用包的形式進(jìn)行管理,這樣保證所有任務(wù)的都是依賴(lài)新包;三,建設(shè)任務(wù)結(jié)果的監(jiān)控體系,將離線任務(wù)的產(chǎn)出完整監(jiān)控起來(lái)。
5、特征日志問(wèn)題。
AndrewNg之前說(shuō)過(guò):『挖掘特征是困難、費(fèi)時(shí)且需要專(zhuān)業(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)一特征解析腳本。
首先,重構(gòu)這個(gè)概念,不是JAVA所特有的,而是軟件工程的一個(gè)概念。
主要是指改善現(xiàn)有的程序代碼,使其更方便、簡(jiǎn)單的使用,提高可重用性、可維護(hù)性。
在面向?qū)ο驝++\C#\JAVA等語(yǔ)言中,重構(gòu)的概念一般是指對(duì)類(lèi)進(jìn)行重構(gòu),一般在現(xiàn)有類(lèi)的某些功能方法不能滿(mǎn)足擴(kuò)展需要,或者修復(fù)BUG時(shí),就需要重構(gòu)
重構(gòu)是一個(gè)可迭代的過(guò)程,可以對(duì)一個(gè)功能重復(fù)重構(gòu),直到其滿(mǎn)足軟件的需求、維護(hù)和可擴(kuò)展性
重構(gòu)的方法比較多,一本書(shū)也說(shuō)不完,一些概念性的內(nèi)容見(jiàn)百科