欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

qxidc项目/crtsurfdata程序 杀青总结

发布时间:2025/3/13 编程问答 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 qxidc项目/crtsurfdata程序 杀青总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

遇到问题 与 解决办法

1. 关于文件类打开操作函数不自动创建不存在的父目录问题

1. crtsurfdata.cpp中,有用到CFile类的成员函数Open**这里出现了一个问题**,如果所打开的文件的父目录不存在,它不会自动创建父目录,而是返回false但在程序里,当我删除ftp目录时,我打开data/ftp/crtsurfdata目录时日志:FIle.Open(/home/houlc/qxidc/data/ftp/surfdata/SURF_ZH_20200722230447_3461)失败!就是因为没有了父目录,2. **这里有两解决办法**1:在项目的程序代码里,打开如果 失败,则创建父目录(调用MKDIR函数实现)2:在库函数的Cfile::Open的代码中,把fopen用FOPEN(这里有调用MKDIR)替换3. **我的思考**1>>这里我想来想去,觉得应该用第一种方法,尽管我下意识就想用第二种方法,但是考虑到,库函数不能把项目中所有的需求都考虑的太自动化而不灵活了,如果采用第二种解决办法,那我以后遇到项目,Open到不存在的目录时,不想创建它,就想要他的false返回值 怎么办?2>>所以,就调用MKDIR在项目程序里面,当CFile::Open返回false时,就MKDIR它就好----*虽然后来发现吴哥用的第一种方法吧,,,*不过我还是觉得我的解决办法好,多写一行MKDIR也没费什么功夫-----**又才发现打开日志的问价CLogFIle::Open也是自动创建父目录**。。。。无语。。。不过这可能和需求有关,因为这是你要写日志,一定是要有指定目录存在的,如果父目录不存在,那就创建它,这个写日志的操作是"情景要求明确的""然而File::Open的项目情景并不清晰"所以我觉得不能把FOPEN(打开,打不开就创建)直接写进Open里面,这样如果不需要自动创建,就直接调用File::Open,如果需要自动创建,则在项目程序代码中加一行if false ,MKDIR就好,并没有费多大功夫

2. 如何解决xshell连接成功但无法输入命令

一般都是你在输入命令时,按了Ctrl+s锁定命令行Ctrl+q即可解锁命令行

3. Linux系统里如何彻底清空中断屏幕

命令:reset

4. Linux命令行上执行操作,不退回命令行的解决办法

使用 1>test.log来重定向操作的输出如python GetDeviceData.py 1>websocket_success.log 2>websocket_error.log &

5. 执行程序中, 如果 忽略所有信号,无法退出程序的问题

// 关闭全部的信号和输入输出void CloseIOAndSignal(){int ii=0;for (ii=0;ii<100;ii++){signal(ii,SIG_IGN); close(ii);}}那么Ctrl+z被忽略,最后程序如果是死循环,会很难退出,用Ctrl+c也不行,常规杀程序也解决不了,最后用kill -9 进程编号 命令解决的

6. 关于常驻内存与任务调度的设计

这个程序60s才很快的运行一次,不需要他常驻内存,浪费资源

7. 任务调度crontab

***一、Crontab -e 编辑调度文件***布置任务:*/1 * * * * /home/houlc/qxidc/bin/crtsurfdata【格式:前五个是时间设定段,第六段是要执行的命令段】【Min hour day month week command】在以上各个字段中,还可以使用以下的特殊字符:1)星号(*):代表所有可能的该时间的值,2)逗号(,):可以用逗号隔开的值指定一个列表范围3)中杠(-):可以用证书之间的中杠表示一个整数的范围:2-6234564)正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两个小时执行一次。同时,正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示没十分钟执行一次***二、crontab服务***1)service cron start // 启动服务2)service cron stop // 关闭服务2.5)service cron restart //重启服务3)service cron reload // 重新载入配置4)service cron status // 查看服务状态***三、查看服务是否已经运行***ps -ax | grep cron ```cpp ***四、crontab 命令选项***1-u 指定一个用户2-l 列出某个用户的任务计划3-r 删除某个用户的任务4-e 编辑某个用户的任务***五、新增任务调度***1-在命令行输入:crontab -e,然后添加相应的任务,wq存盘退出2-直接编辑/etc/crontab 文件,即 vi /etc/crontab,添加相应的任务***六、查看任务调度***1=1 crontab -l //列出当前所有的调度任务2=2 crontab -l -u -jp //列出用户jp的所有调度任务

7. 解决“您在”/,/,/,中有新邮件"问题

1》查看文件 mail2》删除文件 cat /dev/null > /var/spool/mail/houlc3》禁止系统启动邮件检查Echo "unset MAILCHECK" >> /etc/profile这样就不会再有邮件提示了 在这里插入代码片

mail-问题解决办法


程序实现的效果

1.通过crontab任务调度,每分钟调用一次/home/houlc/qxidc/bin/crtsurfdata /home/houlc/qxidc/ini/inicode.ini /home/houlc/qxidc/data/ftp/surfdata /home/houlc/qxidc/log/crtsurfdata.log
2.程序自动从原始数据存放的文件夹中提取数据,并生成目标类型的数据结构,存入相应的容器,最后写生成的数据文件,存放到指定的数据文件目录中。
3、程序将程序运行的情况写入日志(标有时间和事件),日志尽可能详细
4、程序最开始忽略了所有的信号,又单独设置了Ctrl+c和kill 退出的中断,确保需要程序推出的时候,程序可以优雅的退出


收获,反思与下一步计划

收获

  • 走通了一个小小的数据提取和数据文件生成的程序的大体开发流程
  • 进一步丰富和熟悉了自己的函数库
  • 实现了一个具体的功能蛮开心的
  • 反思
    4. 学习如翻山,走过这座山,方知还有那座山,
    学完基础,我以为自己再进一步就可以实际开发了,
    结果现在,做了一个项目里的一个小程序,才发现要走的路还很长
    5. 我的之前学的很多的基础知识的理解都还很浅薄,实际开发毫无经验,
    如果应对稍微复杂一点的开发场景我绝对束手无策,
    6. 另外,就眼前要学习做的qxidc项目来说,我也才走了一小步
    后边还有很多比较复杂的程序,
    7. 涉及到的知识:
    ftp协议,ftp采集模块的开发,其他通信协议,oracle环境搭建,oracle的表操作,oracle的事物,shell和环境变量,c语言操作数据库,测试数据处理和入库,工程的组织,oracle的虚表、日期和序列,工程的优化,oracle函数、索引和视图,数据结构设计,数据的处理,更强大 的sql,计算的问题探讨,数据交换子系统,oracle数据库的管理,系统的高可用性,mysql数据库,PostgreSQL数据库,数据库兼容技巧,数据挖掘子系统,htt协议,非结构化数据的存储,数据管理子系统,监控和警告子系统,文件传输系统,app软件服务端。。。

    我的天,我还仅仅是写了个采集数据的小程序而已,后面的路还很长 这一年的时间很紧迫了 但是没关系,我一步一步已经学了这么多了, 后面一步一步我也一定可以走完的

    总结

    以上是生活随笔为你收集整理的qxidc项目/crtsurfdata程序 杀青总结的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。