文件操作.md
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的文件操作的函数和类。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、文件操作函数
1、删除文件
删除目录中的文件,类似Linux系统的rm命令。
函数声明:
1bool REMOVE(const char *filename,const int times=1);
参数说明:
filename:待删除的文件名,建议采用绝对路径的文件名,例如/tmp/root/data.xml。
times:执行删除文件的次数,缺省是1,建议不要超过3,从实际应用的经验看来,如果删除文件第1次不成功,再尝试2次是可以的,更多次就意义不大了。还有,如果执行删除失败,usleep(100000)后再重试。
返回值 ...
目录操作
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的目录操作函数和类。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、创建目录
在Linux下,如果想创建一个"/tmp/aaa/bbb/ccc/ddd/data.xml"的文件,必须先创建"/tmp/aaa/bbb/ccc/ddd",步骤如下:
1)如果"/tmp"目录不存在,创建"/tmp"。
2)如果"/tmp/aaa"目录不存在,创建"/tmp/aaa"。
3)如果"/tmp/aaa/bbb"目录不存在,创建"/tmp/aaa/bbb&quo ...
日期、时间和计时器
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的时间操作函数。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、计算机时间的表示方法
UNIX操作系统根据计算机产生的年代和应用采用1970年1月1日作为UNIX的纪元时间,1970年1月1日0点作为计算机表示时间的是中间点,将从1970年1月1日开始经过的秒数用一个整数存放,这种高效简洁的时间表示方法被称为“Unix时间纪元”,向左和向右偏移都可以得到更早或者更后的时间。
在实际开发中,对日期和时间的操作场景非常多,例如程序启动和退出的时间,程序执行任务的时间,数据生成的时间,数据处理的各环节的时间等等。
在Linux系统中,自定义了time_t类型,如下:
1typedef long tim ...
xml解析
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是采用freecplus框架的解析xml格式字符串函数。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、xml格式字符串介绍
xml格式字符串是应用开发中被广泛采用的一种数据格式,简单易懂,容错性和可扩展性非常好,是数据处理、数据通讯和数据交换等应用场景的首选数据格式。
完整的xml格式比较复杂,但是,在实际开发中,对我们C/C++程序员来说,绝大部分场景下用到的xml数据格式比较简单,例如表示文件列表信息的xml数据集或文件内容如下:
1234<data><filename>_freecplus.h</filename><mtime>2020-01-01 12:20:3 ...
字符串操作
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的字符串操作函数和类。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、字符串复制
1、STRCPY函数
安全的strcpy函数。
函数声明:
1char *STRCPY(char* dest,const size_t destlen,const char* src);
参数说明:
dest:目标字符串,不需要初始化,在STRCPY函数中有初始化代码。
destlen:目标字符串dest占用内存的大小。
src:原字符串。
返回值:目标字符串dest的地址。
示例(demo1.cpp)
123456789101112131415/* * 程序名:demo1.cpp,此程序演示freecplus ...
Oracle数据库开机自启动的配置
如果服务器断电重启或计划内重启,在服务器的操作系统启动后,需要手工启动数据库实例和监听,本文介绍如何把Oracle数据库的启动和关闭配置成系统服务,在操作系统启动/关闭时,自动启动/关闭Oracle实例和监听。
假设ORACLE_HOME环境变量的值是/oracle/home。
1、启动数据库实例的shell脚本
启动Oracle数据库的脚本为/oracle/home/bin/dbstart,内容如下:
123sqlplus / as sysdba <<EOFstartup;EOF
2、重启数据库实例的shell脚本
启动Oracle数据库的脚本为/oracle/home/bin/dbrestart,内容如下:
1234sqlplus / as sysdba <<EOFshutdown immediate;startup;EOF
3、关闭数据库实例的shell脚本
启动Oracle数据库的脚本为/oracle/home/bin/dbshut,内容如下:
123sqlplus / as sysdba <<EOFshutdown immediate ...
Oracle数据字典
一、概述
Oracle通过数据字典来管理和展现数据库信息,数据字典储存数据库的元数据,是数据库的“数据库”。数据字典由4部分组成:内部RDBMS(X$)表、数据字典表、动态性能视图(V$)和(静态)数据字典视图。
数据字典系统表,保存在system表空间中。执行以下语句可以查询所有数据字典:
1select * from dictionary;
二、内部RDBMS(X$)表
X$表示Oracle数据库的核心部分,这些表用于跟踪数据库内部信息,维持数据库的正常运行。X$表是加密命名的,而且Oracle不做文档说明,也不允许sysdba以外的用户直接访问,显示授权不被允许。X$表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。
三、动态性能视图
动态性能视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以及反映数据库当前状态。在数据库启动时,Oracle动态创建X$表,在此基础上,Oracle创建了GV$和V$视图,GV$即Global V$,除了一些特例外,每个V$都对应一个GV$。GV$产生是为了OPS/RAC环境的需要,每个V$都是 ...
Oracle的体系结构
一、概述
Oracle的体系结构是数据库的组成、工作过程,以及数据库中数据的组织和管理机制,包含一系列组件(软件)、用户进程(User process)、服务进程(Server process、PGA)、SGA(共享池、数据缓存、日志缓冲区)、后台进程(SMON、DBWn、PMON、CKPT、LGWR、其它进程)、参数文件(Parameter file)、密码文件(Password)、数据文件(Data files)、控制文件(Control files)、在线重做日志文件(Redo log files)、归档日志文件(Archived log files)。
二、用户进程和服务进程
1、用户进程
用户进程(User process),是指用户通过客户端,比如SQL Plus、PL/SQL Developer、SQL Load、应用程序等工具连接上Oracle数据库而产生的进程。用户进程处理用户输入并与服务器进程通信。用户进程还负责表现用户请求的信息,必要时可以将信息处置成更可用的形式。
2、服务进程
服务进程(Server Process),当客户端发起连接时,Oracle ...
Oracle字符集的设置
一、字符集的概念
1、字符编码(character encoding):
字符编码是一种法则,在数字与符号之间建立的对应关系。不同的国家有不同的语言,包含的文字、标点符号、图形符号各有不同。例如在ASCII编码中,用数字97表达字符’a’与字符集相对应,常见的字符编码有ASCII,GBK,GB18030,Unicode等。
2、字符集(Character set)
字符集是字符的集合,字符是文字和符号的总称,用ASCII编码的字符集称之为ASCII字符集,用GBK编码的字符集称之为GBK字符集。
3、国际编码(Unicode)
为了解决传统的字符编码方案的局限,1994年发布了Unicode(国际编码、统一码、万国码、单一码、通用码),它是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 将全世界所有的字符统一化,统一编码,再也不存在字符集不兼容和字符转换的问题。
Unicode 有以下三种编码方式:
1)UTF-8:兼容ASCII编码;拉丁文、希腊文等使用两个字节;包括汉字在内的其它常用字符使用三个字节;剩下的极少使用的字符使用四个字节。
2)UTF-1 ...
Oracle归档日志管理
一、重做日志
Oracle以SQL脚本的形式实时记录了数据变化的详细日志,这些日志保存在重做日志文件中。根据重做日志文件,可以对数据库进行备份和恢复。在下文中,把重做日志简称为日志。
可以简单的认为,数据库每次在commit之前,会把操作数据的SQL脚本写入日志文件。
日志文件有两种:在线日志和归档日志。
创建Oracle数据库实例的时候,缺省建立三组在线日志,每组一个日志文件。三组日志中只有一组处于活动状态,这组活动的日志也称为当前日志,数据库不断的往当前日志里写入SQL脚本,当前日志写满后,Oracle会切换到下一组日志,继续写入,就这样循环切换。
日志组在切换时,如果数据库是归档模式,则将当前日志文件的内容转存为操作系统文件,成为归档日志;若当前数据库是非归档模式,则不进行归档操作,当前日志文件中的内容会被下一次覆盖。
如果数据库运行在归档模式下,当数据库出现介质失败时,使用备份文件、归档日志和在线日志可以完全恢复数据库。
二、日志管理
1、查看日志
1)查看日志组和日志文件信息。
1select group#,type,member from V$LOGFILE orde ...