培训课件-孙鑫C++教程全讲A讲义.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
20.HOOK和数据库访问 主讲人:孙鑫 Windows的消息机制 应用程序 操作系统 消息队列 窗口过程 ① ② ③ ④ 动态链接库被多个进程访问 代码页面2 代码页面1 数据页面2 代码页面3 数据页面1 DLL的虚拟内存 代码页面2 代码页面1 数据页面2 代码页面3 数据页面1 代码页面2 代码页面1 代码页面2 代码页面3 数据页面1 数据页面2 代码页面2 代码页面2 代码页面3 数据页面1 数据页面2 代码页面1 第一个进程的地址空间 第二个进程的地址空间 新页面 数据库访问技术 ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。 DAO(Data Access Object),数据访问对象。DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。 DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。 RDO(Remote Data Object),远程数据对象。由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),所以,可以为使用关系数据库的应用程序提供更好的性能。 ODBC体系架构 客户程序 ODBC驱动程序管理器 ODBC驱动程序 各种关系数据库 数据库访问技术 OLE DB,对象链接与嵌入数据库。 OLE DB在两个方面对ODBC进行了扩展。首先, OLE DB提供了一个数据库编程的COM接口;第二, OLE DB提供了一个可用于关系型和非关系型数据源的接口。 OLE DB的两个基本结构是OLE DB提供程序(Provider)和OLE DB用户程序(Consumer)。 ADO(ActiveX Data Object),ActiveX数据对象,它建立在OLE DB之上。ADO是一个OLE DB用户程序。使用ADO的应用程序都要间接地使用OLE DB。ADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。 OLE DB体系架构 ADO 使用ADO的 客户程序 使用OLE DB访问数据库的程序 ODBC OLE DB用户程序 ODBC 数据库 ODBC 数据库 电子表格 电子邮件 其它非关 系型存储 OLE DB提供程序 ADO的三个核心对象 Connection对象 Connection对象表示了到数据库的连接,它管理应用程序和数据库之间的通信。 Recordset和Command对象都有一个ActiveConnection属性,该属性用来引用Connection对象。 Command对象 Command对象被用来处理重复执行的查询,或处理需要检查在存储过程调用中的输出或返回参数的值的查询。 Recordset对象 Recordset对象被用来获取数据。 Recordset对象存放查询的结果,这些结果由数据的行(称为记录)和列(称为字段)组成。每一列都存放在Recordset的Fields集合中的一个Field对象中。 单线程程序与多线程程序 单线程程序 多线程程序 一个线程 两个线程 互斥对象 互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。 互斥对象包含一个使用数量,一个线程ID和一个计数器。 ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。 16.线程同步与异步套接字编程 主讲人:孙鑫 事件对象 事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。 有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。 关键代码段 关键代码段(临界区)工作在用户方式下。 关键代码段(临界区)是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。 线程死锁 哲学家进餐的问题 线程1拥有了临界区对象A,等待临界区对象B的拥有权,线程2拥有了临界区对象B,等待临界区对象A的拥有权,就造成了死锁。 互斥对象、事件对象与关键代码段的比较 互斥对象和事件对象属

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档