封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装
快速掌握 Mysql数据库对文件操作的封装
在查看Mysql对文件的操作中,它在不同的操作系统上对文件的操作,除了使用标准C运行库函数,包括open、close、seek等,在Win32下的文件和目录操作函数使用了CreatFile、CloseHandl、SetFilePointer等,很多人可能不明白为什么对文件的操作要封装出两套函数。
其实使用API和标准库函数都可以生成文本文件和二进制文件,在这点上没有区别。同read()对应的是ReadFile,同write()对应的是WriteFile,同seek()对应的是SetFilePointer,同close对应的是CloseHandle。这两套函数都可以使用。但是Win 32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的声明为:
HANDLE CreateFile(
LPCTSTR lpFileName, // 文件名
DWORD dwDesiredAccess, // 访问模式
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 通常为NULL
DWORD dwCreationDistribution, // 创建方式
DWORD dwFlagsAndAttributes, // 文件属性和标志
HANDLE hTemplateFile // 临时文件的句柄,通常为NULL
如果调用成功,那么该函数返回文件的句柄,如果调用失败,则函数返回:
INVALID_HANDLE_VALUE。
在用ReadFile和WriteFile读写时,既可以同步执行,也可以异步执行。ReadFile和WriteFile函数是否为执行异步操作是由CreateFile函数决定的。如果在调用CreateFile创建句柄时指定了FILE_FLAG_OVERLAPPED标志,那么调用ReadFile和WriteFile对该句柄进行的读写操作就是异步的,如果未指定异步标志,则读写操作是同步的。在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会被阻塞,从而导致效率下降。在异步执行时,即使操作还未完成,调用的函数也会立即返回。费时的I/O操作在后台进行,这样线程就可以干别的事情。这样可以大大的提高效率。这一点是值得我们学习和借鉴的,对于我们在文件的操作方面也可以对win32系统进行封装来提高文件操作的效率。
封装mysql数据库_快速掌握 Mysql数据库对文件操作的封装相关推荐
- mysql sandbox_mysql Sandbox 快速部署mysql环境
什么是mysql sandbox? mysql sandbox 是一个用per语言写的一套mysql部署工具 http://sourceforge.net/projects/mysql-sandbox ...
- spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库
tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...
- oracle的优化适用于mysql吗_性能优化之数据库优化,适用于Sqlite、Mysql、Oracle、Sql server,详细介绍了索引和事务及部分针对Sqlite的优化...
本文为性能优化的第一篇--数据库性能优化,原理适用于大部分数据库包括Sqlite.Mysql.Oracle.Sql server,详细介绍了索引(优缺点.分类.场景.规则)和事务,最后介绍了部分单独针 ...
- mysql做kv数据库_从零开始写KV数据库:基于哈希索引
前言 新的KV数据库层出不穷,我们经常听说的KV数据库如RocksDb.Hbase等都是基于日志结构的存储引擎.最近我在看<数据密集型应用系统设计>,里面有一章专门在讲日志结构的存储引擎的 ...
- mysql猎豹_猎豹网校MySQL数据库
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 猎豹网校MySQL数据库 链接:http://pan.baidu.com/s/1i3wyPjn 密码:qxhm 教程目录 第1章 了解SQL 1.1 数据 ...
- 服务器损坏mysql修复_云服务器mysql数据库损坏修复mysql
有的时候因为各种原因导致mysql数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库,检查优化并修复所有的数据库. 1.先在运行中输入CMD,启动命 ...
- Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...
MySQL 是一个关系型数据库,使用 SQL 语言进行增删改查操作,目前属于 Oracle 旗下的产品. MySQL 数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP.Java 等 ...
- 兄弟连mysql数据库_兄弟连学python-------MySQL数据库基础知识
1.数据库系统(database system) 数据库系统是计算机系统中一种专门管理数组资源的系统,数据库存储的是一组或多组经过处理后的数据,管理这个数据库的软件成为数据库管理系统. 组成: 数据库 ...
- access 数据库 mysql数据库_如何将Access数据库移植到MySQL数据库
序论 很多MySQL用户都有过将Access移植到MySQL的计划,不过这个移植过程性能和实践的相关描述资料很少.本文将为大家总结将Access应用程序成功移植到MySQL的要点和注意事项. 由于Ac ...
最新文章
- python ssh登录远程执行命令
- 进制在c语言中的作用,C语言中的进制是什么意思?
- mysql主从 1050错误
- Java运行时动态加载类之ClassLoader
- MapReduce中的partitioner
- Docker的常用管理命令Docker将数据挂载到容器的三种方式
- neo4j 修改密码
- 此计算机必须为委派而被信任_如何增强 ClassLoader 双亲委派模式 ?
- fitbit手表中文说明书_使用机器学习预测Fitbit睡眠分数
- Maven - 依赖冲突
- 频谱仪使用方法图解_安全继电器工作原理、接线图、使用方法图解
- 每日算法系列【LeetCode 233】数字 1 的个数
- linxu的文件类型和扩展名
- paip.mysql 性能测试 报告 home right
- 傻瓜攻略(二)——MATLAB数据挖掘之Apriori算法实现
- NLPIR在线系统介绍
- 如何升级iOS15,描述文件详细安装教程
- 郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)(二)_C4.5...
- Dell PowerEdge R640:NVMe直连、NDC网卡、PERC10一览
- 专利申请怎样做快速预审?