目录
24 关系: 单向链表,可移植文档格式,乱序执行,保護模式,分頁表,克隆 (编程学),C++,C语言,缓冲区过读,链表,零复制,IUnknown,Swift (程式語言),Typedef,Wild branch,Windows on Windows,WoW64,X32 ABI,X算法,指针 (信息学),指針 (電腦科學),指標,指標 (資訊科學),海森堡bug。
单向链表
单向链表(又名单链表、线性链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过从头部开始,依序往下讀取。.
可移植文档格式
可移植文档格式(Portable Document Format,简称PDF)是一種用獨立於應用程式、硬體、作業系統的方式呈現文檔的檔案格式。Adobe Systems Incorporated,, Nov 2006, p. 33.
乱序执行
在计算机工程领域,乱序执行(错序执行,out-of-order execution,简称OoOE或OOE)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。在这种范式中,处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。.
保護模式
保護模式(Protected Mode,或有時簡寫為 pmode)是一種80286系列和之後的x86兼容CPU的操作模式。保護模式有一些新的特性,如記憶體保護,分頁系統以及硬體支援的虛擬記憶體,能夠增強多任务处理和系統穩定度。現今大部分的x86作業系統都在保護模式下運行,包含Linux、FreeBSD、以及微軟Windows 2.0和之後版本。 另外一種286和其之後CPU的操作模式是真實模式,這是一種向前相容且關閉了保护模式這些特性的CPU运行模式,用來讓新的晶片可以執行舊的軟體。所有的x86 CPU都是在真實模式下開機,來確保傳統作業系統的相容性。為了使用保護模式的特性,要由程式主動地切換到保護模式。在現今的電腦上,這種切換通常是作業系統在開機時候完成的第一件工作。當CPU在保護模式下運行時,可以使用虚拟86模式來執行為真實模式設計的程式碼。 儘管用軟體的方式也有某些可能在真實模式的系統下使用多工,但保護模式下記憶體保護的特色,可以避免有問題的程式破壞其他工作或是作業系統核心所擁有的記憶體。保護模式也有中斷正在執行程式的硬體支援,可以實現先佔式多工。 大部分可以使用保護模式的CPU也擁有32位元暫存器的特性(例如80386系列和其後任何的晶片),導入了融合保護模式而成為32位元處理的概念。80286晶片雖有支援保護模式,但是仍然只有16位元暫存器。Windows 2.0和之後版本中的保護模式增強稱為"386增強模式",是因為他們除了保護模式外,還需要32位元的暫存器,並且無法在286上面執行(即使286支援保護模式)。 即使在32位元晶片上已經打開了保護模式,但是為了仿照IBM XT系統記憶體連續的設計特性,1 MiB以上的記憶體並無法存取。這種限制可以由打開A20总线來迴避。 在保護模式下,前面32個中斷都是保留給CPU例外處理用。例如,中斷0D(十進制13)是一般保護模式錯誤,而中斷00是除以零。.
分頁表
分页表是一种数据结构,它用于计算机操作系统中的虚拟内存系统,其存储了虚拟地址到物理地址间的映射。虚拟地址在访问进程中是唯一的,而物理地址在硬件(比如内存)中是唯一的。.
克隆 (编程学)
本條目是描述计算机编程学中的克隆,有關克隆的其它用法,請參見克隆 (消歧义)。 在计算机科学中,“克隆”指对一个对象制作一个完全相同的副本,其常常在原型程式設計中的编程范型或者面向对象程序设计(OOP)中用到。.
C++
C++是一種使用廣泛的计算机程序設計語言。它是一種通用程序設計語言,支援多重编程模式,例如程序化程序設計、数据抽象、面向对象程序設計、泛型程序設計和设计模式等。 比雅尼·斯特勞斯特魯普博士在贝尔实验室工作期间在20世紀80年代發明並實現了C++。起初,這種語言被稱作“C with Classes”(“包含‘類’的C語言”),作為C語言的增強版出現。随后,C++不斷增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多繼承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(Runtime type information)、命名空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根據《C++編--程思想》(Thinking in C++)一書,C++與C的代码执行效率往往相差在±5%之間。 C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向对象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中佔據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程式庫的出現,泛型程序設計在C++中佔據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬體價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程式庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。.
C语言
C是一种通用的程式語言,广泛用于系统软件与应用软件的开发。于1969年至1973年間,為了移植與開發UNIX作業系統,由丹尼斯·里奇與肯·汤普逊,以B语言为基础,在贝尔实验室設計、开发出來。 C语言具有高效、灵活、功能丰富、表达力强和較高的可移植性等特点,在程式設計中备受青睐,成为最近25年使用最为广泛的编程语言。目前,C语言編譯器普遍存在於各種不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了众多後來的程式語言,例如C++、Objective-C、Java、C#等。 二十世纪八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSI C,作為C語言的標準。二十世纪八十年代至今的有关程式開發工具,一般都支持符合ANSI C的語法。.
缓冲区过读
在计算机安全和程序设计中,缓冲区过读是一类程序错误,即程序从緩衝器读出数据时超出了边界,而读取了(或试图读取)相邻的内存。这是有违的一个例子。 通过构造恶意输入,使得缺乏边界检查的程序读取不该访问到的内存,可以触发缓冲区过读,如在心脏出血漏洞里的那样。引发的原因也可能仅仅是编程中的错误。这可能会导致异常的程序行为,包括内存访问错误、不正确的结果、或系统安全性损害。因而,有许多漏洞都因其而生,还可能被恶意利用以访问特权信息。 通常与缓冲区过读相联系的编程语言语言包括C和C++,这些语言都没有提供内置的保护机制,以防止使用指针访问虚拟内存任意位置的数据,并且不会自动检查读取该内存块的数据是否安全;对应的例子如试图读取比数组更多的元素,以及没有向末尾追加终止符。边界检查可以防止缓冲区过读,而模糊测试有助于检测出这些错误。.
链表
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。 链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C/C++和Java依靠易变工具来生成链表。.
查看 指標 (電腦科學)和链表
零复制
零复--制(Zero-copy;也译零拷--贝)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。.
IUnknown
在程序设计中,IUnknown介面是组件对象模型(COM)中的基礎介面。COM規格書中規定COM物件至少要實現此一介面,而且其他所有的COM介面都需要衍生自IUnknown介面。IUnknown提供所有COM物件都支援的兩種基本特性:利用引用计数來進行物件生命周期管理,以及存取許多事先定義的介面。 IUnknown介面會包括一個指向的指標,虛擬方法表是一個有許多函数指针的列表,函数指针會指向許多實現IUnknown介面所宣告的函數,以和介面中宣告順序相同的方式排列。而進程內呼叫產生的大致和C++中呼叫虛擬方法的開銷相近。.
Swift (程式語言)
Swift是一種支持多编程范式和編譯式的編程語言,是用來撰寫macOS/OS X、iOS、watchOS和tvOS的语言之一。 2014年,其在苹果开发者年会(WWDC)發布。設計Swift時,蘋果公司有意讓Swift與Objective-C共存在蘋果公司的作業系統上。.
Typedef
在C和C++程式語言中,typedef是一個關鍵字。它用來對一個資料類型取一個別名,目的是為了使原始碼更易於閱讀和理解。它通常用於簡化宣告複雜的類型組成的結構 ,但它也常常在各種長度的整數資料型別中看到,例如size_t和time_t。.
Wild branch
Wild branch是電腦程式中的一個名詞,是指GOTO指令(分支)的目的位置是不確定、隨機或是未預期的,這常常是因為程序錯誤,指標陣列index被破壞的結果。之所以用Wild這個形容詞來形容,也是因為其結果難以預測。Wild branch的偵測通常比較困難,一般會由錯誤的結果來識別(例如目的位址不存在,或是其位址沒有有效的程式碼,因此引發錯誤)。有時會用调试工具以及像之類的程式來確認出現Wild branch的原始位置。.
Windows on Windows
Windows on Windows,常指16位WOW、WOWEXEC或简称WOW。它是一个Microsoft Windows NT操作系统家族中32位版本的兼容层,目的是扩展以为运行为Windows 3.x编写的旧式Win16应用程序提供有限支持。64位系统上的“WOW”通常指在64位Windows上支持32位应用程序的WOW64。.
查看 指標 (電腦科學)和Windows on Windows
WoW64
WoW64(Windows 32-bit on Windows 64-bit)是Microsoft Windows操作系统的一个子系统,它提供在所有Windows 64位系统上运行32位元应用程序的能力——这包括Windows XP Professional x64 Edition、IA-64和Windows Server 2003的64位版本,以及Windows Vista、Windows Server 2008、Windows 7、Windows 8、Windows Server 2012、Windows 8.1和Windows 10的64位版本。在Windows Server 2008 R2 Server Core中它成为了可选组件,并在Nano Server中不再提供。WoW64旨在解决32位与64位Windows中的许多差异,特别是涉及到Windows本身的结构变化。.
X32 ABI
x32 ABI(x32应用程序二进制接口)是一种ABI及Linux内核接口之一。它允许程序得到x86-64的优点(较大的CPU寄存器号码,更佳的浮点性能,更快的地址无关代码共享库,通过寄存器传递函数参数,更快的系统调用指令),而使用32位指针,从而避免了对64位指针的开销。.
X算法
在计算机科学中,X算法可用来求解精确覆盖问题。此名称最早在高德纳的论文《舞蹈链》中出现,他认为此算法是“试错法中最显而易见”的。 就技术而言,X算法是一个深度优先的不确定性回溯算法。由于X算法是一个解决精确覆盖问题的简洁方法,高德纳希望通过该算法体现舞蹈链数据结构的高效性,他把使用后者的X算法称为DLX。 X算法用由0和1组成的矩阵A来表示精确覆盖问题,目标是选出矩阵的若干行,使得其中的1在所有列中出现且仅出现一次。 X算法的步骤如下: |.
指针 (信息学)
#重定向 指標 (電腦科學).
指針 (電腦科學)
#重定向 指標 (電腦科學).
指標
指標可能指:.
查看 指標 (電腦科學)和指標
指標 (資訊科學)
#重定向 指標 (電腦科學).
海森堡bug
在程序设计术语中,海森堡bug(heisenbug)是指在尝试研究它时似乎会消失或者改变行为的bug(程序错误)。该词汇是物理学家维尔纳·海森堡名字的双关语,他最先断言了量子力学的观察者效应——观察系统的行为不可避免地将改变其状态。电子学中的传统用语则是,指连接一个到设备将改变其行为。 类似的词语有玻尔bug(bohrbug)、曼德博bug(mandelbug)和薛定谔bug(schrödinbug),它们偶尔被用于指代其他类型的非寻常软件缺陷,但通常以开玩笑的心态使用。.