dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>操作系统>linux>文章内容
资深Linux程序员的开发经验谈(下)
来源: IBM 作者:Sppence Murray
Java 和 Linux

  在Codemonks,相当多的开发工作是在 Linux 上用 Java 完成。这两个工具的组合为创建商业级质量的 Web 应用提供了一个平台,Murray 说。“在做这些项目的过程中,我们发现我们要总体上了解客户已有的应用代码”,他回忆说。locks.c (在下载得到的压缩文件中的 /developerworks/locks 目录下) 是一个代码片段,实现的是用于 Java Virtual Machine Profiler Interface (JVMPI) 的读/写锁以及大量的调试代码。

  Linux 开发人员的代表

  “在情况允许的时候,不要写特定于系统的代码”,Murray 说,而是克服困难去“写好的跨平台的代码”。受雇的 Murray 坚持认为他最大的资本永远是“写具有商业品质的代码,构建和提供网络服务,定制 OS 或内核,而且完全基于可靠的开放源代码的平台”。

  下面是一个代码片段,来自于一个跨平台的定制的 IMAP 服务器,这个服务器由 Linux 和 MacOS X 的开发人员共同开发。代码实现的是一个用来处理字符串的简单的增长缓存。这样避免了缓存溢出的问题(不要忘记那些安全漏洞),而不必要您每次做某些事情的时候重新分配空间。它是通过维护一个简单的可变长的缓存来实现的,这个缓存可以写满和清空。这个缓存已经被用于一个实验用的 IMAP 服务器,这个服务器是由一个团队紧张工作了一周完成的。

  除了一个简单的字符串缓冲区的实现之外,这段代码还实现了一个可变大小的字符串数组。它完成的是一个简单的接口,当您写完一个字符串以后,您可以标记它然后继续写下一个。此外,这样会节约空间分配,并且将比较乱的代码组织到一起。

  完整的 IMAP 服务器的代码将在今年某个时间发布。

  清单 4. 定制的 IMAP 服务器一部分

   
#ifndef HOED_BUF_H  
#define HOED_BUF_H  

typedef struct {  
char *str;  
int size;  
int length;  
int str_start;  
int max_size;  

int n_strings;  
int size_strings;  
int *str_posn;  
char **str_set;  
} hoed_buf_t;  

#if     __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)  
#define PRINTF(f, a)    __attribute__((format (printf, f, a)))  
#else  
#define PRINTF(f,a)  
#endif  

extern hoed_buf_t *hoed_buf_alloc(int init_size, int max_size);  
extern void hoed_buf_free(hoed_buf_t *);  
extern void hoed_buf_reset(hoed_buf_t *);  
extern void hoed_buf_new_string(hoed_buf_t *);  
extern char **hoed_buf_get_set(hoed_buf_t *, int *n_string);  

extern char *hoed_buf_put_char(hoed_buf_t *, char toadd);  
extern char *hoed_buf_sprintf(hoed_buf_t *, const char *format,...)  
   PRINTF(2,3);  
extern char *hoed_buf_strcat(hoed_buf_t *, const char *append);  
extern char *hoed_buf_cat_sprintf(hoed_buf_t *, const char *format, ...)  
   PRINTF(2,3);  

#endif /* HOED_BUF_H */  

  称为杀手级的 Linux 应用程序

  对Murray 来说,有两个杀手级的 Linux 应用程序:Emacs 和 Netscape Navigator。“Emacs 或许是给人印象最深而且广为应用的基于 Linux 的应用程序”,他说。“另一个是 Netscape Navigator。有一次,我们要支持20多种 UNIX,我在 Linux 上完成了所有的工作”。

  他继续说,“有趣的是,基于 Linux 的应用程序可能运行于许多不同风格的 UNIX 系统上,甚至安装了 Cygwin 的 Windows 系统。”

  Linux 的未来如何?

  当前,Murray 正在进行的 Linux 项目有好几个,从支持电子邮件、消息和共享数据库的分布式办公应用程序到使用标准工具的网络应用程序(标准工具包括:Apache/Tomcat, PHP, PostgreSQL, MySQL, 和 Linux)。 Murray 有他自己的公司专门为网络服务和网络应用提供主机服务。

  对Murray 来说,得益于 Linux 强大功能的应用程序的列表在不断地增长。“有很多”,他说。“Oracle, WebSphere, Apache, PostgresQL, MySQL, Cyrus IMAP... 这个列表很长而且在不断增长。”

  对 Murray 来说,Linux 到此为止了。“我们所有的服务器都运行 Linux;不管目标平台如何,我们主要的开发都在 Linux 上进行;我们把 Linux 推荐给用户来运行服务器应用程序”,他说。“ Linux 快速发展的步伐,开放源代码组织对它的广泛支持,低廉的开发费用,如果把这些结合在一起,您就知道它是一个难以击败的平台”。

上一篇:资深Linux程序员的开发经验谈(上)   下一篇:Linux下的C编程实战之开发平台搭建
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Linux常用基本命令及应用技巧
·写得蛮好的linux学习笔记
·学会在Linux下对硬盘分区
·找回Redhat的超级用户密码
·Linux下C语言编程
·GDB教程
·Cron服务配置详解
·Linux与Unix二大操作系统编程的
·Linux 2.6 内核的嵌入式系统应用
·Linux和Windows系统调用的比较
·vim命令(一)
·vim 命令(二)
  相关文章
·资深Linux程序员的开发经验谈(上
·Linux下的C编程实战之开发平台搭
·黑客高级技巧 Linux后门技术及实
·Linux下的C编程实战之文件系统编
·黑客高级技巧 Linux后门技术及实
·Linux下的C编程实战之三(上)
·Linux系统下C语言编程工具详细介
·Linux下的C编程实战之三(下)
·Linux系统下C语言编程工具详细介
·Linux下的C编程实战之四(上)
·Linux系统下的C语言开发都需要学
·Linux下的C编程实战之四(下)
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763