原创 python 實現 模板模式

本文的目錄地址 本文的代碼地址 編寫優秀代碼的一個要素是避免冗餘。在面向對象編程中,方法和函數是我們用來避免編寫冗餘代碼的重要工具。回想策略模式中的sorted()例子。sorted()函數非常通用,可使用任意鍵來對多種數據結構(列表、元

原创 python 實現 原型模式

  本文的目錄地址 本文的代碼地址 有時,我們需要原原本本地爲對象創建一個副本。舉例來說,假設你想創建一個應用來存儲、分享、編輯(比如,修改、添加註釋及刪除)食譜。用戶Bob找到一份蛋糕食譜,在做了一些改變後,覺得自己做的蛋糕非常美味,想

原创 已知三點座標,求圓心座標 (外接圓)python實現

問題描述:已知三點不共線座標,做外接圓,求圓心座標x0,y0,半徑R 算法思想:根據三點到圓心的距離爲R*R,聯立求出 python實現: class Point(): def __init__(self, x, y):

原创 python 實現 建造者模式

本文目錄地址 本文代碼地址 想象一下,我們想要創建一個由多個部分構成的對象,而且它的構成需要一步接一步地完成。只有當各個部分都創建好,這個對象纔算是完整的。這正是建造者設計模式(Builder design pattern)的用武之地。建

原创 pytorch入門

原文鏈接:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 這個教程的目標是: 對PyTorch的張量和神經網絡有大致的瞭解 訓練一個小的圖片分類的

原创 簡述隱含馬爾可夫模型

隱含馬爾可夫模型常用於解決自然語言處理的問題。例如語音識別、機器翻譯等。 通信模型 在通信模型中,如何根據觀察數據o1,o2,o3,...來推測信號源發送的信息s1,s2,s3,...呢?用概率論的語言來表述,就是求在已知o1,o2,o

原创 python 實現 適配器模式

本文的目錄地址本文的代碼地址結構型設計模式處理一個系統中不同實體(比如,類和對象)之間的關係,關注的是提供一種簡單的對象組合方式來創造新功能。適配器模式(Adapter pattern)(也被稱爲Wrapper模式)是一種結構型設計模式,

原创 使用Pytorch實現NLP深度學習

  原文鏈接:https://pytorch.org/tutorials/beginner/deep_learning_nlp_tutorial.html 本文將會幫助你瞭解使用Pytorch進行深度學習編程的關鍵思想。一些章節內容(計算

原创 pytorch GPU環境搭建(win10,python3.6,pycharm,cuda9.2,anaconda3.5.2)

cuda下載地址:https://developer.nvidia.com/cuda-downloads pytorch離線安裝包下載地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/clo

原创 python 實現 狀態模式

本文的目錄地址 本文的代碼地址 面向對象編程着力於在對象交互時改變它們的狀態。在很多問題中,有限狀態機(通常名爲狀態機)是一個非常方便的狀態轉換建模(並在必要時以數學方式形式化)工具。首先,什麼是狀態機?狀態機是一個抽象機器,有兩個關鍵部

原创 python 實現 外觀模式

本文的目錄地址本文的代碼地址本質上,外觀(Facade)是在已有的複雜系統之上實現的一個抽象層。下圖演示了外觀的角色。從圖中展示的類可知,僅Computer類需要暴露給客戶端代碼。客戶端僅執行Computer的start()方法。所有其他

原创 python 實現 解釋器模式

本文的目錄地址 本文的代碼地址 對每個應用來說,至少有以下兩種不同的用戶分類。  基本用戶:這類用戶只希望能夠憑直覺使用應用。他們不喜歡花太多時間配置或學習應用的內部。對他們來說,基本的用法就足夠了。  高級用戶:這些用戶,實際上通常

原创 python 實現 命令模式

本文的目錄地址本文的代碼地址現在多數應用都有撤銷操作。雖然難以想象,但是在很多年裏,任何軟件中確實都不存在撤銷操作。撤銷操作是在1974年引入的,但Fortran和Lisp分別早在1957年和1958年就已創建了撤銷操作,這兩門語言仍在被

原创 python 實現 模型—視圖—控制器模式(MVC)

本文的目錄地址本文的代碼地址關注點分離(Separation  of Concerns, SoC)原則是軟件工程相關的設計原則之一。SoC原則背後的思想是將一個應用切分成不同的部分,每個部分解決一個單獨的關注點。分層設計中的層次(數據訪問

原创 python 實現 享元模式

本文的目錄地址本文的代碼地址由於對象創建的開銷,面向對象的系統可能會面臨性能問題。性能問題通常在資源受限的嵌入式系統中出現,比如智能手機和平板電腦。大型複雜系統中也可能會出現同樣的問題,因爲要在其中創建大量對象(用戶),這些對象需要同時並