当前位置: 首页 > news >正文

icp备案网站管理员有负责吗wordpress基础安装

icp备案网站管理员有负责吗,wordpress基础安装,用自己电脑怎么做网站,深圳动力网站设计公司初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github#xff1a;codetoys#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的#xff0c;可以在任何平台上使用。 专题#xff1a;一个自制代码…初级代码游戏的专栏介绍与文章目录-CSDN博客 我的githubcodetoys所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的可以在任何平台上使用。 专题一个自制代码生成器嵌入式脚本语言之总述-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之对象模型-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之堆栈结构和总入口-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之核心逻辑-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之辅助逻辑-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之应用实例-CSDN博客本篇 专题一个自制代码生成器嵌入式脚本语言之模型开发-CSDN博客 专题一个自制代码生成器嵌入式脚本语言之代码模板详解-CSDN博客 目录 一、数据库模型 二、应用实例 2.1 创建模型 2.2 生成代码 2.3 生成的代码 三、如何创建模型 一、数据库模型 数据库模型是根据数据库定义生成数据库操作相关代码的模型生成的代码是静态代码具有静态代码的编译时检查和运行效率。 数据库模型支持表定义、主键、定制的DML操作。对于C客户代码所有操作都是基于函数的函数名和参数清晰地表达了函数的功能。 下面我们先了解一个应用实例然后再研究如何编写模型。 二、应用实例 2.1 创建模型 bool Rooster_AddAllTable(CCTModel_UniversalDB* pCTM) {CCTModel_UniversalDB::table* p;//资源类型预定义的数值p pCTM-AddNewTable(RESOURCE_TYPE_D, 资源类型);if (NULL p)return false;p-AddMember(RESOURCE_TYPE_ID, long, 资源类型);p-AddMember(COMMENT, string, 备注);p-SetPK(RESOURCE_TYPE_ID);p-AddDML(InsertNewResourceType, insert, RESOURCE_TYPE_ID,COMMENT, , 插入新资源类型);//资源使用类型预定义的数值p pCTM-AddNewTable(RESOURCE_USE_TYPE_D, 资源使用类型);if (NULL p)return false;p-AddMember(RESOURCE_USE_TYPE_ID, long, 资源使用类型ID);p-AddMember(COMMENT, string, 备注);p-SetPK(RESOURCE_USE_TYPE_ID);p-AddDML(InsertNewResourceUseType, insert, RESOURCE_USE_TYPE_ID,COMMENT, , 插入新资源使用类型);//资源p pCTM-AddNewTable(RESOURCE_D, 资源);if (NULL p)return false;p-AddMember(RESOURCE_ID, long, 资源ID);p-AddMember(RESOURCE_NAME, string, 资源名称);p-AddMember(RESOURCE_TYPE_ID, long, 资源类型);p-AddMember(RESOURCE_WITH_SYS, long, 资源是否区分sys/sys2);p-AddMember(COMMENT, string, 备注);p-SetPK(RESOURCE_ID);p-AddDML(InsertNewResource, insert, *, , 插入新资源);p-AddDML(GetAllResource, select, *, , 获得全部);//任务定义p pCTM-AddNewTable(TASK_D, 任务);if (NULL p)return false;p-AddMember(TASK_ID, long, 任务ID);p-AddMember(TASK_NAME, string, 任务名称);p-AddMember(TASK_MULTIPLE, long, 0非多开1多开);p-AddMember(TASK_WITH_SYS, long, 是否区分sys/sys2);p-AddMember(TASK_PRIORITY, long, 优先级小的优先);p-AddMember(TASK_PLAN_TIME, string, 执行时间‘2,8-16’时间点或时间段);p-AddMember(TASK_PLAN_INTERVAL, long, 执行时间段的执行间隔分钟0-59);p-AddMember(TASK_START_CMD, string, 启动命令);p-AddMember(COMMENT, string, 备注);p-SetPK(TASK_ID);p-AddDML(InsertNewTaskDefine, insert, *, , 插入新任务定义);p-AddDML(GetAllTask, select, *, , 获得全部);//任务资源使用定义p pCTM-AddNewTable(TASK_RESOURCE_USE_D, 任务资源使用);if (NULL p)return false;p-AddMember(TASK_ID, long, 任务ID);p-AddMember(RESOURCE_ID, long, 资源ID);p-AddMember(RESOURCE_USE_TYPE_ID, long, 资源使用类型ID);p-AddMember(COMMENT, string, 备注);p-SetPK(TASK_ID,RESOURCE_ID);p-AddDML(InsertNewTaskResurceUseDefine, insert, TASK_ID,RESOURCE_ID,RESOURCE_USE_TYPE_ID,COMMENT, , 插入新任务资源使用定义);p-AddDML(GetAllTaskResourceUse, select, *, , 获得全部);//任务队列表p pCTM-AddNewTable(TASK_QUEUE, 待执行的任务队列);if (NULL p)return false;p-AddMember(TASK_ID, long, 任务ID);p-AddMember(SYS, long, 维度1);p-AddMember(SYS2, long, 维度2);p-AddMember(TASK_NAME, string, 任务名称参考);p-AddMember(TASK_PRIORITY, long, 优先级小的优先参考);p-AddMember(COMMENT, string, 备注参考);p-AddMember(INSERT_TIME, time, 开始时间, , TIME_LOG);p-SetPK(TASK_ID,SYS,SYS2);p-AddDML(InsertNewTaskQueue, insert, TASK_ID,SYS,SYS2,TASK_NAME,TASK_PRIORITY,COMMENT,INSERT_TIME, , 插入新任务队列);p-AddDML(DeleteTaskQueue, delete, , TASK_ID,SYS,SYS2, 删除任务队列);p-AddDML(GetAllTaskQueue, select, *, , 获取全部任务队列);p-AddDML(GetTaskQueue, select, *, TASK_ID,SYS,SYS2, 获取任务队列);//任务执行表p pCTM-AddNewTable(TASK_LOG, 任务日志);if (NULL p)return false;p-AddMember(TASK_LOG_ID, long, 任务执行序列号SEQ_TASK_LOG);p-AddMember(TASK_ID, long, 任务ID);p-AddMember(SYS, long, 维度1);p-AddMember(SYS2, long, 维度2);p-AddMember(PID, long, 任务所在的进程客户方写入);p-AddMember(START_TIME, time, 开始时间, , TIME_LOG);p-AddMember(FINISH_TIME, time, 结束时间, , TIME_LOG);p-AddMember(RETURN_VALUE, long, 返回值 0成功 0Rooster错误 0任务错误);p-AddMember(UPDATE_TIME, time, 记录更新时间, , TIME_LOG);p-SetPK(TASK_LOG_ID);p-AddDML(InsertNewTaskLog, insert, TASK_LOG_ID,TASK_ID,SYS,SYS2,START_TIME,UPDATE_TIME, , 插入新任务日志);p-AddDML(UpdateTaskLog, update, PID,UPDATE_TIME, TASK_LOG_ID, 更新任务日志, finish_time0);p-AddDML(FinishTaskLog, update, FINISH_TIME,RETURN_VALUE,UPDATE_TIME, TASK_LOG_ID, 更新任务日志, finish_time0);p-AddDML(GetCurrentTask, select, *, , 获取正在运行的任务, finish_time0);//序列if (NULL pCTM-AddNewSequence(SEQ_TASK_LOG, TASK日志序列, 0))return false;return true; }这个代码创建了一组表和一个序列每一行代码的功能都是显而易见的。 2.2 生成代码 int main(int argc, char** argv) {if (!InitActiveApp(CCTModel_UniversalDB, 1024 * 1024, argc, argv))exit(1);if (sizeof(long) ! 8){thelog 非64位程序 ende;}G_IS_DEBUG true;CCTModel_UniversalDB ctm;if (!Rooster_AddAllTable(ctm)){thelog 执行失败 ende;return __LINE__;}if (!ctm.CreateCode(ns_rooster_struct, RoosterStruct, .)){thelog 执行失败 ende;return __LINE__;}thelog 程序退出 endi;return 0; }有用的就两句Rooster_AddAllTable创建模型CreateCode生成代码。 2.3 生成的代码 生成的一组文件 总入口头文件是_cc_CRoosterStruct.h //_cc_CRoosterStruct.h 自动生成的代码 // // Copyright (c) ct All rights reserved. // 版权所有 ct 保留所有权利 ////警告本文件由CT系统自动生成不可手工修改#ifndef CTFC_RoosterStruct_H #define CTFC_RoosterStruct_H 1//如果需要使用内存数据库直连功能请在包含本头文件之前定义 CTFC_RoosterStruct_H_SHM_DB //如果需要使用MariaDB功能请在包含本头文件之前定义 CTFC_RoosterStruct_H_MARIA_DB #include _cc_RoosterStruct_RESOURCE_TYPE_D.h #include _cc_RoosterStruct_RESOURCE_USE_TYPE_D.h #include _cc_RoosterStruct_RESOURCE_D.h #include _cc_RoosterStruct_TASK_D.h #include _cc_RoosterStruct_TASK_RESOURCE_USE_D.h #include _cc_RoosterStruct_TASK_QUEUE.h #include _cc_RoosterStruct_TASK_LOG.h #include _cc_RoosterStruct_SEQ_TASK_LOG.husing namespace ns_my_std;namespace ns_rooster_struct {class CShmDB_RoosterStruct{public://表CRoosterStruct_RESOURCE_TYPE_D m_RESOURCE_TYPE_D;//资源类型CRoosterStruct_RESOURCE_USE_TYPE_D m_RESOURCE_USE_TYPE_D;//资源使用类型CRoosterStruct_RESOURCE_D m_RESOURCE_D;//资源CRoosterStruct_TASK_D m_TASK_D;//任务CRoosterStruct_TASK_RESOURCE_USE_D m_TASK_RESOURCE_USE_D;//任务资源使用CRoosterStruct_TASK_QUEUE m_TASK_QUEUE;//待执行的任务队列CRoosterStruct_TASK_LOG m_TASK_LOG;//任务日志//序列CRoosterStruct_SEQ_TASK_LOG m_SEQ_TASK_LOG;//TASK日志序列public: #ifdef CTFC_RoosterStruct_H_SHM_DB #define CTFC_RoosterStruct_H_WITH_DBtypedef CShmDB T_DB; #endif#ifdef CTFC_RoosterStruct_H_MARIA_DB #define CTFC_RoosterStruct_H_WITH_DBtypedef CMariaDB T_DB; #endifprivate: #ifdef CTFC_RoosterStruct_H_WITH_DBT_DB m_ShmDB;T_DB * pDB; #endifpublic: #ifdef CTFC_RoosterStruct_H_WITH_DB//返回内部数据库对象T_DB * getDB(){return pDB;}//直连初始化bool DBInit(char const * db nullptr){ #ifdef CTFC_RoosterStruct_H_SHM_DBCShmActiveObjects * p;p m_ShmDB.GetCShmActiveObjects();if (!p-isConnected() !p-Attach(false)) #endif #ifdef CTFC_RoosterStruct_H_MARIA_DBif(!m_ShmDB.Connect(db)) #endif{thelog CRoosterStruct连接失败 ende;return false;}DEBUG_LOG CRoosterStruct连接成功 endi;pDB m_ShmDB;m_RESOURCE_TYPE_D.Init(pDB);m_RESOURCE_USE_TYPE_D.Init(pDB);m_RESOURCE_D.Init(pDB);m_TASK_D.Init(pDB);m_TASK_RESOURCE_USE_D.Init(pDB);m_TASK_QUEUE.Init(pDB);m_TASK_LOG.Init(pDB);m_SEQ_TASK_LOG.Init(pDB);return true;}//直连断开bool DBUnInit(){ #ifdef CTFC_RoosterStruct_H_SHM_DBCShmActiveObjects * p;p m_ShmDB.GetCShmActiveObjects();if (p-isConnected())p-Detach(); #endif #ifdef CTFC_RoosterStruct_H_MARIA_DBpDB-Close(); #endifpDB NULL;return true;}//直连创建所有数据库对象bool DBCreateAllDBObject(){//创建表if(!m_RESOURCE_TYPE_D.CreateTable())return false;if(!m_RESOURCE_USE_TYPE_D.CreateTable())return false;if(!m_RESOURCE_D.CreateTable())return false;if(!m_TASK_D.CreateTable())return false;if(!m_TASK_RESOURCE_USE_D.CreateTable())return false;if(!m_TASK_QUEUE.CreateTable())return false;if(!m_TASK_LOG.CreateTable())return false;//创建序列if(!m_SEQ_TASK_LOG.CreateSequence())return false;return true;}//直连显示所有数据库对象bool DBShowAllDBObject(){//显示表if(!m_RESOURCE_TYPE_D.Show())return false;if(!m_RESOURCE_USE_TYPE_D.Show())return false;if(!m_RESOURCE_D.Show())return false;if(!m_TASK_D.Show())return false;if(!m_TASK_RESOURCE_USE_D.Show())return false;if(!m_TASK_QUEUE.Show())return false;if(!m_TASK_LOG.Show())return false;//显示序列thelog sequence: endl ------------------------- endl;theLog SEQ_TASK_LOG m_SEQ_TASK_LOG.GetSequenceValue() endl;theLog ------------------------- endi;return true;} #endif}; } #endif这个文件看起来和普通手写的文件没有任何区别除了它真的是用代码模板生成的。 再来看看生成这个文件的模板_t_UniversalDB.h.ct是什么样的 //_cc_C${SYS}.h 自动生成的代码 // // Copyright (c) ct All rights reserved. // 版权所有 ct 保留所有权利 ////警告本文件由CT系统自动生成不可手工修改#ifndef CTFC_${SYS}_H #define CTFC_${SYS}_H 1//如果需要使用内存数据库直连功能请在包含本头文件之前定义 CTFC_${SYS}_H_SHM_DB //如果需要使用MariaDB功能请在包含本头文件之前定义 CTFC_${SYS}_H_MARIA_DB %foreach table in ${tables}% #include _cc_${SYS}_${table}.h %endforeach% %foreach sequence in sequences% #include _cc_${SYS}_${sequence}.h %endforeach%using namespace ns_my_std;namespace ${NAMESPACE} {class CShmDB_${SYS}{public://表%foreach table in tables%C${SYS}_${table} m_${table};//${table.comment}%endforeach%//序列%foreach sequence in sequences%C${SYS}_${sequence} m_${sequence};//${sequence.comment}%endforeach%public: #ifdef CTFC_${SYS}_H_SHM_DB #define CTFC_${SYS}_H_WITH_DBtypedef CShmDB T_DB; #endif#ifdef CTFC_${SYS}_H_MARIA_DB #define CTFC_${SYS}_H_WITH_DBtypedef CMariaDB T_DB; #endifprivate: #ifdef CTFC_${SYS}_H_WITH_DBT_DB m_ShmDB;T_DB * pDB; #endifpublic: #ifdef CTFC_${SYS}_H_WITH_DB//返回内部数据库对象T_DB * getDB(){return pDB;}//直连初始化bool DBInit(char const * db nullptr){ #ifdef CTFC_${SYS}_H_SHM_DBCShmActiveObjects * p;p m_ShmDB.GetCShmActiveObjects();if (!p-isConnected() !p-Attach(false)) #endif #ifdef CTFC_${SYS}_H_MARIA_DBif(!m_ShmDB.Connect(db)) #endif{thelog C${SYS}连接失败 ende;return false;}DEBUG_LOG C${SYS}连接成功 endi;pDB m_ShmDB;%foreach table in tables%m_${table}.Init(pDB);%endforeach%%foreach sequence in sequences%m_${sequence}.Init(pDB);%endforeach%return true;}//直连断开bool DBUnInit(){ #ifdef CTFC_${SYS}_H_SHM_DBCShmActiveObjects * p;p m_ShmDB.GetCShmActiveObjects();if (p-isConnected())p-Detach(); #endif #ifdef CTFC_${SYS}_H_MARIA_DBpDB-Close(); #endifpDB NULL;return true;}//直连创建所有数据库对象bool DBCreateAllDBObject(){//创建表%foreach table in tables%if(!m_${table}.CreateTable())return false;%endforeach%//创建序列%foreach sequence in sequences%if(!m_${sequence}.CreateSequence())return false;%endforeach%return true;}//直连显示所有数据库对象bool DBShowAllDBObject(){//显示表%foreach table in tables%if(!m_${table}.Show())return false;%endforeach%//显示序列thelog sequence: endl ------------------------- endl;%foreach sequence in sequences%theLog ${sequence} m_${sequence}.GetSequenceValue() endl;%endforeach%theLog ------------------------- endi;return true;} #endif}; } #endif这就是一个代码模板编写的典型例子用到了大量的循环处理和变量替换。看起来像asp嗯就是模仿asp啊。 三、如何创建模型 下一篇将详细解释这个模型原则上除了最终生成的的是这个脚本生成器要求的对象结构外模型和脚本生成器并没有更多关联。 这里是结束但不是整个系列的结束
http://www.w-s-a.com/news/970328/

相关文章:

  • tp5做企业网站宿迁房产网租房信息
  • php高级网站开发wordpress不能添加文章
  • 小学校园网站建设付费阅读下载网站开发
  • 如何做招聘网站网站建设中 敬请期待
  • 雅安工程交易建设网站做vip电影网站
  • 网站建设方维网站标题title为什么不能频繁的改
  • 网站建设如何上传文件wordpress列表自定义数据表
  • 摄影课程自学网站科技项目的类型有
  • 未来最紧缺的十大专业长春seo顾问
  • 为什么点不开网站公关公司是做什么的
  • wordpress主要菜单如何对网站页面进行优化
  • 建设银行深分行圳招聘网站建立互联网公司网站
  • 湖南做旅游网站哪家最好html5手机网站免费模板
  • 云服务器上放多个网站wordpress ping大全
  • 以下属于网站的管理 更新 维护如何才能做好品牌网站建设
  • 国家工业和信息化部网站备案系统网站建设设计费用
  • 网站建设利弊宁波高端网站建设联系方式
  • 网站订票策划方案郑州代做网站
  • 免费的网站加速器注册公司邮箱
  • 千助网站建设网站整站程序
  • 自学建网站做网站优化访问网站出现目录
  • 济南网站建设是什么百度官网登录入口手机版
  • net快速建站西宁手机网站建设
  • 网站浏览器不兼容怎么办软件系统开发大概多少钱
  • 网站建设哪个公司最好shift wordpress
  • 公司网站建设功能介绍室内设计学习
  • 做网站策划容易遇到哪些问题沈阳公司网站制作
  • 做php网站都用框架吗网站备案当面核验拍摄照片
  • 泉州企业自助建站兰州最好的互联网公司
  • 监察部门网站建设方案网站seo技术教程