服务器被黑成挖矿机

CPU一直飙到100%,有异常进程minerd。

经检查,crontab计划任务中被添加了异常代码,异常代码指向内容如下。

处理方式:终止异常进程,删除crontab中的异常代码,根据异常代码指向内容,清理服务器上剩余隐患。 继续阅读“服务器被黑成挖矿机”

JAVA SE 7中的异常处理

  • 带资源的try语句

使用这种新的语法,在try语句中打开的资源可以自动清理。例如:

在使用完这个输入流后,不用费心关闭。JAVA运行时会自动关闭这个输入流。

可以在try块中包含多个资源,每个用分号隔开。例如:

  •  结合异常处理

如果多个异常处理程序都执行同一段代码,则可以把它们结合在一起。例如:

  •  final Re-throw

以上代码将无法编译,因为我们正试图抛出更通用的异常。为了编译代码,需要在throws 子句中添加Exception类型。如果compute方法重写的方法不声明抛出Exception 类型,这也将不能编译。Java SE 7 解决了这个问题,可以在catch块中添加final 关键字,如下所示:

catch (final Exception e){ ... }

在catch块中使用final关键字,使得能够抛出发生的确切子类异常。例如,如果IOException 发生,那么IOException将被抛出;如果ParseException 发生,那么ParseException将被抛出。final关键字允许抛出发生的确切异常,而不需要添加Exception类型到方法签名中。

 

PHP,异常处理之“异常产生的开销”

虽然异常机制的功能非常强大,但使用它也要付出代价。在PHP中,当抛出一个异常时,许多机制必须被初始化,其中包括异常类实例和代码回溯信息。如果异常日志被记录到文件中,就会增加更多的开销。异常的强大功能使得我们很容易过分地使用它。

我们不应该使用异常来控制一般的应用程序流,这是因为这样做会大大降低应用程序的性能。例如,在数据库中搜索登录标识并且没有找到相应的用户时,就不应该使用它。在这种情况下,应该只返回null或者false来表示失败信息。这是从PHP函数中返回混合结果的标准方法;有效的结果表示返回的数据,而false或者null表示发生了错误。换句话说,当PHP函数没有找到希望查找的结果是,通常应该返回null或者false,而不是具体的值。

摘自:《PHP高级程序设计》 【加】Kevin McArthur 著  汪泳 等译

PHP,异常处理之“定义为捕捉的异常处理程序”

set_exception_handler()函数定义了该如何处理当某个异常向上一直回溯栈道主函数入口都没有被捕捉的情况。通常,将看到与以下相似的内容:

这是内置的异常处理程序。它是有用的,但也可能暴露敏感信息,例如数据库登录标识等。在生产环境中禁止这一处理程序是有用的做法,通过使用php.ini、.htaccess或者ini_set()方法可以做到这一点。此外,如果希望了解发生的异常信息,但却仍然不希望显示那些异常信息,可以使用set_exception_handler()函数将它替换成自己的日志函数而不去显示异常信息。

要使用set_exception_handler()函数,必须声明一个接受一个参数的函数。然后,将这个函数的名称作为一个字符串传递给set_exception_handler()函数。然而,必须在调用set_exception_handler()函数之前声明这个函数,否则,将会碰到一个错误。以下代码清单演示了如何使用set_exception_handler()函数。

现在,因为已经重写了默认的异常处理程序,所以应用程序中未捕捉的异常会被记录到日志中而不会显示在屏幕上。

摘自:《PHP高级程序设计》 【加】Kevin McArthur 著  汪泳 等译