• MySQL服务器连接过程分析

    本文出自:【InTheWorld的博客】

           mysqld是MySQL服务器端主进程,可以说mysqld是MySQL的真正核心,一切工作都是围绕mysqld进程进行的。所以要解剖mysql这个庞然大物,mysqld的代码是最好的突破口。
           一切都是从熟悉的main()函数开始的,其实是从mysqld_main()函数开始的。这些代码都在mysqld.cc。mysqld_main()随后调用了win_main)()。win_main()函数主要是做了一些初始化的工作。
           初始化工作完成之后,MySQL已经做好准备接受连接了。然后我们的主角Handle_connections_methods()函数登场了。这个函数的主要工作是新建3个子进程,他… 【查看更多】

  • MySQL中innodb引擎分析之初始化

    本文出自:【InTheWorld的博客】

    • MySQL的存储引擎是以插件形式工作的,这应该是MySQL的一大特色了吧!根据《深入理解MySQL》的内容,5.1版本时存储引擎的插件化都还不是彻底,确切的说是刚添加的特性。为MySQL添加一个存储引擎时,需要更改一些上层代码,零散的更改本来就有点麻烦,同时工程也要重新编译一次。我听别人说,已经可以不改C/C++代码就直接添加引擎了。这样的话,折腾存储引擎的话就更方便了!
    • 这段代码来自ha_innodb.cc,这是MySQL中申明存储引擎插件的标准过程。这段代码利用了宏。在plugin.h中有比较完整的定义。
    mysql_declare_plugin(innobase)
    {
      MYSQL_STORAGE_ENGINE_PLUGIN,
      &innobase_storage_engine,
      innobase_hton_name,
      plugin_author,
    【查看更多】
  • C++RTTI小总结

            RTTI算是C++的一大特性之一了,但也是一个不太好懂的特性。以前一直没有理解清楚RTTI。通过最近的学习,似乎掌握了一点皮毛,这里做一个小总结。首先是《C++编程思想》上的一个例子,由于缺头文件,我把容器改成了vector。

    #include <iostream>  
    #include <time.h>  
    #include <typeinfo.h>  
    #include <vector>  
    #include <stdlib.h>  //for srand() and rand()  
    using namespace std;  
      
    class shape {  
    protected:  
        static int count;  
    public:  
        shape() { count++; }  
        virtual ~shape()
    【查看更多】
  • Java解释器浅析

           解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并运行。Hotspot中实现了两种具体的解释器,分别是模板解释器而C++解释器。同时在Hotspot的源码树中还保留着一种“字节码解释器”的古老解释器。这种解释器没有编译优化,效率比较低,本质上就是一个比较长的switch语句,针对不同的字节码执行不同的操作。这些操作直接以C/C++语言的形式表现出来,随着项目的编译一起形成了“硬性的”机器代码。相比之下,模板解释器的工作要更为复杂一些,效率也会更高一些。 模板解释器的主要构成:1.解释器,读取字节码,一边翻译一遍执行;2.代码生成器:利用宏汇编器向代码缓存空间… 【查看更多】