自頂向下設(shè)計(jì) 當(dāng)我們開發(fā)或者重構(gòu)一個(gè)軟件系統(tǒng)時(shí),需要進(jìn)行很多框架、中間件上的選型。這些選型的粒度有大有小,解決其中一種或幾種系統(tǒng)問題。而我們正是通過將這些框架、中間件進(jìn)行搭配...
自頂向下設(shè)計(jì) 當(dāng)我們開發(fā)或者重構(gòu)一個(gè)軟件系統(tǒng)時(shí),需要進(jìn)行很多框架、中間件上的選型。這些選型的粒度有大有小,解決其中一種或幾種系統(tǒng)問題。而我們正是通過將這些框架、中間件進(jìn)行搭配...
REST是什么 REST從2000年被Roy Fielding提出距今已有20多年,其對(duì)Web技術(shù)產(chǎn)生了深遠(yuǎn)的影響。REST本身并沒有產(chǎn)生新的技術(shù)或者中間件,REST傳遞的是...
背景問題 簡(jiǎn)單的需求 當(dāng)我們系統(tǒng)中的數(shù)據(jù)模型層級(jí)較少時(shí),數(shù)據(jù)模型足夠簡(jiǎn)單時(shí),模型與數(shù)據(jù)庫可以直接進(jìn)行映射。這種簡(jiǎn)單數(shù)據(jù)模型使我們不需要針對(duì)其相互關(guān)系進(jìn)行復(fù)雜的建模設(shè)計(jì),直接在...
工具現(xiàn)狀 對(duì)于API調(diào)試工具來說近幾年國(guó)內(nèi)有不少整合的比較好的工具,比如Apifox、Apipost等。這些工具主打主打功能整合,多種功能集成一步到位,但目前對(duì)于協(xié)議的多樣性...
混沌之初 在進(jìn)行程序開發(fā)的過程中,我們有時(shí)會(huì)看到這樣的Java類: 有上百個(gè)公共方法 單個(gè)方法好幾百行 整個(gè)Java文件幾千行 先下結(jié)論,這樣的類顯然是不好的。盡管他勉強(qiáng)能維...
總則:首先收集盡可能多的垃圾(Garbage First), 一定程度上,可以理解為 是CMS在全局不分區(qū)的一種改進(jìn)。G1并不會(huì)等內(nèi)存耗盡(串行、并行)或者快耗盡(CMS)的...
讀寫分離 當(dāng)我們的數(shù)據(jù)庫壓力主鍵變大的時(shí)候,我們會(huì)嘗試增加一些從節(jié)點(diǎn)來分?jǐn)傊鞴?jié)點(diǎn)的查詢壓力。而一般來說,我們是用一主多從的結(jié)構(gòu)來作為讀寫分離的基本結(jié)構(gòu)。 而一般來說我們有兩種...
序列化與反序列化 我們?cè)谶M(jìn)行網(wǎng)絡(luò)通信調(diào)用的時(shí)候,總是需要將內(nèi)存的數(shù)據(jù)塊經(jīng)過序列化,轉(zhuǎn)換成為一種可以通過網(wǎng)絡(luò)流進(jìn)行傳輸?shù)母袷健6@種格式在經(jīng)過了傳輸之后再經(jīng)過序列化,能還原成我...
沒有單元測(cè)試時(shí)的驗(yàn)證 在學(xué)習(xí)編程和業(yè)務(wù)開發(fā)的工程中,我們有一段時(shí)間總是在討論:?jiǎn)卧獪y(cè)試是否有用?而進(jìn)行這種討論的主要原因是,我們似乎在不使用單元測(cè)試的時(shí)候,項(xiàng)目也可以跑得很好...
UML統(tǒng)一建模語言的目的是在于提出一種獨(dú)立于程序?qū)崿F(xiàn)之外的描述方式,以可視化的方式對(duì)對(duì)象進(jìn)行建模。可以用于對(duì)產(chǎn)品的描述、文檔的編制等。同時(shí)因?yàn)槠涫褂昧藝?yán)格的圖形語意的規(guī)范,所...
從領(lǐng)域模型說起 回顧一下我們進(jìn)行領(lǐng)域建模時(shí)候的流程: 進(jìn)行需求分析 進(jìn)行用例設(shè)計(jì) 針對(duì)用例進(jìn)行領(lǐng)域建模 針對(duì)領(lǐng)域模型并行進(jìn)行數(shù)據(jù)庫設(shè)計(jì)和程序設(shè)計(jì)。 在經(jīng)過了前面幾步分析后,我...
程序的健壯性 程序在運(yùn)行的時(shí)候總是不可避免地遇到各種錯(cuò)誤。這些錯(cuò)誤有一些是包含在原有的邏輯判斷中的。而有一些是被程序描述了,但是我們并不認(rèn)為它是正常邏輯的一部分。不論是什么形...
為什么不得不進(jìn)行會(huì)議 在一兩年之前,我是十分討厭開會(huì)的。我覺得開會(huì)所消耗的時(shí)間無法與得到的成果成為正比。但是隨著工作時(shí)間的增長(zhǎng),我逐漸理解到了會(huì)議的必要性(盡管很多會(huì)議的必要...
最近在梳理項(xiàng)目,重新的認(rèn)識(shí)到了原有項(xiàng)目整體的架構(gòu)。發(fā)現(xiàn)當(dāng)重新理解了很多方法論了之后,針對(duì)原有項(xiàng)目的設(shè)計(jì)架構(gòu)有了新的認(rèn)識(shí)。 主要針對(duì):項(xiàng)目分層、領(lǐng)域劃分、庫表涉及、模型依賴。 ...
什么是JShell 從Java9開始,java中推出了JShell,他是一個(gè)交互式的腳本工具。在官方的說明上將其定義為REPL(Read-Eval-Print Loop,讀取...
早期項(xiàng)目設(shè)計(jì) 在比較早期的軟件程序設(shè)計(jì)中,或者說,當(dāng)軟件需求十分簡(jiǎn)單的時(shí)候。我們往往會(huì)按照如下的方式進(jìn)行設(shè)計(jì): 分析需求文檔。 根據(jù)需求文檔中設(shè)計(jì)到的數(shù)據(jù)進(jìn)行庫表設(shè)計(jì)。 根據(jù)...
你編寫的是數(shù)據(jù)結(jié)構(gòu)還是對(duì)象 寫Java的人都會(huì)自豪的說我是面向?qū)ο缶幊蹋ɑ蛟S沒有那么自豪)。但我們?cè)趯?shí)際大型網(wǎng)絡(luò)項(xiàng)目中進(jìn)行開發(fā)的時(shí)候,我們最經(jīng)常編寫的各種對(duì)象,他們?cè)O(shè)計(jì)的是否...
古老的背景 從JDK1.1開始,JDK中就有HttpURLConnection來提供了網(wǎng)絡(luò)連接的能力,但是由于實(shí)現(xiàn)的比較古早,其有很多的局限性。比如HttpURLConnec...