
2015年4月13日
摘要: 一個(gè)stmt多個(gè)rs進(jìn)行操作.那么從stmt得到的rs1,必須馬上操作此rs1后,才能去得到另外的rs2,再對(duì)rs2操作.不能互相交替使用,會(huì)引起rs已經(jīng)關(guān)閉錯(cuò)誤——Operation not allowed after ResultSet closed.錯(cuò)誤的代碼如下: stmt=conn.createStatement(); rs=stm...
閱讀全文
在 JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了。
裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱
int i= 10; //定義一個(gè)int基本類型值
Integer x = new Integer(i); //手動(dòng)裝箱
Integer y = i; //自動(dòng)裝箱
功能:將一個(gè)由英文字母組成的字符串轉(zhuǎn)換成指定格式---從右邊開始每三個(gè)字母用逗號(hào)分隔的形式。
請(qǐng)?jiān)诰庉嬈髦械牡?/span> 4、10 行將代碼填寫完整
運(yùn)行效果: j,aew,kjl,dfx,mop,zdmpublic static void main(String[] args) {
// Java文件名
String fileName = "HelloWorld.jav";
// 郵箱
String email = "laurenyang@imooc.com";
// 判斷.java文件名是否正確:合法的文件名應(yīng)該以.java結(jié)尾
/*
參考步驟:
1、獲取文件名中最后一次出現(xiàn)"."號(hào)的位置
2、根據(jù)"."號(hào)的位置,獲取文件的后綴
3、判斷"."號(hào)位置及文件后綴名
*/
//獲取文件名中最后一次出現(xiàn)"."號(hào)的位置
int index = fileName.lastIndexOf('.');
// 獲取文件的后綴
String prefix = fileName.substring(index);
// 判斷必須包含"."號(hào),且不能出現(xiàn)在首位,同時(shí)后綴名為"java"
if (index !=0 && index != -1 && prefix.equals("java")) {
System.out.println("Java文件名正確");
} else {
System.out.println("Java文件名無效");
}
// 判斷郵箱格式是否正確:合法的郵箱名中至少要包含"@", 并且"@"是在"."之前
/*
參考步驟:
1、獲取文件名中"@"符號(hào)的位置
2、獲取郵箱中"."號(hào)的位置
3、判斷必須包含"@"符號(hào),且"@"必須在"."之前
*/
// 獲取郵箱中"@"符號(hào)的位置
int index2 = email.indexOf("@");
// 獲取郵箱中"."號(hào)的位置
int index3 = email.indexOf('.');
// 判斷必須包含"@"符號(hào),且"@"必須在"."之前
if (index2 != -1 && index3 > index2) {
System.out.println("郵箱格式正確");
} else {
System.out.println("郵箱格式無效");
}
}
字節(jié)是計(jì)算機(jī)存儲(chǔ)信息的基本單位,1 個(gè)字節(jié)等于 8 位, gbk 編碼中 1 個(gè)漢字字符存儲(chǔ)需要 2 個(gè)字節(jié),1 個(gè)英文字符存儲(chǔ)需要 1 個(gè)字節(jié)。所以我們看到上面的程序運(yùn)行結(jié)果中,每個(gè)漢字對(duì)應(yīng)兩個(gè)字節(jié)值,如“學(xué)”對(duì)應(yīng) “-47 -89” ,而英文字母 “J” 對(duì)應(yīng) “74” 。同時(shí),我們還發(fā)現(xiàn)漢字對(duì)應(yīng)的字節(jié)值為負(fù)數(shù),原因在于每個(gè)字節(jié)是 8 位,最大值不能超過 127,而漢字轉(zhuǎn)換為字節(jié)后超過 127,如果超過就會(huì)溢出,以負(fù)數(shù)的形式顯示。
public static void main(String[] args) {
// 定義一個(gè)字符串
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
// 出現(xiàn)次數(shù)
int num = 0;
// 循環(huán)遍歷每個(gè)字符,判斷是否是字符 a ,如果是,累加次數(shù)
for ( int i=0;i<s.length()-1;i++)
{
// 獲取每個(gè)字符,判斷是否是字符a
if ( 'a'==s.charAt(i) ) {
// 累加統(tǒng)計(jì)次數(shù)
num++;
}
}
System.out.println("字符a出現(xiàn)的次數(shù):" + num);
}
功能:將一個(gè)由英文字母組成的字符串轉(zhuǎn)換成指定格式---從右邊開始每三個(gè)字母用逗號(hào)分隔的形式。
請(qǐng)?jiān)诰庉嬈髦械牡?/span> 4、10 行將代碼填寫完整
運(yùn)行效果: j,aew,kjl,dfx,mop,zdm
public static void main(String[] args) {
// 創(chuàng)建一個(gè)空的StringBuilder對(duì)象
StringBuilder str = new StringBuilder();
// 追加字符串
str.append("jaewkjldfxmopzdm");
// 從后往前每隔三位插入逗號(hào)
for(int i = str.length()-3; i>0 ; i=i-3){
str.insert(i,",");
}
// 將StringBuilder對(duì)象轉(zhuǎn)換為String對(duì)象并輸出
System.out.print(str.toString());
}
結(jié)果: j,aew,kjl,dfx,mop,zdm
String s1 = "imooc";
String s2 = "imooc";
//定義字符串s3,保存“I love”和s1拼接后的內(nèi)容
String s3 = "I love" + s1;
// 比較字符串s1和s2
// imooc為常量字符串,多次出現(xiàn)時(shí)會(huì)被編譯器優(yōu)化,只創(chuàng)建一個(gè)對(duì)象
System.out.println("s1和s2內(nèi)存地址相同嗎?" + (s1 == s2));
//比較字符串s1和s3
System.out.println("s1和s3內(nèi)存地址相同嗎?" + (s1==s3));
String s4 = "I love " + s1;
//比較字符串s4和s3
// s1是變量,s4在運(yùn)行時(shí)才知道具體值,所以s3和s4是不同的對(duì)象
System.out.println("s3和s4內(nèi)存地址相同嗎?" + (s4 == s3));
//外部類HelloWorld
public class HelloWorld {
// 內(nèi)部類Inner,類Inner在類HelloWorld的內(nèi)部
public class Inner {
// 內(nèi)部類的方法
public void show() {
System.out.println("welcome to imooc!");
}
}
public static void main(String[] args) {
// 創(chuàng)建外部類對(duì)象
HelloWorld hello = new HelloWorld();
// 創(chuàng)建內(nèi)部類對(duì)象
Inner i = hello.new Inner();
// 調(diào)用內(nèi)部類對(duì)象的方法
i.show();
}
}




不清楚路徑的查找 : find / -name mysql
MYSQL常用經(jīng)典命令(沒有試過)
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.啟動(dòng)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 #查找在系統(tǒng)中最后10分鐘訪問的文件
find /home/lijiajia/ -atime -2 #查找在系統(tǒng)中最后48小時(shí)訪問的文件
find /home/lijiajia/ -empty #查找在系統(tǒng)中為空的文件或者文件夾
find /home/lijiajia/ -mmin -5 # 查找在系統(tǒng)中最后5 分鐘里修改過的文件
find /home/lijiajia/ -mtime -1 #查找在系統(tǒng)中最后24 小時(shí)里修改過的文件
find /home/lijiajia/ -nouser #查找在系統(tǒng)中屬于作廢用戶的文件(不明白是什么意思)
find /home/lijiajia/ -amin 10 #查找在系統(tǒng)中最后10分鐘訪問的文件
find /home/ftp/pub -user lijiajia #查找在系統(tǒng)中屬于lijiajia這個(gè)用戶的文件
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;
}
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 = "您的驗(yàn)證碼是:%s。請(qǐng)不要把驗(yàn)證碼泄露給其他人。";
public View send(){
String invokeData = InvokeContext.getInvokeData();
if (StringUtil.blank(invokeData)) {
return json(RetMsg.error(RetCode.OTHER_ERROR, "發(fā)送短信失敗!"));
}
JSONObject jsonObject = JSONObject.parseObject(invokeData);
String mobile = jsonObject.getString("customer_no");
if (StringUtil.blank(mobile)) {
return json(RetMsg.error(RetCode.NULL_PARAM, "手機(jī)號(hào)碼不能為空"));
}
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"){ //發(fā)送成功,寫庫(kù)
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
return json(RetMsg.success("發(fā)送成功!!!"));
}
public View json(RetMsg msg) {
String data = JsonUtil.toJson(msg);
if (InvokeContext.isEncrypt()) {
data = AESUtil.encrypt(data);
}
return ViewFactory.text(data, TextView.ContentType.JSON);
}
}
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;
}
}
/Files/kokosang/html5拖拽上傳.zip 前幾天想做個(gè)給安卓app升級(jí)做個(gè)上傳頁(yè)面,然后從網(wǎng)上down了個(gè)頁(yè)面下面(主要是嫌棄自己頁(yè)面整的太丑,見不了人),然后就一直在整后臺(tái)取值的辦法
各種百度,值取出來了,但是,悲催的是總是亂碼,崩潰了,大神看了后,鄙視一番,給我整了下,簡(jiǎn)直就是重寫了
貼出來,先放張頁(yè)面效果
賞心悅目的后臺(tái)來咯
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"); //版本號(hào)
br.write("update:" + isFoucs+ "\r\n"); //是否強(qiáng)制更新
br.write("content:" + info ); //版本升級(jí)內(nèi)容
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;
}
}
}
}
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();// 根節(jié)點(diǎn)
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); }打印結(jié)果 :
{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=成功}
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();// 根節(jié)點(diǎn)
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);
}
打印結(jié)果:{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=成功}
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* 由于Java的簡(jiǎn)單類型不能夠精確的對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算,這個(gè)工具類提供精
* 確的浮點(diǎn)數(shù)運(yùn)算,包括加減乘除和四舍五入。
*/
public class DoubleUtil {
//這個(gè)類不能實(shí)例化
private DoubleUtil(){
}
//默認(rèn)除法運(yùn)算精度
private static final int DEF_DIV_SCALE = 10;
//默認(rèn)的保留位數(shù)
private static DecimalFormat df=new DecimalFormat("0.00");
/**
* 按照格式保留幾位
* @param money double數(shù)
* @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;
}
/**
* 提供精確的加法運(yùn)算。
* @param v1 被加數(shù)
* @param v2 加數(shù)
* @return 兩個(gè)參數(shù)的和
*/
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();
}
/**
* 提供精確的減法運(yùn)算。
* @param v1 被減數(shù)
* @param v2 減數(shù)
* @return 兩個(gè)參數(shù)的差
*/
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();
}
/**
* 提供精確的乘法運(yùn)算。
* @param v1 被乘數(shù)
* @param v2 乘數(shù)
* @return 兩個(gè)參數(shù)的積
*/
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();
}
/**
* 提供(相對(duì))精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時(shí),精確到
* 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @return 兩個(gè)參數(shù)的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相對(duì))精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時(shí),由scale參數(shù)指
* 定精度,以后的數(shù)字四舍五入。
* @param v1 被除數(shù)
* @param v2 除數(shù)
* @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位。
* @return 兩個(gè)參數(shù)的商
*/
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();
}
/**
* 提供精確的小數(shù)位四舍五入處理。
* @param v 需要四舍五入的數(shù)字
* @param scale 小數(shù)點(diǎn)后保留幾位
* @return 四舍五入后的結(jié)果
*/
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();
}
/**
* 提供精確的類型轉(zhuǎn)換(Float)
* @param v 需要被轉(zhuǎn)換的數(shù)字
* @return 返回轉(zhuǎn)換結(jié)果
*/
public static float convertsToFloat(double v){
BigDecimal b = new BigDecimal(v);
return b.floatValue();
}
/**
* 提供精確的類型轉(zhuǎn)換(Int)不進(jìn)行四舍五入
* @param v 需要被轉(zhuǎn)換的數(shù)字
* @return 返回轉(zhuǎn)換結(jié)果
*/
public static int convertsToInt(double v){
BigDecimal b = new BigDecimal(v);
return b.intValue();
}
/**
* 提供精確的類型轉(zhuǎn)換(Long)
* @param v 需要被轉(zhuǎn)換的數(shù)字
* @return 返回轉(zhuǎn)換結(jié)果
*/
public static long convertsToLong(double v){
BigDecimal b = new BigDecimal(v);
return b.longValue();
}
/**
* 返回兩個(gè)數(shù)中大的一個(gè)值
* @param v1 需要被對(duì)比的第一個(gè)數(shù)
* @param v2 需要被對(duì)比的第二個(gè)數(shù)
* @return 返回兩個(gè)數(shù)中大的一個(gè)值
*/
public static double returnMax(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.max(b2).doubleValue();
}
/**
* 返回兩個(gè)數(shù)中小的一個(gè)值
* @param v1 需要被對(duì)比的第一個(gè)數(shù)
* @param v2 需要被對(duì)比的第二個(gè)數(shù)
* @return 返回兩個(gè)數(shù)中小的一個(gè)值
*/
public static double returnMin(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.min(b2).doubleValue();
}
/**
* 精確對(duì)比兩個(gè)數(shù)字
* @param v1 需要被對(duì)比的第一個(gè)數(shù)
* @param v2 需要被對(duì)比的第二個(gè)數(shù)
* @return 如果兩個(gè)數(shù)一樣則返回0,如果第一個(gè)數(shù)比第二個(gè)數(shù)大則返回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每三位短號(hào)分割
* @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);
}
}
假如 redis 在/usr/local/bin
配置文件在/usr/local/redis-2.8.21
root@iZ239bujfzrZ: /usr/local/bin# ./redis-server redis.conf nohup
public static interface NUMBER{
public static String STR_FORMAT = "00000";
static String TOKEN = null;
}
//配資單號(hào)格式
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("數(shù)據(jù)庫(kù)原有的最大序列號(hào):"+xlh);
if(xlh!=null){
System.out.println("累加的新生成的序列號(hào):"+AddOne(xlh));
}else{
System.out.println("最新的新生成的序列號(hào):"+"00001"); //如果沒有手動(dòng)生成一條最小的
}
}
/**
* 獲取股票板塊信息
* 滬市A股 : 600、601、603 開頭
* 深市A股 : 000開頭
* 中小板 : 002開頭
* 創(chuàng)業(yè)板 : 300開頭
* 滬市新股申購(gòu):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;
}
}
我想把String 類型 yyyy-MM-dd 格式的數(shù)據(jù)轉(zhuǎn)換成 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); 打印出來結(jié)果是:
Tue Dec 09 00:00:00 CST 2014
20141209
后來,吾家上神告知,不能直接轉(zhuǎn)
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);
打印出來結(jié)果是:
Mon Sep 07 00:00:00 CST 2015
20150907
總結(jié)語(yǔ): 吾家上神棒棒噠!!!
原本寫了 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);
}
還補(bǔ)了一刀,你看你寫的什么玩意兒,哼,好想讓他跪搓衣板
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(); //交易權(quán)限
margin = nodeArr.getJSONObject(i).getLongValue("margin"); //保證金
warn = nodeArr.getJSONObject(i).getFloatValue("warn"); //警戒線
close = nodeArr.getJSONObject(i).getFloatValue("close"); //平倉(cāng)線
end = nodeArr.getJSONObject(i).getLongValue("end"); //結(jié)束時(shí)間
mainp = nodeArr.getJSONObject(i).getFloatValue("mainp"); //主板單票比例
midp = nodeArr.getJSONObject(i).getFloatValue("midp"); //中小板單票比例
growp = nodeArr.getJSONObject(i).getFloatValue("growp"); //創(chuàng)業(yè)板單票比例
}
轉(zhuǎn)自 : 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的個(gè)數(shù)
* @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;
}
}
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');
只能有四位,且可以是數(shù)字和字母的混合
[A-Za-z0-9]{4}
double rounded = (b1.multiply(b2).multiply(b3)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// 方式一:
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 表示兩位小數(shù) #.0000四位小數(shù) 以此類推…
// 方式三:
double d = 3.1415926;
String result = String.format("%.2f", d);
// %.2f %. 表示 小數(shù)點(diǎn)前任意位數(shù) 2 表示兩位小數(shù) 格式后的結(jié)果為f 表示浮點(diǎn)型。
//方法四:
Math.round(5.2644555 * 100) * 0.01d;
//String.format("%0" + 15 + "d", 23) 23不足15為就在前面補(bǔ)0
在項(xiàng)目當(dāng)中,對(duì)于double類型數(shù)據(jù)的使用比較頻繁。尤其是處理金錢相關(guān)的數(shù)據(jù),在使用Double類型的數(shù)據(jù)時(shí),涉及到精度,顯示,四舍五入等等問題。
1. 顯示問題,當(dāng)double 數(shù)據(jù) 小于 0.0001 大于等于 10000000時(shí),直接轉(zhuǎn)為String輸出時(shí),會(huì)顯示為科學(xué)計(jì)數(shù)法。
1: double double1 = 0.00009;
2: System.out.println(double1); // 9.0E-5
4: double double2 = 10000000;
5: System.out.println(double2); // 1.0E7
需要使用DecimalFormat 轉(zhuǎn)化輸出
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
這里面會(huì)有四舍五入問題:
1: double double1 = 0.000096789;
2: DecimalFormat formate = new DecimalFormat("#.######");
3: System.out.println(formate.format(double1)); //0.000097
當(dāng)取小數(shù)點(diǎn)后六位時(shí),會(huì)在第七位四舍五入。
2. 誤差問題,兩個(gè)Double類型的數(shù),進(jìn)行運(yùn)算。經(jīng)常會(huì)產(chǎn)生誤差。
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
看似簡(jiǎn)單的計(jì)算,結(jié)果卻出人意料。解決方法是將Double轉(zhuǎn)為BigDecimal。調(diào)用BigDecimal的 運(yùn)算。
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()時(shí)使用的是double類型的構(gòu)造方法。問題依舊是可能存在的,這邊要使用String參數(shù)的構(gòu)造方法。
3. 兩個(gè)double比較的問題。將double數(shù)的運(yùn)算結(jié)果和0比較。由于精度問題,比如if(1-0.999999999999999999 == 0.0) 這個(gè)是成立的。
附上double數(shù)的運(yùn)算:
1: /**
2: * 兩個(gè)Double數(shù)相加
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: * 兩個(gè)Double數(shù)相減
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: * 兩個(gè)Double數(shù)相乘
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: * 兩個(gè)Double數(shù)相除
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: * 兩個(gè)Double數(shù)相除,并保留scale位小數(shù)
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: }
語(yǔ)句對(duì)的,但不能執(zhí)行
delete from h_oddnum where id in (select min(id) from h_oddnum group by d_date having count(d_date) > 1)
只能創(chuàng)建臨時(shí)表刪除
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;
Date date =
new
Date(
"2014/1/10 18:20"
);
Date date2 =
new
Date(
"2014/1/11 3:5"
);
long
temp = date2.getTime() - date.getTime();
//相差毫秒數(shù)
long
hours = temp /
1000
/
3600
;
//相差小時(shí)數(shù)
long
temp2 = temp % (
1000
*
3600
);
long
mins = temp2 /
1000
/
60
;
//相差分鐘數(shù)
System.out.println(
"date2 與 date 相差"
+ hours +
"小時(shí)"
+ mins +
"分鐘"
);
啟動(dòng)jmeter時(shí)
invalid or corrupt jarfile ApacheJmeter.jar
errorlevel=1
后來才發(fā)現(xiàn)是本地jdk配置版本過低是jdk1.5
如是將環(huán)境變量里面的java_home 里面的
F:\Installed---success---go\jdk1.5改為C:\Program Files\Java\jdk1.7.0_45
運(yùn)行jmeter解壓文件下面bin里面的jmeter.bat
啟動(dòng)成功
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();