代码改变世界

自旋锁SPIN LOCK的编程实现

2011-08-19 18:47 by 心中无码, 1557 阅读, 1 推荐, 收藏, 编辑
摘要:自旋锁是一种轻量级的互斥量,以达到对共享资源的保护。 阅读全文

Mysql源码学习——八度空间

2011-08-15 22:24 by 心中无码, 2713 阅读, 1 推荐, 收藏, 编辑
摘要:学习完词法分析和语法分析后,开始进入Mysql源码的正式学习之旅了。这么多模块,肿么入手呢?!还好从网上搜到了一个模块划分,以后就尽可能根据这个模块划分一步一步的跟踪源码,揭开Mysql的面纱。 我们从上至下来看各个模块的划分,首先客户端发送请求与服务器连接,通过connection manager模块,连接管理模块会调用Thread Manager模块,即线程管理模块,这里会为一个连接创建一个新的线程,专门为这个连接服务,这就保证了每个连接都有一个独立的线程为之工作,当然连接数一般也会有个限制,不然无限制的创建新的线程,操作系统也顶不住啊。接着进入了User Module,用户模块,这个模. 阅读全文

Mysql源码学习——源码目录结构

2011-08-12 10:08 by 心中无码, 3671 阅读, 1 推荐, 收藏, 编辑
摘要:Mysql源码结构 阅读全文

Mysql源码学习——打造专属语法

2011-08-09 21:11 by 心中无码, 3517 阅读, 2 推荐, 收藏, 编辑
摘要:接触过SQL语句的人都会看过这家或者那家的SQL手册,其语法标准应该是从SQL92开始吧,在看SQL92标准的时候,你会发现里面定义的都是一些巴科斯范式(BNF),就是一种语法定义的标准。不管是牛X哄哄的ORACLE,还是不幸被其收购的Mysql,都会遵循里面的标准语法,当然一些扩展的语法除外,比如今天我们就会扩展一个简单的语法^-^。 阅读全文

Mysql源码学习——词法分析MYSQLlex

2011-08-03 22:23 by 心中无码, 4871 阅读, 1 推荐, 收藏, 编辑
摘要:客户端向服务器发送过来SQL语句后,服务器首先要进行词法分析,而后进行语法分析,语义分析,构造执行树,生成执行计划。词法分析是第一阶段,虽然在理解Mysql实现上意义不是很大,但作为基础还是学习下比较好。词法分析即将输入的语句进行分词(token),解析出每个token的意义。 阅读全文

Oracle的bug还是故意为之?

2011-05-04 18:22 by 心中无码, 1741 阅读, 0 推荐, 收藏, 编辑
摘要:ORACLE提供了安全标记的功能,即OLS,也就是常说的强制访问控制。其模型是建立在BLP安全模型之上,并进行了扩展。 BLP模型的元素是安全级别和范围,即可以对主客体进行安全级别和范围的设定,从而达到控制数据流动的目的,即向下读、向上写的规则。即用户可以读低于用户安全级别的数据,写高于用户安全级别的数据(当然还有范围的约定,这里不介绍了)。 ORACLE扩展了BLP模型,用户可以设置多个安全级别,通过如下接口: SA_USER_ADMIN.SET_LEVELS Syntax: PROCEDURE SET_LEVELS (policy_name IN VARCHAR2, user_name . 阅读全文

Mysql源码学习笔记——偷窥线程

2011-04-21 22:43 by 心中无码, 2978 阅读, 3 推荐, 收藏, 编辑
摘要:安装完Mysql后,使用VS打开源码开开眼,我嘞个去,这代码和想象中怎么差别这么大呢?感觉代码有些凌乱,注释代码都写的比较随意,好像没有什么统一的规范,不同的文件中代码风格也有差异,可能Mysql经过了很多牛人的手之后,集众牛人之长吧。也可能是我见识比较浅薄,适应了自己的代码风格,井底之蛙了,总之还是怀着敬畏的心情开始咱的源码之旅吧。本人菜鸟,大神轻拍。 Mysql可以启动起来了,应该怎么学习呢?总不能从main开始一步一步的看吧,Mysql作为比较底层的大型软件,涉及到数据库实现的方方面面,没有厚实的数据库理论基础和对Mysql各个模块相当的熟悉,从main开始势必会把自己引入某个死胡同啊. 阅读全文

Mysql的源码安装

2011-04-10 21:31 by 心中无码, 6186 阅读, 7 推荐, 收藏, 编辑
摘要:闲来无事,准备学习下Mysql的源代码,花了1个小时的时间,终于在VS2008中运行起来Mysql了,有些地方也是知之甚少,理解错了希望大家及时纠正,下面介绍下如何进行配置。Step 1: 下载Mysql源代码,在http://dev.mysql.com/downloads/mysql/ 网站中,包含两种格式的Mysql,MSIInstaller 和ZIP Archive,MSI Installer是直接安装程序,ZIPArchive中包含两种大小的ZIP,从大小可以看出,较小的是源码。Install和ZIP的具体区别请参考:http://dev.mysql.com/doc/refman/5. 阅读全文

结合VC6讲下对调用约定的理解

2011-04-05 14:09 by 心中无码, 1112 阅读, 1 推荐, 收藏, 编辑
摘要:调用约定(Calling Convertions)定义了程序中调用函数的方式,决定了在函数调用时数据在堆栈中的组织方式。如参数的压栈顺序和堆栈清理工作。这里结合VC 6.0,根据具体的小程序讲解三种调用约定:cdecl,stdcall,fastcall。(还有一些其他的调用约定,俺就浅尝辄止了) 首先在VC6.0中创建一个项目,程序代码如下:View Code 1#include <stdio.h> 2#include <string.h> 3 4void 5age_print( 6 char* name, 7 int age 8) 9{10 printf(" 阅读全文

ORACLE自主访问控制机制系统表研究

2011-03-14 22:24 by 心中无码, 1661 阅读, 0 推荐, 收藏, 编辑
摘要:本人近来关注于数据库安全方面,粗略地研究了下数据库的自主访问控制(DAC)和强制访问控制(MAC),现把自己对ORACLE中DAC的理解写出来,与大家分享,以上均ORACLE文档结合自己的理解,难免存在错误的地方,还请指正。访问控制是允许或者禁止某人访问某资源的过程,数据库中就是限制用户对数据库客体(如表、试图等)的访问。实现这种访问控制一般是基于访问控制列表(ACL),ACL一般记录了who能访问what以及how访问。大多数据库的将ACL以数据库系统表的形式进行实现。下面具体介绍下ORACLE中的权限相关系统表的设计。 ORACLE中的权限分为两种:系统权限和对象权限。系统权限 系统权限. 阅读全文