顽固的守卫-36进制转换

不得不吐槽,什么年代了,还要用哪些过时的东西。 哪些人说,稳定,人家都在用,有现成原型…. 这无非是盲从,懒惰,终是无能,然而却掌握了话语权。 吐槽完毕,锅最终还是要有人背。 有个中间件软件系统,对命名,配置,参数做了严格限制。比如配置名长度必须4位,通讯队列名必须小于8位,甚至于端口号的大小也自己做了控制(65535以内还不够小?)。这个就是大名鼎鼎长度IBM帮我们省的。掌握话语权的自认为有能力驾驭好这个古董,程序猿早已对这玩意深恶痛绝:好在哪?稳定吗,高效吗?未必吧!恐怕只是不敢尝试新的,或是只是手中唯一的救命稻草? 为何还在吐槽…正题呢?呃,不好意思。 今天的槽点主要是:32GB内存为何还以为我只有64K。省确是件好事,然而要看省在哪方面。 程序中需要用到中间件队列名来匹配请求应答,而且不能重复。然后唯一可用的是流水号,是12位的。 而对列名最长8位!这点没办法了,闭源收费,你能耐我何!只有一个思路了-压缩流水: 当年数制转化是这样学的,模运算再倒序重排。效率暂不研究: int len=0; int i=0; char d=' '; int m=0; while(num) { m=num%36; if(m>9) { d='a'+m-10; } else { d='0'+m; } sprintf(des,"%s%c",des,d); num=num/36; } len=strlen(des); for(i=0;i<len/2;i++) { d=*(des+i); *(des+i)= *(des+len-i-1); *(des+len-i-1)=d; }  

Continue Reading

[BUG]读写文件-打开正常,无法读写

问题已经描述,请思考,其实可能很深很深…… FILE *fp; char File_Name[]=”sFile_Name”; int Func( char ** args) { fp=fopen(File_Name,”w”); frprintf(fp,”Writing somthing.”); SubFunc_1(args); SubFunc_2(args); /* do sothing */ /* ……… */ } static int SubFunc_2(char **args) { if ((fp = fopen(File_Name, “rb”)) == NULL) { return -1; /* sorry ,It is all OK. */ } while (fgets(sBuf, sizeof(sBuf), […]

Continue Reading

Microsoft DreamSpark已为学生提供免费的VS2013

如果你是一个学生,通过注册DreamSpark,可以免费下载微软提供的多种软件开发工具,参加一些活动。前提还有,你需要有一个edu邮箱或其他有效的身份验证。edu邮箱呢,当然一般学校可能会为学生提供,当然也有不提供的,尤其本科生……我们学校中国矿业大学当年为本科生提供给了cumt.edu.cn的邮箱,感谢一下…   目前提供的免费下载包括: 面向开发人员和设计人员工具Visual Studio Professional  以及Microsoft Visual Studio Express 系列(2010-2013),VS Team Foundation Server Express ,Expression ,Embedded Compact以及一些SDK;面向服务器和应用的Windows Server 2012,SQL server等;面向培训和认证的电子书资料。 Visual Studio Professional  2013 已经提供下载,最近收到邮件: 成为首批升级的用户 充分利用您的 DreamSpark 会员权益。获取 Visual Studio Professional 2013。借助一组全新的出色功能,您可以创建新的现代应用程序,这些应用程序可以利用 Windows 平台创新的下一浪潮 (Windows 8.1),同时支持跨所有 Microsoft 平台的设备和服务。 Visual Studio 2013 的集成程度高于之前的任何产品。 如果需要,登录并下载。和之前版本一样,首先下载Secure Download Manager (SDM)并安装,然后下载.SDX 文件,双击下载,完成后进行安装。

Continue Reading

服务器日志备份的一点小问题

前两天一个朋友打电话聊到他遇到的问题:自己动手写的日志备份脚本有问题,当移走日志文件后,应用程序不再写日志到新的文件中,kill 掉应用后才可以.. 他的脚本可能是这样的: mv /log/a_log.trace /log_bak/a_log.trace_xyz touch /log/a_log.trace 相信各位大拿肯定已经知道原因,但是我还在这里说说,为那些可能想知道原因的小童鞋。   那么,弄清楚open函数或者sys_open系统调用,知道文件描述符,即使你没有写过C代码,也知道原因了吧! 文件已经被你mv走了,可以原应用还在运行,仍旧保留着原文件的文件描述符,可是文件其实已经不存在了… 解决办法:不要删除或者移走日志文件,清空这个文件就可以了! cp -p /log/a_log.trace /log_bak/a_log.trace_xyz cp /dev/null /log/a_log.trace 再来深入一下吧: 什么是虚拟文件系统?     VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。在其下是实体的文件系统。虚拟文件系统的主要功用,在于让上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通。在操作系统与之下的各种文件系统之间,虚拟文件系统提供了标准的操作接口,让操作系统能够很快的支持新的文件系统。 一切皆是文件!   一组在逻辑上具有完整意义的信息项的系列。除了普通文件,其他诸如目录、设备、套接字等 也以文件被对待。总之,“一切皆文件”。 文件对象 文件对象是已打开的文件在内存中的表示,主要用于建立进程和磁盘上的文件的对应关系。它由sys_open() 现场创建,由sys_close()销毁。文件对象和物理文件的关系有点像进程和程序的关系一样。当我们站在用户空间来看 待VFS,我们像是只需与文件对象打交道,而无须关心超级块,索引节点或目录项。因为多个进程可以同时打开和操作 同一个文件,所以同一个文件也可能存在多个对应的文件对象。文件对象仅仅在进程观点上代表已经打开的文件,它 反过来指向目录项对象(反过来指向索引节点)。一个文件对应的文件对象可能不是惟一的,但是其对应的索引节点和 目录项对象无疑是惟一的。 struct file { …… struct list_head f_list; /*文件对象链表*/ struct […]

Continue Reading

AIX db2嵌入式SQL(sqc)编译

编译SQC
使用C语言编写嵌入式SQL以访问DB2的程序,DB2预编译器可以将SQL语法直接转换为DB2行时服务应用程序编程接口(API)调用。
bind的主要作用是根据SQC中的SQL语句使用的表和操作指定访问时DB要使用的策略,是一种优化作用,以加快数据访问的速度。

Continue Reading