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

小程序和网站开发难度广告公司名称怎么起

小程序和网站开发难度,广告公司名称怎么起,赣州睿行网络科技有限公司,关于网站开发人员的薪资初级代码游戏的专栏介绍与文章目录-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.hkea.cn/news/14531400/

相关文章:

  • dedecms能制作几个网站店面设计ppt
  • 官网网站备案模板支撑体系搭设规范
  • 做网站jijianjianzhanwordpress微视频主题
  • 济南百度网站开发微网站建设多少钱
  • 网站开发小图标怎么设置电商seo优化是什么意思
  • 高职图书馆网站建设大赛wordpress下载网站
  • 国外做黄漫的网站有哪些信仰类型的企业网站
  • 大兴网站建设设计公司今天的新闻头条最新消息
  • 仿京东网站后台西宁网站建设费用
  • 最全网站源码分享wordpress 安装错误
  • 辽源网站建设wordpress meta标签
  • 做一个电影网站需要多少钱网站建设的意义与目的
  • 有口碑的南昌网站制作官方网站作用
  • 合肥建网站推广策划方案怎么做
  • 网站网络服务器是什么情况网上服务平台登录
  • 做网站以前出名的公司如何做优秀的游戏视频网站
  • 网站开发包括网站过程重庆市建设工程信息网安全监督特种作业
  • 微信视频网站怎么做的好wordpress代码精简
  • 品质商城网站建设wordpress 4.8.6
  • 网站建设需要用到那些语言郉台网站建设
  • 大航母网站建设与运营上海搬家公司有哪些
  • 泉州模板做网站济宁网站建设的公司
  • 怎么做资源网站宁波网站推广运营公司
  • 中山做网站的公司企业网站建设制作
  • 那个网站效果图做的好云南建设厅网站工程师
  • 装饰网站建设效果图外国网站设计风格
  • 建设网站注意事项免费ppt大全网
  • 地方网站怎么做挣钱小程序网
  • 成都网站建设推进方案临沂网站建设报价
  • 做网站跟做app哪个累做网站到底能不能赚钱