首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

InnoDB查看全文
InnoDB整体架构.png
InnoDB引擎设计上借鉴了Oracle数据库的架构,是一个事务安全的存储引擎,其最早有Innobase Oy公司研发,从Mysql 5.5开始就是默认的存储引擎。

Mysql支持行锁,MVCC,一致性非锁定读等特性,是mysql在OLTP应用中首选的存储引擎。 InnoDB引擎的整体架构可以分为几个模块: 线程模型,InnoDB的线程模型较为复杂,有处理请求的IO线程,还有大量定时执行的线程。 内存模型,InnoDB引擎主要的内存区域是Buffer Pool,Buffer Pool同时承担Buffer和Cache的功能,即为读请求提供缓冲,也为写请求提供缓冲区。 存储模型,InnoDB引擎提供了B+树等数据结构作为索引。 事务模型,数据库事务的ACID,InnoDB引擎分别通过以下能力实现: 原子性,通过UndoLog回滚操作实现原子性。 一致性,提供唯一索引,外健等机制进行数据约束。 隔离性,不同的隔离级别实现的方式不同,对于默认的可重复读隔离级别通过MVCC、间隙锁等实现。 持久性,通过RedoLog等机制实现。 线程模型 内存模型 InnoDB存储引擎的持久化数据存在磁盘上,磁盘上记录的数据按照页的方式进行管理,出于性能考虑,InnoDB引擎设计了Buffer Pool(缓冲池),用于缓存磁盘上的数据,同时用于写操作的buffer。 InnoDB引擎对数据库的读写操作,都会首先从磁盘上加载数据到Buffer Pool,对于写操作会先修改Buffer Pool的数据,然后再以一定频率刷到磁盘上。

通常情况下,Cache和Buffer两个词的语义是有差别的,Cache一般是指数据缓存,主要解决的频繁读取热点数据的性能问题…
MongoDB查看全文
MongoDB存储的概念.png
mongoDB是流行的文档型数据库,使用方式类似于关系型数据库,其存储模型bson在JSON基础上进行了扩展,介于结构化存储和非结构化存储之间。

mongoDB具有以下特点: 面向集合存储,易存储对象类型的数据。 模式自由。 支持动态查询。 支持完全索引,包含内部对象。 支持查询。 支持复制和故障恢复。 使用高效的二进制数据存储,包括大型对象(如视频等)。 自动处理碎片,以支持云计算层次的扩展性 支持python,java,C++,php等语言的驱动程序,社区中也提供了对 Erlang,.NET等平台的驱动程序。 可通过网络访问。 mongoDB的概念和数据库概念可以逐级类比。 mongoDB数据库中的数据采用bson的方式存储,bson是从json引申出来的概念,含义为binary JSON。从本质上来看,bson是json的一个超集,除了字符串,整形,bool之外,bson还支持时间类型以及字节数组。 BSON数据结构以及和json的关系如下所示: 索引 mongoDB的索引分为几类: 单键索引 单键索引就是单独的字段作为索引列,mongoDB所有的collection默认都会有一个单键索引_id。_id一般是通过客户端生成,当写入数据不包含该字段的时候,服务端进行生成。_id由12个字节组成,依次是4个字节的Unix时间戳,3个字节的机器ID,2字节的进程ID,3个字节的计数器。 复合索引 复合索引是指包含多个字段的索引,用法和单键索引类似。 mongodb的索引采用B+树进行存储。出了普通的B+索引之外,MongoDB还支持以下的索引结构:

哈希(HASH)索引,哈希是另一种快速检索的数据结构…
程序查看全文
Java程序的编译和运行.png
程序有多个层次的概念,比如开发人员依据编程语言的语法实现的可以执行特定的功能的代码叫程序,代码通过编译之后运行物理设备上的进程也叫程序。

软件就是运行在一定硬件之上的程序,它可以完成预先设计好的指令。比如我们常用的微信、淘宝、视频播放器、浏览器都是软件,这些软件一般执行在我们熟悉的手机、电脑等硬件之上,除了这些常见的硬件平台之外,还有一些其他平台也可以运行软件,例如现在的摄像头、游戏机等。 程序在生命周期的不同阶段有不同的表现形式。在软件工作人员开发完成之后,一般而言,程序是可以阅读的符合一定语法规范的文本,这时候的程序是静态的,但是当程序在一定硬件上启动之后,程序根据外部输入或者自动执行特定的功能,此时的程序是动态的。 静态的程序一般采用C、C++、PHP、Python、Golang等语言编写。其中有一些语言是静态语言,静态语言是指其程序有固定的内存布局,通过编译和链接程序的地址空间都是明确的。动态语言是程序在运行的时候才能决定程序的内存布局。 因为静态语言的特性,静态语言在编写的时候,所有的变量需要有明确的类型,而且除了强制转换之外,类型不能发生变化,而动态语言可以在程序运行的时候才给变量赋值,所以动态语言不需要提前制定类型。 解释执行 解释执行需要解释器程序来运行程序,解释器执行程序分为下列过程: 词法分析:扫描器(Scanner)将源代码分割成一系列的记号(Token),词法分析的工具有lex。 语法分析:语法分析器将记号(Token)生成语法树(Syntax Tree),yacc是常用的语法分析工具。 语义分析:分析语法树的语义,进行类型的匹配、转换、标识等。

解释执行:解释型语言一般都有虚拟机来执行特定格式的字节码…

热门分类

算法题库

精选内容