钩子编程(HOOK) 安装系统全局钩子

MySQL使用的是插件式存储引擎。

主要包括存储引擎有:MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory,Archive,Merge,Federated。

其中最为广泛的是MyISAM 和Innodb两种存储引擎,所以接下来对它们做简单介绍。

MyISAM 存储引擎简介

MyISAM 存储引擎的表存储在数据库中,每一个表都被存放为三个以表名命名的物理文件。

1、(.frm文件)任何存储引擎都不可缺少的存放表结构定义信息的文件

2、(.MYD文件)存放表数据的文件

3、(.MYI文件)存放该表所有索引数据的文件

注:有且仅有这样三个文件做为MyISAM 存储类型的表的存储

MyISAM 的表以不同的格式存放在一个相同后缀名的.MYD 文件中。

其中格式分为:静态(FIXED)固定长度、动态(DYNAMIC)可变长度以及压缩(COMPRESSED)三种格式。

压缩:可以创建表的时候通过ROW_FORMAT 来指定{COMPRESSED | DEFAULT}(默认不压缩)

也可以通过myisampack 工具来进行压缩

非压缩:

动态:只要表中有可变长度类型的字段存在,那么该表就肯定是DYNAMIC 格式的

静态:如果没有任何可变长度的字段,则为FIXED 格式

MyISAM 支持以下三种类型的索引:

1、B-Tree 索引

B-Tree 索引,所有的索引节点都按照balance tree 的数据结构来存储,所有的索引数据节点都在叶节点。

2、R-Tree 索引

R-Tree 索引的存储方式和b-tree 索引有一些区别,主要设计用于为存储空间和多维数据的字段做索引,支持geometry 类型的字段作索引。

3、Full-text 索引

Full-text 索引就是我们长说的全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like 查询的低效问题。

注:参与一个索引的所有字段的长度之和不能超过1000 字节

Innodb 存储引擎简介

1、支持事务安装

实现了SQL92 标准所定义的所有四个级别(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ 和SERIALIZABLE)

2、数据多版本读取

Innodb 在事务支持的同时,为了保证数据的一致性已经并发时候的性能,通过对undo信息,实现了数据的多版本读取。

3、锁定机制的改进

Innodb 改变了MyISAM 的锁机制,实现了行锁。行锁机制的实现是通过索引来完成的。

4、实现外键

建议不要使用外键,数据库系统调优专家都建议不要使用

5、Innodb 的物理结构

跟MyISAM一样:(.frm 文件)来存放表结构定义相关的元数据。

跟MyISAM不一样:表数据和索引数据是存放在一起的

Innodb 的物理结构分为两大部分:

1、数据文件(表数据和索引数据)

存放数据表中的数据和所有的索引数据,包括主键和其他普通索引。

Innodb 的表空间分为两种形式:

一种是共享表空间,也就是所有表和索引数据被存放在同一个表空间(一个或多个数据文件)中,

通过innodb_data_file_path 来指定,增加数据文件需要停机重启。

另外一种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd 文件中。

注:共享表空间是必须存在的,因为Innodb 的undo 信息和其他一些元数据信息都是存放在共享表空间里面的。

共享表空间的数据文件是可以设置为固定大小和可自动扩展大小两种形式,

自动扩展形式的文件可以设置文件的最大大小和每次扩展量。

2、日志文件

Innodb 的日志文件和Oracle 的redo 日志比较类似:

可以设置多个日志组(最少2个),

采用轮循策略来顺序的写入,

甚至在老版本中还有和Oracle 一样的日志归档特性。

注:千万别全部删除innodb 的日志文件,因为很可能就会让你的数据库crash,无法启动,或者是丢失数据。

Innodb 完全可以通过redo 日志将数据库Crash 时刻已经完成但还没有来得及将数据写入磁盘的事务恢复,也能够将所有

部分完成并已经写入磁盘的未完成事务回滚并将数据还原。

Innodb 的所有参数基本上都带有前缀“innodb_”,

可以仅仅通过参数(skip-innodb)来屏蔽MySQL 中的Innodb存储引擎,

这样即使我们在安装编译的时候将Innodb 存储引擎安装进去了,使用者也无法创建Innodb 的表。

钩子编程(HOOK) 安装系统全局钩子

时间: 2024-08-29 11:37:28

钩子编程(HOOK) 安装系统全局钩子的相关文章

VC++开发Windows系统全局钩子

本文的大部分内容属于对一篇网文的实践与练习,同时参考的还有一本书,在此向网文与书的作者表示敬意. 这个程序是一个windows系统键盘监控程序,随着开机自动启动,可以监控系统中各用户的键盘,并将按键记录写在指定的log文件里. 程序分为两个部分:全局钩子DLL和一个隐藏的单文档应用程序. 全局钩子DLL 创建基于“MFC AppWizard(dll)”的“扩展MFC DLL(Extension MFC DLL)”类型工程KeyBoardHook 在自动生成的源文件KeyBoardHook.cpp

钩子编程(HOOK) 屏蔽全部按键、鼠标及系统功能键 (4)

摘要:上篇文章<钩子编程(HOOK) 安装系统全局钩子>已经具体的解说了全局钩子的安装.本文将增强一下钩子的功能.实现屏蔽全部按键鼠标与系统功能键.要实现这个功能.须要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子".鼠标钩子--实现屏蔽全部鼠标点击操作.低级键盘钩子--实现屏蔽全部键盘操作,包括屏蔽功能键(ALT+F4.WIN.ALT+TAB.ALT+ESC,CTRL+ESC....).注意:不包括CTRL+ALT+DEL功能键. 本文不会具体介绍

Django框架(十六)—— forms组件、局部钩子、全局钩子

forms组件.局部钩子.全局钩子 一.什么是forms组件 forms组件就是一个类,可以检测前端传来的数据,是否合法. 例如,前端传来的邮箱数据,判断邮件格式对不对,用户名中不能以什么开头,等等 二.forms组件的使用 1.使用语法 from django.shortcuts import render, HttpResponse from django import forms # 1.先写一个类,继承Form class MyForm(forms.Form): # 定义一个属性,可以用

钩子编程(HOOK) 屏蔽所有按键鼠标及系统功能键

作者 : 卿笃军 上篇文章已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按键鼠标与系统功能键. 要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子". 鼠标钩子:实现屏蔽所有鼠标点击操作. 低级键盘钩子:实现屏蔽所有键盘操作,包括屏蔽功能键(Alt+F4,Win,Alt+Tab, Alt+Esc,Ctrl+Esc....)注意:不包括Ctrl+Alt+Del功能键. 下面开始安装全局钩子. 第一步:打开VC6.0新建

钩子编程(HOOK) 安装进程内键盘钩子 (1)

摘要:钩子能够监视系统或进程中的各种事件消息.截获发往目标窗体的消息并进行处理.这样,我们就能够在系统中安装自己定义的钩子,监视系统中特定事件的发生.完毕特定的功能,比方截获键盘.鼠标的输入.屏幕取词,日志监视等等. 以下演示怎样安装进程内键盘钩子, Step 1:打开VC6.0.创建一个基于对话框的MFC应用程序. Step 2:在BOOL CHookDlg::OnInitDialog()函数上面编写例如以下代码:(注意是在上面编写.不是在OnInitDialog()里面) HHOOK g_h

钩子编程(HOOK) 安装进程内键盘钩子

作者 : 卿笃军 系统钩子:钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理.这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘.鼠标的输入,屏幕取词,日志监视等等. 下面演示如何安装进程内键盘钩子: 第一步:打开VC6.0,创建一个基于对话框的MFC应用程序. 第二步:在BOOL CHookDlg::OnInitDialog()函数上面编写如下代码:(注意是在上面编写,不是在OnInitDialog()里面) HHOOK g

钩子编程(HOOK) 安装进程内鼠标钩子

作者 : 卿笃军 钩子函数: WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一.利用它们,您可以捕捉您自己进程或其它进程发生的事件.通过"钩挂",您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做"钩子函数",当每次发生您感兴趣的事件时,WINDOWS都将调用该函数. 下面介绍如何安装一个进程内的鼠标钩子. 第一步:打开VC6.0,新建一个基于对话框的MFC应用程序. 第二步:将如下代码拷贝到BOOL CInnerHookDlg::OnI

钩子编程(HOOK) 留后门与钩子卸载

作者 : 卿笃军 问题由来:一般编写钩子程序,我们希望程序一方面能屏蔽键盘鼠标消息,但又希望程序能留有一个"后门",例如,按下F2退出程序. 下面示例,钩子后门设计与钩子卸载: 第一步:打开VC6.0创建一个基于对话框的MFC应用程序. 第二步:在BOOL CHookDlg::OnInitDialog()函数上面编写如下代码,注意不是OnInitDialog()里面: HWND g_hWnd = NULL; //窗口句柄 HHOOK g_hKeyboard = NULL; //钩子句柄

HOOK API (一)——HOOK基础+一个鼠标钩子实例

HOOK API (一)——HOOK基础+一个鼠标钩子实例 0x00 起因 最近在做毕业设计,有一个功能是需要实现对剪切板的监控和进程的防终止保护.原本想从内核层实现,但没有头绪.最后决定从调用层入手,即采用HOOK API的技术来挂钩相应的API,从而实现预期的功能.在这样的需求下,就开始学习了HOOK API. 0x01什么是HOOK API HOOK(钩子,挂钩)是一种实现Windows平台下类似于中断的机制[24].HOOK机制允许应用程序拦截并处理Windows消息或指定事件,当指定的