??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩精品一区二区三区视频播放,国产精品亚洲аv天堂网,精品久久久久久综合日本http://www.aygfsteel.com/windonly/category/26318.html知识真的是一个圆?zh-cnFri, 18 Apr 2008 10:46:16 GMTFri, 18 Apr 2008 10:46:16 GMT60JMail 单应?文g传输http://www.aygfsteel.com/windonly/archive/2008/03/19/187159.htmlAnemoneAnemoneWed, 19 Mar 2008 02:03:00 GMThttp://www.aygfsteel.com/windonly/archive/2008/03/19/187159.htmlhttp://www.aygfsteel.com/windonly/comments/187159.htmlhttp://www.aygfsteel.com/windonly/archive/2008/03/19/187159.html#Feedback4http://www.aygfsteel.com/windonly/comments/commentRss/187159.htmlhttp://www.aygfsteel.com/windonly/services/trackbacks/187159.html     相关技术点:
    1.JMail邮g发?br />     2.剪切板提?br />    具体代码实现如下:
/*
 * Created on 2008-3-5
 
*/
package org.dueam.ft;

import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;

import sun.misc.BASE64Encoder;

/**
 * 剪切板内容发?br />  * 
@author <a href="mailto:windonly@gmail.com">Anemone</a>
 * hz,zj,china(2008-3-5)
 
*/
public class ClipboardFileTransmission {

    
/**
     * 
@param args
     * 
@throws EmailException
     * 
@throws IOException
     * 
@throws UnsupportedFlavorException
     * 
@throws HeadlessException
     
*/
    @SuppressWarnings(
"unchecked")
    
public static void main(String[] args) throws EmailException, HeadlessException, UnsupportedFlavorException,
            IOException {
        String context 
= null;
        List
<File> fileList = null;
        
/**
         * 处理前切?br />          
*/
        
for (DataFlavor df : Toolkit.getDefaultToolkit().getSystemClipboard().getAvailableDataFlavors()) {
            
//如果拯的是文本内容
            if (df.equals(DataFlavor.stringFlavor)) {
                context 
= (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
            }
            
else if (df.equals(DataFlavor.javaFileListFlavor)) {
                
//如果拯的是文g则当附g发?/span>
                fileList = (List<File>) Toolkit.getDefaultToolkit().getSystemClipboard().getData(
                        DataFlavor.javaFileListFlavor);
            }
        }
        
if ((null == context || "".equals(context)) && (fileList == null || fileList.isEmpty())) {
            
return;
        }
        
if (null == context || "".equals(context)) {
            context 
= "具体资料L附g";
        }

        MultiPartEmail email 
= new MultiPartEmail();
        
        
// 发送服务器
        email.setHostName("smtp.163.com");
        
//服务器用户和密码(如果你自己搞了台不用验证的邮件服务器׃用了)
        email.setAuthentication("XXX""XXX");
        
//接收的邮?/span>
        email.addTo("XXX@gmail.com""我的资料?/span>");
        
//发送服务器的邮件地址,现在很多邮g提供商都有验证这个同用户名是否对?q是老老实实填真实的吧
        email.setFrom("XXX@163.com""Anemone");
        email.setSubject(
"[日常资料传递]-" + getTime());
        
//文本~码
        email.setCharset("utf-8");
        email.setMsg(context);
        
if (null != fileList)
            
for (File f : fileList) {
                
if (f.exists() && f.isFile()) {
                    
//处理附g
                    EmailAttachment attachment = new EmailAttachment();
                    attachment.setPath(f.getPath());
                    attachment.setDisposition(EmailAttachment.ATTACHMENT);
                    attachment.setDescription(getTime() 
+ "By Anemone");
                    BASE64Encoder enc 
= new BASE64Encoder();
                    
//附g中文名问?/span>
                    attachment.setName("=?GBK?B?" + enc.encode(f.getName().getBytes()) + "?=");
                    email.attach(attachment);
                }
            }

        email.send();

    }

    
public static String getTime() {
        SimpleDateFormat df 
= new SimpleDateFormat("yyyy-MM-dd HH:mm");
        
return df.format(new Date());
    }

}
以上代码?63和gmail之间试通过q?用exe4j打成EXE文g,然后扔到system32目录下面,q样只要惛_送资料的时?只要复制下资?再执行下q个命o׃切都OK?
相关cd:下蝲




Anemone 2008-03-19 10:03 发表评论
]]>
ArrayUtils学习W记http://www.aygfsteel.com/windonly/archive/2008/02/26/182278.htmlAnemoneAnemoneTue, 26 Feb 2008 10:23:00 GMThttp://www.aygfsteel.com/windonly/archive/2008/02/26/182278.htmlhttp://www.aygfsteel.com/windonly/comments/182278.htmlhttp://www.aygfsteel.com/windonly/archive/2008/02/26/182278.html#Feedback4http://www.aygfsteel.com/windonly/comments/commentRss/182278.htmlhttp://www.aygfsteel.com/windonly/services/trackbacks/182278.html ArrayUtils 拥有以下Ҏ:
toString
一个数l{换成String,用于打印数组
isEquals
判断两个数组是否相等,采用EqualsBuilderq行判断
toMap
一个数l{换成Map,如果数组里是Entry则其Key与Value是新Map的Key和Value,如果是Object[]则Object[0]为KeyObject[1]为Value
clone
拯数组
subarray
截取子数l?/dd>
isSameLength
判断两个数组长度是否相等
getLength
获得数组的长?/dd>
isSameType
判段两个数组的类型是否相?/dd>
reverse
数组反{
indexOf
查询某个Object在数l中的位|?可以指定起始搜烦位置
lastIndexOf
反向查询某个Object在数l中的位|?可以指定起始搜烦位置
contains
查询某个Object是否在数l中
toObject
基本数据类型{换成外包型数?/dd>
isEmpty
判断数组是否为空(null和length=0的时候都为空)
addAll
合ƈ两个数组
add
d一个数据到数组
remove
删除数组中某个位|上的数?/dd>
removeElement
删除数组中某个对?从正序开始搜?删除W一?
eg:
        // 1.打印数组
        ArrayUtils.toString(new int[] { 1423 });// {1,4,2,3}
        ArrayUtils.toString(new Integer[] { 1423 });// {1,4,2,3}
        ArrayUtils.toString(null"I'm nothing!");// I'm nothing!

        
// 2.判断两个数组是否相等,采用EqualsBuilderq行判断
        
// 只有当两个数l的数据cd,长度,数值顺序都相同的时?该方法才会返回True
        
// 2.1 两个数组完全相同
        ArrayUtils.isEquals(new int[] { 123 }, new int[] { 123 });// true
        
// 2.2 数据cd以及长度相同,但各个Index上的数据不是一一对应
        ArrayUtils.isEquals(new int[] { 132 }, new int[] { 123 });// true
        
// 2.3 数组的长度不一?/span>
        ArrayUtils.isEquals(new int[] { 1233 }, new int[] { 123 });// false
        
// 2.4 不同的数据类?/span>
        ArrayUtils.isEquals(new int[] { 123 }, new long[] { 123 });// false
        ArrayUtils.isEquals(new Object[] { 123 }, new Object[] { 1, (long23 });// false
        
// 2.5 Null处理,如果输入的两个数l都为null时候则q回true
        ArrayUtils.isEquals(new int[] { 123 }, null);// false
        ArrayUtils.isEquals(nullnull);// true

        
// 3.一个数l{换成Map
        
// 如果数组里是Entry则其Key与Value是新Map的Key和Value,如果是Object[]则Object[0]为KeyObject[1]为Value
        
// 对于Object[]数组里的元素必须是instanceof Object[]或者Entry,即不支持基本数据cd数组
        
// ?ArrayUtils.toMap(new Object[]{new int[]{1,2},new int[]{3,4}})会出异常
        ArrayUtils.toMap(new Object[] { new Object[] { 12 }, new Object[] { 34 } });// {1=2,
        
// 3=4}
        ArrayUtils.toMap(new Integer[][] { new Integer[] { 12 }, new Integer[] { 34 } });// {1=2,
        
// 3=4}

        
// 4.拯数组
        ArrayUtils.clone(new int[] { 324 });// {3,2,4}

        
// 5.截取数组
        ArrayUtils.subarray(new int[] { 34156 }, 24);// {1,5}
        
// 起始index?(即第三个数据)l束index?的数l?/span>
        ArrayUtils.subarray(new int[] { 34156 }, 210);// {1,5,6}
        
// 如果endIndex大于数组的长?则取beginIndex之后的所有数?br />
        
// 6.判断两个数组的长度是否相{?/span>
        ArrayUtils.isSameLength(new Integer[] { 135 }, new Long[] { 2L8L10L });// true

        
// 7.获得数组的长?/span>
        ArrayUtils.getLength(new long[] { 1233 });// 3

        
// 8.判段两个数组的类型是否相?/span>
        ArrayUtils.isSameType(new long[] { 13 }, new long[] { 856 });// true
        ArrayUtils.isSameType(new int[] { 13 }, new long[] { 856 });// false

        
// 9.数组反{
        int[] array = new int[] { 125 };
        ArrayUtils.reverse(array);
// {5,2,1}

        
// 10.查询某个Object在数l中的位|?可以指定起始搜烦位置,找不到返?1
        
// 10.1 从正序开始搜?搜到p回当前的index否则q回-1
        ArrayUtils.indexOf(new int[] { 136 }, 6);// 2
        ArrayUtils.indexOf(new int[] { 136 }, 2);// -1
        
// 10.2 从逆序开始搜?搜到p回当前的index否则q回-1
        ArrayUtils.lastIndexOf(new int[] { 136 }, 6);// 2

        
// 11.查询某个Object是否在数l中
        ArrayUtils.contains(new int[] { 312 }, 1);// true
        
// 对于Object数据是调用该Object.equalsҎq行判断
        ArrayUtils.contains(new Object[] { 312 }, 1L);// false

        
// 12.基本数据cd数组与外包型数据cd数组互{
        ArrayUtils.toObject(new int[] { 12 });// new Integer[]{Integer,Integer}
        ArrayUtils.toPrimitive(new Integer[] { new Integer(1), new Integer(2) });// new int[]{1,2}

        
// 13.判断数组是否为空(null和length=0的时候都为空)
        ArrayUtils.isEmpty(new int[0]);// true
        ArrayUtils.isEmpty(new Object[] { null });// false

        
// 14.合ƈ两个数组
        ArrayUtils.addAll(new int[] { 135 }, new int[] { 24 });// {1,3,5,2,4}

        
// 15.d一个数据到数组
        ArrayUtils.add(new int[] { 135 }, 4);// {1,3,5,4}

        
// 16.删除数组中某个位|上的数?/span>
        ArrayUtils.remove(new int[] { 135 }, 1);// {1,5}

        
// 17.删除数组中某个对?从正序开始搜?删除W一?
        ArrayUtils.removeElement(new int[] { 135 }, 3);// {1,5}


Anemone 2008-02-26 18:23 发表评论
]]>
发帖机的应对{略http://www.aygfsteel.com/windonly/archive/2007/10/01/150104.htmlAnemoneAnemoneMon, 01 Oct 2007 12:58:00 GMThttp://www.aygfsteel.com/windonly/archive/2007/10/01/150104.htmlhttp://www.aygfsteel.com/windonly/comments/150104.htmlhttp://www.aygfsteel.com/windonly/archive/2007/10/01/150104.html#Feedback0http://www.aygfsteel.com/windonly/comments/commentRss/150104.htmlhttp://www.aygfsteel.com/windonly/services/trackbacks/150104.html 一 常见发帖机类型及其原?/strong>
1)E序自动构徏字段内容,然后通过E序自动POST到服务器.
2)通过按键_之类的模拟器模拟键盘和鼠标操?以达到自动发帖的目的.
?发帖为分?/strong>
发帖Z要是Z发布q告信息,所以一般发帖机都是采用x创徏帐号==>然后发帖==>然后闪h程散布信息.
?解决Ҏ
1)通过增加一个特D字D?pȝ可以通过验证q个Ҏ字段来确认当前信息是否是pȝ实时产生.q种Ҏ可以有效抑制通过E序自动POST数据的发帖机,但是无法L模拟器类型的发帖?
2)验证?验证码是最有效的阻止发帖机的手D?但验证码也媄响了用户的发帖体?Ҏ发帖机的行ؓ分析我们可以采用如果当前用户注册q未满一个月或者发帖数q未辑ֈ10之前必需输入验证?q样既不影响老用L发帖体验又可以达到抑制发帖机的作?
?Ҏ字段产生{略
可以采用旉?旉戛_?加密Ҏ参见我的另一文?/a>),然后在服务器验证当前客户端传上来的时间戳是否在允许的timeout之内.

Anemone 2007-10-01 20:58 发表评论
]]>
վ֩ģ壺 | | ˮ| ͩ®| | ƽ| ʯ| | ˮ| ʼ| | | ˿| ˮ| | | | | ɽ| ƽ| | | ɽ| | Ͻ| | Ž| ʷ| Ͽ| ƽ| ƽ| | | | ˮ| | ԭ| غ| | | |