自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

千里之行始于足下

走好每一步

  • 博客(90)
  • 资源 (14)
  • 收藏
  • 关注

原创 SQLite学习笔记(17)-B-tree(3)

2.5.3 页面重用及回收(PageReuse and Vacuum )SQLite利用一个freelist进行页面回收。当一个页面的所有记录都被删除时,就被插入到该列表。当运行VACUUM命令时,会清除freelist,所以数据库会缩小,本质上它是在新的文件重新建立数据库,而所有使用的页在都被拷贝过去,而freelist却不会,结果就是一个新的,变小的数据库。当数据库的autovacuum开

2015-09-04 16:31:22 1263

原创 SQLite学习笔记(16)-B-tree(2)

2.5.2 B-tree结构形式 SQLite利用B-tree来组织数据库。一个数据库中含有许多B-tree,每个表和索引都有一个B-tree,其中表利用b+tree来实现,而索引是利用b-tree来实现的。2.5.2.1 B-treeB-tree是一种多路搜索树,一颗M阶的b-tree,或为空树,或者:1.       定义任意非叶子结点最多只有M个儿子;且M>2;2.   

2015-09-04 16:28:14 1122

原创 SQLite学习笔记(15)-B-tree(1)

B-TreeB-tree的主要功能就是索引,它维护着各个页面之间的复杂的关系,便于快速找到所需数据。B-Tree使得VDBE可以在O(logN)下查询,插入和删除数据,以及O(1)下双向遍历结果集。B-Tree不会直接读写磁盘,它仅仅维护着页面 (pages)之间的关系。当B-TREE需要页面或者修改页面时,它就会调用Pager。当修改页面时,pager保证原始页面首先写入日志文件,当它完

2015-09-04 16:21:34 3404

原创 SQLite学习笔记(14)-虚拟机

虚拟机(Virtual Machine)VDBE是SQLite的核心,它的上层模块和下层模块都是本质上都是为它服务的。它的实现位于vbde.c, vdbe.h, vdbeapi.c, vdbeInt.h, 和vdbemem.c等几个文件中。它通过底层的基础设施B-Tree执行由编译器(Compiler)生成的字节代码,这种字节代码程序语言 (bytecode programming laugu

2015-09-04 16:15:33 737

原创 SQLite学习笔记(13)-事务(2)

2.3.5 锁和崩溃恢复SQLite的锁是基于标准文件锁实现的。SQLite在数据库文件上持有三种不同的文件锁:a reserved byte, a pending byte, and a shared region(图2.5)。图2.5 锁的机制它们都是从pending byte开始。如图2.4所示,为了从UNLOCKED移动到SHARED,一个连接在pendingbyte会

2015-08-27 11:58:43 484

转载 SQLite学习笔记(12)-事务(1)

2.3 事务(Transaction) 在SQLite的query执行过程中,事务以及锁操作总是必不可少的。Query总是在事务之中执行,而事务中总是少不了锁操作,但对锁的操作不当的话就可能引起问题。 2.3.1 事务的周期 程序与事务之间有两件事值得注意: (1) 哪些对象在事务下运行——这直接与API有关。 (2) 事务的生命周期,即什么时候开始,什么时候结束以及它在什么时

2015-08-26 20:37:28 593

原创 Sqlite学习笔记(11)-API(2)

2.2.3 执行Prepared Query 前面提到,预处理查询(Prepared Query)是SQLite执行所有SQL命令的方式,包括以下三个过程: (1)Preparation 分析器(parser),分词器(tokenizer)和代码生成器(code generator)把SQL Statement编译成VDBE字节码,编译器会创建一个statement句柄(sqlite3_stm

2015-08-25 17:16:31 754

原创 Sqlite学习笔记(10)-API(1)

API API由两部分组成: 核心API(core API) 和扩展API(extension API) 核心API的函数实现基本的数据库操作:连接数据库,处理SQL,遍历结果集。它也包括一些实用函数,比如字符串转换,操作控制,调试和错误处理。 扩展API通过创建你自定义的SQL函数去扩展SQLite。 2.2.1 主要的数据结构 SQLite由很多部分组成-parser, tokeniz

2015-08-25 17:14:17 516

转载 SQLite学习笔记(9)-SQLite的简单使用

SQLite的简单使用3.1 建立数据库C:\sqlite> sqlite3.exe dbname.dbsqlite3.exe后面跟数据库文件名3.2 创建数据表sqlite> create table users(userid varchar(20) PRIMARY KEY, ...> age int, ...> birthday datetime);

2015-08-24 16:31:28 698

原创 SQLite学习笔记(8)-SQLite编译

Windows平台的编译-利用VS2010(1)编译生成lib文件a)      下载SQLite3.8.11.1的源代码http://www.sqlite.org/sqlite-amalgamation-3081101.zip,解压sqlite-amalgamation-3081101.zip到其目录。b)      打开VS2010,新建一个VC++类型的项目,选择Win32项

2015-08-23 21:52:53 692

原创 SQLite学习笔记(7)-源代码整理

文件名称大小分属备注Btmutex.c9047Btree实现btree的mutexesBtree.c335610Btreebtree的主要实现Btree.h9955Btreebtree的头文件btreeInt.h32429Btree用btree实现了一个外部数据库Os.c11

2015-08-23 11:42:27 1615

原创 SQLite学习笔记(6)-SQLite架构

SQLite采用了模块的设计,它由三个子系统,包括8个独立的模块构成。 图2.1 SQLite架构图接口(Interface) 接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。编译器(Compiler) 在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检查,然后把它转化为底层能更

2015-08-23 11:39:49 933

原创 SQLite学习笔记(5)-资料整理

SQLite学习过程中所使用的一些资料SQLite官方社区SQLite维基百科SQLite菜鸟教程SQLite学习手册SQLite源码剖析SQLite剖析系列SQLite入门与分析

2015-08-23 11:31:38 734

原创 SQLite学习笔记(4)-数据库基本操作

创建数据库SQLite中创建数据库的命令如下:$sqlite3 DatabaseName.db该命令会创建名为Database的数据库,若该数据库已存在,则打开它。一般情况下,数据库名称应该是唯一的。实例D:\SQLite>sqlite3 tmp.dbSQLite version 3.8.11.1 2015-07-29 20:00:57Enter ".help"

2015-08-20 14:53:02 975

转载 SQLite学习笔记(3)-SQLite数据类型

SQLite 数据类型SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。SQLite 存储类每个存储在 SQLite 数据库中的值都具有以

2015-08-19 21:50:53 636

转载 SQLite学习笔记(2)-SQLite语法

SQLite的基本语法

2015-08-19 21:46:47 909

原创 SQLite学习笔记(1)-安装及其点命令

SQLite安装在Windows上安装SQLite访问点击进行下载,从Windows区进行下载下载 sqlite-shell-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件从D盘下创建文件夹D:\SQLite,并将下载的二个压缩文件解压在此,将得到sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件

2015-08-18 13:37:28 9765

转载 如何创建守护进程

守护进程  在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。  守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。  守

2014-09-20 15:20:32 526

转载 系统调用原理

1什么是系统调用   系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求

2014-09-20 14:44:20 611

转载 C函数调用与堆栈的变化

感想:这个的堆栈的图示画的还是非常好的。。。。。。。,反汇编的注释也是相当通俗易懂,就是纳闷,我的反汇编的代码为嘛不好复制出来呢,本来想自己写这篇文章的~~~ 这几天突然很想弄明白c函数调用时栈的使用情况,上网查了一下资料,自已也研究了一下,这篇blog就把我的所得记录下来吧。这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些

2014-09-20 14:31:22 644

转载 教你透彻了解红黑树

教你透彻了解红黑树 作者:July、saturnman   2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, Fe

2014-09-17 21:36:27 468

转载 硬链接与符号链接的区别

对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。    连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下

2014-09-16 10:38:34 2333

转载 最大全1子矩阵

题目描述:在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最大是指元素1的个数最多。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行是两个整数m、n(1矩阵共有m行,每行有n个整数,分别是0或1,相邻两数之间严格用一个空格隔开。输出:对应每个测试案例,输出矩阵中面积最大的全1子矩阵的元素个数。样

2014-09-11 21:35:44 889

转载 【C++专题】static_cast, dynamic_cast, const_cast探讨

首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。 int ival = 3;double dval = 3.14159;

2014-09-08 14:55:44 333

原创 kmp算法的实现

#include #include #include //计算next数组void get_next(char *pstr, int next[]){ int len = strlen(pstr); next[0] = -1; int pre = -1; int post = 0; while (post < len - 1) { if (pre == -1 || ps

2014-09-08 10:02:09 457

转载 Linux中常用操作命令

Linux简介及Ubuntu安装Linux,免费开源,多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian安装VMware或VirtualBox虚拟机。具体安装步骤,找百度。再安装Ubuntu。具体安装步骤,找百度。安装完后,可以看到Linux系统的目录结构,见链接http://www.cnblogs.com/laov/p/3409875.ht

2014-09-05 14:33:35 557

原创 双向链表的基本操作

双向链表用C++实现一个双向链表(元素类型为int),需支持  a、两个链表之间的深拷贝  b、两个链表的拼接  c、从链表头插入/删除元素  d、查找链表中的某个元素  e、返回链表中指定下标的元素

2014-09-04 16:01:23 608

转载 荷兰国旗问题

问题描述:我们将乱序的红白蓝三色小球排列成有序的红白蓝三色的同颜色在一起的小球组。这个问题之所以叫荷兰国旗,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。如下图所示:        这个问题,类似快排中partition过程。不过,要用三个指针,一前begin,一中current,一后end,俩俩交换。1、current遍历,整个数组序列,current指

2014-09-03 15:20:38 622

原创 面试中的一些字符串操作

//字符串转整形int str_to_int(char str[]){ int num, i = 0, flag = 0; if (str[i] == '+' || str[i] == '-') { if (str[i] == '-') flag = 1; ++i } for (num = 0; str[i] != '\0'; ++ i) { num = 10 *

2014-09-01 18:43:53 514

转载 从Trie树(字典树)谈到后缀树

从Trie树(字典树)谈到后缀树作者:July、yansha。出处:http://blog.csdn.net/v_JULY_v 。 引言    常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。    第一个问题: 一个文本文件,大约有一万行,每

2014-09-01 11:08:38 448

原创 关于linux的几道面试题

1、Linux中主要有哪几种内核锁?

2014-09-01 09:41:12 659

原创 求二叉树中节点的差的最大值

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。

2014-08-29 20:59:15 917

原创 求最长公共子串

给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。int str_max(char *text, char *query)

2014-08-29 20:54:31 532

转载 阿里巴巴集团2014校园招聘笔试题(9月22北京)

第一部分  单选题(前10题,每题2分;后10题,每题3分。选对得满分,选错倒扣1分,不选得0分)1、一次内存访问,SSD硬盘访问和SATA硬盘随机访问的时间分别是()    A、几微秒,几毫秒,几十毫秒      B、几十纳秒,几十微秒,几十毫秒    C、几十纳秒,几十微秒,几十毫秒  D、几微秒,几十微秒,几十毫秒 2、8进制数256,转化成7进制数是

2014-08-29 16:37:58 1910

转载 常见的字符串面试问题(二)

1)写出在母串中查找子串出现次数的代码.int count1(char* str,char* s){    char* s1;    char* s2;    int count = 0;    while(*str!='\0')    {        s1 = str;        s2 = s;        while(*s2 == *s1&&(*

2014-08-28 21:43:30 665

转载 常见的字符串面试问题(一)

一、整数与字符串之间的相互转换1.将字符串转换成整数      例如有一字符串str[]=“1234”,最直观的转换方法就是依次将每一个字符转换成相应的数字,然后乘10累加,即((1*10+2)*10+3)*10+4。想要得到每一位相应的数字,只需用每个字符减去数字0的ASCII码,即2= str[1]-'0'。      如果字符串首字符标示的是一个负数,即str[0]=='-'

2014-08-28 21:42:04 418

转载 笔试题—黑板上1—50

在黑板上写下50个数字:1至50。在接下来的49轮操作中,每次做如下操作:选取两个黑板上的数字a和b,擦去,在黑板上写|b-a|。请问最后一次动作之后剩下的数字可能是什么?为什么?

2014-08-28 10:44:00 1281

转载 二叉树中的那些常见的面试题

关于二叉树二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。再详细的说这些面试

2014-08-28 09:38:43 662

原创 二叉树的基本操作

#include #include #include using namespace std;int cur;typedef struct binarytree{ int value; struct binarytree *lchild; struct binarytree *rchild;}node;//先序建立二叉树node *creat(node *p, int

2014-08-28 09:34:48 469

原创 折半查找算法的实现

#include int find_mid(int array[], int n, int input){ int low = 0, high = n - 1; int mid; if (n < 1) return -1; while (low <= high) { mid = (low + high) / 2; if (array[mid] == input)

2014-08-27 20:20:51 716

SQLite3.8.11.1聚合版源代码

SQLite3.8.11.1聚合版源代码。SQLite,是一款嵌入式数据库,是遵守ACID(atomic, consistent, isolated, and durable)的关系型数据库管理系统,它包含在一个相对小的C库中[1]。其代码完全开源,可用于任何目的。SQLite第一个Alpha版本诞生于2000年5月,至2015年已经有15个年头,其最新稳定版本是3.8.11.1。

2015-08-26

SQLite3.8.11.1源代码

SQLite3.8.11.1源代码。SQLite,是一款嵌入式数据库,是遵守ACID(atomic, consistent, isolated, and durable)的关系型数据库管理系统,它包含在一个相对小的C库中[1]。其代码完全开源,可用于任何目的。SQLite第一个Alpha版本诞生于2000年5月,至2015年已经有15个年头,其最新稳定版本是3.8.11.1。

2015-08-26

C语言编程规范

对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。 然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。最好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。 本规范在制定过程中,主要参考了业界比较推崇的《华为软件编程规范和范例》和《MISRA 2004规则》,适合于非计算机专业的C语言初学者使用,目的在于在教学中培养学生良好的编程规范和意识、素质,促进所设计程序安全、健壮、可靠、可读与可维护(程序简单、清晰)。考虑到面向的是初学者,为便于教学和课程考核操作,本规范中的要求比较基本。事实上,很多公司都有自己规定的代码风格,包括命名规则、缩进规则等,学生参加工作后,应再进一步学习和应用公司的规范。 建议学生在学习本规范的同时,花点时间阅读本规范的参考文献原文,特别是熟读本规范的参考文献之一的《“安全第一”的C语言编程规范》,深刻理解编程规范与程序安全、健壮、可靠、可读、可维护间的关系和作用,在学习和工作中养成良好的编程风格。

2014-06-19

gem5仿真器简介与使用指导

gem5仿真器的介绍与说明,并且指导该如何运行gem5仿真器

2013-11-09

RealView? Debugger 用户指南

RealView Debugger 提供了一个强有力的调试和管理软件工程的工具本书包含 • 有关如何使用 RealView Debugger 来调试应用程序以及使用一系列调试目 标的详细说明包括示例 • 对 RealView Debugger IDE 功能的解释以便您可以管理软件工程和组织 源文件 • 对 RealView Debugger 内置功能的说明例如工作空间和宏 • 包含软件开发人员参考信息的附录 • 为 RealView Debugger 新用户准备的术语词汇

2013-06-05

ARM® Workbench IDE 4.0 版 用户指南

ARM® Workbench IDE 4.0 版 用户指南 本手册简要介绍 ARM® Workbench IDE,并介绍如何将其与 ARM RealView® Development Suite 中的其他工具一起使用。 Workbench 基于 Eclipse,但它专门用于为 ARM 目标生成、调试、监视和管理项目。

2013-06-05

simplescalar实验教程

详细讲解simplescal的安装与实验,介绍了simplescalar的结构和组成,并讲解了mp_simplesim的实验和方法

2013-05-06

C#三层架构5

详细讲解C#开发中的三层架构 三层:表示层;BLL业务逻辑层;DAL数据处理层

2013-05-01

C#三层架构4

详细讲解C#开发中的三层架构 三层:表示层;BLL业务逻辑层;DAL数据处理层

2013-05-01

C#三层架构3

详细讲解C#开发中的三层架构 三层:表示层;BLL业务逻辑层;DAL数据处理层

2013-05-01

C#三层架构1

详细讲解C#开发中的三层架构 三层:表示层;BLL业务逻辑层;DAL数据处理层

2013-05-01

AMPL_cplex 使用方法

对AMPL进行简要介绍,并说明其使用方法,告诉你如何写模型文件和数据文件,有几个例子进行详细说明

2013-01-15

AMPL简介及使用方法

对AMPL进行简要介绍,并说明其使用方法,告诉你如何写模型文件和数据文件

2013-01-15

微机系统综合课程设计:电子秒表

本科课设 硬件课设 电子秒表的设计 包括代码

2012-04-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除