服务器程序注意事项

1. 在服务器程序时,很容易出现内存泄露。以及内存溢出等问题。

  出现这些问题往往会导致程序无法正常运行,比如异常退出、阻塞。然而,在发生这些错误的时候往往会令人很困惑,因为这些错误很难被发现。解决这些问题往往会耗费大量的时间。因而保持良好的代码习惯对一个程序的健壮性具有重要的意义,也是一个优秀的程序员所应该具备的素质。

2. 服务端程序往往是部署在Unix等服务器之上的,并且需要长久的运行。

  在这种情况下,很多时候对程序的调试都是比较不方便的。所以,保留日志等将为我们的后期的Debug提供很大的帮助。这里推荐一个很实用的日志处理的接口apache log4j(官方主页配置详解)。

那么在程序中的那些地方值得我们输出日志?

  a. 在程序容易抛出异常的地方。这可以大大方便我们跟踪程序抛出异常的位置,以及程序所抛出异常的内容。

  b. 在一个判断语句里面。有些逻辑错误和程序错往往是出现在判断语句之后。所以,日志输出可以方便我们了解程序执行的情况。

  c. 在一个循环里面。循环是即简单又容易犯错的地方。造成程序死循环的原因可以是多种多样的。日志输出可以方便我们判断是否出现死循环,同时也方便我们了解程序的执行情况。

  d. 在文件操作的地方。文件操作在很多应用中都会涉及到。特别是在网络环境下,加上个人的代码习惯,文件操作很容易出现运行时错误。因此,检测文件的执行情况对于了解文件操作的情况是必要的。

  e. 在使用了线程的地方。一个线程的使用应该有开启和关闭的过程。使用日志来输出线程的使用情况,对于检测程序是否正常运行和退出也是很重要的。

服务器程序注意事项,布布扣,bubuko.com

时间: 2024-12-19 16:24:11

服务器程序注意事项的相关文章

利用SVN钩子同步程序注意事项

暂时记下,此文章内容稍后验证. 前言:其实利用SVN实时同步到WEB服务器即时展现出来的文章已经到处都是,但是我在做的时候 还是有不少的小问题,很多文章也没有提出来过,还有同步也是,我还是记录下自己做过的尤其是一些细节,时间一长又会忘掉了. 同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN服务器的本地硬盘目录,再通过rsync同步到远程的WEB服务器上. 知识点:1.SVN的ho

ASP.NET生成WORD文档,服务器部署注意事项

网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp.net 2.0在配置Microsoft Excel.Microsoft Word应用程序权限时 error: 80070005 和8000401a 的解决总   2007-11-01 11:30  检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-00000

服务器程序DEBUG

服务器端设定 Tomcat 默认我们启动Tomcat是使用下边的命令 ./catalina.sh start 如果想DEBUG的话,只需要加一个参数打开JPDA(Java Platform Debugger Architecture)就可以了 ./catalina.sh jpda start 注:默认的监听端口是8000,如果想修改这个端口的话,可以修改环境变量JPDAADDRESS. 如果我们的服务器是通过daemon.sh启动的tomcat话,貌似没有找到默认打开JPDA的方法,我们可以环境

Linux服务器程序规范

除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上时模板式的. ---引 Linux服务器程序一般以后台形式运行.后台程序又称守护进程.它没有控制终端,因而也不会意外接受用户输入.守护进程的父进程一般是init进程(pid=1). Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP服务器.大部分后台进程都在/var/log下有自己的日志目录. Linux服务器程序一般以某个专门的非root身份运行.mysqld, httpd

Python实现简单的http服务器程序

主要的需求是这样的,需要调用服务器端的程序获取GPU服务器的信息并且返回给前端显示出来,那么就需要完成一个服务器端的程序,获取服务器的数据之后将数据返回(以JSON格式). 效果如下图: 页面没有内容是因为服务程序还没有启动.下面完成服务器程序: #!/usr/bin/python from bottle import route,run,template import os from bottle import get,post,request import re gpu_info_dict

UNIX网络编程卷1 回射服务器程序 TCP服务器程序设计范式 四个版本

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 这是一个简单的回射服务器程序.它将客户发送的数据读入缓冲区并回射其中内容 下面我会介绍同一个使用 TCP 协议的回射服务器程序的几个不同版本,分别是 fork 版本.select 版本.poll 版本.多线程版本 fork 版本:为每一个客户连接派生(fork) 一个子进程用来处理客户请求 /** * TCP/IPv4 协议相关 * **/ #include "unp.h" in

完成端口与高性能服务器程序开发

原文出处:http://blog.csdn.NET/roen/archive/2007/03/19/1533378.aspx 以一个文件传输服务端为例,在我的机器上它只起两个线程就可以为很多个客户端同时提供文件下载服务,程序的性能会随机器内CPU个数的增加而线性增长,我 尽可能做到使它清晰易懂,虽然程序很小却用到了NT 5的一些新特性,重叠IO,完成端口以及线程池,基于这种模型的服务端程序应该是NT系统上性能最好的了. 首先.做为完成端口的基础,我们应该理解重叠IO,这需要你已经理解了内核对象及

TCP客户/服务器程序概述

一个回射服务器: 1)客户从标准输入读入一行文本,并写给服务器 2)服务器从网络输入读入这行文本,并回射给客户 3)客户从网络输入读入这行回射文本,并显示在标准输出上 回射输入行这样一个客户/服务器程序是一个尽管简单然而有效的网络程序例子 实现任何客户/服务器网络应用所需的所有基本步骤可通过本例子阐述 若想把本例子扩充成你自己的应用程序,你只需修改服务器对来自客户的输入的处理过程 除了以正常的方式运行本例子的客户和服务器(即键入一行文本并观察它的回射)之外 我们还会讨论它的许多边界条件: 客户和

nodejs的简单服务器程序

下面是参考<Jquery.Jquery UI 及Jquery Mobile>一书中的nodej服务器程序 var http = require('http'), url = require('url'), fs = require('fs'); http.createServer(function (req, res) { var reqData = { url: url.parse(req.url, true), method: req.method, headers: req.header