很多人在進行軟件開發(fā)和軟件維護的時候會發(fā)現一個嚴重的問題,需要對軟件代碼進行重構,讓系統(tǒng)更加穩(wěn)定的運行。
目前成都創(chuàng)新互聯已為上千多家的企業(yè)提供了網站建設、域名、虛擬空間、網站托管維護、企業(yè)網站設計、富蘊網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。
那么在進行代碼重構的過程中有哪些常見的問題呢?下面遼寧電腦培訓為大家具體介紹。
1、任敬茄務管理問題和離線模式問題。
我們的線服務是眾所周知的,我們往亮碧察往容易受到網上商業(yè)邏輯守則的約束,這些守則往往忽略了在線規(guī)則的管理和維護。
然而,在現場,在線規(guī)則和守則也很重要。
因此,遼寧IT培訓發(fā)現有效維護守則和離線任務是我們面臨的問題。
2、特征日志問題在推薦系統(tǒng)中,我們經常遇到特征的拼寫和特征的“穿越時間”問題。
特征時間穿越是指,使用在模型訓練時無法預測無法得到的“慧清未來信息”,這主要是因為訓練label與特征的連接時間不嚴格。
3、服務監(jiān)制問題一個通用的推薦系統(tǒng)應當在基礎監(jiān)視上盡可能通用地再利用,具體的業(yè)務應當減少對監(jiān)視的開發(fā)量,并且遼寧IT培訓發(fā)現這樣更加方便業(yè)務定位問題。
4、離線任務的管理問題在包含推薦系統(tǒng)的算法方向上,需要構建大量的脫機任務,支持各種數據計算業(yè)務,需要支持模型的定時訓練工作。
但是在實際工作中,我們往往忽略了離線任務代碼管理的重要性,當時間變長時,遼寧電腦培訓發(fā)現各種數據和特征的質量往往是不能保證的。
相信大家在開發(fā)軟件和進行軟件維護的時候也會發(fā)現,有時候我們會針對一些軟件的功能進行代碼重構來讓系統(tǒng)運行更加的穩(wěn)定。
今天天津java培訓就一起來了解一下,在代碼重構的過程中都會遇到哪些問題。
1、離線任務和模型的管理問題。
我們做在線服務的都有體會,我們經常容易對線上業(yè)務邏輯代碼更關注一些,而往往忽視離線代碼任務的管理和維護。
但離線代碼任務和模型在推薦場景中又至關重要。
因此如何有效維護離線代碼和任務,是我們面臨的一個問題。
2、特征日志問題。
在推薦系統(tǒng)中,我們常常會遇到特征拼接和特征的『時間穿越』的問題。
所謂特征時間穿越,指的是模型訓練時用到了預測時無法獲取的『未來信息』,這主要是訓練label和特征拼接時時間上不夠嚴謹導致。
如何構建便捷通用的特征日志,減少特征拼接錯誤和特征穿越,是我們面臨的二個問題。
3、服務監(jiān)控問題察行。
一個通用的推薦系統(tǒng)應該在基礎監(jiān)控上做到盡可能通用可復用,減少具體業(yè)務對于監(jiān)控的開發(fā)量,并方便業(yè)務定位問題。
4、離線任務和模型的管理問題。
在包括推薦系統(tǒng)的算法方向中,需要構建大量離線任務支持各種數據計算業(yè)務,和模型的定時訓練工作。
但實際工作中,我們往往忽略離線任務代碼管理的重要性,當時間一長,各種數據和特征的質量往往無法保證。
為了盡可能解決這樣的問題,我們從三方面來做,一,將通用推薦系統(tǒng)依賴的離線任務的代碼統(tǒng)一到一處管理;二,結合公司離線任務管理平臺,將所有任務以通用包的形式吵晌進行管理,這樣保證所有任務的都是依賴新包;三,建設任務結果的監(jiān)控體系,將離線任務的產出完整監(jiān)控起來。
5、特征日志問題。
AndrewNg之前說過:『挖掘特征是困難、費時且需要專業(yè)知識的事,應用機器學習其實基本上是在做特征工程。
』我們理想中的推薦系統(tǒng)模型應該是有干凈的RawData,方便處理成可學習的Dataset,通過某種算法學習model,來達到預測效果不斷優(yōu)化的目的。
但現實中,我們需要處理各種各樣的數據源,有數據庫的,有日志的,有離線的,有在線的。
這么多來源的RawData,不可避免的會遇到各種各敗碰嘩樣的問題,比如特征拼接錯誤,特征『時間穿越』等等。
這里邊反應的一個本質問題是特征處理流程的規(guī)范性問題。
那么我們是如何來解決這一點呢,先,我們用在線代替了離線,通過在線落特征日志,而不是RawData,并統(tǒng)一了特征日志Proto,如此就可以統(tǒng)一特征解析腳本。
首先,重構這個概念,不是JAVA所特有的,而是跡舉軟件工程的一個概念仔州敗。
主要是指念顫改善現有的程序代碼,使其更方便、簡單的使用,提高可重用性、可維護性。
在面向對象C++\C#\JAVA等語言中,重構的概念一般是指對類進行重構,一般在現有類的某些功能方法不能滿足擴展需要,或者修復BUG時,就需要重構
重構是一個可迭代的過程,可以對一個功能重復重構,直到其滿足軟件的需求、維護和可擴展性
重構的方法比較多,一本書也說不完,一些概念性的內容見百科
重構如頃可以說是覆蓋,用覆蓋一詞來講就比較清楚。
在面向對象的一個特性--繼承中就表現出重銀輪構的意思。
重構,就是繼承鋒橡信于父類方法的子類將子類的方法重寫,方法名及參數完全相同.
重用是繼承了就可以用父類定義的方法和變量,不用再定義一次。
比如說
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();
}
}
這是重構的意思。
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();
}
}
這是重用的意思