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).