标签:#程序架構

共 31 篇文章

Indirection

程序设计中的indirection也稱為參考(reference),是一種受名稱、參考或是容器指涉事物的方式。最常見的indirection是用記憶體位址處理某變數。像是用指標存取變量就是這樣的例子。一個已儲存的,可以透過double indirection存取其他物標的指標,稱為間址模式(indirection node)在較早期的電腦結構中,間址模式可以提供許多複雜的寻址模式。 indirection的另外一個例子是域名系统,可以用…

越位规则

越位規則(*')是指程式語言中,用縮排來表示块结构的範圍。该名詞來自彼得·兰丁,是足球中越位(offside)的雙關語。 定义 越位规则,定义于彼得·兰丁在1966年叫做《The Next 700 Programming Languages》的文章中: 这个规则被解读为是一种词法约定:任何非空白记号,当出现在上一行这种记号左侧之时,被接受为一个新宣布的开始。 以Haskell语言的黄金规则为示例:作为某个表达式一部份的代码应该比这个表达…

Here文档

here文档,又称作heredoc、hereis、here-字串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)裡定义一个字串的方法。它可以保存文字裡面的换行或是縮排等空白字元。一些语言允许在字串里执行变量替换和命令替换。 here文档最通用的语法是 END_TEXT ONE TWO THREE UNO DOS TRES …

介面 (資訊科技)

-{zh-cn:接口或界面; zh-tw:介面;}-(),-{zh-cn:; zh-tw:}-。介面泛指實體把自己提供給外界(可以為另一實體)的一種抽象化物,用以從與外部溝通時分離出內部操作,使其能被修改內部而不影響外界其他實體與其互動的方式,就如物件導向程式設計提供的多重抽象化。 介面是兩實體交換資料的媒介,交換資料的實體可以是軟體、電腦硬體、外部设备、人等等。有些介面(例如觸控式螢幕)是雙向的,可以傳送資訊,同時接收資訊,有些介面(…

正则表达式

正则表达式(,常简写为、或),又称規律表達式、正規-{zh-cn:表示式; zh-tw:表達式; zh-hk:表示式;}-、正規表示法、規則運算式、常規表示法,是计算机科学概念,用簡單字串来描述、匹配文中全部符合指定格式的字串,現在很多文本编辑器都支援用正則表达式搜尋、取代符合指定格式的字串。 许多程序设计语言都支援用正則表达式操作字串,如Perl就内建功能强大的正則表达式引擎。正則表达式这概念最初由Unix的工具软件(例如sed和gr…

監視器 (程序同步化)

監視器 (,也称为-{zh-cn:监视器; zh-tw:管程;}-) 是一种程序结构,结构内的多个子程序(对象或模块)形成的多个工作线程互斥访问共享資源。這些共享資源一般是硬件或一群變數。管程实现了在一个时间点,最多只有一个线程在执行管程的某个子程序。与那些通过修改数据结构实现互斥访问的并发程序设计相比,管程实现很大程度上简化了程序设计。 管程提供了一种机制,线程可以临时放弃互斥访问,等待某些条件得到满足后,重新获得执行权恢复它的互斥访…

頭等物件

頭等物件(),在電腦科學中,指称支持其他实体通常能获得的所有运算的实体。这些运算典型的包括:在執行期創造,作為參數傳遞給其他函數,或存入一個變數等。將一個實體變為頭等物件的過程叫做「实化」(Reification)。 「頭等物件」這一名稱最早由克里斯托弗·斯特雷奇在1960年代發明,原稱「頭等公民」(First-class citizen),意指函數可作為電腦語言中的頭等公民。英文中也稱「头等实体」(First-class entity…

設定運算子

在C++程式語言裡,設定運算子(英文:assignment operator)是用等號 = 符號。就像其他的C++運算子一樣,它可以作為多載。 複製設定運算子是一個特別的設定運算子,通常是用來把已存在的物件指定給其他相同類別的物件。它是一個特別的成員函式,如果程式設計師沒有定義這個成員函式,那麼編譯器會自動地產生這個成員函式。編譯器產生的程式碼是以單一成員進行物件複製的動作。 複製設定運算子,這個成員函式與複製建構子的相異點在於,它一定…

类型双关

类型双关是计算机科学的术语,指任何编程技术能颠覆或者绕过一门程序设计语言的類型系統,以达成在形式语言内部难以甚至不可能实现的效果。 C语言(C99 标准起)可以使用memcpy实现类型双关。实践上往往使用union实现。 C++可以使用std::memcpy和来自C++20的std::bit_cast实现类型双关。 Pascal语言使用records与variants来按照多种方法处理特定数据类型。 Socket例子 Berkeley …

前向声明

在程序设计中,前向声明(Forward Declaration)是指提前声明,但还没有给出完整的定义的标识符(表示编程的实体,如数据类型、变量、函数)。 例子 一個簡單的C/C++例子: void printThisInteger(int); 在C++中, 上行代码是一个函数的前向声明,也是该函数的原型。编译器处理该行源码后,允许程序员在随后的程序中引用函数printThisInteger; 不过程序员必须在某处提供这个被声明的函数的定…

業務物件

業務物件(business object)是在多层架构應用程式中,接在数据访问层和业务逻辑層之間,傳遞資料的實體。 業務物件會將和行為分開,業務物件是在多層系統之中的各層之間互動,而實際的應用程式是在業務層,不會跨層。 功能 程式會實現類別,一般最後會有物件管理或是執行行為,而業務物件一般會有實例變數或属性(也稱為特性),以及和其他業務物件的關聯,交織出對應商務關係的物件圖。 若领域模型中的業務物件沒有行為,會稱為是貧血領域模型。 舉例…

自旋锁

自旋锁是计算机科学用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显式释放自旋锁。 自旋锁避免了进程上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。因此操作系统的实现在很多地方往往用自旋锁。Windows操作系统提供的轻型读写锁(SRW Lock)内部就用了自旋锁。显然,单核CPU不适于使用自旋锁,这里的单核CPU指的是单核单线程…

猴子补丁

猴补丁()是一种编程技巧,用拼凑代码的方法修改程序逻辑。这种技巧也叫鸭子双关。猴补丁意思是用类似双关的技巧拼凑出和常规程序相左的程序逻辑,这种技巧只会在运行时刻生效。猴补丁的出现说明程序本身设计有缺陷,它用在网页和数据库上就是SQL注入攻击,Unix Shell的flag使用不当也会产生类似的安全问题,比如将文件命名为“-x”形式,命令行就可能将文件名认作一个传递的参数而造成运行异常。 参考

常數 (編程)

在程序设计中,常数又稱常量(),是一个在程序正常执行过程中不會被程序改变的值,也就是说,这个值是恒定的。常數可以分為不同的數據類型。各大編程語言中都有常數這個概念。 相关条目 * const 参考文献

命名空间

命名空间(),也称-{zh-cn:命名空间; zh-tw:名字空間;}-、名称空间等,它表示着一个标识符(identifier)的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他命名空间中。 例如,设Bill是X公司的员工,工号为123,而John是Y公司的员工,工号也是123。由于两人在不同的公司工…

类 (计算机科学)

类()在物件導向程式設計中是一种面向对象计算机编程语言的构造,是创建物件;}-的蓝图,描述了所创建的对象共同的特性和方法。 类的更严格的定义是由某种特定的元数据所组成的内聚的包。它描述了一些对象的行为规则,而这些对象就被称为该类的实例。类有接口和结构。接口描述了如何通过方法与类及其实例互操作,而结构描述了一个实例中数据如何划分为多个属性。类是与某个层的对象的最具体的类型。类还可以有运行时表示形式(元对象),它为操作与类相关的元数据提供了…

序列化

序列化(serialization)在計算機科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式(例如存成檔案,存於緩衝,或經由網絡中傳送),以留待後續在相同或另一台計算機環境中,能恢復-{}-原先狀態的過程。依照序列化格式重新獲取位元組的結果時,可以利用它來產生與原始物件相同語義的副本。對於許多物件,像是使用大量參照的複雜物件,這種序列化重建的過程並不容易。物件導向中的物件序列化,並不概括之前原始物件所關聯的函式。這種過程也稱為…

入口点

源代码中Main()的样子。标记了不同部分用于参考。]] 在计算机编程中,入口点是在程序中执行第一条指令的地方,和程序访问命令行参数的地方。要开始一个程序的执行,装载器或操作系统会将控制权传递到它的入口点。(在引导期间,操作系统自身就是这个程序)。这标志着从装载时(和动态连接时,如果存在的话)到运行时的转变。 对于某些操作系统和编程语言,入口点是运行时库,它是一组对语言的支持函数。库代码初始化程序并且接着把控制权传递给程序本身。在其他情…

陳述式

在計算機科學的編程中,敘述(又稱-{zh-cn:陈述式、叙述;zh-tw:陳述式、語句;zh-hk:敘述、語句;}-、述句、描述式、陳述句)是指令式編程語言中最小的獨立元素,表達程序要執行的一些動作。多數敘述是以高階語言編寫成一或多個敘述的序列,用於命令計算機執行指定的一系列操作。單一個敘述本身也具有內部結構(例如表達式)。 許多語言(例如說,C語言)將敘述與定義句(definition)分隔的很明確,因為敘述只會有運算符號以及一些宣告…

臨界區段

在同步的程式設計中,臨界區段()或稱為关键区段 ,指的是一個存取共用資源(例如:共用裝置或是共用記憶體)的程式片段,而這些共用資源又無法同時被多個執行緒存取的特性。 當有執行緒進入臨界區段時,其他執行緒或是行程必須等待(例如:bounded waiting 等待法),有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共用資源是被互斥或的使用,例如:semaphore。 只能被單一執行緒存取的裝置,例如:印表機。 一個最簡單的…