随笔-204  评论-90  文章-8  trackbacks-0
 
1.下载jsch-0.1.24.jar及commons-net-ftp-2.0.jar
2.设置eclipse:    window -- preferences  -- ant -- Runtime -- Ant Home Entries (Default)下填加上面两个包即可在eclipse 的所有工程里使用这些功能,挺爽
3.ant task 网上很多,搜一下,推荐参考:http://www.blogjava.net/Good-Game/archive/2009/03/13/248113.html
4.ftp task:
<target name="ftp" depends="compile">
  <ftp server="192.168.223" port="21" userid="work" password="abc123" remotedir="/home/work/coin/WEB-INF/lib/" depends="yes" verbose="yes">
   <fileset dir="dist">
    <include name="*.jar" />
   </fileset>
  </ftp>
 </target>
posted @ 2009-07-01 16:36 一凡 阅读(838) | 评论 (0)编辑 收藏
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.apache.commons.lang.StringUtils;

import com.sun.org.apache.commons.beanutils.PropertyUtils;


/**
 * create_date : 2009-6-16
 
*/

public class TestBean {

    
private String uid;
    
private String uname;
    
private String sex;

    
public String getUid() {
        
return uid;
    }


    
public void setUid(String uid) {
        
this.uid = uid;
    }


    
public String getUname() {
        
return uname;
    }


    
public void setUname(String uname) {
        
this.uname = uname;
    }


    
public String getSex() {
        
return sex;
    }


    
public void setSex(String sex) {
        
this.sex = sex;
    }


    
public String check() {
        Method[] methods 
= this.getClass().getMethods();
        
for (int i = 0; i < methods.length; i++{
            Method method 
= methods[i];
            
if (method.getName().startsWith("get")) {
                
try {
                    
if(StringUtils.isBlank((String)method.invoke(this))){
                        
return method.getName().substring(3);
                    }

                }
 catch (IllegalArgumentException e) {
                    e.printStackTrace();
                }
 catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
 catch (InvocationTargetException e) {
                    e.printStackTrace();
                }

            }

        }

        
return null;
    }

    
    
public static void main(String[] args) {
        TestBean tBean 
= new TestBean();
        tBean.setUid(
"1234");
        System.out.println(tBean.check());
    }

}

posted @ 2009-06-16 15:35 一凡 阅读(508) | 评论 (0)编辑 收藏

        在awk中使用shell变量的情况经常出现 , 使用 awk -v实现, 代码如下:

var="abc"
awk 
-"fst=$var" '{print fst}'
posted @ 2009-06-09 16:29 一凡 阅读(252) | 评论 (0)编辑 收藏

人生, 让房贷给废了
一手字,让键盘给废了
电视剧,让广告给废了
广告, 让脑白金给废了
猪肉, 让瘦肉精给废了
英雄, 让美人给废了
女孩, 让大款给废了
帅哥, 让富婆给废了
干部, 让人民币给废了
医德, 让医药代表给废了
书信, 让电话给废了
饭店, 让政府签单给废了
国足, 让足协给废了
运动员,让兴奋剂给废了
生命, 让医疗费给废了
胃,  让酒给废了
肺,  让香烟给废了
儿子, 让媳妇给废了
农民, 让欠薪给废了
法律, 让法院给废了
睡眠, 让夜总会给废了
景点, 让黄金周给废了
小孩, 让三鹿给废了
一个群,让不说话的给废了!

posted @ 2009-04-29 13:56 一凡 阅读(314) | 评论 (0)编辑 收藏
    在eclipse中,只有按下"."才会有代码提示功能,通过修改配置来实现多种条件触发代码提示:
    1、进入window --> preferences --> java --> Editor --> Content Assist
       改一下Auto activation triggers for java: 将"."改为".abc"
    2、导出eclipse的Preferences:file->export->General->Preferences 保存为pre.epf
    3、打开pre.epf文件,查找“content_assist_autoactivation”,将“.”改为“.abcdefghijklmnopqrstuvwxyz(,”保存
    4、导入Preferences:file->import 选文件pre.epf
    你会发现,在编辑器里输入刚才加入的任何一个字都会有代码提示,哈哈!

posted @ 2009-03-24 14:45 一凡 阅读(401) | 评论 (2)编辑 收藏
    问题:在firefox中相同URL不去访问,所以在刷新验证码时就出问题了,不去访问servlet。
    解决办法如下:
    
function refresh(){    
        
//重新获取验证码图片的src属性
        document.getElementById("imageField").src='/servlet/MyGraphics'+'?r='+Math.random();
    }
    
    注意:"+'?r='+Math.random()"是必须的
posted @ 2009-02-17 16:04 一凡 阅读(1009) | 评论 (4)编辑 收藏

Ctrl+D   删除当前行  

  Ctrl+Alt+↓   复制当前行到下一行(复制增加)  

  Ctrl+Alt+↑   复制当前行到上一行(复制增加)  

  Alt+↓   当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)  

  Alt+↑   当前行和上面一行交互位置(同上)  

  Alt+←   前一个编辑的页面  

  Alt+→   下一个编辑的页面(当然是针对上面那条来说了)  

  Alt+Enter   显示当前选择资源(工程,or   文件   or文件)的属性  

  Shift+Enter   在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)  

  Shift+Ctrl+Enter在当前行插入空行(原理同上条)  

  Ctrl+Q   定位到最后编辑的地方  

  Ctrl+L   定位在某行   (对于程序超过100的人就有福音了)  

  Ctrl+M   最大化当前的Edit或View   (再按则反之)  

  Ctrl+/   注释当前行,再按则取消注释  

  Ctrl+O   快速显示   OutLine  

  Ctrl+T   快速显示当前类的继承结构  

  Ctrl+W   关闭当前Editer  

  Ctrl+K   参照选中的Word快速定位到下一个  

  Ctrl+E   快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)  

  Ctrl+/(小键盘)   折叠当前类中的所有代码  

  Ctrl+×(小键盘)   展开当前类中的所有代码  

  Ctrl+Space   代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)  

  Ctrl+Shift+E   显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)  

  Ctrl+J   正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,

           则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)  

  Ctrl+Shift+J   反向增量查找(和上条相同,只不过是从后往前查)  

  Ctrl+Shift+F4   关闭所有打开的Editer  

  Ctrl+Shift+X   把当前选中的文本全部变为小写  

  Ctrl+Shift+Y   把当前选中的文本全部变为小写  

  Ctrl+Shift+F   格式化当前代码  

  Ctrl+Shift+P   定位到对于的匹配符(譬如{})   (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)  

posted @ 2009-02-11 14:09 一凡 阅读(237) | 评论 (0)编辑 收藏
  由于lucene2.0+heritrix一书示例用的网站(http://mobile.pconline.com.cn/,http: //mobile.163.com/)改版了,书上实例不能运行,我又找了一个http://mobile.younet.com/进行开发并成功实现示 例,希望感兴趣的同学,近快实践,如果此网站也改了就又得改extractor了,哈哈!
search的Extractor代码如下,(别和书上实例相同)供大家参考:附件里有完整代码
package com.luceneheritrixbook.extractor.younet;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.HasChildFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.util.NodeIterator;
import org.htmlparser.util.NodeList;

import com.luceneheritrixbook.extractor.Extractor;
import com.luceneheritrixbook.util.StringUtils;

/**
 * <p></p>
 * 
@author cnyqiao@hotmail.com
 * @date   Feb 6, 2009 
 
*/

public class ExtractYounetMoblie extends Extractor {

    @Override
    
public void extract() {
        BufferedWriter bw 
= null;
        NodeFilter title_filter 
= new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("class""mo_tit"));
        NodeFilter attribute_filter 
= new AndFilter(new TagNameFilter("p"), new HasChildFilter(new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp1 blue1"))));
        NodeFilter img_filter 
= new AndFilter(new TagNameFilter("span"), new HasChildFilter(new TagNameFilter("img")));
        
        
//提取标题信息
        try {
            
//Parser根据过滤器返回所有满足过滤条件的节点
            
// 迭代逐渐查找
            NodeList nodeList=this.getParser().parse(title_filter);
            NodeIterator it 
= nodeList.elements();
            StringBuffer title 
= new StringBuffer();
            
while (it.hasMoreNodes()) {
                Node node 
= (Node) it.nextNode();
                String[] names 
= node.toPlainTextString().split(" ");
                
for(int i = 0; i < names.length; i++)
                    title.append(names[i]).append(
"-");
                title.append(
new Date().getTime());
                
//创建要生成的文件
                bw = new BufferedWriter(new FileWriter(new File(this.getOutputPath() + title + ".txt")));
                
//获取当前提取页的完整URL地址
                int startPos = this.getInuputFilePath().indexOf("mirror"+ 6;
                String url_seg 
= this.getInuputFilePath().substring(startPos);
                url_seg 
= url_seg.replaceAll("\\\\""/");
                String url 
= "http:/" + url_seg;
                
//写入当前提取页的完整URL地址
                bw.write(url + NEWLINE);
                bw.write(names[
0+ NEWLINE);
                bw.write(names[
1+ NEWLINE);
                
            }
            
// 重置Parser
            this.getParser().reset();
            Parser attNameParser 
= null;
            Parser attValueParser 
= null;
            
//Parser parser=new Parser("http://www.sina.com.cn");
            NodeFilter attributeName_filter = new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp1 blue1"));
            NodeFilter attributeValue_filter 
= new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp2"));
            String attName 
= "";
            String attValue 
= "";
            
// 迭代逐渐查找
            nodeList=this.getParser().parse(attribute_filter);
            it 
= nodeList.elements();
            
while (it.hasMoreNodes()) {                
                Node node 
= (Node) it.nextNode();
                attNameParser 
= new Parser();
                attNameParser.setEncoding(
"GB2312");
                attNameParser.setInputHTML(node.toHtml());
                NodeList attNameNodeList 
= attNameParser.parse(attributeName_filter);
                attName 
= attNameNodeList.elements().nextNode().toPlainTextString();
                
                attValueParser 
= new Parser();
                attValueParser.setEncoding(
"GB2312");
                attValueParser.setInputHTML(node.toHtml());
                NodeList attValueNodeList 
= attValueParser.parse(attributeValue_filter);
                attValue 
= attValueNodeList.elements().nextNode().toPlainTextString();
                bw.write(attName.trim() 
+ attValue.trim());
                bw.newLine();
            }
            
// 重置Parser
            this.getParser().reset();
            String imgUrl 
= "";
            String fileType 
="";
            
// 迭代逐渐查找
            nodeList=this.getParser().parse(img_filter);
            it 
= nodeList.elements();
            
while (it.hasMoreNodes()) {                
                Node node 
= (Node) it.nextNode();
                
                ImageTag imgNode 
= (ImageTag)node.getChildren().elements().nextNode();
                imgUrl 
= imgNode.getAttribute("src");                
                fileType 
= imgUrl.trim().substring(imgUrl
                        .lastIndexOf(
"."+ 1);
                
//生成新的图片的文件名
                String new_iamge_file = StringUtils.encodePassword(imgUrl, HASH_ALGORITHM) + "." + fileType;
                
//imgUrl = new HtmlPaserFilterTest().replace(new_iamge_file, "+", " ");
                
//利用miorr目录下的图片生成的新的图片
                this.copyImage(imgUrl, new_iamge_file);
                bw.write(SEPARATOR 
+ NEWLINE);
                bw.write(new_iamge_file 
+ NEWLINE);
            }
            
            
        } 
catch(Exception e) {
            e.printStackTrace();
        } 
finally {
            
try{
                
if (bw != null)
                    bw.close();
            }
catch(IOException e){
                e.printStackTrace();
            }
        }
        
    }
}
运行书上的heritrix实例,并按书上的默认设置进行抓取如下URI:(请自己分析整理)
http://mobile.younet.com/files/list_1.html
http://mobile.younet.com/files/list_2.html
http://mobile.younet.com/files/list_3.html

posted @ 2009-02-09 15:44 一凡 阅读(2348) | 评论 (5)编辑 收藏
转自:http://feirou520.javaeye.com/blog/290311
不同的Linux之间copy文件常用有3种方法 ,第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。第二种方法就是采用samba服务,类似Windows 文件copy的方式来操作,比较简洁方便,第三种就是利用scp命令来进行文件复制。

scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。

 

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root

然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始cp和ungzip了

如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。

scp root@172.19.2.75:/home/root /home/daisy/full.tar.gz
 

例如:
copy 本地的档案到远程的机器上
scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k
会将本地的 /etc/lilo.conf 这个档案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目录下。
copy远程机器上的档案到本地来
scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc
会将 net67.ee.oitdu.tw 中 /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。
保持从来源 host 档案的属性
scp –p k@net67.ee.tw:/etc/lilo.conf /etc
在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。
ssh-keygen
产生公开钥 (pulib key) 和私人钥 (private key),以保障 ssh 联机的安性, 当 ssh 连 shd 服务器,会交换公开钥上,系统会检查 /etc/ssh_know_hosts 内储存的 key,如果找到客户端就用这个 key 产生一个随机产生的session key 传给服务器,两端都用这个 key 来继续完成 ssh 剩下来的阶段。

它会产生 identity.pub、identity 两个档案,私人钥存放于identity,公开钥 存放于 identity.pub 中,接下来使用 scp 将 identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys。 .ssh/authorized_keys(这个 authorized_keys 档案相当于协议的 rhosts 档案),之后使用者能够不用密码去登入。RSA的认证绝对是比 rhosts 认证更来的安全可靠。
执行:
scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。

posted @ 2008-12-30 18:44 一凡 阅读(393) | 评论 (0)编辑 收藏
    1、查看CPU位数:getconf LONG_BIT或arch或file /sbin/init或cat /proc/cpuinfo | grep "model name" | cut -d ':' -f 2

    2、查看CPU信息:more /proc/cpuinfo

posted @ 2008-12-11 12:01 一凡 阅读(216) | 评论 (0)编辑 收藏
仅列出标题
共21页: First 上一页 6 7 8 9 10 11 12 13 14 下一页 Last