`
mingjian01
  • 浏览: 28314 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
   今天看了一下 HotSpot JVM (下简称JVM)的内存管理,先来简单说说我的理解吧。      JVM将堆分成了 二个大区  Young 和 Old 如下图:              而Young 区又分为 Eden、Servivor1、Servivor2, 两个Survivor 区相对地作为为From 和 To 逻辑区域, 当Servivor1作为 From 时 , Servivor2 就作为 To, 反之亦然    如下图:          因此当Eden区满的时候 GC执行,这时会将 Eden 区和 From 区中还被引用的对象会被移到 To区 ...
    这个问题很容易理解,似乎也不难解决。我们只要将每一点与其他n-1个点的距离算出,找出达到最小距离的两个点即可。然而,这样做效率太低,需要O (n2 )的计算时间。在问题的计算复杂性中 我们可以看到,该问题的计 ...
导读:Sans Serif是Google的一位工程师,近日发布了一篇博文非常清楚的描述了Android系统架构,中国移动通信研究院院长黄晓庆在新浪微博上推荐了该文,并认为文中对Android的介绍很好,如下是CSDN对文章的简单编译: Andriod是什么 ...
写在前 面:SQLite封锁机制的实现需要底层文件系统的支持,不管是Linux,还是Windows,都提供了文件锁的机制,而这为SQLite提供了强大的 支持。本节就来谈谈SQLite使用到的文件锁——主要基于Linux和Windows平台。   Linux的文件锁 Linux 支持的文件锁技术主要包括建议锁 (advisory lock)和强制锁 (mandatory lock)这两种。此外,Linux 中还引入了两种强制锁的变种形式:共享模式强制锁(share-mode mandatory lock)和租借锁(lease)。在这里,主要讨 ...
写在前面:本节主要谈谈SQLite的锁机制,SQLite是基于锁来实现并发控制的,所以本节的内容实际上是属于事务处 理的,但是SQLite的锁机制实现非常的简单而巧妙,所以在这里单独讨论一下。如果真正理解了它,对整个事务的实 ...
Code 写在前面:由于 内容较多,所以断续没有写完的内容。 11、 删除日志文件(Deleting The Rollback Journal) 一旦更改写入设备,日志文件将会被删 除,这是事务真正提交的时刻。如果在这之前系统发生崩溃,就会进行恢复处理,使得数据库和没发生改变一样;如果在这之后系统发生崩溃,表明所有的更改都已 经写入磁盘。SQLite就是根据日志存在情况决定是否对数据库进行恢复处理。 删除文件本质上不是一个原子操作,但是从用户进程的角度来看是一个原子操作,所以一个事务看起来是一个 原子操作。 在许多系统中,删除文件也是一个高代价的操作。作为 ...
写在前面:个人认为pager层是SQLite实现最为核心的模块,它具有四大功能:I/O,页面缓存,并发控制 和日志恢复。而这些功能不仅是上层Btree的基础,而且对系统的性能和健壮性有关至关重要的影响。其 中并发控制和日志恢复是事务处理实现的基础。SQLite并发控制的机制非常简单——封锁机制;别外,它 的查询优化机制也非常简单——基于索引。这一切使得整个SQLite的实现变得简单,SQLite变得很小,运 行速度也非常快,所以,特别适合嵌入式设备。好了,接下来讨论事务的剩余部分。6、修改位于用户进程 空间的页面(Changing Database Pages In User Sp ...
写在前面:从本章开始,将对SQLite的每个模块进行讨论。讨论的顺序按照我阅读SQLite的顺序来进行,由于项目的 需要,以及时间关系,不能给出一个完整的计划,但是我会先讨论我认为比较重要的内容。本节讨论SQLite的事务处理技术,事务处理是DBMS中最关键的 技术,对SQLite也一样,它涉及到并发控制,以及故障恢复,由于内容较多,分为两节。好了,下面进入正题。  本节通过一个具体的例子来分析SQLite原子提交的实现(基于Version 3.3.6的代码)。 CREATE TABLE episodes( id integer primary key,name text, ...
写在前面:本节 是前一节内容的后续部分,这两节都是从全局的角度SQLite内核各个模块的设计和功能。只有从全局上把握SQLite,才会更容易的理解SQLite的 实现。SQLite采用了层次化,模块化的设计,而这些使得它的可扩展性和可 ...
写在前面:从本 章开始,我们开始进入SQLite的内核。为了能更好的理解SQLite,我先从总的结构上讨论一下内核,从全局把握SQLite很重要。SQLite的 内核实现不是很难,但是也不是很简单。总的来说分为三个部分,本章主要讨论虚拟 ...
写在前面:本节 讨论事务,事务是DBMS最核心的技术之一.在计算机科学史上,有三位科学家因在数据库领域的成就而获ACM图灵奖,而其中之一 Jim Gray(曾任职微软)就是因为在事务处理方面的成就而获得这一殊荣,正是因为他,才使得OLTP系统在随后直到今天大行其道.关于事务处理技术,涉及到 很多,随便就能写一本书.在这里我只讨论SQLite事务实现的一些原理,SQLite的事务实现与大型通用的DBMS相比,其实现比较简单.这些内容可 能比较偏于理论,但却不难,也是理解其它内容的基础.好了,下面开始第二节---事务. 2、    事务(Transaction) 2.1 ...
写在前面:谢谢各位的 关注,没想到会有这么多人关注。高兴的同时,也感到压力,因为我接触SQLite也就几天,也没在实际开发中用过,只是最近项目的需求才来研究它,所以我 很担心自己的文章是否会有错误,误导别人。但是 ...
写在前面:出于项目的 需要,最近打算对SQLite的内核 进行 一个完整的剖析, 在此希望和对SQLite有兴趣的一起交流。我知道,这是一个漫长的过程,就像曾经去读Linux内核一样,这个过程也将是辛苦的,但我相信结果一定是美 好的... ...接下来是第一章。   1、SQLite介绍   自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。正与数据库 管理 系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源,增 加了管理的复杂性。随着软件应用程序逐渐模块模块化,一种新型数据库会比大型复杂的传统数据库管理系统更适应。嵌入式数据库直 ...
5.3 重建 B 树索引对于查询性能的影响        最后我们来看一下重建索引对于性能的提高到底会有什么作用。假设我们有一个表,该表具有 1 百万条记录,占用了 100000 个数据块。而在该表上存在一个索引,在 ...
5.     重建 B 树索引 5.1 如何重建 B 树索引 重建索引有两种方法:一种是最简单的,删除原索引,然后重建;第二种是使用 ALTER INDEX … REBUILD 命令对索引进行重建。第二种方式是从 oracle 7.3.3 版本开始引入的,从而使得用户在重建索引时不必删除原索引再重新 CREATE INDEX 了。 ALTER INDEX … REBUILD 相对 CREATE INDEX 有以下好处: 1)  它使用原索引的叶子节点作为 ...
Global site tag (gtag.js) - Google Analytics