国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于Web開發(fā)中“程序=數(shù)據(jù)結(jié)構(gòu)+算法”的思考

firim / 326人閱讀

摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結(jié)構(gòu)算法。這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。

在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的“程序=數(shù)據(jù)結(jié)構(gòu)+算法”。

輸入輸出思想

相對于前端程序來說,前端用戶的操作為輸入,然后經(jīng)過邏輯處理后,把數(shù)據(jù)輸出到后端;

相對于后端程序來說,從數(shù)據(jù)庫取數(shù)據(jù)算做輸入,然后經(jīng)過處理后,輸出到前端展示;

相對于數(shù)據(jù)庫來說,對于數(shù)據(jù)的操作指令為輸入,操作后產(chǎn)生的輸出結(jié)果為輸出(如刪除成功返回值,寫入成功后返回值等)

開發(fā)過程中的邏輯處理思想

后端輸出到前端展示邏輯

基于輸入輸出的思想:輸入(數(shù)據(jù))+處理(算法)+輸出(數(shù)據(jù));

數(shù)據(jù)由數(shù)據(jù)結(jié)構(gòu)組成;

根據(jù)具體業(yè)務(wù)需求,確定輸出的數(shù)據(jù)結(jié)構(gòu);

如果確定的輸出數(shù)據(jù)結(jié)構(gòu)過于復(fù)雜,拆分為單個簡單數(shù)據(jù)結(jié)構(gòu)實現(xiàn);

確定單個簡單數(shù)據(jù)結(jié)構(gòu)的輸入源;

確定輸入源的數(shù)據(jù)結(jié)構(gòu);

用算法邏輯把輸入源轉(zhuǎn)化為輸出數(shù)據(jù);

把單個簡單數(shù)據(jù)結(jié)構(gòu)組裝為最終的復(fù)雜輸出數(shù)據(jù)結(jié)構(gòu);

前端遍歷輸出的內(nèi)容,拆解數(shù)據(jù)做顯示。

前端輸入到后端的處理邏輯

確定后端需要存儲的數(shù)據(jù)結(jié)構(gòu);

把復(fù)雜的輸入數(shù)據(jù)結(jié)構(gòu)拆分為簡單數(shù)據(jù)結(jié)構(gòu);

根據(jù)簡單數(shù)據(jù)結(jié)構(gòu),遍歷用戶輸入內(nèi)容取得輸入數(shù)據(jù)組裝;

組裝簡單的輸入數(shù)據(jù)結(jié)構(gòu)傳遞到后端;

后端拆解前端輸入的復(fù)雜數(shù)據(jù)結(jié)構(gòu)為簡單數(shù)據(jù)結(jié)構(gòu);

遍歷單個復(fù)雜數(shù)據(jù)結(jié)構(gòu)并存儲,且返回每個步驟的存儲結(jié)果,出錯做數(shù)據(jù)回滾;

把存儲結(jié)果返回。

其他思考

具體業(yè)務(wù)邏輯可能相對更復(fù)雜,一般get方式取數(shù)據(jù)對應(yīng)的是后端的輸出邏輯思想,數(shù)據(jù)存儲對應(yīng)的是前端輸入思想。

這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。

另外一方面以數(shù)據(jù)拆解的思想盡量把復(fù)雜邏輯變簡單。

一些偽代碼示例

存儲示例

commit();
} catch(DbException $e) {
    $db->rollBack(); // 出錯回滾
}
// 存儲過程示例 end

輸出示例

 [
        "member_id" => 3,
        "member_name" => "用戶名"
    ],
    "order_list" => [
        [
            "order_id" => 1,
            "order_sn" => "訂單號"
        ],
        [
            "order_id" => 1,
            "order_sn" => "訂單號"
        ]
    ]
];
// 確定輸出數(shù)據(jù)結(jié)構(gòu) end

// 拆分數(shù)據(jù)結(jié)構(gòu)處理 start
$member = Member::find()
    -> select(["member_id","member_name"])
    ->asArray()
    -> one();
 
$order_list = Order::find()
    ->select(["order_id","order_sn"])
    ->asArray()
    ->all();
foreach($order_list as &$item) {
    $item["time"] = time(); // 對數(shù)據(jù)列表做其他處理
}
// 拆分數(shù)據(jù)結(jié)構(gòu)處理 end

// 組裝數(shù)據(jù)并輸出 start
return [
    "member" => $member,
    "order_list" => $order_list
];
// 組裝數(shù)據(jù)并輸出 end

前端思想同樣如是,我就不做說明了。

這幾天 SF 增加了新的板塊——直播。我也收到了官方的邀請。4 月 7 日(本周五)晚 20:30 和大家一起聊聊項目中的一些總結(jié)。講座傳送: Yii2之RESTful程序基礎(chǔ)設(shè)計及目錄規(guī)劃

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88222.html

相關(guān)文章

  • 關(guān)于Web開發(fā)程序=數(shù)據(jù)結(jié)構(gòu)+算法思考

    摘要:在這里統(tǒng)一說開發(fā),可能有失頗偏,畢竟我后端一直都是用實現(xiàn)的,沒用過也沒用過,但我想大體都是一樣都,我就此闡述一下我所認為的程序數(shù)據(jù)結(jié)構(gòu)算法。這套的想法主要目的是把復(fù)雜程序盡量做簡化,并以數(shù)據(jù)和算法的思想去思考程序本身。 在這里統(tǒng)一說Web開發(fā),可能有失頗偏,畢竟我后端一直都是用PHP實現(xiàn)的,沒用過.net也沒用過java,但我想大體都是一樣都,我就此闡述一下我所認為的程序=數(shù)據(jù)結(jié)構(gòu)+算...

    fish 評論0 收藏0
  • 大數(shù)據(jù)導(dǎo)入之MySql設(shè)計之空間換時間設(shè)計變更

    摘要:新的數(shù)據(jù)表關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類似于這樣子大碼中碼小碼這個表結(jié)構(gòu)的說明是避免對于關(guān)系鏈的數(shù)據(jù)邏輯不理解做的一個示例。 最近幾天一直在糾結(jié)于一個大數(shù)據(jù)批量導(dǎo)入的問題,經(jīng)過幾天思考,發(fā)現(xiàn)基于小數(shù)據(jù)情況,原本的數(shù)據(jù)結(jié)構(gòu)設(shè)計是沒有問題的,但是在大量數(shù)據(jù)導(dǎo)入,問題就很大了。我之前一直在強調(diào)程序=數(shù)據(jù)結(jié)構(gòu)+算法,但在這此卻鉆了牛角尖,最后去仔細看了之前別人設(shè)計的數(shù)據(jù)表才突然靈光一現(xiàn),發(fā)現(xiàn)了mysql...

    XiNGRZ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<