原创 最短路徑算法——Dijkstra介紹

個人心得體會:理解這種或這類算法,可以先從小規模的問題入手,並逐漸推廣到問題變複雜的情況,這樣理解起來也可以更方便和透徹。——和數學歸納法很相似。 圖簡介 以使用地圖APP爲例,假設你想前往某個目的地,此間有很多條線路可以選,如地鐵、不同

原创 三種排序算法詳解:插入、冒泡、快速排序

好幾年前就接觸了排序算法,那時候寫都是直接用的brute force方法。那時候心沒有靜下來好好去想,而且只得其形,未得其意,難以理解不同排序算法間的精髓所在。近期在看《圖解算法》這本書,藉助一幅幅圖的表達和演化,恍然頓悟,這算法原來並沒

原创 數組與鏈表——異同分析

       近期開始看《圖解算法》,雖然很早以前就接觸過算法這塊的,但還是不得不驚歎作者的功力,巧妙地藉助漫畫的形式和相關的例子把複雜的原理講得如此有趣和透徹。這裏將先跳過大O(時間複雜度、空間複雜度)相關部分的介紹,以及關於最佳、平均

原创 VS2017 C++控制檯編譯大量錯誤

本文的基本部分參考自CSDN博客:https://blog.csdn.net/weixin_40830684/article/details/80949746 如圖所示出現了E1696、E0282、E0260等錯誤,包括“float.h

原创 代碼整潔之道——讀後感

時隔三年,第二次閱讀《代碼整潔之道》,並以第三者的角度來看代碼質量的問題,感慨良多。 寫代碼,與寫中學的作文無異,寫和讀是都要兼顧。好的代碼,一直生生不息,它用他的活力充分的表達着自己的點點滴滴,讓人賞心悅目。它就像一件藝術品,雖然你就是

原创 依賴注入、控制反轉

通過這個例子,作者吧依賴注入和控制反轉講的十分精練易懂。 依賴注入:底層對象做爲參數傳入高層次對象。——解決的問題:底層對象的小變動,會極大影響高層次的代碼結構。 控制反轉:一個容器相關,通過配置好的依賴關係,對依賴注入方式進行管理。 作

原创 架構漫談(九):理清技術、業務和架構的關係 + 我的思考

我的思考:架構師接觸的工作內容,已不僅僅是技術的範疇,更需要協調好人與人之間的合作關係。技術僅僅是用於解決問題的一種方式,問題具體是如何解決的,是非技術人員所不關心的,他們關心更多的是能不能以更低成本,來處理好當前的問題。因而在解決問題的

原创 架構漫談(八):從架構的角度看如何寫好代碼 + 我的思考

我的總結:當先前對於利益相關者的關係理清了,系統基本架構和測試方法等也有了,進入實際Coding階段。在Coding前,需要我們考慮好業務功能的分配,關注於功能會頻繁變更的部分,爲未來的維護和擴展打下良好基礎。功能模塊、功能模塊,要的就是

原创 架構漫談(七):不要空設架構師這個職位,給他實權 + 我的思考

我的總結:在做好本職工作的同時,仔細觀察和推敲事物背後的其他關係,及其相互之間的影響。就如架構師,光讓下面的人執行流程肯定不行,得真正讓他們從心底裏認可這個事情。這裏有太多的內容值得去推敲,技術方面的、管理方面的(這和項目經理完全一樣啊不

原创 c++內存泄露:使用性能監視器進行內存泄露的確認

對於服務器程序,在不停的運作中,如何去測試是否存在內存泄露,如果你的開發環境是在windows下,那麼我們就可以使用windows自帶的性能監視器來觀察程序的性能。 使用此例子: // Test.c int main() {     

原创 架構漫談(六):軟件架構到底是要解決什麼問題? 加個人思考

概括:結合上文(漫談六),爲滿足業務方在利益方面的訴求,將業務在計算機上虛擬化(軟件化),軟件工程師開始對業務進行建模和實現,這是一個順序過程。軟件方面,隨着這個過程愈發複雜,需要不同人參與到不同部分,進行職能的細分和並行開發,達到效率的

原创 C++ explicit關鍵字詳解

一句話總結:在類中,寫了explicit關鍵字時,類中的隱式轉換無效,必須在類中進行實際的聲明。 首先, C++中的explicit關鍵字只能用於修飾只有一個參數的類構造函數, 它的作用是表明該構造函數是顯示的, 而非隱式的, 跟它相對應

原创 架構漫談(四):如何做好架構之架構切分

幾句話的概括:明白了問題的主體、情況後,對問題的解決方法進行分割,使之符合時間、空間、利益等方面的需求,形成一個方案,較爲順利的去解決這個問題。 架構漫談是由資深架構師王概凱 Kevin 執筆的系列專欄,專欄將會以 Kevin 的架構經驗

原创 架構漫談(五):什麼是軟件

概括的說:軟件的作用在於模擬人的行爲,其價值在於可以進一步的降低成本、提高效率。而因爲軟件開發的愈發複雜,隨着而出現了分工,形成的一個新的利益組織架構。 架構漫談是由資深架構師王概凱 Kevin 執筆的系列專欄,專欄將會以 Kevin 的

原创 架構漫談(三):如何做好架構之識別問題

概括來說就是,理解他人問題的主體,並分步化解、解決問題。 按照之前架構的定義,做好架構首先需要做的就是識別出需要解決的問題。一般來說,如果把真正的問題找到,那麼問題就已經解決了 80% 了。這個能力基本上就決定了架構師的水平。 那麼面對問