亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? arch.tcl

?? sqlite庫
?? TCL
字號:
## Run this Tcl script to generate the sqlite.html file.#set rcsid {$Id: arch.tcl,v 1.16 2004/10/10 17:24:54 drh Exp $}source common.tclheader {Architecture of SQLite}puts {<h2>The Architecture Of SQLite</h2><h3>Introduction</h3><table align="right" border="1" cellpadding="15" cellspacing="1"><tr><th>Block Diagram Of SQLite</th></tr><tr><td><img src="arch2.gif"></td></tr></table><p>This document describes the architecture of the SQLite library.The information here is useful to those who want to understand ormodify the inner workings of SQLite.</p><p>A block diagram showing the main components of SQLiteand how they interrelate is shown at the right.  The text thatfollows will provide a quick overview of each of these components.</p><p>This document describes SQLite version 3.0.  Version 2.8 andearlier are similar but the details differ.</p><h3>Interface</h3><p>Much of the public interface to the SQLite library is implemented byfunctions found in the <b>main.c</b>, <b>legacy.c</b>, and<b>vdbeapi.c</b> source filesthough some routines arescattered about in other files where they can have access to data structures with file scope.  The<b>sqlite3_get_table()</b> routine is implemented in <b>table.c</b>.<b>sqlite3_mprintf()</b> is found in <b>printf.c</b>.<b>sqlite3_complete()</b> is in <b>tokenize.c</b>.The Tcl interface is implemented by <b>tclsqlite.c</b>.  Moreinformation on the C interface to SQLite is<a href="capi3ref.html">available separately</a>.<p><p>To avoid name collisions with other software, all externalsymbols in the SQLite library begin with the prefix <b>sqlite3</b>.Those symbols that are intended for external use (in other words,those symbols which form the API for SQLite) beginwith <b>sqlite3_</b>.</p><h3>Tokenizer</h3><p>When a string containing SQL statements is to be executed, theinterface passes that string to the tokenizer.  The job of the tokenizeris to break the original string up into tokens and pass those tokensone by one to the parser.  The tokenizer is hand-coded in C in the file <b>tokenize.c</b>.<p>Note that in this design, the tokenizer calls the parser.  Peoplewho are familiar with YACC and BISON may be used to doing things theother way around -- having the parser call the tokenizer.  The authorof SQLite has done it both ways and finds things generally work out nicer forthe tokenizer to call the parser.  YACC has it backwards.</p><h3>Parser</h3><p>The parser is the piece that assigns meaning to tokens based ontheir context.  The parser for SQLite is generated using the<a href="http://www.hwaci.com/sw/lemon/">Lemon</a> LALR(1) parsergenerator.  Lemon does the same job as YACC/BISON, but it usesa different input syntax which is less error-prone.Lemon also generates a parser which is reentrant and thread-safe.And lemon defines the concept of a non-terminal destructor sothat it does not leak memory when syntax errors are encountered.The source file that drives Lemon is found in <b>parse.y</b>.</p><p>Becauselemon is a program not normally found on development machines, thecomplete source code to lemon (just one C file) is included in theSQLite distribution in the "tool" subdirectory.  Documentation onlemon is found in the "doc" subdirectory of the distribution.</p><h3>Code Generator</h3><p>After the parser assembles tokens into complete SQL statements,it calls the code generator to produce virtual machine code thatwill do the work that the SQL statements request.  There are manyfiles in the code generator:<b>attach.c</b>,<b>auth.c</b>,<b>build.c</b>,<b>delete.c</b>,<b>expr.c</b>,<b>insert.c</b>,<b>pragma.c</b>,<b>select.c</b>,<b>trigger.c</b>,<b>update.c</b>,<b>vacuum.c</b>and <b>where.c</b>.In these files is where most of the serious magic happens.<b>expr.c</b> handles code generation for expressions.<b>where.c</b> handles code generation for WHERE clauses onSELECT, UPDATE and DELETE statements.  The files <b>attach.c</b>,<b>delete.c</b>, <b>insert.c</b>, <b>select.c</b>, <b>trigger.c</b><b>update.c</b>, and <b>vacuum.c</b> handle the code generationfor SQL statements with the same names.  (Each of these files calls routinesin <b>expr.c</b> and <b>where.c</b> as necessary.)  All otherSQL statements are coded out of <b>build.c</b>.The <b>auth.c</b> file implements the functionality of<b>sqlite3_set_authorizer()</b>.</p><h3>Virtual Machine</h3><p>The program generated by the code generator is executed bythe virtual machine.  Additional information about the virtualmachine is <a href="opcode.html">available separately</a>.To summarize, the virtual machine implements an abstract computingengine specifically designed to manipulate database files.  Themachine has a stack which is used for intermediate storage.Each instruction contains an opcode andup to three additional operands.</p><p>The virtual machine itself is entirely contained in a singlesource file <b>vdbe.c</b>.  The virtual machine also hasits own header files: <b>vdbe.h</b> that defines an interfacebetween the virtual machine and the rest of the SQLite library and<b>vdbeInt.h</b> which defines structure private the virtual machine.The <b>vdbeaux.c</b> file contains utilities used by the virtualmachine and interface modules used by the rest of the library toconstruct VM programs.  The <b>vdbeapi.c</b> file contains externalinterfaces to the virtual machine such as the <b>sqlite3_bind_...</b> family of functions.  Individual values(strings, integer, floating point numbers, and BLOBs) are storedin an internal object named "Mem" which is implemented by<b>vdbemem.c</b>.</p><p>SQLite implements SQL functions using callbacks to C-language routines.Even the built-in SQL functions are implemented this way.  Most ofthe built-in SQL functions (ex: <b>coalesce()</b>, <b>count()</b>,<b>substr()</b>, and so forth) can be found in <b>func.c</b>.Date and time conversion functions are found in <b>date.c</b>.</p><h3>B-Tree</h3><p>An SQLite database is maintained on disk using a B-tree implementationfound in the <b>btree.c</b> source file.  A separate B-tree is used foreach table and index in the database.  All B-trees are stored in thesame disk file.  Details of the file format are recorded in a largecomment at the beginning of <b>btree.c</b>.</p><p>The interface to the B-tree subsystem is defined by the header file<b>btree.h</b>.</p><h3>Page Cache</h3><p>The B-tree module requests information from the disk in fixed-sizechunks.  The default chunk size is 1024 bytes but can vary between 512and 65536 bytes.The page cache is responsible for reading, writing, andcaching these chunks.The page cache also provides the rollback and atomic commit abstractionand takes care of locking of the database file.  TheB-tree driver requests particular pages from the page cache and notifiesthe page cache when it wants to modify pages or commit or rollbackchanges and the page cache handles all the messy details of making surethe requests are handled quickly, safely, and efficiently.</p><p>The code to implement the page cache is contained in the single Csource file <b>pager.c</b>.  The interface to the page cache subsystemis defined by the header file <b>pager.h</b>.</p><h3>OS Interface</h3><p>In order to provide portability between POSIX and Win32 operating systems,SQLite uses an abstraction layer to interface with the operating system.The interface to the OS abstraction layer is defined in<b>os.h</b>.  Each supported operating system has its own implementation:<b>os_unix.c</b> for Unix, <b>os_win.c</b> for windows, and so forth.Each of these operating-specific implements typically has its ownheader file: <b>os_unix.h</b>, <b>os_win.h</b>, etc.</p><h3>Utilities</h3><p>Memory allocation and caseless string comparison routines are locatedin <b>util.c</b>.Symbol tables used by the parser are maintained by hash tables foundin <b>hash.c</b>.  The <b>utf.c</b> source file contains Unicodeconversion subroutines.SQLite has its own private implementation of <b>printf()</b> (withsome extensions) in <b>printf.c</b> and its own random number generatorin <b>random.c</b>.</p><h3>Test Code</h3><p>If you count regression test scripts,more than half the total code base of SQLite is devoted to testing.There are many <b>assert()</b> statements in the main code files.In additional, the source files <b>test1.c</b> through <b>test5.c</b>together with <b>md5.c</b> implement extensions used for testingpurposes only.  The <b>os_test.c</b> backend interface is used tosimulate power failures to verify the crash-recovery mechanism inthe pager.</p>}footer $rcsid

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲韩国日本视频| 精品一区中文字幕| 99综合影院在线| 亚洲国产成人午夜在线一区| 国产一区二区伦理片| 精品国产一区二区三区不卡 | 免费看日韩精品| 制服.丝袜.亚洲.另类.中文| 日韩av在线发布| 日韩欧美成人激情| 国产成人综合自拍| 亚洲欧洲精品一区二区精品久久久 | 亚洲视频在线观看三级| 91国内精品野花午夜精品| 亚洲一级电影视频| 日韩精品一区二区在线观看| 国产精品1区二区.| 亚洲视频中文字幕| 精品福利一二区| 成人久久18免费网站麻豆| 亚洲精品视频自拍| 91精品国产一区二区三区香蕉| 久久不见久久见中文字幕免费| 日本一区二区三区电影| 91久久精品午夜一区二区| 午夜电影一区二区三区| 久久久国产一区二区三区四区小说 | 国产欧美精品一区二区色综合朱莉| 日韩专区中文字幕一区二区| 免费在线观看一区二区三区| av一区二区不卡| 欧美一区永久视频免费观看| 欧美国产精品一区二区三区| 亚洲伊人色欲综合网| 国产精品亚洲午夜一区二区三区| 色婷婷国产精品| 国产精品不卡在线| 日本一不卡视频| 欧美主播一区二区三区| 一级精品视频在线观看宜春院 | 青青草97国产精品免费观看| 粉嫩aⅴ一区二区三区四区| 欧美大片在线观看一区| 亚洲一区在线电影| 成人午夜电影小说| 欧美最猛黑人xxxxx猛交| 日韩欧美黄色影院| 国模大尺度一区二区三区| 3d动漫精品啪啪1区2区免费 | 成人综合婷婷国产精品久久| 日韩欧美色电影| 欧美精选午夜久久久乱码6080| 色婷婷综合视频在线观看| 欧美不卡一区二区三区| 日本精品一级二级| 国产精品一区二区男女羞羞无遮挡| 久久99精品一区二区三区| 欧美色综合天天久久综合精品| 亚洲欧洲成人精品av97| 成人免费视频一区| 狠狠色丁香久久婷婷综| 成人一区二区三区视频| 一区二区三区欧美| 国产欧美一区二区在线观看| 欧美一区三区二区| 欧美日韩一区二区三区四区五区| a亚洲天堂av| 成人永久aaa| 国产高清精品在线| 激情文学综合丁香| 美女视频黄免费的久久| 蜜乳av一区二区| 蜜桃av一区二区| 乱一区二区av| 蜜臀av性久久久久蜜臀aⅴ| 亚洲成人av电影| 亚洲国产成人高清精品| 樱花影视一区二区| 亚洲美女视频在线| 一区二区三区高清不卡| 亚洲精品亚洲人成人网| 亚洲精品国产视频| 一区二区三区国产豹纹内裤在线 | 欧美成人精品3d动漫h| 欧美一级在线免费| 91精品国产一区二区| 日韩欧美国产一区二区三区| 日韩片之四级片| 久久久国产一区二区三区四区小说| 精品国产一区二区三区久久影院 | av不卡一区二区三区| 99久久精品国产毛片| 99久久亚洲一区二区三区青草| 91同城在线观看| 91福利在线观看| 欧美三级中文字| 日韩一级片在线观看| 精品黑人一区二区三区久久| 国产亚洲欧美中文| 亚洲视频你懂的| 午夜精品国产更新| 久久精品av麻豆的观看方式| 国内成人免费视频| 91麻豆免费在线观看| 欧美另类一区二区三区| 亚洲精品一线二线三线| 国产精品美女久久久久久久久久久 | 中文字幕欧美日韩一区| 亚洲精品免费一二三区| 午夜影视日本亚洲欧洲精品| 日本三级亚洲精品| 粉嫩av亚洲一区二区图片| 在线视频国内一区二区| 日韩欧美一卡二卡| 日韩美女视频一区二区| 日韩精品1区2区3区| 风间由美性色一区二区三区| 色八戒一区二区三区| 精品国产免费一区二区三区香蕉| 国产精品另类一区| 婷婷丁香激情综合| 成人午夜免费av| 91精品国产综合久久国产大片| 国产精品青草综合久久久久99| 爽好多水快深点欧美视频| aaa欧美色吧激情视频| 日韩欧美电影在线| 一区二区三区日本| 国产精选一区二区三区 | 欧美变态tickle挠乳网站| 国产精品初高中害羞小美女文| 天天综合色天天综合| 风间由美中文字幕在线看视频国产欧美| 日本高清无吗v一区| 26uuu精品一区二区在线观看| 亚洲视频网在线直播| 黄一区二区三区| 欧美理论片在线| 国产精品传媒入口麻豆| 久久99精品久久久久久久久久久久| 色婷婷久久综合| 日本一区二区三区dvd视频在线| 日韩电影在线免费| 色噜噜狠狠成人网p站| 中文字幕第一区| 奇米888四色在线精品| 日本乱人伦aⅴ精品| 久久久久久免费毛片精品| 免费在线欧美视频| 日韩视频免费直播| 七七婷婷婷婷精品国产| 欧美丰满少妇xxxbbb| 日韩av电影免费观看高清完整版 | 婷婷综合久久一区二区三区| caoporen国产精品视频| 国产精品色眯眯| 成人精品视频.| 成人免费一区二区三区视频| 91小视频免费观看| 亚洲一区二区视频在线观看| 这里只有精品电影| 视频在线观看一区| 国产精品第一页第二页第三页| 99久久99久久精品免费看蜜桃| 1000精品久久久久久久久| 欧美一区二区三区四区五区 | 婷婷久久综合九色综合绿巨人| 国产精品入口麻豆原神| 亚洲激情图片qvod| 国产一区二区在线看| 日本最新不卡在线| 91黄色在线观看| 亚洲在线成人精品| 欧美午夜精品久久久久久超碰| 一区二区三区在线视频播放| 色美美综合视频| 亚洲国产精品久久艾草纯爱| 欧美肥妇bbw| 麻豆精品一区二区av白丝在线| 精品少妇一区二区三区在线播放 | 综合久久久久综合| 91网站最新网址| 依依成人综合视频| 欧美日韩免费不卡视频一区二区三区| 亚洲午夜电影在线| 欧美一区二区视频观看视频| 精品在线播放免费| 欧美国产精品一区二区| 91欧美激情一区二区三区成人| 樱桃视频在线观看一区| 91精品国产入口| 国产毛片一区二区| 亚洲人精品一区| 欧美另类变人与禽xxxxx| 久久99精品久久久| 国产精品乱码久久久久久 | 7777精品伊人久久久大香线蕉经典版下载 | 亚洲mv大片欧洲mv大片精品| 欧美一区二视频| 成人一道本在线|