valgrind --tool=memcheck --leak-check=full
--show-reachable=yes -v ./docParser sample.doc
Memcheck 工具主要检查下面的程序错误:
-
使用未初始化的内存 (Use of uninitialised memory)
-
使用已经释放了的内存 (Reading/writing memory after it has
been free’d)
-
使用超过 malloc分配的内存空间(Reading/writing off the end of
malloc’d blocks)
-
对堆栈的非法访问 (Reading/writing inappropriate areas on the
stack)
-
申请的空间是否有释放 (Memory leaks – where pointers to malloc’d blocks
are lost forever)
-
malloc/free/new/delete申请和释放内存的匹配(Mismatched use of
malloc/new/new [] vs free/delete/delete [])
-
src和dst的重叠(Overlapping src and dst pointers in memcpy() and
related functions)
下面是常用的错误输出信息
Conditional jump or move depends on uniniti
Java的应用有时候会因为各种原因Crash,这时候会产生一个类似java_errorpid.log的错误日志。可以拿到了
这个日志,怎样分析Crash的原因呢?下面我们来详细讨论如何分析java_errorpid.log的错误日志。
一. 如何得到这个日志文件
如果有一个严重的错误引起Java进程非正常退出,我们叫Crash,这时候会产生一个日志文件。缺省情况下,这个
文件会产生在工作目录下。但是,可以在Java启动参数通过下面的设置,来改变这个文件的位置和命名规则。例如:
java -XX:ErrorFile=/var/log/java/java_error_%p.log
就将这个错误文件放在/var/log/java下,并且以java_error_pid.log的形式出现。
二.产生错误的原因
造成严重错误的原因有多种可能性。Java虚拟机自身的Bug是原因之一,但是这种可能不是很大。在绝大多数情况下,
是由于系统的库文件、API或第三方的库文件造成的;系统资源的短缺也有可能造成这种严重的错误。在发生了Crash
之后,如果无法定位根本原因,也应该迅速找到Work Around的方法。
三.对日志文件的分析
首先要检查日志的文件头:例如,下面是从一个客户发过来的错
Hash算法有很多很多种类。本处给大家提供一个集合了很多使用的Hash算法的类,应该可以满足不少人的需要的:
public class HashAlgorithms
{
public static int additiveHash(String key, int prime)
{
int hash, i;
for (hash = key.length(), i = 0; i < key.length();
i++)
hash += key.charAt(i);
return (hash % prime);
}
public static int rotatingHash(String key, int prime)
{
int hash, i;
for (hash=key.length(), i=0; i<key.length();
++i)
hash =
(hash<<4)^(hash>>28)^key.charAt(i);
return (hash % prime);
// return (hash ^ (hash>>10) ^
(hash>>20));
}
// 替代:
// 使用:hash = (hash ^ (hash>>10) ^ (hash>>20)) &
mask;
// 替代:hash %= prime;
对于进行修改文件比较差异,很快的创建一个补丁文件(patch),到底怎么做呢?下面将为读者讲述一下:如何创建和使用补丁文件以及牵涉到patch文件的结构的一些详细说明。
一、创建补丁文件
diff -Naur 旧的目录 新的目录 > patch文件
或者
diff -Naur 旧的文件 新的文件 > patch文件
对于目录层数的一些限制,在创建patch的时候文件夹的层数应当是一样的,比如
--- old/lib/TWiki Aug 17 11:03:56 2008
+++ new/lib/TWiki Aug 19 20:05:41 2008
这样是可以的,而
--- old/other/lib/TWiki Aug 17 11:03:56 2008
+++ new/lib/TWiki Aug 19 20:05:41 2008
这样做可能会有一些问题。
二、如何使用patch
1,对于一个patch文件,有两种常用使用方法:
cat new-patch | patch -p02.
和
patch -p0 < new-patch
2,patch命令里面的层数
今天早上起来开抠抠后,发现鼠标动不了,就想着怎么切换到终端把这个进程kill掉。用Ctrl-Alt-F1
组合键可切换到第一个终端。要切换回桌面,可以按Ctrl-Alt-F7组合键。总共有六个终端可用。它们各自对应Ctrl-Alt-F1到
Ctrl-Alt-F6。
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果。因此,比较清楚详细的了解http状态码的具体含义,对于一个网站站长来说,这是很有必要俱备的网站制作基础条件。
如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot
抓取网页时),服务器将会返回 HTTP 状态码响应请求。
此状态码提供关于请求状态的信息,告诉 Googlebot 关于您的网站和请求的网页的信息。
一些常见的状态码为:
- 200 – 服务器成功返回网页
- 404 – 请求的网页