Sunday, September 13, 2020
架构, 框架, 设计模式
MVC 是 Observer pattern, Strategy pattern 和 Composite pattern 三个设计模式的演变.
Design Pattern 的核心是 Pattern
MVC这个级别的东西怎么都不可能归类到Pattern(小花样)这一类的东西上。当然更不可以是框架,因为框架不是抽象的,而 MVC 是抽象的。
MVC是一种模式。在Martin Fowler的《企业应用架构模式》中,它属于表现层的架构模式。 (Mode)
MVC 在架构模式中的实现不同可能还会用到工厂模式 (Factory) 和装饰器 (Decorator) 模式。
框架通常是代码重用
设计模式是设计重用
架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。
在软件生产中有 3 种级别的重用
1. 内部重用,即在同一应用中能公共使用的抽象块;
2. 代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用
3. 应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;
框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示
设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
简而言之:框架是大智慧,用来对软件设计进行分工;
设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
Monday, September 7, 2020
Sunday, September 6, 2020
Saturday, September 5, 2020
Thursday, September 3, 2020
Encryption String
用 objdump 指令觀察 ELF 檔案
查看區段
s 這個參數表示要使用 16 進位表示法顯示出 object code 中的各個區段,可以看到一些 read only的資料室蠻明顯的,但是 .txt 基本上不是人看得,最後可以觀察到 .comment 這個 section 是可以省略掉的資訊
d 這個參數讓object code 可以反組譯成 assemble code,方便我們觀察程式,有些時候只能拿到library 的時候,就只能從這裡挖到一些資料了,雖然可讀性沒有 C 好,但是至少比 binary code強
最後x參數可以所是列出了所有資訊,不只包含了 h 這個參數,還列出了許多 symbol table 跟一些需要重新定位 label 資訊 這裡觀察到兩個有趣的地方,兩個變數被寫進了不同的區段,有初始化的m被寫入了.data內,沒有的則被寫入了.bss,printf 不見了,其實被取代成了puts,這是compiler 優化的結果,puts 在處理只有字串的資訊比 printf 有效率,UND 表示尚未定義在這個object code 中
Subscribe to:
Posts (Atom)
n8n index
【n8n免費本地端部署】Windows版|程式安裝x指令大補帖 【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能
-
#include <iostream> using namespace std; struct X { // member binary operator void operator*(int) { cout << "void...
-
#!/bin/sh # Define the process name process_name=rsyslogd # Get minimum number of threads from command line parameters process_min_threads=...
-
關鍵詞彙 scenario-driven design(情節驅動設計) use cases(使用案例) test-driven development, TDD(測試驅動開發) 框架設計師經常犯的錯誤,是先以各種設計方法論來設計物件模型,然後為這些設計好的 API 撰寫範例程...