贤仁居 George Gong
It's never too late to learn
posts - 32,comments - 16,trackbacks - 0
http://blog.csdn.net/function413/article/details/8485822

一、下载所需类包 (可在http://download.csdn.net/detail/function413/4977751中下载tomcat log4j.rar 里面包含以下JAR包)

1、下载log4j下载1.2以后的版本

下载地址:http://logging.apache.org/log4j/1.2/download.html

2、下载tomcat-juli.jartomcat-juli-adapters.jar

使用LOG4J来接管tomcat6.0.18的日志文件必须要下载两个文件:tomcat-juli.jartomcat-juli-adapters.jar

下载地址为:http://www.apache.org/dist/tomcat/tomcat-6/v6.0.18/bin/extras/ (如果tomcat为其他版本,请下载对应版本的类包)

二、修改相关配置文件

1、修改${catalina.home}/conf/context.xml

修改:<Context >为<Context swallowOutput="true" >只有这样才能完全的把tomcat的stdout给接管过来。这一步很关键 在官网及网上找了许多资料都没有提及。

2、复制log4j.jar${catalina.home}/lib

3、复制tomcat-juli-adapters.jar${catalina.home}/lib

4、复制tomcat-juli.jar${catalina.home}/bin下,在该目录会存在该文件,覆盖 即可

5、建立log4j.properties,并把其放到${catalina.home}/lib

posted @ 2013-11-21 14:43 George Gong 阅读(2017) | 评论 (0)编辑 收藏

在维护服务器时常常需要用到linux Shell命令,将常用的写在这里备查:

telnet 10.10.50.122 7070

nslookup 查看域名解析

netstat -anp 显示系统端口使用情况 a表示全部socket n不解析名称 p显示PID

lsof -i :端口 显示占用该端口的进程情况

last

history

scp root@10.10.10.11:/home/asd/we.zip /home/we/ scp文件传输

w 当前登录用户

ps -ef|grep java 不解释!

查看机器吞吐量(throughput)

sudo ifconfig eth0

iftop 监视网卡即时吞吐量

iptraf 监视网卡即时吞吐量

iostat 磁盘吞吐量查看

iostat 结果解释
* rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s
* wrqm/s:   每秒进行 merge 的写操作数目。即 delta(wmerge)/s
* r/s:       每秒完成的读 I/O 设备次数。即 delta(rio)/s
* w/s:       每秒完成的写 I/O 设备次数。即 delta(wio)/s
* rsec/s:    每秒读扇区数。即 delta(rsect)/s
* wsec/s:   每秒写扇区数。即 delta(wsect)/s
* rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
* wkB/s:     每秒写K字节数。是 wsect/s 的一半。(需要计算)
* avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
* avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
* await:     平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
* svctm:    平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
* %util:    一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

df -m 硬盘使用情况

free -m 内存使用情况

top 查看CPU使用情况

关于 load   average
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。
对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。

查看机器硬件信息

测试机器的硬件信息:
查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id      : 0
4 physical id      : 1
(说明实际上是两颗4核的CPU)
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
再完整看cpu详细信息, 不过大部分我们都不关心而已.
# dmidecode | grep 'Processor Information'
查看内 存信息
# cat /proc/meminfo
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)
# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)
查看机器型号
# dmidecode | grep "Product Name"
查看网卡信息
# dmesg | grep -i eth

du -ms /usr/local/jdk 查看文件夹使用的空间大小

du -sm * | sort -n 当前路径下各文件夹大小,并排序显示

posted @ 2010-10-18 11:40 George Gong 阅读(441) | 评论 (1)编辑 收藏

Ubuntu Linux系统环境变量配置文件介绍在Ubuntu中有如下几个文件可以设置环境变量

/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。

/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的 profile前,设置环境文件的环境变量。

~/.profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

使用source命令刷新环境变量

posted @ 2010-10-18 11:39 George Gong 阅读(363) | 评论 (0)编辑 收藏
原文地址: http://ifelseif.blog.sohu.com/145381162.html

听说支持向量机是比神经网络还牛X的分类器,我就拿来玩了玩,用国立台湾大学Chih-Chung Chang和Chih-Jen Lin编写的libsvm函数库。国内的网站很多帖子都抄来抄去的,犯错bug都一样。哎,希望此贴可以正本清源。

    首先下载libSVM的最新版本,他们的主页在此http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html源码手册都有,真是好人啊!手册写的清晰明了通俗易懂,尽管是英文的。想快速上手看具体操作步骤的直接翻到appendix吧。

    在linux下部署libSVM是简单到不能再简单了,make一下就完事儿了。什么!你没有gcc,没有python,没有gnuplot?自己apt-get去吧。

    用windows的童鞋,首先你们要安装python和gnuplot。python的主页为http://www.python.org/,安装程序可以在这里下载。gnuplot的主页为http://www.gnuplot.info/download.html,安装程序在这里。python是需要安装的,gnuplot是绿色软件找个地方解压就行。如果你网速快的话强烈推荐pythonxy这个东西,python科学计算相关的软件包基本都包括了,有功夫好好学吧开源的哦。

    需要手工添加环境变量,保证python根目录,gnuplot的bin目录,libsvm的windows目录都在path里面,我的电脑上是c:\python26,C:\Python26\gnuplot\bin,c:\Users\gongwei\program\libsvm-2.9\windows\。然后还要改libSVM\tools目录下的easy.py和grid.py文件,把gnuplot路径那一项改成gnuplot_exe = r"C:\Python26\gnuplot\bin\pgnuplot.exe"。gnuplot有三个exe,这里只能用这个因为它可以通过管道输入数据,另外两个都不行。都弄完之后,尝试运行一下吧:

    python easy.py train.1 test.1

    其中train.1和test.1都是作者提供的测试数据。可以在这里下载guide里面的数据,这里还有更多。

    好啦下面就等着弹窗吧,会弹出一个gnuplot的窗口,里面的图像会随着网络的训练逐步更新。大功告成!

    libSVM的使用很简单,会用python的可以参考easy.py和grid.py写自己的script。libSVM使用c++编写,提供java的源码,还支持R (also Splus), MATLAB, Perl, Ruby, Weka, Common LISP, CLISP, Haskell, LabVIEW的调用。想用的话基本都有自己适合的环境。

    最后还是要感谢libSVM的几位作者们,写出这么好的软件。向台湾同胞致敬!

posted @ 2010-09-19 22:25 George Gong 阅读(871) | 评论 (0)编辑 收藏

数学之美 系列九 -- 如何确定网页和查询的相关性



[我们已经谈过了如何自动下载网页如何建立索引如何衡量网页的质量(Page Rank)。我们今天谈谈如何确定一个网页和某个查询的相关性。了解了这四个方面,一个有一定编程基础的读者应该可以写一个简单的搜索引擎了,比如为您所在的学校或院系建立一个小的搜索引擎。]

我们还是看上回的例子,查找关于“原子能的应用”的网页。我们第一步是在索引中找到包含这三个词的网页(详见关于布尔运算的系列)。现在任何一个搜索引擎都包含几十万甚至是上百万个多少有点关系的网页。那么哪个应该排在前面呢?显然我们应该根据网页和查询“原子能的应用”的相关性对这些网页进行排序。因此,这里的关键问题是如何度量网页和查询的相关性。

我们知道,短语“原子能的应用”可以分成三个关键词:原子能、的、应用。根据我们的直觉,我们知道,包含这三个词多的网页应该比包含它们少的网页相关。当然,这个办法有一个明显的漏洞,就是长的网页比短的网页占便宜,因为长的网页总的来讲包含的关键词要多些。因此我们需要根据网页的长度,对关键词的次数进行归一化,也就是用关键词的次数除以网页的总字数。我们把这个商称为“关键词的频率”,或者“单文本词汇频率”(Term Frequency),比如,在某个一共有一千词的网页中“原子能”、“的”和“应用”分别出现了 2 次、35 次 和 5 次,那么它们的词频就分别是 0.002、0.035 和 0.005。 我们将这三个数相加,其和 0.042 就是相应网页和查询“原子能的应用”
相关性的一个简单的度量。概括地讲,如果一个查询包含关键词 w1,w2,...,wN, 它们在一篇特定网页中的词频分别是: TF1, TF2, ..., TFN。 (TF: term frequency)。 那么,这个查询和该网页的相关性就是:
TF1 + TF2 + ... + TFN。

读者可能已经发现了又一个漏洞。在上面的例子中,词“的”站了总词频的 80% 以上,而它对确定网页的主题几乎没有用。我们称这种词叫“应删除词”(Stopwords),也就是说在度量相关性是不应考虑它们的频率。在汉语中,应删除词还有“是”、“和”、“中”、“地”、“得”等等几十个。忽略这些应删除词后,上述网页的相似度就变成了0.007,其中“原子能”贡献了0.002,“应用”贡献了 0.005。

细心的读者可能还会发现另一个小的漏洞。在汉语中,“应用”是个很通用的词,而“原子能”是个很专业的词,后者在相关性排名中比前者重要。因此我们需要给汉语中的每一个词给一个权重,这个权重的设定必须满足下面两个条件:

1. 一个词预测主题能力越强,权重就越大,反之,权重就越小。我们在网页中看到“原子能”这个词,或多或少地能了解网页的主题。我们看到“应用”一次,对主题基本上还是一无所知。因此,“原子能“的权重就应该比应用大。

2. 应删除词的权重应该是零。

我们很容易发现,如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词 w 在 Dw 个网页中出现过,那么 Dw 越大,w 的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)其中D是全部网页数。比如,我们假定中文网页数是D=10亿,应删除词“的”在所有的网页中都出现,即Dw=10亿,那么它的IDF=log(10亿/10亿)= log (1) = 0。假如专用词“原子能”在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log(2)
则只有 0.7。也就只说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,该网页和“原子能的应用”的相关性为 0.0161,其中“原子能”贡献了 0.0126,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。

TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。讲起 TF/IDF 的历史蛮有意思。IDF 的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓] (Karen Sparck Jones)提出来的。斯巴克-琼斯 1972 年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF 应该是对数函数 log(D/Dw)(而不是其它的函数,比如平方根),也没有在这个题目上作进一步深入研究,以至于在以后的很多文献中人们提到 TF/IDF 时没有引用她的论文,绝大多数人甚至不知道斯巴克-琼斯的贡献。同年罗宾逊写了个两页纸的解释,解释得很不好。倒是后来康乃尔大学的萨尔顿(Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的)。很多人都引用萨尔顿的书,甚至以为这个信息检索中最重要的概念是他提出的。当然,世界并没有忘记斯巴克-琼斯的贡献,2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF,这回的解释是对的,但文章写的并不好、非常冗长(足足十八页),把一个简单问题搞复杂了。其实,信息论的学者们已经发现并指出,其实 IDF 的概念就是一个特定条件下、关键词的概率分布的交叉熵(Kullback-Leibler Divergence)(详见上一系列)。这样,信息检索相关性的度量,又回到了信息论。

现在的搜索引擎对 TF/IDF 进行了不少细微的优化,使得相关性的度量更加准确了。当然,对有兴趣写一个搜索引擎的爱好者来讲,使用 TF/IDF 就足够了。 如果我们结合上网页排名(Page Rank),那么给定一个查询,有关网页综合排名大致由相关性和网页排名乘积决定。
posted @ 2010-09-19 19:45 George Gong 阅读(211) | 评论 (0)编辑 收藏
Ubuntu 10.04下默认的即时通讯是Empathy,但Empathy的plugin还不多,它可以通过安装plugin来获取Pidgin下的plugin。Pidgin下只需要安装pidgin-sipe就可以登录Communicator账号。我查了很多资料,最终Empathy没有弄好,只弄好了pidgin。
由于Ubuntu 10.04没有Pidgin,首先安装Pidgin,然后通过 sudo apt-get install pidgin-sipe命令安装,注意这个pidgin-sipe的版本要在1.8.0+,这个是10.04下的默认版本。然后重启Pidgin后账号类型会多了一项“Office Communicator”,接着输入你的账号就可以了。

至于Empathy,有人通过pidgin-sipe + telepathy-haze 两个plugin配置成功了,不过我没有成功,以后再说吧:)

posted @ 2010-05-21 10:05 George Gong 阅读(874) | 评论 (0)编辑 收藏
http://persevere.javaeye.com/blog/653716

这几天安装了Ubuntu 10.04,确实很不错。但一不小心把顶端的面板给删除了,这下麻烦了。虽然可以通过“新建面板”“添加到面板”一一恢复,但一一查找都很麻烦,有没有一种办法可以恢复默认的顶端面板。可以通过以下步骤:

通过ALT+F2呼出应用程序对话框,输入gnome-terminal打开终端输入以下命令:
 gconftool --recursive-unset/apps/panel  
   
 rm -rf ~/.gconf/apps/panel  
   
 pkill gnome-panel

这样就OK了

posted @ 2010-05-21 09:45 George Gong 阅读(676) | 评论 (1)编辑 收藏
最近开始用eclipse3.5,下载了maven插件m2eclipse,使用后才发现每次project clean的时候这个maven builder都会自动执行,这个很恶心。google了半天也没找到解决办法,恶心。
posted @ 2010-04-30 11:24 George Gong 阅读(7460) | 评论 (2)编辑 收藏

系统之前一直用的是maven-artifact-ant-2.0.4-dep.jar,但最近对一些jar包支持不好,运行ant脚本出现以下问题:

[artifact:dependencies] [WARNING] POM for 'ch.qos.logback:logback-classic:pom:0.9.9' is invalid. It will be ignored for artifact resolution. Reason: The POM expression: ${parent.version} could not be evaluated. Reason: ch.qos.logback:logback-classic:jar:${parent.version} references itself.

这样的话这个忽略的jar包就得手动copy了,这样你还得找这个jar包依赖的其他jar包是不是存在。后来在网上google了一下,发现现在都用maven-ant-tasks-2.1.0.jar,然后对build.xml稍作改动,如下即可:
<?xml version="1.0" encoding="UTF-8"?>
<project name="hehe" default="maven-jar" xmlns:artifact="urn:maven-artifact-ant">
    
<property file="build.properties" />
        
<target name="maven-jar" description="Use Maven2 to manage jars' dependencies">
        
<echo message="deleting old jar .. " />
        
<delete dir="${web.dir}/WEB-INF/lib" />
        
<copy todir="${web.dir}/WEB-INF/lib">
            
<fileset id="runtimeFiles" dir="lib/mylib">
                
<include name="**/*.jar" />
            
</fileset>
            
<mapper type="flatten" />
        
</copy>
        
<echo message="Use Maven2 to manage jar." />
        
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant">
            
<classpath>
                
<pathelement location="lib/maven-ant-tasks-2.1.0.jar" />
            
</classpath>
        
</typedef>

        
<artifact:pom file="pom.xml" id="my.pom" />

        
<artifact:dependencies pathId="dependency.classpath" filesetId="dependency.fileset" usescope="runtime">
            
<pom refid="my.pom" />
        
</artifact:dependencies>

        
<copy todir="${web.dir}/WEB-INF/lib">
            
<fileset refid="dependency.fileset" />
            
<mapper type="flatten" />
        
</copy>
    
</target>
</project>
这样就OK了
 
posted @ 2010-04-30 00:12 George Gong 阅读(2187) | 评论 (0)编辑 收藏

这两天调试一个asp.net程序,用户在首页登录成功后,系统会在客户端添加一个Cookie,然后重定向到首页,首页检测到这个Cookie后就屏蔽掉登录。我在本机调试的时候本能的用localhost,结果每次都不成功,Cookie不起作用。后来在hosts文件中将127.0.0.1 随便映射成一个域名,一试就好了。到现在也不明白这是为什么,莫非是微软觉得localhost的程序给自己添加Cookie是多此一举?

posted @ 2010-01-22 16:31 George Gong 阅读(368) | 评论 (0)编辑 收藏

这两天开始研究一个韩国人写的asp.net(C#)程序,好多年没玩.net了,发现很生疏。首先要把源代码在本机跑起来,安装VS2005。然后打开网站把项目到进去后,启动debug(F5)后出现问题, <add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />这一行报错,google了一下发现必须要安装.net framework 3.5 sp1 ,如果还不行还要安装MS Chart.exe,看来这个是图形报表需要的东西。

安装完成后点击自动调试模式,还是报错,这次提示web.config里的全局路径出问题,后来仔细琢磨了一下发现VS默认启动的Development Server自作聪明的在启动的URL后面加了一个项目名称作为子路径,这个导致了很多问题,项目里定义的相对路径找不到,导致图片、JS、CSS等无法显示。好多人在骂微软的这个stupid。

google了一下解决方案,如下:点击VS上面的“工具”--->“外部工具”,然后添加一个Development Server,自己定义名称、端口号、虚拟路径、物理路径等。我的位置如下:
标题:Web Server Port:8080
命令:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE
参数:/port:8080 /path:D:\vs_workspace\ibt 这里没有定义虚拟路径,即为/
然后勾选“使用输出窗口”,这样就有打印信息了。

完成后你会发现“工具”里多了一个你定义的“Web Server Port:8080”,点击一下就启动了。

好多国内的帖子到这里后就完事了,其实不然。因为这样的话是解决了端口号和虚拟路径的问题,但我发现这时候不能debug程序了,断点没用。
国外的帖子找到了解决办法,原来还差一步,就是替换VS给项目设置的默认Development Server。在“解决方案资源管理区(solution explore)”里点击项目工程(project),右键点击并选择“属性页”,选择左边的“启动选项”,在“服务器”里选择“使用自定义服务器”,在基URL里填写“http://localhost:8080/”,这样就OK了。但跟默认有区别的是,这次VS不管自动启动Development Server,需要手动启动,然后才能点击“启动调试(F5)”按钮

posted @ 2010-01-22 10:37 George Gong 阅读(1084) | 评论 (0)编辑 收藏

由于项目中的小文件太多,都是几K的小文件,有100多G,所以必须要提升静态文件的访问速度。一开始用Nginx 与 Tomcat做集群,Nginx负责静态资源的响应。Nginx在Linux下跑的很爽,到Windows下就不太好了。Nginx前段时间推出了Windows版,拿来一试,感觉不太稳定。在一个刀片机下作测试很好,但弄到正式环境下就不行了,ext tree显示不出来,而且要等很久,最后页面提示:ext无法显示。最后跟同事商量,觉得还是apache+tomcat在windows下比较稳定,转手弄apache+tomcat。

apache官方没有提供win64版本,就找了一个外国哥们在Vistual Studio 2005 下自己编译的win64 apache,在测试机上安装很轻松,然后布了2个tomcat,又在apache的mem cache中设置了3G的内存做缓存,测试一切OK。接着弄正式服务器,第一台正式服务器很顺利,几分钟就搞定了。第二台服务器就出了问题,apache无法启动,提示:“由于应用程序配置不正确 应用程序未能启动。重新安装应用程序可能会纠正这个问题”。然后查看这两台服务器有何差异,最后发现第一台上有.net framework 2,3,3.5,第二台上一个.net framework 都没有。接着装.net framework 2.0 service,还是不行。有文章说要安装 vc redistribute 包,到微软官方下载安装,还是不行,郁闷。最后没办法,又下载安装.ner framework 3.0,还是不行,靠!这时候我都不报希望了,又下载安装.net framework 3.5,然后发现apache 可以了!最后一分钟搞定第二台服务器的apache+tomcat。

我的apache+tomcat用的是ajp proxy通信方式,设置session sticky。

好了,接下来观察几天看看效果如何

posted @ 2010-01-15 11:28 George Gong 阅读(2425) | 评论 (2)编辑 收藏