随笔-71  评论-5  文章-0  trackbacks-0
  2014年9月20日
     摘要: 一个stmt多个rs进行操作.那么从stmt得到的rs1,必须马上操作此rs1后,才能去得到另外的rs2,再对rs2操作.不能互相交替使用,会引起rs已经关闭错误——Operation not allowed after ResultSet closed.错误的代码如下: stmt=conn.createStatement();  rs=stm...  阅读全文
posted @ 2015-10-13 14:58 藤本蔷薇 阅读(185) | 评论 (0)编辑 收藏
在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

int i= 10; //定义一个int基本类型值
Integer x = new Integer(i); //手动装箱
Integer y = i; //自动装箱
posted @ 2015-09-22 20:28 藤本蔷薇 阅读(209) | 评论 (0)编辑 收藏

功能:将一个由英文字母组成的字符串转换成指定格式---从右边开始每三个字母用逗号分隔的形式。

请在编辑器中的第 4、10 行将代码填写完整

运行效果: j,aew,kjl,dfx,mop,zdmpublic static void main(String[] args) {
        // Java文件名
String fileName = "HelloWorld.jav"; 
        // 邮箱
String email = "laurenyang@imooc.com";
// 判断.java文件名是否正确:合法的文件名应该以.java结尾
        /*
        参考步骤:
        1、获取文件名中最后一次出现"."号的位置
        2、根据"."号的位置,获取文件的后缀
        3、判断"."号位置及文件后缀名
        */
        //获取文件名中最后一次出现"."号的位置
int index = fileName.lastIndexOf('.');
        
        // 获取文件的后缀
String prefix = fileName.substring(index);
        
// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
if (index !=0 && index != -1 &&  prefix.equals("java")) {
System.out.println("Java文件名正确");
} else {
System.out.println("Java文件名无效");
}

        // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
         /*
        参考步骤:
        1、获取文件名中"@"符号的位置
        2、获取邮箱中"."号的位置
        3、判断必须包含"@"符号,且"@"必须在"."之前
        */
   // 获取邮箱中"@"符号的位置
int index2 = email.indexOf("@");
        
        // 获取邮箱中"."号的位置
int index3 = email.indexOf('.');
        
// 判断必须包含"@"符号,且"@"必须在"."之前
if (index2 != -1 && index3 > index2) {
System.out.println("邮箱格式正确");
} else {
System.out.println("邮箱格式无效");
}
}






字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。






     public static void main(String[] args) {
// 定义一个字符串
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
        
        // 出现次数
int num = 0;
         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数
for ( int i=0;i<s.length()-1;i++)
{
            // 获取每个字符,判断是否是字符a
if (  'a'==s.charAt(i)      ) {
                // 累加统计次数
num++; 
}
}
System.out.println("字符a出现的次数:" + num);
}




功能:将一个由英文字母组成的字符串转换成指定格式---从右边开始每三个字母用逗号分隔的形式。

请在编辑器中的第 4、10 行将代码填写完整

运行效果: j,aew,kjl,dfx,mop,zdm


    public static void main(String[] args) {
// 创建一个空的StringBuilder对象
        StringBuilder str = new StringBuilder();
// 追加字符串
str.append("jaewkjldfxmopzdm");
        // 从后往前每隔三位插入逗号
for(int i = str.length()-3; i>0 ; i=i-3){
     
           str.insert(i,",");
}
    
        // 将StringBuilder对象转换为String对象并输出
System.out.print(str.toString());
}

 结果: j,aew,kjl,dfx,mop,zdm
posted @ 2015-09-22 16:12 藤本蔷薇 阅读(334) | 评论 (0)编辑 收藏
String s1 = "imooc";
String s2 = "imooc";
        
        //定义字符串s3,保存“I love”和s1拼接后的内容
String s3 = "I love" + s1; 
        // 比较字符串s1和s2
// imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象
System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));
        
        //比较字符串s1和s3
System.out.println("s1和s3内存地址相同吗?" +  (s1==s3));
String s4 = "I love " + s1;
         //比较字符串s4和s3
// s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象
System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));
posted @ 2015-09-22 15:26 藤本蔷薇 阅读(243) | 评论 (0)编辑 收藏
//外部类HelloWorld
public class HelloWorld {
    
    // 内部类Inner,类Inner在类HelloWorld的内部
    public class Inner {
        
// 内部类的方法
public void show() {
System.out.println("welcome to imooc!");
}
}
    
public static void main(String[] args) {
        
        // 创建外部类对象
HelloWorld hello = new HelloWorld();
        // 创建内部类对象
Inner i = hello.new Inner();
        // 调用内部类对象的方法
i.show();
}
}
posted @ 2015-09-09 15:47 藤本蔷薇 阅读(297) | 评论 (0)编辑 收藏














posted @ 2015-09-09 14:41 藤本蔷薇 阅读(308) | 评论 (0)编辑 收藏
不清楚路径的查找 : find / -name mysql


 MYSQL常用经典命令(没有试过)
1.停止mysql
kill -9 `ps -ef | grep mysqld_safe| grep -v grep| awk '{print $2}'`
kill -9 `ps -ef | grep 'mysqld' | grep -v grep| awk '{print $2}'`

2.启动mysql
cd /usr/local/mysql-5.4.1-beta-linux-x86_64-glibc23
/bin/sh bin/mysqld_safe --user=mysql & 


find /home/lijiajia/ -amin -10        #查找在系统中最后10分钟访问的文件
find /home/lijiajia/ -atime -2        #查找在系统中最后48小时访问的文件
find /home/lijiajia/ -empty           #查找在系统中为空的文件或者文件夹
find /home/lijiajia/ -mmin -5         # 查找在系统中最后5 分钟里修改过的文件
find /home/lijiajia/ -mtime -1        #查找在系统中最后24 小时里修改过的文件
find /home/lijiajia/ -nouser          #查找在系统中属于作废用户的文件(不明白是什么意思)
find /home/lijiajia/ -amin 10         #查找在系统中最后10分钟访问的文件
find /home/ftp/pub -user lijiajia     #查找在系统中属于lijiajia这个用户的文件
posted @ 2015-09-02 10:26 藤本蔷薇 阅读(198) | 评论 (0)编辑 收藏
  public static Map ConvertObjToMap(Object obj){
              Map<String,Object> reMap = new HashMap<String,Object>();
              if (obj == null
               return null;
              Field[] fields = obj.getClass().getDeclaredFields();
              try {
               for(int i=0;i<fields.length;i++){
                try {
                 Field f = obj.getClass().getDeclaredField(fields[i].getName());
                 f.setAccessible(true);
                       Object o = f.get(obj);
                       if(o == null){
                           o = "";
                       }else{
                           o = String.valueOf(o);
                       }
                       reMap.put(fields[i].getName(), String.valueOf(o));
                } catch (NoSuchFieldException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
                } catch (IllegalArgumentException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
                } catch (IllegalAccessException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
                }
               }
              } catch (SecurityException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
              } 
              return reMap;
             }
posted @ 2015-08-31 19:52 藤本蔷薇 阅读(993) | 评论 (0)编辑 收藏

import java.io.IOException;
import java.util.Date;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.alibaba.fastjson.JSONObject;
import com.huoniu.openapi.constant.Constant.MESSAGE;
import com.huoniu.openapi.constant.InvokeContext;
import com.huoniu.openapi.model.RetCode;
import com.huoniu.openapi.model.RetMsg;
import com.huoniu.openapi.model.SmsCode;
import com.huoniu.openapi.service.SmsCodeService;
import com.huoniu.openapi.utils.AESUtil;
import com.huoniu.openapi.utils.SmsUtil;
import com.huoniu.openapi.web.interceptor.InvokeContextInitInterceptor;
import com.puff.framework.annotation.Before;
import com.puff.framework.annotation.Controller;
import com.puff.framework.annotation.Inject;
import com.puff.framework.annotation.InterceptorChain;
import com.puff.framework.utils.JsonUtil;
import com.puff.framework.utils.StringUtil;
import com.puff.web.view.TextView;
import com.puff.web.view.View;
import com.puff.web.view.ViewFactory;

@Controller("/rest/sms")
public class HuyiSmsController {    

    private static String content = "您的验证码是:%s。请不要把验证码泄露给其他人。";
    public View send(){
        
        String invokeData = InvokeContext.getInvokeData();
        if (StringUtil.blank(invokeData)) {
            return json(RetMsg.error(RetCode.OTHER_ERROR, "发送短信失败!"));
        }
        
        JSONObject jsonObject = JSONObject.parseObject(invokeData);
        String  mobile = jsonObject.getString("customer_no");
        if (StringUtil.blank(mobile)) {
            return json(RetMsg.error(RetCode.NULL_PARAM, "手机号码不能为空"));
        }
            
            HttpClient client = new HttpClient(); 
            PostMethod method = new PostMethod(MESSAGE.NEW_MESSAGEURL);  //接口地址
                
            client.getParams().setContentCharset("UTF-8");
            method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");

            int mobile_code = (int)((Math.random()*9+1)*100000);        
                                               System.out.println("mobile_code : "+mobile_code);
            NameValuePair[] data = {//提交短信
                    new NameValuePair("account", MESSAGE.NEW_ACCOUNT), 
                    new NameValuePair("password", SmsUtil.MD5Encode(MESSAGE.NEW_PASSWORD)),
                    new NameValuePair("mobile", mobile), 
                    new NameValuePair("content", String.format(content, mobile_code)),
            };
            
            method.setRequestBody(data);        

            try {
                client.executeMethod(method);    
                String SubmitResult =method.getResponseBodyAsString();
                Document doc = DocumentHelper.parseText(SubmitResult); 
                Element root = doc.getRootElement();
                String code = root.elementText("code");    
                String msg = root.elementText("msg");    
                String smsid = root.elementText("smsid");    
                            
                if(code == "2"){  //发送成功,写库
                    
                }
                
            } catch (HttpException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (DocumentException e) {
                e.printStackTrace();
            }    
            
        
            return json(RetMsg.success("发送成功!!!"));
        
    }
    
    
    
    public View json(RetMsg msg) {
        String data = JsonUtil.toJson(msg);
        if (InvokeContext.isEncrypt()) {
            data = AESUtil.encrypt(data);
        }
        return ViewFactory.text(data, TextView.ContentType.JSON);
    }

}
posted @ 2015-08-31 10:02 藤本蔷薇 阅读(285) | 评论 (0)编辑 收藏
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import com.alibaba.fastjson.JSONObject;
import com.huoniu.openapi.constant.Constant.TONGLIAN;


public class TLInterfaceService {
    
    private static final String USERNAME = "";
    private static final String PASSWORD = "";
    private static final String TENANT = "";
    private static final String GRANT_TYPE_GET = "password";    
    private static final String GRANT_TYPE_REFRESH = "refresh_token";    
    
    private static String TOKEN = null;
    private static String REFRESH_TOKEN = null;
    private static long EXPIRES_IN ;
    private static long START_DATE;

    
    public  String getToken() {
        if(TOKEN==null){
                TOKEN  = login();
        }else{
            Date date = new Date();
            if(START_DATE-date.getTime()<EXPIRES_IN-30){
                TOKEN  = refresh();
            }
            
        }
        
        return TOKEN;
    }
    
    
    public  void setToken(String token) {
        TOKEN = token;
    }


    /**
     * 登陆,获取token
     * 
@return 
     
*/
            
        public static String login(){

                HttpClient httpClient = new HttpClient();
                String URL = String.format(TONGLIAN.PREV_PATH, "");  //接口地址
                try {
                    PostMethod postMethod = new PostMethod(URL);
                    postMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    NameValuePair[] data = { 
                            new NameValuePair("username", USERNAME),
                            new NameValuePair("password", PASSWORD),
                            new NameValuePair("tenant",  TENANT),
                            new NameValuePair("grant_type", GRANT_TYPE_GET)
                             };
                    postMethod.setRequestBody(data);
                    int statusCode = httpClient.executeMethod(postMethod);
                    if(200 == statusCode){
                        String body  = postMethod.getResponseBodyAsString();
                        JSONObject json=JSONObject.parseObject(body);
                        TOKEN = json.getString("access_token");
                        REFRESH_TOKEN = json.getString("refresh_token");
                        EXPIRES_IN = Long.parseLong(json.getString("expires_in"));
                        START_DATE =  (new Date()).getTime();
                    }
                } catch (Exception e) {
                    
                }
                return TOKEN;
         }
        
        /**
         * refresh_token
         * 
@return 
         
*/
                        
        public static String refresh(){
                
            HttpClient httpClient = new HttpClient();
                String URL = String.format(TONGLIAN.PREV_PATH, ""); //接口地址
                try {
                    PostMethod postMethod = new PostMethod(URL);
                    postMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded");
                    NameValuePair[] data = { 
                            new NameValuePair("refresh_token", REFRESH_TOKEN),
                            new NameValuePair("grant_type", GRANT_TYPE_REFRESH)
                     };
                    postMethod.setRequestBody(data);
                    int statusCode = httpClient.executeMethod(postMethod);
                    
                    if(200 == statusCode){
                        String body  = postMethod.getResponseBodyAsString();
                        JSONObject json=JSONObject.parseObject(body);
                        TOKEN = json.getString("access_token");
                        REFRESH_TOKEN = json.getString("refresh_token");
                        EXPIRES_IN = Long.parseLong(json.getString("expires_in"));
                        START_DATE =  (new Date()).getTime();
                    }
                } catch (Exception e) {
                    
                }
                return TOKEN;
         }

}
posted @ 2015-08-31 09:54 藤本蔷薇 阅读(267) | 评论 (0)编辑 收藏

/Files/kokosang/html5拖拽上传.zip

  前几天想做个给安卓app升级做个上传页面,然后从网上down了个页面下面(主要是嫌弃自己页面整的太丑,见不了人),然后就一直在整后台取值的办法
  各种百度,值取出来了,但是,悲催的是总是乱码,崩溃了,大神看了后,鄙视一番,给我整了下,简直就是重写了

  贴出来,先放张页面效果
  


  赏心悦目的后台来咯

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.List;

import org.apache.log4j.Logger;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;

import com.puff.framework.annotation.Controller;
import com.puff.web.mvc.PuffContext;
import com.puff.web.view.View;

@Controller("/upload/android")
public class AndroidVersionUploadController {

    private static final Logger logger = Logger.getLogger(UserImageController.class);
    
    private static final String FILE_PATH = "C:/Users/Administrator/Desktop";
    
    private static final String FILE_APK_NAME = "/nn.apk";
    private static final String FILE_VER_NAME = "/ver.txt";
    
    /**
     * 版本上传
     * 
@return
     * 
@throws Exception 
     
*/
    public View update() throws Exception {
        DiskFileItemFactory factory = new DiskFileItemFactory(); 
        ServletFileUpload upload = new ServletFileUpload(factory); 
        List<FileItem> items = upload.parseRequest( PuffContext.getRequest()); 
        
        String ver = null;
        String info = null;
        String isFoucs = null;
        for(Object object : items) { 
            FileItem fileItem = (FileItem)object; 
            if(fileItem.isFormField()) { 
                
                String name = fileItem.getFieldName();
                String value = fileItem.getString("utf-8");
                
                if("ver".equals(name)){
                    ver = value;
                }else if("content".equals(name)){
                    info = value;
                }else if("radio".equals(name)){
                    isFoucs = value;
                }
            } else {
                saveFileInfo(fileItem);
            }
        } 
        
        saveContentInfo(ver, info, isFoucs);
        
        return null;
    
    }

    private void saveFileInfo(FileItem fileItem) {
        
        InputStream is = null;
        OutputStream os = null;
        try {
            File file = new File(FILE_PATH);
            if(file.exists()) {
                file.mkdirs();
            }
            
            is = fileItem.getInputStream();
            os = new FileOutputStream(FILE_PATH + FILE_APK_NAME);
            
            int len = 0;
            byte[] buffer = new byte[8 * 1024];
            while ((len = is.read(buffer, 0, 8 * 1024)) != -1) {
                os.write(buffer, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeOutputStream(os);
            closeInputStream(is);
        }
    }
    
    public void saveContentInfo(String ver, String info, String isFoucs) {
        BufferedWriter br = null;
        try {
            File file = new File(FILE_PATH);
            if(file.exists()) {
                file.mkdirs();
            }
            
            br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(FILE_PATH + FILE_VER_NAME), "utf-8"));
            br.write("ver:" + ver + "\r\n");   //版本号
            br.write("update:" + isFoucs+ "\r\n");   //是否强制更新
            br.write("content:" + info );    //版本升级内容
            br.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(br != null) {
                    br.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                br = null;
            }
        }
    }


    private void closeOutputStream(OutputStream os) {
        if(os != null) {
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                os = null;
            }
        }
    }
    
    private void closeInputStream(InputStream is) {
        if(is != null) {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                is = null;
            }
        }
    }
}
posted @ 2015-08-24 10:35 藤本蔷薇 阅读(252) | 评论 (0)编辑 收藏
public static void main(String[] args) {

        String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?><p><seqid></seqid><code></code><msg>成功</msg>" +
                          "<node><ename>huoniu</ename><cname>火牛</cname><prefix>108</prefix><begin>20150603</begin><end>20160630</end><borr>1000000</borr><margin>100000</margin><usdborr>1000000</usdborr><usdmargin>100000</usdmargin><mainp>0.60</mainp><midp>0.60</midp><growp>0.60</growp><mainpt>0.60</mainpt><midpt>0.60</midpt><growpt>0.30</growpt><shcomm>0.000300</shcomm><szcomm>0.000300</szcomm><warn>1.000</warn><close>1.000</close><interest>200</interest><commf>13</commf><layout>p-huo01:1100000:574810</layout><unmoney>0</unmoney><tstatus>0</tstatus><cstatus>0</cstatus></node>" +
                          " <node><ename>nn</ename><cname>牛牛</cname><prefix>102</prefix><begin>20150615</begin><end>20151015</end><borr>10000000</borr><margin>8000000</margin><usdborr>10000000</usdborr><usdmargin>8000000</usdmargin><mainp>0.60</mainp><midp>0.60</midp><growp>0.30</growp><mainpt>0.60</mainpt><midpt>0.60</midpt><growpt>0.30</growpt><shcomm>0.003000</shcomm><szcomm>0.003000</szcomm><warn>0.800</warn><close>0.800</close><interest>0</interest><commf>0</commf><layout></layout><unmoney>18000000</unmoney><tstatus>0</tstatus><cstatus>0</cstatus></node>" +
                         "<node><ename>ag-huo</ename><cname>兜底代理商</cname><prefix>huo</prefix><begin>20150602</begin><end>20160630</end><borr>0</borr><margin>0</margin><usdborr>0</usdborr><usdmargin>0</usdmargin><mainp>0.60</mainp><midp>0.60</midp><growp>0.30</growp><mainpt>0.60</mainpt><midpt>0.60</midpt><growpt>0.30</growpt><shcomm>0.000300</shcomm><szcomm>0.000300</szcomm><warn>0.010</warn><close>0.010</close><interest>0</interest><commf>0</commf><layout></layout><unmoney>0</unmoney><tstatus>0</tstatus><cstatus>0</cstatus></node></p>";

        List<Map> nodeList = new ArrayList<Map>();
        Map<String, Object> sendMap = new HashMap<String, Object>();
        try {
            
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(new StringReader(xml)));
            Element root = doc.getDocumentElement();// 根节点

            Node node = root.getFirstChild();
            while(node != null) {
                String nodeName = node.getNodeName().trim();
                String nodeValue = node.getTextContent().trim();
                
                if("node".equals(nodeName) && node.hasChildNodes()) {
                    
                    Map<String, Object> nodeMap = new HashMap<String, Object>();
                    
                    Node childNode = node.getFirstChild();
                    while(childNode != null) {
                        nodeMap.put(childNode.getNodeName(), childNode.getTextContent());
                        childNode = childNode.getNextSibling();
                    }
                    
                    nodeList.add(nodeMap);
                } else {
                    sendMap.put(nodeName, nodeValue);
                }
                
                node = node.getNextSibling();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        sendMap.put("node", nodeList);
        
        System.out.println(sendMap);
    }



打印结果 :
{node=[{warn=1.000, cstatus=0, tstatus=0, borr=1000000, growpt=0.30, unmoney=0, midpt=0.60, usdmargin=100000, commf=13, close=1.000, begin=20150603, shcomm=0.000300, usdborr=1000000, growp=0.60, interest=200, layout=p-huo01:1100000:574810, prefix=108, ename=huoniu, midp=0.60, mainpt=0.60, margin=100000, szcomm=0.000300, cname=火牛, end=20160630, mainp=0.60}, 
            {warn=0.800, cstatus=0, tstatus=0, borr=10000000, growpt=0.30, unmoney=18000000, midpt=0.60, usdmargin=8000000, commf=0, close=0.800, begin=20150615, shcomm=0.003000, usdborr=10000000, growp=0.30, interest=0, layout=, ename=nn, midp=0.60, mainpt=0.60, margin=8000000, szcomm=0.003000, end=20151015, mainp=0.60},
            {warn=0.010, cstatus=0, tstatus=0, borr=0, growpt=0.30, unmoney=0, midpt=0.60, usdmargin=0, commf=0, close=0.010, begin=20150602, shcomm=0.000300, usdborr=0, growp=0.30, interest=0, layout=, prefix=huo, ename=ag-huo, midp=0.60, mainpt=0.60, margin=0, szcomm=0.000300, end=20160630, mainp=0.60}], seqid=, code=, msg=成功}
posted @ 2015-08-09 10:15 藤本蔷薇 阅读(253) | 评论 (0)编辑 收藏
      public static void main(String[] args) throws Exception {
            Map<String, Object> sendMap = new HashMap<String, Object>();
            String data = "<?xml version=\"1.0\" encoding=\"gb2312\"?><p><seqid></seqid><client>0BF3F2D9A01797BBF05D6BC89877DC91</client><ename>108-wc</ename><code>0</code><msg>成功</msg><totalm>12447.97</totalm><cash>5669.13</cash><stockm>6778.84</stockm><num>2</num><stock><node><market>0</market><symbol>600104</symbol><direct>1</direct><type>0</type><avgprice>21.010</avgprice><holdnum>299</holdnum></node><node><market>0</market><symbol>601818</symbol><direct>1</direct><type>0</type><avgprice>4.993</avgprice><holdnum>4</holdnum></node></stock></p>";

            List<Map> nodeList = new ArrayList<Map>();
            try {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document doc = db.parse(new InputSource(new StringReader(data)));
                Element root = doc.getDocumentElement();// 根节点
                Node node = root.getFirstChild();
                while(node != null) {
                    String nodeName = node.getNodeName().trim();
                    String nodeValue = node.getTextContent().trim();
                    if("stock".equals(nodeName) && node.hasChildNodes()) {
                        Node  nodeOne =  node.getFirstChild();
                        while(nodeOne != null) {
                         String nodeOneName = nodeOne.getNodeName().trim();
                         if("node".equals(nodeOneName) && nodeOne.hasChildNodes()){
                             Map<String, Object> nodeMap = new HashMap<String, Object>();
                              Node threeNode = nodeOne.getFirstChild();
                                while(threeNode != null) {
                                    nodeMap.put(threeNode.getNodeName(), threeNode.getTextContent());
                                    threeNode = threeNode.getNextSibling();
                                }
                                nodeList.add(nodeMap);
                              }
                           nodeOne = nodeOne.getNextSibling();
                           }
                        }else{
                            sendMap.put(nodeName, nodeValue);
                        }
                    node = node.getNextSibling();
                    }                    
                sendMap.put("node", nodeList);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println(sendMap);
      }  


打印结果:{node=[{direct=1, market=0, symbol=600104, avgprice=21.010, holdnum=299, type=0},
             {direct=1, market=0, symbol=601818, avgprice=4.993, holdnum=4, type=0}],
              num=2, seqid=, client=0BF3F2D9A01797BBF05D6BC89877DC91, stockm=6778.84, cash=5669.13, ename=108-wc, code=0, totalm=12447.97, msg=成功}
posted @ 2015-08-09 10:09 藤本蔷薇 阅读(464) | 评论 (0)编辑 收藏
/Files/kokosang/DoubleUtil.txt



package frameWork.util;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**   
 * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精   
 * 确的浮点数运算,包括加减乘除和四舍五入。   
 */    
public class DoubleUtil {
//这个类不能实例化    
private DoubleUtil(){    
}  
//默认除法运算精度    
private static final int DEF_DIV_SCALE = 10;  
//默认的保留位数
private static DecimalFormat df=new DecimalFormat("0.00");  
/**
* 按照格式保留几位
* @param money  double数
* @param format 格式
* @return
*/
public static double  format(double money,String format){
if(format != null && format != ""){
df=new DecimalFormat(format); 
}
double moneyformat=new Double(df.format(money).toString());  
return moneyformat;
}
/**   
* 提供精确的加法运算。   
* @param v1 被加数   
* @param v2 加数   
* @return 两个参数的和   
*/    
public static double add(double v1,double v2){    
BigDecimal b1 = new BigDecimal(Double.toString(v1));    
BigDecimal b2 = new BigDecimal(Double.toString(v2));    
return b1.add(b2).doubleValue();    
}    
/**   
* 提供精确的减法运算。   
* @param v1 被减数   
* @param v2 减数   
* @return 两个参数的差   
*/    
public static double sub(double v1,double v2){    
BigDecimal b1 = new BigDecimal(Double.toString(v1));    
BigDecimal b2 = new BigDecimal(Double.toString(v2));    
return b1.subtract(b2).doubleValue();    
}    
/**   
* 提供精确的乘法运算。   
* @param v1 被乘数   
* @param v2 乘数   
* @return 两个参数的积   
*/    
public static double mul(double v1,double v2){    
BigDecimal b1 = new BigDecimal(Double.toString(v1));    
BigDecimal b2 = new BigDecimal(Double.toString(v2));    
return b1.multiply(b2).doubleValue();    
}    
/**   
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到   
* 小数点以后10位,以后的数字四舍五入。   
* @param v1 被除数   
* @param v2 除数   
* @return 两个参数的商   
*/    
public static double div(double v1,double v2){    
return div(v1,v2,DEF_DIV_SCALE);    
}    
/**   
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指   
* 定精度,以后的数字四舍五入。   
* @param v1 被除数   
* @param v2 除数   
* @param scale 表示表示需要精确到小数点以后几位。   
* @return 两个参数的商   
*/    
public static double div(double v1,double v2,int scale){    
if(scale<0){    
throw new IllegalArgumentException("The scale must be a positive integer or zero");    
}    
BigDecimal b1 = new BigDecimal(Double.toString(v1));    
BigDecimal b2 = new BigDecimal(Double.toString(v2));    
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();    
}    
/**   
* 提供精确的小数位四舍五入处理。   
* @param v 需要四舍五入的数字   
* @param scale 小数点后保留几位   
* @return 四舍五入后的结果   
*/    
public static double round(double v,int scale){    
if(scale<0){    
throw new IllegalArgumentException("The scale must be a positive integer or zero");    
}    
BigDecimal b = new BigDecimal(Double.toString(v));    
BigDecimal one = new BigDecimal("1");    
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();    
}    
/**   
* 提供精确的类型转换(Float)   
* @param v 需要被转换的数字   
* @return 返回转换结果   
*/    
public static float convertsToFloat(double v){    
BigDecimal b = new BigDecimal(v);    
return b.floatValue();    
}    
/**   
* 提供精确的类型转换(Int)不进行四舍五入   
* @param v 需要被转换的数字   
* @return 返回转换结果   
*/    
public static int convertsToInt(double v){    
BigDecimal b = new BigDecimal(v);    
return b.intValue();    
}    
/**   
* 提供精确的类型转换(Long)   
* @param v 需要被转换的数字   
* @return 返回转换结果   
*/    
public static long convertsToLong(double v){    
BigDecimal b = new BigDecimal(v);    
return b.longValue();    
}    
/**   
* 返回两个数中大的一个值   
* @param v1 需要被对比的第一个数   
* @param v2 需要被对比的第二个数   
* @return 返回两个数中大的一个值   
*/    
public static double returnMax(double v1,double v2){    
BigDecimal b1 = new BigDecimal(v1);    
BigDecimal b2 = new BigDecimal(v2);    
return b1.max(b2).doubleValue();    
}    
/**   
* 返回两个数中小的一个值   
* @param v1 需要被对比的第一个数   
* @param v2 需要被对比的第二个数   
* @return 返回两个数中小的一个值   
*/    
public static double returnMin(double v1,double v2){    
BigDecimal b1 = new BigDecimal(v1);    
BigDecimal b2 = new BigDecimal(v2);    
return b1.min(b2).doubleValue();    
}    
/**   
* 精确对比两个数字   
* @param v1 需要被对比的第一个数   
* @param v2 需要被对比的第二个数   
* @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1   
*/    
public static int compareTo(double v1,double v2){    
BigDecimal b1 = new BigDecimal(v1);    
BigDecimal b2 = new BigDecimal(v2);    
return b1.compareTo(b2);    
}
/**
* 格式化double
* @param arg0
* @param num
* @return
*/
public static String doubleFormat(double arg0,Integer num){
DecimalFormat df = new DecimalFormat("####.00"); 
/*DecimalFormat df2 = new DecimalFormat("##.00%");  
DecimalFormat df3 = new DecimalFormat("###,##0.00");*/
if(num !=null){
if(num == 1){
df = new DecimalFormat("####.0"); 
}else if(num == 2){
df = new DecimalFormat("####.00"); 
}else if(num == 3){
df = new DecimalFormat("####.000"); 
}else if(num == 4){
df = new DecimalFormat("####.0000"); 
}
}else{
df = new DecimalFormat("####"); 
}
if(df.format(arg0).contains(".")){
if(df.format(arg0).substring(0, df.format(arg0).indexOf(".")).length()<=0){
df = new DecimalFormat("0.00");
if(num !=null){
if(num == 1){
df = new DecimalFormat("0.0"); 
}else if(num == 2){
df = new DecimalFormat("0.00"); 
}else if(num == 3){
df = new DecimalFormat("0.000"); 
}else if(num == 4){
df = new DecimalFormat("0.0000"); 
}
}else{
df = new DecimalFormat("0"); 
}
}
}
return df.format(arg0);
}
/**
* 百分比格式化
* @param arg0
* @param num
* @return
*/
public static String percentageFormat(double arg0,Integer num){
DecimalFormat df = new DecimalFormat("##.00%");
if(num !=null){
if(num == 1){
df = new DecimalFormat("####.0%"); 
}else if(num == 2){
df = new DecimalFormat("####.00%"); 
}else if(num == 3){
df = new DecimalFormat("####.000%"); 
}else if(num == 4){
df = new DecimalFormat("####.0000%"); 
}
}else{
df = new DecimalFormat("####%"); 
}
if(df.format(arg0).contains(".")){
if(df.format(arg0).substring(0, df.format(arg0).indexOf(".")).length()<=0){
df = new DecimalFormat("0.00%");
if(num !=null){
if(num == 1){
df = new DecimalFormat("0.0%"); 
}else if(num == 2){
df = new DecimalFormat("0.00%"); 
}else if(num == 3){
df = new DecimalFormat("0.000%"); 
}else if(num == 4){
df = new DecimalFormat("0.0000%"); 
}
}else{
df = new DecimalFormat("0%"); 
}
}
}
return df.format(arg0);
}
/**
* double每三位短号分割
* @param arg0
* @param num
* @return
*/
public static String splitNumberFormat(double arg0,Integer num){
DecimalFormat df = new DecimalFormat("###,##0.00");
if(num !=null){
if(num == 1){
df = new DecimalFormat("###,##0.0"); 
}else if(num == 2){
df = new DecimalFormat("###,##0.00"); 
}else if(num == 3){
df = new DecimalFormat("###,##0.000"); 
}else if(num == 4){
df = new DecimalFormat("###,##0.0000"); 
}
}else{
df = new DecimalFormat("###,###"); 
}
return df.format(arg0);
}
}
posted @ 2015-08-07 13:47 藤本蔷薇 阅读(553) | 评论 (0)编辑 收藏
假如  redis  在/usr/local/bin

配置文件在/usr/local/redis-2.8.21 

 root@iZ239bujfzrZ:    /usr/local/bin# ./redis-server redis.conf nohup 
posted @ 2015-08-07 10:36 藤本蔷薇 阅读(206) | 评论 (0)编辑 收藏

      public static interface NUMBER{
public static String STR_FORMAT = "00000"; 
        static String TOKEN = null; 
}


//配资单号格式
    public static String AddOne(String code){
   Integer intHao = Integer.parseInt(code);
   intHao++;
   DecimalFormat df = new DecimalFormat(NUMBER.STR_FORMAT);
   return df.format(intHao);
    }
    
    public static void main(String[] args) {
    String code = "ASD0034252345234500001";
       String  xlh = code.substring(code.length()-5, code.length());
       System.out.println("数据库原有的最大序列号:"+xlh);
       if(xlh!=null){
      System.out.println("累加的新生成的序列号:"+AddOne(xlh));
       }else{
      System.out.println("最新的新生成的序列号:"+"00001"); //如果没有手动生成一条最小的
       }
  }
    
posted @ 2015-08-03 11:50 藤本蔷薇 阅读(440) | 评论 (0)编辑 收藏
    /**
     * 获取股票板块信息
     * 沪市A股 : 600、601、603 开头
     * 深市A股 : 000开头
     * 中小板 : 002开头
     * 创业板 : 300开头
     * 沪市新股申购:730
     * @param code
     * @return
     */
    public static int getPlateInfo(String code){
    if(code.startsWith("600") || code.startsWith("601") || code.startsWith("603")){
    return 0;
    }else if(code.startsWith("000")){
    return 1;
    }else if(code.startsWith("002")){
    return 2;
    }else if(code.startsWith("300")){
    return 3;
    }else if(code.startsWith("730")){
    return 4;
    }else {
    return 5;
    }
    }
posted @ 2015-07-29 19:07 藤本蔷薇 阅读(363) | 评论 (0)编辑 收藏
 
            我想把String 类型 yyyy-MM-dd 格式的数据转换成 String 类型  yyyyMMdd 格式,然后

String end_date = "2015-09-07";
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); 
        Date date_2 = formatter.parse(end_date);
String date_22 = formatter.format(date_2);
System.out.println(date_2);
System.out.println(date_22);

  
        打印出来结果是:
                Tue Dec 09 00:00:00 CST 2014
                20141209

       后来,吾家上神告知,不能直接转
      
                String end_date = "2015-09-07";
DateFormat format =new SimpleDateFormat("yyyy-MM-dd");
Date date_1 = format.parse(end_date);
format = new SimpleDateFormat("yyyyMMdd");  
String date_11 = format.format(date_1);
System.out.println(date_1);
System.out.println(date_11);


      打印出来结果是:

               Mon Sep 07 00:00:00 CST 2015
               20150907


    总结语: 吾家上神棒棒哒!!!

posted @ 2015-07-27 16:27 藤本蔷薇 阅读(197) | 评论 (0)编辑 收藏
         
             原本写了 if  else  判断股票所属板块的,觉得繁琐,就去改了下面的

                  public static void main(String[] args) {
    String code ="002348";
    String stock = "002".equals(code.substring(0,3)) ? "002" : code.substring(0,1);
System.out.println(stock);
}

               然后跑去得瑟,被鄙视了,然后  ↓↓↓↓

                 public static String getPlateInfo(String code){
    return code.startsWith("002") ? "002" : code.substring(0,1);
                  }

            还补了一刀,你看你写的什么玩意儿,哼,好想让他跪搓衣板
posted @ 2015-07-02 00:26 藤本蔷薇 阅读(224) | 评论 (0)编辑 收藏
Map<String, Object> userInfoMap = new HashMap<String, Object>();
// String data = JsonUtil.toJson(infoMap);
userInfoMap.put("agent", agent);
userInfoMap.put("ename", ename);
Map<String, Object> infoMap = SocketLogic.logic.userInfo(userInfoMap);
JSONObject rootObj = (JSONObject)JSONObject.toJSON(infoMap);
JSONArray nodeArr = rootObj.getJSONArray("node");
for(int i = 0; i < nodeArr.size(); i ++) {
authority = nodeArr.getJSONObject(i).get("authority").toString();          //交易权限
margin = nodeArr.getJSONObject(i).getLongValue("margin");  //保证金
warn = nodeArr.getJSONObject(i).getFloatValue("warn");      //警戒线
close = nodeArr.getJSONObject(i).getFloatValue("close");    //平仓线
end =  nodeArr.getJSONObject(i).getLongValue("end");       //结束时间
mainp = nodeArr.getJSONObject(i).getFloatValue("mainp"); //主板单票比例
midp = nodeArr.getJSONObject(i).getFloatValue("midp");   //中小板单票比例
growp = nodeArr.getJSONObject(i).getFloatValue("growp"); //创业板单票比例
   
}
posted @ 2015-06-29 19:20 藤本蔷薇 阅读(324) | 评论 (1)编辑 收藏
转自 : http://wzf7065.iteye.com/blog/1567587



public class StringTest {
    private static int counter = 0;
    public static void main(String[] args) {
    String str1 = "sd& ^^java***java(((java";
    String str2 = "java";
    int i = countStr(str1, str2);
    System.out.println("i---------->" + i);
    }
    /**
     * 判断str1中包含str2的个数
      * @param str1
     * @param str2
     * @return counter
     */
    public static int countStr(String str1, String str2) {
        if (str1.indexOf(str2) == -1) {
       return 0;
        } else if (str1.indexOf(str2) != -1) {
       counter++;
       countStr(str1.substring(str1.indexOf(str2) +
                   str2.length()), str2);
               return counter;
        }
       return 0;
    }
}
posted @ 2015-06-23 14:47 藤本蔷薇 阅读(1404) | 评论 (0)编辑 收藏

         select * from  table order by  id   limit    (intPage - 1) * PageRow    , intPage * PageRow




去重SQL

select product_code,count(*) as count from h_product_info group by product_code having count>1; 
select d_date,count(*) as count from h_oddnum group by d_date having count>1 order by d_date desc; 
delete from h_oddnum where id in (select min(id) from h_oddnum group by d_date having count(d_date) > 1) 
create table tmp as select min(id) as col1 from blur_article group by title;
delete from blur_article where id not in (select col1 from tmp); 
drop table tmp;
select min(id) from h_oddnum group by d_date having count(d_date) > 1
create table tmp as select min(id) as col1 from h_oddnum group by d_date having count(d_date) > 1;
delete from h_oddnum where id not in (select col1 from tmp); 
drop table tmp;
insert into h_oddnum(id,d_date,d_code) values('e1d64c5f536b4b1bbfe9f04511c01f3f','20150422172207','00001');
posted @ 2015-05-19 17:12 藤本蔷薇 阅读(161) | 评论 (0)编辑 收藏
posted @ 2015-05-04 10:18 藤本蔷薇 阅读(137) | 评论 (0)编辑 收藏

只能有四位,且可以是数字和字母的混合


[A-Za-z0-9]{4}
posted @ 2015-04-24 11:53 藤本蔷薇 阅读(174) | 评论 (0)编辑 收藏
 double rounded = (b1.multiply(b2).multiply(b3)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

java 四舍五入保留小数(copy)

 
// 方式一:
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 
// 方式二:
new java.text.DecimalFormat("#.00").format(3.1415926);
// #.00 表示两位小数 #.0000四位小数 以此类推…
 
// 方式三:
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。
 
//方法四:
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15为就在前面补0

posted @ 2015-04-24 11:47 藤本蔷薇 阅读(721) | 评论 (0)编辑 收藏

在项目当中,对于double类型数据的使用比较频繁。尤其是处理金钱相关的数据,在使用Double类型的数据时,涉及到精度,显示,四舍五入等等问题。

1.  显示问题,当double 数据 小于 0.0001 大于等于 10000000时,直接转为String输出时,会显示为科学计数法。

   1:  double double1 = 0.00009;
   2:  System.out.println(double1); // 9.0E-5
   3:         
   4:  double double2 = 10000000;
   5:  System.out.println(double2); // 1.0E7

需要使用DecimalFormat 转化输出

   1:  DecimalFormat formate = new DecimalFormat("#.######");
   2:  System.out.println(formate.format(double1)); //0.00009
   3:          
   4:  formate = new DecimalFormat("########.##");
   5:  System.out.println(formate.format(double2));//10000000
 
这里面会有四舍五入问题:
   1:  double double1 = 0.000096789;
   2:  DecimalFormat formate = new DecimalFormat("#.######");
   3:  System.out.println(formate.format(double1)); //0.000097

当取小数点后六位时,会在第七位四舍五入。

 

2. 误差问题,两个Double类型的数,进行运算。经常会产生误差。

   1:  System.out.println(0.05 + 0.01); //0.060000000000000005
   2:  System.out.println(1.0 - 0.42);  //0.5800000000000001
   3:  System.out.println(4.015 * 100); //401.49999999999994
   4:  System.out.println(123.3 / 100); //1.2329999999999999

看似简单的计算,结果却出人意料。解决方法是将Double转为BigDecimal。调用BigDecimal的 运算。

   1:   double d1 = 0.05;
   2:   double d2 = 0.01;
   3:   BigDecimal b1 = new BigDecimal(Double.toString(d1));
   4:   BigDecimal b2 = new BigDecimal(Double.toString(d2));
   5:   System.out.println(b1.add(b2));  //0.06
 
需要注意的是,如果new BigDecimal()时使用的是double类型的构造方法。问题依旧是可能存在的,这边要使用String参数的构造方法。
 
3. 两个double比较的问题。将double数的运算结果和0比较。由于精度问题,比如if(1-0.999999999999999999 == 0.0) 这个是成立的。
 
附上double数的运算:
   1:      /**
   2:       * 两个Double数相加
   3:       * 
   4:       * @param v1
   5:       * @param v2
   6:       * @return
   7:       */
   8:      public static double doubleAdd(Double v1, Double v2) {
   9:   
  10:          BigDecimal b1 = new BigDecimal(v1.toString());
  11:   
  12:          BigDecimal b2 = new BigDecimal(v2.toString());
  13:   
  14:          return b1.add(b2).doubleValue();
  15:   
  16:      }
  17:   
  18:      /**
  19:       * 两个Double数相减
  20:       * 
  21:       * @param v1
  22:       * @param v2
  23:       * @return
  24:       */
  25:      public static double doubleSub(Double v1, Double v2) {
  26:   
  27:          BigDecimal b1 = new BigDecimal(v1.toString());
  28:   
  29:          BigDecimal b2 = new BigDecimal(v2.toString());
  30:   
  31:          return b1.subtract(b2).doubleValue();
  32:   
  33:      }
  34:   
  35:      /**
  36:       * 两个Double数相乘
  37:       * 
  38:       * @param v1
  39:       * @param v2
  40:       * @return
  41:       */
  42:      public static double doubleMul(Double v1, Double v2) {
  43:   
  44:          BigDecimal b1 = new BigDecimal(v1.toString());
  45:   
  46:          BigDecimal b2 = new BigDecimal(v2.toString());
  47:   
  48:          return b1.multiply(b2).doubleValue();
  49:   
  50:      }
  51:   
  52:      /**
  53:       * 两个Double数相除
  54:       * 
  55:       * @param v1
  56:       * @param v2
  57:       * @return
  58:       */
  59:      public static double doubleDiv(Double v1, Double v2) {
  60:   
  61:          BigDecimal b1 = new BigDecimal(v1.toString());
  62:   
  63:          BigDecimal b2 = new BigDecimal(v2.toString());
  64:   
  65:          return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
  66:                  .doubleValue();
  67:   
  68:      }
  69:   
  70:      /**
  71:       * 两个Double数相除,并保留scale位小数
  72:       * 
  73:       * @param v1
  74:       * @param v2
  75:       * @param scale
  76:       * @return
  77:       */
  78:      public static double doubleDiv(Double v1, Double v2, int scale) {
  79:   
  80:          if (scale < 0) {
  81:   
  82:              throw new IllegalArgumentException(
  83:   
  84:              "The scale must be a positive integer or zero");
  85:   
  86:          }
  87:          int DEF_DIV_SCALE = 10;
  88:   
  89:          BigDecimal b1 = new BigDecimal(v1.toString());
  90:   
  91:          BigDecimal b2 = new BigDecimal(v2.toString());
  92:   
  93:          return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  94:   
  95:      }
posted @ 2015-04-22 18:11 藤本蔷薇 阅读(169) | 评论 (0)编辑 收藏
语句对的,但不能执行
delete from h_oddnum where id in (select min(id) from h_oddnum group by d_date having count(d_date) > 1) 

只能创建临时表删除

create table tmp as select min(id) as col1 from h_oddnum group by d_date having count(d_date) > 1;
delete from h_oddnum where id not in (select col1 from tmp); 
drop table tmp;
posted @ 2015-04-22 16:50 藤本蔷薇 阅读(131) | 评论 (0)编辑 收藏
    Date date = new Date("2014/1/10 18:20");
        Date date2 = new Date("2014/1/11 3:5");
        long temp = date2.getTime() - date.getTime();    //相差毫秒数
        long hours = temp / 1000 3600;                //相差小时数
        long temp2 = temp % (1000 3600);
        long mins = temp2 / 1000 60;                    //相差分钟数
        System.out.println("date2 与 date 相差" + hours + "小时"+ mins + "分钟");
posted @ 2015-04-16 10:40 藤本蔷薇 阅读(127) | 评论 (0)编辑 收藏
启动jmeter时
invalid or corrupt jarfile ApacheJmeter.jar  
errorlevel=1

后来才发现是本地jdk配置版本过低是jdk1.5
如是将环境变量里面的java_home 里面的F:\Installed---success---go\jdk1.5改为C:\Program Files\Java\jdk1.7.0_45
运行
jmeter解压文件下面bin里面的jmeter.bat 启动成功










posted @ 2015-04-14 10:20 藤本蔷薇 阅读(447) | 评论 (0)编辑 收藏
   BigDecimal b1 = new BigDecimal(Double.toString(service_charge*matching_term));
   BigDecimal b2 = new BigDecimal(Double.toString(0.7));
            BigDecimal b3 = new BigDecimal(Double.toString(0.3));
      
//利息
Double interest = b1.multiply(b2).doubleValue();
posted @ 2015-04-13 14:09 藤本蔷薇 阅读(116) | 评论 (0)编辑 收藏




错误的原因:

     调用第三方支付,出现问题,起先以为是重启服务器造成的,后来查看源代码,运行,才发现,第三方回调时被拦截。


posted @ 2015-03-26 16:36 藤本蔷薇 阅读(159) | 评论 (0)编辑 收藏
String ids = "as,ad,sdf,qwe,rwer,wfv";
for(String id:ids.split(",")){
System.out.println(id);
}


结果:
as
ad
sdf
qwe
rwer
wfv
posted @ 2015-03-18 09:39 藤本蔷薇 阅读(425) | 评论 (2)编辑 收藏



  var arr = [{ name: "john", lang: "js" },{ name: "nailwl", lang: "jquery" },{ name: "吴磊", lang: "ext" }]; 
  $.each( arr, function(index, content)
  { 
   alert( "the man's no. is: " + index + ",and " + content.name + " is learning " + content.lang ); 
  });
posted @ 2015-03-17 16:18 藤本蔷薇 阅读(196) | 评论 (0)编辑 收藏


 InetAddress address=InetAddress.getLocalHost();

 System.out.println(address.getHostAddress());
posted @ 2015-03-12 18:55 藤本蔷薇 阅读(353) | 评论 (0)编辑 收藏
 /**
 * Description: 向FTP服务器上传文件
 * @Version      1.0
 * @param url FTP服务器hostname
 * @param port  FTP服务器端口
 * @param username FTP登录账号
 * @param password  FTP登录密码
 * @param path  FTP服务器保存目录
 * @param filename  上传到FTP服务器上的文件名
 * @param input  输入流
 * @return 成功返回true,否则返回false *
 */
public static boolean uploadFile(String url,int port,String username,String password,String path,String filename,InputStream input){
 boolean success = false;
 FTPClient ftp = new FTPClient();
 ftp.setControlEncoding("GBK");
 try {
  int reply;
  ftp.connect(url,port);// 连接FTP服务器
  // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  ftp.login(username, password);// 登录
  reply = ftp.getReplyCode();
  if (!FTPReply.isPositiveCompletion(reply)) {
   ftp.disconnect();
   return success;
  }
  ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
  ftp.makeDirectory(path);
  ftp.changeWorkingDirectory(path);
  ftp.storeFile(filename, input);
  input.close();
  ftp.logout();
  success = true;
 } catch (IOException e) {
  e.printStackTrace();
 } finally {
  if (ftp.isConnected()) {
   try {
    ftp.disconnect();
   } catch (IOException ioe) {
   }
  }
 }
 return success;
}
/**
 * 将本地文件上传到FTP服务器上 *
 * 
 *    int port,// FTP服务器端口
  String username, // FTP登录账号
  String password, // FTP登录密码
  String path, // FTP服务器保存目录
  String filename, // 上传到FTP服务器上的文件名
  String orginfilename // 输入流文件名
  
 */
public static void upLoadFromProduction(String url,int port,String username,String password,String path,String filename,String orginfilename) {
 try {
  FileInputStream in = new FileInputStream(new File(orginfilename));
  boolean flag = uploadFile(url, port,username, password, path,filename, in);
  System.out.println(flag);
 } catch (Exception e) {
  e.printStackTrace();
 }
}
 
 
public static void main(String[] args) {
 
upLoadFromProduction("127.40.1.80",21,"www", "huahua", "/ali/www/Cash/photo", "123.jpg", "C:/Users/Administrator/Desktop/11.jpg");
}
 






/**
 * Description: 向FTP服务器上传文件
 * @Version      1.0
 * @param url FTP服务器hostname
 * @param port  FTP服务器端口
 * @param username FTP登录账号
 * @param password  FTP登录密码
 * @param path  FTP服务器保存目录
 * @param filename  上传到FTP服务器上的文件名
 * @param input  输入流
 * @return 成功返回true,否则返回false *
 */
public static boolean uploadFile(String url,int port,String username,String password,String path,String filename,String customerNo,InputStream input){
 boolean success = false;
 FTPClient ftp = new FTPClient();
 ftp.setControlEncoding("GBK");
 try {
  int reply;
  ftp.connect(url,port);// 连接FTP服务器
  // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
  ftp.login(username, password);// 登录
  reply = ftp.getReplyCode();
  if (!FTPReply.isPositiveCompletion(reply)) {
   ftp.disconnect();
   return success;
  }
//读取所有文件,根据文件名模糊删除远程照片
 FTPFile[] ftpFiles = null;
 ftpFiles = ftp.listFiles(path);
 for (int i = 0; ftpFiles != null && i < ftpFiles.length; i++) {
  FTPFile file = ftpFiles[i];
  if (file.isFile()) {
  if(file.getName().startsWith(customerNo)|| file.getName().endsWith(customerNo)){
  ftp.deleteFile(path+"/"+file.getName());
  }
  
  }
 }
  ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
  ftp.makeDirectory(path);
  ftp.changeWorkingDirectory(path);
  ftp.storeFile(filename, input);
  input.close();
  ftp.logout();
  success = true;
 } catch (IOException e) {
  e.printStackTrace();
 } finally {
  if (ftp.isConnected()) {
   try {
    ftp.disconnect();
   } catch (IOException ioe) {
   }
  }
 }
 return success;
}
posted @ 2015-03-12 18:13 藤本蔷薇 阅读(133) | 评论 (0)编辑 收藏

  1. 调用远程接口,返回的是http文件流,打开相关url,就可以直接下载txt文件,
    要对这相关的文件内容进行操作,不保存,可以调用下面这个方法直接读取文件流内容,测试了下,是可以的




    public
     String getYCFile(String urlPath) {  
  2.         String readStr = "";  
  3.         try {  
  4.             try {  
  5.                 String strUrl = urlPath.trim();  
  6.                 URL url = new URL(strUrl);  
  7.                 HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();  
  8.                 urlCon.setConnectTimeout(10000);  
  9.                 urlCon.setReadTimeout(30000);  
  10.                 BufferedReader in = new BufferedReader(new InputStreamReader(  
  11.                         urlCon.getInputStream(), "GBK"));  
  12.                 String inputLine = " ";  
  13.                 while ((inputLine = in.readLine()) != null) {  
  14.                     readStr += inputLine.trim();  
  15.                 }  
  16.                 in.close();  
  17.                 return readStr;  
  18.             } catch (IOException e) {  
  19.                 readStr = "";  
  20.             }  
  21.         } catch (Exception e) {  
  22.             readStr = "";  
  23.         }  
  24.         return readStr;  
  25.     } 
posted @ 2015-03-06 15:40 藤本蔷薇 阅读(1054) | 评论 (0)编辑 收藏
 public static boolean delFilesByPath(String path,String str){
 //参数说明---------path:要删除的文件的文件夹的路径---------str:要匹配的字符串的头
 boolean b=false;
 File file = new File(path); 
 File[] tempFile = file.listFiles(); 
 for(int i = 0; i < tempFile.length; i++){ 
  if(tempFile[i].getName().startsWith(str)||tempFile[i].getName().endsWith(str)){ 
   tempFile[i].delete();
   b=true;
  }
 }
 return b;
}
 
public static void main(String[] args) {
 String path="F:/Installed---success---go/apache/webapps/images";
 String str="181";
 if(delFilesByPath(path,str)){
  System.out.println(path+"中包含"+str+"的文件已经全部删除成功!");
 }else{
  System.out.println(path+"中包含"+str+"的文件已经删除失败或该文件夹下不存在这类文件!");
 }
}
posted @ 2015-03-06 10:09 藤本蔷薇 阅读(161) | 评论 (0)编辑 收藏
posted @ 2015-02-10 13:50 藤本蔷薇 阅读(126) | 评论 (0)编辑 收藏

 Calendar.getInstance().get(Calendar.YEAR)
posted @ 2015-01-23 00:21 藤本蔷薇 阅读(136) | 评论 (0)编辑 收藏
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        c.add(Calendar.DAY_OF_MONTH, 1);
        System.out.println("增加一天后日期 : "+sf.format(c.getTime()));
posted @ 2015-01-21 15:26 藤本蔷薇 阅读(179) | 评论 (0)编辑 收藏
select SYSDATE(),date_add(create_date, interval 30 minute);



MySQL 为日期增加一个时间间隔:date_add()

set @dt = now();
select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day); -- sub 1 day

select case when date_add(create_date, interval 30 minute)<SYSDATE()  then 1 else 0 end 
from  table 
where id=?




posted @ 2015-01-08 10:08 藤本蔷薇 阅读(192) | 评论 (0)编辑 收藏


刚刚调试接口,sql 查询时 遇到一个问题,报错  “java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

其原因是数据库字段存在这样的值



百度了下:
这是因为 “0000-00-00 00:00:00”在mysql中是作为一个特殊值存在的,但是在Java中, java.sql.Date 会被视为 不合法的值,被JVM认为格式不正确。

解决办法:

在jdbc的url加上   zeroDateTimeBehavior参数:

datasource.url=jdbc:mysql://localhost:3306/pe?useUnicode=true&characterEncoding=gbk &zeroDateTimeBehavior=convertToNull


   完了过后,报异常

The reference to entity "characterEncoding" must end with the ';' delimiter   

其原因可能是在Properties文件或者xml文件中忘记进行特殊符号的转译了,


      需要把后面的;修噶为&amp;修改为

useUnicode=true&amp;characterEncoding=UTF-8 &amp;zeroDateTimeBehavior=convertToNull 

有以下几类字符要进行转义替换:

&lt;

<

小于号

&gt;

>

大于号

&amp;

&

&apos;

'

单引号

&quot;

"

双引号



问题解决





posted @ 2014-12-30 11:37 藤本蔷薇 阅读(205) | 评论 (0)编辑 收藏

Parameter index out of range (1 > number of parameters, which is 0)

刚刚遇到这个错,百度了下,说

应该是调用越界问题吧:
"参数索引越界"(参数不能少于1个)

一般是 sql语句少了问号
sql语句有问题


后来仔细看了下,原来是自己的SQl的where 语句中?我写成了中文的输入法中的? 粗心啊
posted @ 2014-12-26 14:26 藤本蔷薇 阅读(217) | 评论 (0)编辑 收藏
str.append(" left join (
select customer_no,(case  when auth_type=1 then count(route) when auth_type=2 then count(route) when auth_type=3 then count(route) end) as auth_image from h_auth_info where audit_sign=1) h6
");




select  auth_info.customer_no,
(case when auth_info.auth_image=3 then 1 
      when auth_info.auth_image<3 then 0 
end)
as auth_result
from(
select customer_no,
(case  when auth_type=1 then count(route) 
       when auth_type=2 then count(route) 
       when auth_type=3 then count(route) 
 end) 
as auth_image 
from h_auth_info 
where audit_sign=1  and customer_no='18632116655'
)  auth_info
posted @ 2014-12-26 09:14 藤本蔷薇 阅读(180) | 评论 (0)编辑 收藏
  /**
         * 校验银行卡卡号
         * 
@param cardId
         * 
@return
         
*/
        public static boolean checkBankCard(String cardId) {
                 char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));
                 if(bit == 'N'){
                     return false;
                 }
                 return cardId.charAt(cardId.length() - 1) == bit;
        }
       
        /**
         * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
         * 
@param nonCheckCodeCardId
         * 
@return
         
*/
        public static char getBankCardCheckCode(String nonCheckCodeCardId){
            if(nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0
                    || !nonCheckCodeCardId.matches("\\d+")) {
                //如果传的不是数据返回N
                return 'N';
            }
            char[] chs = nonCheckCodeCardId.trim().toCharArray();
            int luhmSum = 0;
            for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
                int k = chs[i] - '0';
                if(j % 2 == 0) {
                    k *= 2;
                    k = k / 10 + k % 10;
                }
                luhmSum += k;           
            }
            return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0');
        }



   //   测试代码


public class ResTest {
public static void main(String[] args) {
   String reg = "18632116655";
   String data = JsonUtil.toJson(reg);
   String post = HttpClient.post("http://192.168.199.127:8067/openapi/rest/hometop/homeinfo", AESUtil.encrypt(data));
   System.out.println(post);
   System.out.println(AESUtil.decrypt(post));
}
}











/**
* author:qiaoyongjun
* StrNo:用户输入的身份证件号码
* _id:用来承载错误信息的控件ID号,用来进行友好提示
*判断身份证号码格式函数
*公民身份号码是特征组合码,
*排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码
*如果验证通过 返回 true
*/
function isChinaIDCard(StrNo, _Id) {
var error = document.getElementById(_Id);
StrNo = StrNo.toString();
if (StrNo.length == 15) {
if (!isValidDate("19" + StrNo.substr(6, 2), StrNo.substr(8, 2),
StrNo.substr(10, 2), _Id)) {
return false;
}
} else if (StrNo.length == 18) {
if (!isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo
.substr(12, 2), _Id)) {
return false;
}
} else {
error.innerHTML = "";
error.innerHTML = "输入的身份证号码必须为15位或者18位!";
return false;
}
if (StrNo.length == 18) {
var a, b, c
if (!isNumber(StrNo.substr(0, 17))) {
error.innerHTML = "";
error.innerHTML = "身份证号码错误,前17位不能含有英文字母!";
return false;
}
a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1))
* 9 + parseInt(StrNo.substr(2, 1)) * 10;
a = a + parseInt(StrNo.substr(3, 1)) * 5
+ parseInt(StrNo.substr(4, 1)) * 8
+ parseInt(StrNo.substr(5, 1)) * 4;
a = a + parseInt(StrNo.substr(6, 1)) * 2
+ parseInt(StrNo.substr(7, 1)) * 1
+ parseInt(StrNo.substr(8, 1)) * 6;
a = a + parseInt(StrNo.substr(9, 1)) * 3
+ parseInt(StrNo.substr(10, 1)) * 7
+ parseInt(StrNo.substr(11, 1)) * 9;
a = a + parseInt(StrNo.substr(12, 1)) * 10
+ parseInt(StrNo.substr(13, 1)) * 5
+ parseInt(StrNo.substr(14, 1)) * 8;
a = a + parseInt(StrNo.substr(15, 1)) * 4
+ parseInt(StrNo.substr(16, 1)) * 2;
b = a % 11;
if (b == 2) //最后一位为校验位  
{
c = StrNo.substr(17, 1).toUpperCase(); //转为大写X  
} else {
c = parseInt(StrNo.substr(17, 1));
}
switch (b) {
case 0:
if (c != 1) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:1";
return false;
}
break;
case 1:
if (c != 0) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:0";
return false;
}
break;
case 2:
if (c != "X") {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:X";
return false;
}
break;
case 3:
if (c != 9) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:9";
return false;
}
break;
case 4:
if (c != 8) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:8";
return false;
}
break;
case 5:
if (c != 7) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:7";
return false;
}
break;
case 6:
if (c != 6) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:6";
return false;
}
break;
case 7:
if (c != 5) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:5";
return false;
}
break;
case 8:
if (c != 4) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:4";
return false;
}
break;
case 9:
if (c != 3) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:3";
return false;
}
break;
case 10:
if (c != 2) {
error.innerHTML = "";
error.innerHTML = "身份证号码校验位错:最后一位应该为:2";
return false;
}
}
} else {//15位身份证号  
if (!isNumber(StrNo)) {
error.innerHTML = "";
error.innerHTML = "身份证号码错误,前15位不能含有英文字母!";
return false;
}
}
return true;
}
/**
* 验证身份证件中的日期是否合法有效
* @param iY
* @param iM
* @param iD
* @param _id
* @return
*/
function isValidDate(iY, iM, iD, _id) {
if (iY > 2200 || iY < 1900 || !isNumber(iY)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "输入身份证号,年度" + iY + "非法!";
return false;
}
if (iM > 12 || iM <= 0 || !isNumber(iM)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "输入身份证号,月份" + iM + "非法!";
return false;
}
if (iD > 31 || iD <= 0 || !isNumber(iD)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "输入身份证号,日期" + iD + "非法!";
return false;
}
return true;
}
/**
* 验证是否为数字
* @param oNum
* @return
*/
function isNumber(oNum) {
if (!oNum)
return false;
var strP = /^\d+(\.\d+)?$/;
if (!strP.test(oNum))
return false;
try {
if (parseFloat(oNum) != oNum)
return false;
} catch (ex) {
return false;
}
return true;
}
posted @ 2014-12-21 22:09 藤本蔷薇 阅读(1727) | 评论 (0)编辑 收藏
1.在JSP页面中引入sun的核心标签库
     <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
2.在JSP页面中引入sun的函数标签库
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions"  prefix="fn"%>
3.判断是否为空
    <c:if test="${!empty map}">
    </c:if>
4.判断长度大于0
    <c:if test="${fn:length(map)>0}">
    </c:if>
注:fn:length(obj),对于空对象也会返回0
posted @ 2014-12-16 11:22 藤本蔷薇 阅读(507) | 评论 (0)编辑 收藏
 不想说技术,只想说——觉得iBATIS还是蛮强大的,嗯,就这句话
posted @ 2014-12-04 18:12 藤本蔷薇 阅读(78) | 评论 (0)编辑 收藏



$('input,select,textarea',$('form[name="my_form"]')).attr('readonly',true);
posted @ 2014-11-28 20:12 藤本蔷薇 阅读(324) | 评论 (0)编辑 收藏
SELECT to_char(add_months(sysdate,to_number(t.month)),'yyyymmddhhmmss')   from customer t
posted @ 2014-11-27 09:28 藤本蔷薇 阅读(1598) | 评论 (0)编辑 收藏
    好多东西用是用了,一直没有太细的研究过,很多细节方面就这么放过了
   比如说,<a href="#"> 与 <a href="javascript:void(0)">

    今天在页面中间实现滑动标签改变块内容时发现
    <a href="#"> 这种写法实现功能时,每次改变块,页面都会从顶部开始,明显不合理

    <a href="javascript:void(0)">才会在当前位置改变块内容
posted @ 2014-11-24 11:03 藤本蔷薇 阅读(122) | 评论 (0)编辑 收藏
   var state = {
title: "index",
url: 原路径
   }
   var url=希望改成的路径;

            window.history.pushState(state,document.title,url);
posted @ 2014-11-23 23:12 藤本蔷薇 阅读(161) | 评论 (0)编辑 收藏
select * from 表 as of timestamp sysdate-(1/(24)); --恢复1小时前的表中的数据 
posted @ 2014-11-19 11:48 藤本蔷薇 阅读(993) | 评论 (0)编辑 收藏

当多个页面公用同一个页面,希望能正确返回上一页时,可以用此办法达到想要的效果

${header.Referer } 可以通过el表达式做到

<div class="pro-dt-top">
<h1><b><a href="perclass.shtml">投资园区</a></b><a href="${header.Referer}" style="font-size: 16px;">>列表</a>><em>${title}</em>
</h1>
</div>

     
下图是网上资料


el中的作用域

el中的作用域对应关系
pageContext(1)当前页的pageContext对象
pageScope把page作用域中的数据映射为一个map对象
requestScope(2)request作用域中的数据映射为一个map对象
sessionScope把session作用域中的数据映射为一个map对象
applicationScope把application作用域中的数据映射为一个map对象
param对应request.getParameter()
paramValues(3)对应request.getParameterValues()
header(4)对应request.getHeader()
headerValues对应request.getHeaderValues()
cookie(5)对应request.getCookies()
initParam(6)对应ServletContext.getInitParamter()


posted @ 2014-11-18 17:28 藤本蔷薇 阅读(138) | 评论 (0)编辑 收藏
 在s:iterator中${st.index}用于读取序列号
   #st.odd  判断是否是偶数行

   <s:iterator value="qlist" status="st">
    
     <s:if test="#st.odd==true">
      第${st.index}行  <li class="odd"><a href="">${title}</a></li>
     </s:if>
     <s:else>
      第${st.index}行 <li><a href="">${title}</a></li>
    </s:else>
 </s:iterator>



除了使用#status.even判断是否偶数行外,还有其他几个属性可以使用:

1:#status.odd        是否奇数行

2:#status.count    当前行数

3:#status.index    当前行的序号,从0开始『#status.count=#status.index+1』

4:#status.first     是否第一行

5:#status.last      是否最后一行

6:#status.modules(int)  当前行数取模
posted @ 2014-11-18 09:47 藤本蔷薇 阅读(254) | 评论 (0)编辑 收藏
  1.       <div class="vcode">
            <h2>验证码</h2>
            <input class="vcode-box" id="verifycode">
            <img src="/servelt/image22" alt="yanzhengma" id="code" >
            <small><a href="JavaScript:refresh();" >换一张</a></small>
          </div>  



      
    <script type="text/javascript">  
        function refresh(){
            document.getElementById('code').src="/servelt/image22?id="+Math.random(); 
        }
            
        function submit(){
            var title=$("#title").val();
            var title=$("#content").val();
            var title=$("#phone").val();
            var title=$("#verifycode").val();
            $.ajax({
            
            
            })
        }

    </script>





    <img src="AuthCodeServlet" onclick="refresh(this)"/>

在一般情况下刷新一次页面,验证码图片也会变化一次,但有时候我们希望验证码图片变化时不刷新整个页面,也就是局部刷新的效果,so easy,代码如下:

Js代码
  1. <script type="text/javascript">
  2. function refresh(obj){
  3. obj.src="AuthCodeServlet?id="+Math.random();
  4. }
  5. </script>

其中需要注意的是请求路径中必须要有参数(参数名可随意定义),参数值不能是一个固定值而是随机数。

代码中obj对象是指img标签对象。

posted @ 2014-11-14 23:01 藤本蔷薇 阅读(188) | 评论 (0)编辑 收藏
<a href="#" style="cursor:default">aaa</a>
default 	默认光标(通常是一个箭头)
auto 默认。浏览器设置的光标。
crosshair 光标呈现为十字线。
pointer 光标呈现为指示链接的指针(一只手)
move 此光标指示某对象可被移动。
e-resize 此光标指示矩形框的边缘可被向右(东)移动。
ne-resize 此光标指示矩形框的边缘可被向上及向右移动(北/东)。
nw-resize 此光标指示矩形框的边缘可被向上及向左移动(北/西)。
n-resize 此光标指示矩形框的边缘可被向上(北)移动。
se-resize 此光标指示矩形框的边缘可被向下及向右移动(南/东)。
sw-resize 此光标指示矩形框的边缘可被向下及向左移动(南/西)。
s-resize 此光标指示矩形框的边缘可被向下移动(北/西)。
w-resize 此光标指示矩形框的边缘可被向左移动(西)。
text 此光标指示文本。
wait 此光标指示程序正忙(通常是一只表或沙漏)。
help 此光标指示可用的帮助(通常是一个问号或一个气球)。
posted @ 2014-11-12 11:12 藤本蔷薇 阅读(392) | 评论 (0)编辑 收藏
//点击时根据<a href="" name="column"> 中的name来控制div 的显隐 

  $(document).ready(function(){
    $("a[name='column']").click(function(){
    var a  = this.id;
    $("div[class='hword2 fz14']").each(function(){
     var a = $(this).attr("name");    
     if( $(this).attr("name")==a){
     $(this).show();
     }else{
       $(this).hide();
     } 
      }); 
   
  }); 
   
 })
posted @ 2014-11-11 16:40 藤本蔷薇 阅读(138) | 评论 (0)编辑 收藏
select * from tabA where rownum<10 返回前10条,注意排序问题
返回10 - 20 条
select * from ((select * from tabA rownum<20) minus (select * from tabA rownum<10))
posted @ 2014-11-10 21:26 藤本蔷薇 阅读(1587) | 评论 (0)编辑 收藏
Myecliese 启动项目报错-----前言中不允许有内容

我的是因为修改tomcat下面的server.xml文件时保存时编码格式存为Unicode格式了。改回来就ok了
posted @ 2014-11-07 14:05 藤本蔷薇 阅读(4921) | 评论 (0)编辑 收藏
例如安装路径是(F:\InstallSucces\apache\bin)

第一步:选择安装的盘    f:
第二部:进入    cd
第三部:路径    cd   InstallSucces\apache
第四部:进入bin   cd bin
第五部:查找版本  httpd -v 



posted @ 2014-11-07 10:10 藤本蔷薇 阅读(765) | 评论 (0)编辑 收藏


       一网友问我为什么他写了 h:hidden后报错----- ----hidden must be empty,but is not 

      我问他是不是 iderateId和l:iterate不一致,要么h:hidden  木有写在iterate里面 

      他说都是对的,而且b:write 了一句这个属性是有显示的,就是h:hidden和h:text不对

       结果是因为 <h:hidden iterateId="id1" property="completeDt" />木有结束符,少了"/"斜杠

       
posted @ 2014-10-29 14:54 藤本蔷薇 阅读(98) | 评论 (0)编辑 收藏
    ROW_NUMBER()帮助更好的限制结果集行数的功能)
   (ROW_NUMBER()函数可以计算每一行数据在结果集中的行号(从1开始计数))

   select ROW_NUMBER() OVER(order by FSalary),FNumber,FName,FSalary,FAge from T_Employee

     开窗函数只能出现在 SELECT 或 ORDER BY 子句中::也就是说ROW_NUMBER()不能用在WHERE语句中.

    select * from (select row_number()over(order by fsalary desc)as rownum,fname,fname,fsalary,fage from t_employee) as a where a.rownum>=3 and a.rownum<=5


       MSSQLServer 2000(提 供 了 TOP 关 键 字 用来 返回 结 果 集 中的 前 N条 记录)

    select top 5 * from T_Employee order by FSalary Desc    表示:按照工资降序排列的前五条记录

检索工资水平排在前五位(按照工资从高到低)的员工信息.
    SELECT top 3 * FROM T_Employee WHERE FNumber NOT IN(SELECT TOP 5 FNumber FROM T_Employee ORDER BY FSalary DESC)ORDER BY FSalary DESC

       Oracle(Oracle中支持窗口函数ROW_NUMBER(),其用法和MSSQLServer2005中相同),不过oracle提供了更方便的特性,用来计算行号
       oracle为每个结果集都默认增加了一个默认的表示行号的列,这个列的名称为rownum(从1开始计数)       

     SELECT * FROM T_Employee WHERE rownum<=6 ORDER BY FSalary Desc

        当进行检索的时候,对于第一条数据,其rownum为1,因为符合“WHERE rownum<=6”所以被放到了检索结果中;当检索到第二条数据的时候,其rownum为2,因为符合“WHERE                          rownum<=6”所以被放到了检索结果中……依次类推,直到第七行。

          ---这是错误的代码 SELECT rownum,FNumber,FName,FSalary,FAge FROM T_Employee WHERE rownum BETWEEN 3 AND 5 ORDER BY FSalary DESC

        当进行检索的时候,对于第一条数据,其rownum为1,因为不符合“WHERE rownumBETWEEN 3 AND 5”,所以没有被放到了检索结果中;当检索到第二条数据的时候,因为第
一条数据没有放到结果集中,所以第二条数据的rownum仍然为1,而不是我们想像的2,所以因为不符合“WHERE rownum<=6”,没有被放到了检索结果中;当检索到第三条数据的时候,
因为第一、二条数据没有放到结果集中,所以第三条数据的rownum仍然为1,而不是我们想像的3,所以因为不符合“WHERE rownum<=6”,没有被放到了检索结果中……


         
DB2也支持row_number(),语法跟mssql和oracle一样,还提供了fetch关键字用来提取前N行..语法为:fetch first 条数 rows only

select * from t_employee order by fsalary desc fetch first 6 rows only --必须注意:fetch字句要放在order by语句后面






        

  1. _(单个通配符)
    SELECT * FROM T_ Employee WHERE FName LIKE '_erry'

    以任意字符开头,剩余部分为“erry"

  2. 要检索长度为4、第3个字符为“n ",其他字符为任意字符
    SELECT * FROM T_ Employee WHERE FName LIKE,'__n_'
  3. %(多字通配符)
    SELECT * FROM T_ Employee WHERE FName LIKE’T%’

    以“T”开头,长度任意。

  4. 姓名中包含字母"n”的员工信息
    SELECT * FROM T_ Employee WHERE FName LIKE’%n%’
  5. 单字符匹配和多字符匹配还可以一起使用。

    SELECT * FROM T_ Employee WHERE FName LIKE’%n_'

    上面表示:最后一个字符为任意字符、倒数第_个字符为“n " ,长度任意的字符串。

  6. 集合匹配[](表示匹配集合中的任意一个)(只有MSSQLServer支持)
    SELECT * FROM T_Employee WHERE FName LIKE '[SJ]%'

    上面代表:以“S”或者“J“开头长度,长度任意

  7. 否定符"^"(用来对集合取反)(只有MSSQLServer支持)
    SELECT * FROM T_Employee WHERE FName LIKE '[^SJ]%'




posted @ 2014-10-29 14:28 藤本蔷薇 阅读(3212) | 评论 (0)编辑 收藏

以下是函数说明。懒得看。码着吧
函数名返回值类型作用域参数描述
$dp.showvoid全局显示日期选择框
$dp.hidevoid全局隐藏日期选择框
$dp.unbind
(4.8beta4新增)
void全局el [string/object]:取消绑定的对象,可传入dom对象或者是对象的ID让传入的对象取消日期控件绑定
$dp.$DString全局id [string]: 对象的ID 
arg [object]: 日期差量,可以设置成
{y:[值],M:[值],d:[值],H:[值],m:[值],s:[值]}
属性 y,M,d,H,m,s 分别代表 年月日时分秒
{M:3,d:7} 表示 3个月零7天
{d:1,H:1} 表示1天多1小时
将id对应的日期框中的日期字符串,加上定义的日期差量,返回使用real格式化后的日期串
参考 示例 4-3-2
$dp.$DVString全局v [string]: 日期字符串
arg [object]: 同上例的arg
将传入的日期字符串,加上定义的日期差量,返回使用real格式化后的日期串
参考 示例 4-3-3
以下函数只在事件自定义函数中有效
$dp.cal.getPString事件functionp [string]: 属性名称 yMdHmswWD分别代表年,月,日,时,分,秒,星期(0-6),周(1-52),星期(一-六) 
f [string]: format 格式字符串
设置方法参考 1.4 自定义格式
返回所指定属性被格式字符串格式化后的值[单属性],在changing,picking,clearing事件中返回选择前的值
参考 示例 1-2-2
$dp.cal.getDateStrString事件functionf [string]: 格式字符串,为空时使用dateFmt
返回所指定属性被格式字符串格式化后的值[整个值],在changing,picking,clearing事件中返回选择前的值
$dp.cal.getNewPString事件function用法同$dp.cal.getP返回所指定属性被格式字符串格式化后的值[单属性],在changing,picking,clearing事件中返回选择后的值
$dp.cal.getNewDateStrString事件function用法同$dp.cal.getDateStr返回所指定属性被格式字符串格式化后的值[整个值],在changing,picking,clearing事件中返回选择后的值


属性名返回值类型作用域参数描述
$dp.cal.dateobject事件function$dp.cal.date.y:返回 年
$dp.cal.date.M:返回 月
$dp.cal.date.d:返回 日
$dp.cal.date.H:返回 时
$dp.cal.date.m:返回 分
$dp.cal.date.s:返回 秒 
在changing,picking,clearing事件中返回选择前的日期对象
$dp.cal.newdateobject事件function用法同$dp.cal.date在changing,picking,clearing事件中返回选择后的日期对象


<h:script src="/common/javascripts/My97DatePicker/WdatePicker.js"/>
//这是让其只显示年份
<input id="Ddl_Year" type="text" runat="server"  onfocus="WdatePicker({skin:'default',dateFmt:'yyyy'})" class="Wdate" style=" width:80px;"/>
//onpicked:pickedFunc
<input type="text" style="float:right" name="checkdate" onfocus="WdatePicker({skin:'default',dateFmt:'yyyy',onpicked:pickedFunc})" class="Wdate"/>

JS 代码
 function pickedFunc(){  
 alert($dp.cal.getP('y'));  
        alert($(this).val());        
};     



posted @ 2014-10-22 15:23 藤本蔷薇 阅读(12727) | 评论 (2)编辑 收藏
  SELECT TO_CHAR(T.vc_ts,'YYYY') yearRe,TO_CHAR(T.vc_ts,'Q') timeRe,COUNT(*) countRe 
FROM table 
WHERE t.vc_status='0'
GROUP BY TO_CHAR(T.vc_ts,'Q'),TO_CHAR(T.vc_ts,'YYYY')


        


按年份的季度查询

select 
year as 年,
sum(case when quarter=1 then sale end) as 一季度,
sum(case when quarter=2 then sale end) as 二季度,
sum(case when quarter=3 then sale end) as 三季度,
sum(case when quarter=4 then sale end) as 四季度
from table_name
group by year

综合以上SQL

SELECT annual.YEAR,
SUM(CASE when annual.TIME='1' then annual.COUNT else 0 end ) AS 一季度,
SUM(CASE when annual.TIME='2' then annual.COUNT else 0 end ) AS 二季度,
SUM(CASE when annual.TIME='3' then annual.COUNT else 0 end ) AS 三季度,
SUM(CASE when annual.TIME='4' then annual.COUNT else 0 end ) AS 四季度
FROM(
SELECT TO_CHAR(T.vc_ts,'YYYY') YEAR,TO_CHAR(T.vc_ts,'Q') TIME,COUNT(*) COUNT
FROM table T
WHERE t.vc_status='0'
GROUP BY TO_CHAR(T.vc_ts,'Q'),TO_CHAR(T.vc_ts,'YYYY')
) annual GROUP BY annual.YEAR







posted @ 2014-10-22 11:53 藤本蔷薇 阅读(2059) | 评论 (0)编辑 收藏
在页面中传数组      
<h:hiddendata property="select_objs" />






页面中需要注意的写法




posted @ 2014-09-26 17:28 藤本蔷薇 阅读(569) | 评论 (0)编辑 收藏
想List中添加对象总是重复数据的原因



EXcel上传数据到数据库源码
posted @ 2014-09-20 23:43 藤本蔷薇 阅读(743) | 评论 (0)编辑 收藏