技术文档

1. optString   getString
JSONObject jAction = this.parseJSONObjectByHttpRequestParameterMap(request, action);
   JSONObject jsonObject = new JSONObject();
   jAction.optString();与jAction.getString();
   区别 :optString为空不报错,getString为空报错。
   public static void main(String[] args)  

{  
    JSONObject test = new JSONObject();    
    test.put("empty", null);  
    System.out.println("test.optString(\"empty\"):" +test.optString("empty"));   
    System.out.println("test.getString(\"empty\"):" + test.getString("empty"));  
}
运行结果:
test.optString("empty"):  
Exception in thread "main" net.sf.json.JSONException: JSONObject["empty"] not found.  

    at net.sf.json.JSONObject.getString(JSONObject.java:2247)  

    at basicUtils.JSONUtil.main(JSONUtil.java:41)

1.1 JSONObject由无序的name,value对构成,以下为获取子元素相关的集合。
entrySet():返回由子元素name,value对构成的集合。
nameSet():返回由子元素的name构成的集合。
values(): 返回由子元素的value构成的集合。
    
2.instanceof   ------A instanceof B
Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,
这个对象是否是这个特定类或者是它的子类的一个实例。
 用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,
或者 object 是 null,则返回 false。

3.Iterator 迭代器是一种设计模式,它是一个对象,可以遍历并选择序列中的对象。
Java中Iterator 只能单向移动,使用方法iterator(),要求容器返回Iterator.
Iterator类经常使用的方法,next();hasNext();
next();返回当前元素,并指向下一个元素,返回为输入的字符。
hasNext();判断当前元素是否存在,并指向下一个元素。返回boolean。
迭代器应用:
  list l = new ArrayList();
  l.add("aa");
  l.add("bb");
  l.add("cc");
  for (Iterator iter = l.iterator(); iter.hasNext();) {
   String str = (String)iter.next();
   System.out.println(str);
  }
  //迭代器用于while循环
  Iterator iter = l.iterator();
  while(iter.hasNext()){
   String str = (String) iter.next();
   System.out.println(str);
  }
 
4.putString和getString
putString(String key,String value);
Editor editor = new Editor();
editor.putString( url , json);   //向键为url中的Editor中放入值 json
editor.getString(String key);    //取出键为key,对应的值。

5.取出键name4对应的值:
ArrayList arrayStr = new ArrayList<>();
arrayStr=
[{name1:{name2:{name3:'value1',name4:'value2'}}},{}];
JsonArray getJSONArray = JSONArray.fromObject(arrayStr);
JSONObject jsonObject = getJSONArray.getJSONObject(0);
String result = jsonObject.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");

6.在使用HTTP协议实现应用间接口通信时,服务端读取客户端请求过来的数据,会用到request.getInputStream(),第一次读取的时候可以读取到数据,但是接下来的读取操作都读取不到数据
原因:
1. 一个InputStream对象在被读取完成后,将无法被再次读取,始终返回-1;
2. InputStream并没有实现reset方法(可以重置首次读取的位置),无法实现重置操作;
解决方法(缓存读取到的数据):
使用request、session等来缓存读取到的数据,这种方式很容易实现,只要setAttribute和getAttribute就行;


7.任何一项满足都返回true。
public static boolean equalsAny(CharSequence source, CharSequence... targets) {
     for (CharSequence target : targets) {
       if (source.equals(target))
         return true;
     }
     return false;
   }

8. String转化成map
例子:
String syncNotice = apsTradeSyncNoticeMsg.getOrgTradeSyncNotice();
Map<String, String> contentMap = XmlUtils.toMap(syncNotice.getBytes(), "utf-8");


public static Map<String, String> toMap(byte[] xmlBytes, String charset)
/*     */     throws Exception
/*     */   {
/* 100 */     SAXReader reader = new SAXReader(false);
/* 101 */     InputSource source = new InputSource(new ByteArrayInputStream(xmlBytes));
/* 102 */     source.setEncoding(charset);
/* 103 */     Document doc = reader.read(source);
/* 104 */     Map<String, String> params = toMap(doc.getRootElement());
/* 105 */     return params;
/*     */   }

 

9.map转化成为String
例子:String  b = XmlUtils.parseXML(contentMap);
public static String parseXML(SortedMap<String, String> parameters) {
/*  62 */     StringBuffer sb = new StringBuffer();
/*  63 */     sb.append("<xml>");
/*  64 */     Set es = parameters.entrySet();
/*  65 */     Iterator it = es.iterator();
/*  66 */     while (it.hasNext()) {
/*  67 */       Map.Entry entry = (Map.Entry)it.next();
/*  68 */       String k = (String)entry.getKey();
/*  69 */       String v = (String)entry.getValue();
/*  70 */       if ((null != v) && (!"".equals(v)) && (!"appkey".equals(k))) {
/*  71 */         sb.append("<" + k + ">" + (String)parameters.get(k) + "</" + k + ">\n");
/*     */       }
/*     */     }
/*  74 */     sb.append("</xml>");
/*  75 */     return sb.toString();
/*     */   }


10.String 转化成为int
int a = Integer.parseInt(string str);

int转化成为String
String str = String.valueOf(int i);

11.for(Iterator<TaskInfo> iterator = list.iterator();iterator.hasNext();){

    TaskInfo taskInfo = iterator.next();
}


12 generator生成pojo.dao.mapper.xml
http://blog.csdn.net/tolcf/article/details/50835165


13.表格命令操作:
update reconciliation_info t set t.other_order_no ='100' where pkid='1';

表格新增字段
alter table Acquirer_Info add(INSTITUTION_ID VARCHAR2(10), BANK VARCHAR2(30),BANK_ACC VARCHAR2(40),ACC_NAME VARCHAR2(100),
BANK_ID VARCHAR2(4),BRANCH_BANK_NAME VARCHAR2(50),BRANCH_BANK_PROVINCE VARCHAR2(30),BRANCH_BANK_CITY VARCHAR2(30) );


insert into reconciliation_info(pkid,our_order_no,other_order_no,settle_date,mer_id,mer_no,mer_name,trans_type,settle_route_id,
our_amount,our_pay_date,our_status,other_amount,other_status,other_pay_date,merchant_settle_amount,merchant_fee,cost_fee,profit,
reconciliation_status,handle_status,handle_type) values('2','002','100','2017-04-24','001','002','商户名称','0','1',
10000,'2017-04-23','01',1000,'01','2017-04-23',0,10,11,12,'1','1','1');


14.http://blog.csdn.net/qq_24877569/article/details/52187388

List<User>中,User有id和money两个字段,如果id相同,就把User合并,并且将money相加,Java怎么处理??

假如 id 是 String类型

User tmpUser = null;
Map<String, User> map = new HashMap<String, User>();//合并后的User存在map中
for(User oUser userList) {
     tmpUser = map.get(oUser.getId());
     if (tmpUser != null) {
             tmpUser.setMoney(tmpUser.getMoney() + oUser.getMoney);  //money合并
     } else {
          map.put(oUser.getId(), oUser);
    }
}


合并id    http://bbs.csdn.net/topics/391818391
public class TestList {
  public static void main(String[] args) {
    List<User> users = new ArrayList<User>();
    List<User> newUsers = new ArrayList<User>();
    List<Integer> ids = new ArrayList<Integer>();
    User u1 = new User(99, "u1", 18);
    User u2 = new User(100, "u2", 14);
    User u3 = new User(100, "u3", 14);
    User u4 = new User(101, "u4", 13);
    User u5 = new User(101, "u5", 12);
    users.add(u1);
    users.add(u2);
    users.add(u3);
    users.add(u4);
    users.add(u5);
     
    boolean contain;
    for(int i = 0;i < users.size();i++){
      //假设取出一条数据后,后面有一样的id,num就+1,如果没有就把自己加在新的list中
      int num = 0;
      contain = ids.contains(users.get(i).getId());
      ids.add(users.get(i).getId());
      //在下一次循环的时候不考虑之前出现过得id
      if(contain == false){
        for(int j = i+1; j <= users.size() - 1;j++){
          int  id = users.get(i).getId();
          int  age = users.get(i).getAge();
          if(id == users.get(j).getId()){
            num ++;
            if(age == users.get(j).getAge()){
              String newName = users.get(i).getName() + users.get(j).getName();
              User newU = new User(id,newName,age);
              newUsers.add(newU);
            }else{
              String newName1 = users.get(i).getName() + users.get(j).getName();
              String ageStr1 =  users.get(i).getAge() + "" + users.get(j).getAge() + "";
              User newU = new User(id,newName1,Integer.parseInt(ageStr1));
              newUsers.add(newU);
            }
          }
        }
        if(num == 0){
          newUsers.add(users.get(i));
        }
      }
    }
    for(int k = 0; k < newUsers.size();k++ ){
      System.out.print("id:" + newUsers.get(k).getId() + "   ");
      System.out.print("name:" +  newUsers.get(k).getName() + "   ");
      System.out.print( "age:" + newUsers.get(k).getAge()+ "   ");
      System.out.println();
    }
     
  }
}
 
class User{
  int id;
  String name;
  int age;
  public User(int id,String name,int age){
    this.id = id;
    this.name = name;
    this.age = age;
  }
  //==================================
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
   
}     
小代码大功能--    精彩代码
for(int i= 0 ;i < merchantSettlementInfoList.size(); i++){
                //一条结算批次表对应-商户结算信息表List,查询出List里面所有的机构id即institutionId
                //创建新商户信息表newList,合并institutionId
                    int num = 0;
                    for(int j = i+1; j < merchantSettlementInfoList.size();j++){
                        String institutionId = merchantSettlementInfoList.get(i).getInstitutionId();
                        if(institutionId != null && institutionId != ""){
                        if(institutionId.equals(merchantSettlementInfoList.get(j).getInstitutionId())){
                            num++;
                            break;
                        }
                      }    
                        
                    }
                    if(num == 0){
                        newMerchantSettlementInfoList.add(merchantSettlementInfoList.get(i));    
                    }
                    
            }


15.BigDecimal转化成int

BigDecimal a = new BigDecimal ();
int b = a.intValue();


int转BigDecimal
BigDecimal a = new BigDecimal (int b);


16.public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value); //减法
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法


17.解决死锁问题
https://zhidao.baidu.com/question/551264324.html

表锁死的解决办法:
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

--释放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';(其中23,1647分别是上面查询出的sid,serial#)

18.日期(date转化成String)
http://blog.csdn.net/woshisap/article/details/6742423/

Date 转String
Date settle_date = settlementMerchat.getSettleDate();
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd");
String nowDate = sdf .format(settle_date );
String nowDate = sdf.format(new Date());

String 转Date
SimpleDateFormat sdf = new  SimpleDateFormat(yyyy-MM-dd);
String str = "2017-05-31";
java.Util.Date date = sdf .parse(str);

 


19.map嵌套map的处理方法
        Map<String, Object> returnMap = new HashMap<String, Object>();
Map<String, Object> action_info = Map<String, Object>  returnMap.get("ACTION_INFO");


20.String和Date之间的互转
SELECT
          A.JYJF_ORDER_ID,
          A.BUSI_ORDER_ID,
          A.STUDENT_ID,
          A.SCHOOL_ID,
          A.FEE_CATEGORY_ID,
          A.ORDER_FEE,
        A.PAY_STATUS,
        A.PAY_TYPE,
        A.MERCHANT_ID,
        A.USER_ID,
        A.CREATE_USER,
        A.CREATE_TIME,
        A.UPDATE_USER,
        A.UPDATE_TIME,
        A.STATUS,
        A.PAYABLE_FEE,
        A.PAY_TIME,
        B.FEE_CATEGORY_NAME,
        C.SCHOOL_NAME,
        D.STUDENT_CODE,
        D.STUDENT_NAME,
        D.STUDENT_CLASS
      FROM C_JYJF_ORDER A
      LEFT JOIN C_JYJF_FEE_CATEGORY B ON A.FEE_CATEGORY_ID=B.FEE_CATEGORY_ID
      LEFT JOIN C_JYJF_SCHOOL C ON A.SCHOOL_ID=C.SCHOOL_ID
      LEFT JOIN C_JYJF_STUDENT D ON A.STUDENT_ID=D.STUDENT_ID

 

21 JSON 转换为对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'

22.fiddler里面的http://localhost:8080/aps/api地址
"/aps"取决于tomcat的service.xml里面的path。


23.StringsUtils.leftPad("34",8,"0")
00000034

 

24.//将Map<String,String>转化成Map<String,Object>
            Map<String,Object> map = new HashMap<String,Object>(); //Object is containing String
            Map<String,String> newMap =new HashMap<String,String>();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                   if(entry.getValue() instanceof String){
                        newMap.put(entry.getKey(), (String) entry.getValue());
                      }
             }

 

//将Map<String,String>转化成为Map<String,Object>
            Map<String,Object> map = new HashMap<String,Object>();
            for(Map.Entry<String, String> entry : sendMap.entrySet()){
                if(entry.getValue() instanceof Object ){
                    map.put(entry.getKey(), (Object)entry.getValue());
                }
            }

 

//将Map<String,String>转化成为Map<String,Object>
            Map<String,Object> map = new HashMap<String,Object>();
            for(Map.Entry<String, String> entry : sendMap.entrySet()){
                if(entry.getValue() instanceof Object ){
                    map.put(entry.getKey(), (Object)entry.getValue());
                }
            }


25.
MerInfoTemp temp1 = merInfoApsService.selectBypkid(pkid);
MerInfoTemp temp2 = new MerInfoTemp();
org.springframework.beans.BeanUtils.copyproperties(temp1,temp2);-------"前赋值给后"。

26.数据库操作,对日期格式的要求:

insert into DIC_CATALOG (PKID, CATALOG_NAME, NOTE, CREATE_USER, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATE)
values ('RISK_EVENT_DEAL_STATUS', '风险事件处理状态', '0:未处理 1:已处理', 'admin', to_date('10-01-2017 10:46:27', 'dd-mm-yyyy hh24:mi:ss'), 'admin', to_date('10-01-2017 11:05:53', 'dd-mm-yyyy hh24:mi:ss'), '1');


27.String.indexOf("a",b);
a:从String中匹配的字符,b:开始匹配的位置,默认从0开始。
String string1="Hello World";
string1.index("Hello"); ------------0
string1.index("hello");-------------(-1)
string1.index(World)----------------(6)

28.获取到大量的数据,需要进行遍历来入库
String string1 ='';
交易时间,公众账号ID,第三方商户号,商户号,子商户号,设备编号,威富通订单号,第三方订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,威富通退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率,终端类型,对账标识,门店编号,商户名称,收银员,子商户ID,免充值券金额,实收金额,扩展字段1,扩展字段2,扩展字段3,扩展字段4
`2017071300:05:27,`wx1f87d44db95cba7a,`,`,`7551000001,`SPAY_AND,`7551000001201707133264712203,`4008792001201707130412178513,`75510000019454085239105637,`oywgtuCQmfFAQsp7K7aEjcXeYLkQ,`pay.weixin.native,`支付成功,`CFT,`CNY,`0.10,`0.00,`,`,`,`,`,`,`222222222222,`,`0.00,`1.10%,`SPAY_AND,`0,`,`威富通线上测试,`7551000001,`oHmbkt4zUSkLldbL85jIB3NqrICg,`0.00,`0.10,`,`,`,`

StringEntity entityParams = new StringEntity(String1,"utf-8");
byte[] data = EntityUtils.toByteArray(entityParams);
InputStream is = new ByteArrayInputStream(data);
BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));
for(ing i = 1;(lineStr = br.readLine())!=null;i++ ){
}


// 图片按客户端操作系统类型进行分类存放
        String resourcePath = stParamService.selectByCode("resource_Path").getParamValue();
        String serviceUrl = stParamService.selectByCode("service_url").getParamValue();

        // 保存文件名+相对路径
        String newFileName = pictureResourcePath + SerialNo.getUNID()
                + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));

 

sql语句:
update st_user t  set t.phone=13129999284 where t.phone like '13129999284%';
commit;


netstat -tunlp|grep 9140
关键字查看日志:               grep --color =auto 201700364552 catalina.out


SUBSTR(str,pos,len);
str从pos开始截取,一直街渠道len。
select * from bank_card_bin  where bank_bin_code = SUBSTR('6214830272962852',0,LENGTH(bank_bin_code)) and length('6214830272962852')='16';

MerRate merRate; ==============qdone.aps.dao.model.MerRate@63b9aba6
FastjsonUtils.toJSONString(merRate)========={"amountFloor":0,"amountUpper":999999999,"cardBin":"0","cityCode":"0","merId":"800042016074944","payChannel":"0076","pkid":"1171010163007151001","rateType":"1","settleCap":"60","settleRate":"0","settleRateFloor":"0","tradeType":0,"transactionFloor":0,"transactionUpper":999999999}


StringUtils.equals("","") 不区分大小写;null也比较
 /*1. 比较两个字符串是否相等,如果两个均为null,则也认为相等*/
 
  StringUtils.equals("", "");   //结果是true
 
  StringUtils.equals(null, null);  //结果是true
 
  StringUtils.equals(null, "");  //结果是false
 
  StringUtils.equals("",null);  //结果是false
 
  StringUtils.equals(null,"");  //结果是false
 
  StringUtils.equalsIgnoreCase("ss", "Ss");  //不区分大小写--结果是true


JSONObject optString与getString

1.str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str
 String s1 ="1234567890abcdefgh";
 s1 = s1.substring(10);
 System.out.println(s1);
 运行结果:abcdefgh
 
str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串
String s1 ="1234567890abcdefgh";
s1 = s1.substring(0,9);
System.out.println(s1);
运行结果:123456789  

stringObject.substring(start,stop)
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

1 StringBuffer sbf = new StringBuffer(“wlf”);
sbf.insert(1,"ang");
System.out.printIn(str);        ------wanglf

Student std = new Student("haha0");
sbf.append(std);


copyOfRange:复制数组(包括下标from,不包括to)---生成的新数组,只复制一次。
Arrays.copyOfRange(T[] original,int from,int to)
byte[] keyBytes;
byte[] pinKey = Arrays.copyOfRange(keyBytes,0,16);

生成的新数组,需要复制多次
byte[] deskey = new byte[24];
byte[] key;
if(key.length == 8){
System.arrayCopy(key,0,deskey,0,8);
System.arrayCopy(key,0,deskey,8,8);
System.arrayCopy(key,0,deskey,16,8);
}

System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是:
public static void (Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)

src:源数组;    srcPos:源数组要复制的起始位置;
dest:目的数组;    destPos:目的数组放置的起始位置;    length:复制的长度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组.
有趣的是这个函数可以实现自己到自己复制,比如:
int[] fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);
则结果为:{0,1,2,0,1,2,6};
实现过程是这样的,先生成一个长度为length的临时数组,将fun数组中srcPos
到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时数组,0,fun,3,3).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值