- 浏览: 29520 次
- 性别:
- 来自: 广州
最新评论
文章列表
今天看了一下 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)
它使用原索引的叶子节点作为 ...