您的位置:首页 > 其它

人丑就要多读书(14)

2015-08-31 18:37 281 查看
上周接金立的sdk,客户端这边做了很多服务器端的工作,导致我们这边收不到pay_id,虽然没什么问题,不知道对于最后的订单校验有影响没。然后我们这边签名错误了,与服务器上传下来的签名比对错误,我自作聪明的吧所有参数拿下来,用postman发给自己测试,但是在校验Base64.decode(sign)的时候报错了,具体错误是length not correct:got 126 but was expect 128,简单的说就是Base64.decode(sign)搞出来的是byte[]126,而实际需要的是128报的错,直接就没法校验了,but服务器上却可以校验,只不过是校验出错了,今天回来在导师的帮助了,发现了,原来我把服务器上的sign直接复制下来,通过postman发给自己的时候,'+'变成了'
',加号变成了空格,导致直接没法校验,后来replaceAll("+"," ")之后,就可以了。最后的问题再看了金立提供的文档之后发现了,就是notifyUrl我们加了参数,但是校验的时候拿掉,签名就通过了。

今天在真神的帮助下还把通告的重复发送完成了,对线程又稍微理解了一下。需求:我们需要往不同的服务器通过指定的时间间隔,发送一定数量的通告,然后我在怎么创建线程、然后将所有服一起发的时候卡住了,因为Thread.sleep(1000miles)的时候把主线程也给停了,导致不是同时发的,后来真神发我一个demo,看了下大受启发。发现不同的方法调用后所传维护的Thread是不用的,然后终于完成了 !
package sql;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by chuancong.yan on 2015/8/31.
 */
public class ThreadTest {
    public static void task(int number){
        List<Thread> list = new ArrayList<Thread>();
        for(int i = 0; i < number; i++){
            Thread thread = new Thread(new TimerTask(10000, 3, i+""));
            thread.start();
            list.add(thread);
        }
    }

    public static void main(String[] args) throws InterruptedException{
        task(3);
        while(true){
            System.out.println("1111111111111111");
            Thread.sleep(1000);
        }
    }
}

class  TimerTask implements Runnable {
    private long sleepTime;
    private int times;
    private String message;

    public TimerTask(long sleepTime, int times, String message) {
        this.sleepTime = sleepTime;
        this.times = times;
        this.message = message;
    }

    @Override
    public void run() {
        int i =0;
        while(i < times){
            System.out.println(message);
            i++;
            try {
                Thread.sleep(sleepTime);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: