如何优雅的写随机数(java)-实战
Posted 栗子~~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何优雅的写随机数(java)-实战相关的知识,希望对你有一定的参考价值。
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
如何优雅的写随机数(java)-实战
废话不多说,让我们荡起来!!!
01 前戏
配置:
com:
blog:
value: ${random.value} #随机字符串
number: ${random.int} # 随机int
bignumber: ${random.long} #随机long
number1: ${random.int(10)} # 10以内的随机数
number2: ${random.int[10,20]} #10~20 的随机数
/**
* 随机数
* */
@Component
@ConfigurationProperties(prefix = "com.blog", ignoreUnknownFields = true)
public class RanDowUtil {
//随机数
@Value("1")
private String value;
//随机int
@Value("0")
private String number;
//随机 long
@Value("0")
private String bignumber;
//10以内的随机数
@Value("0")
private String number1;
// 10 ~ 20以内的随机数
@Value("10")
private String number2;
//===========================================================================
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getBignumber() {
return bignumber;
}
public void setBignumber(String bignumber) {
this.bignumber = bignumber;
}
public String getNumber1() {
return number1;
}
public void setNumber1(String number1) {
this.number1 = number1;
}
public String getNumber2() {
return number2;
}
public void setNumber2(String number2) {
this.number2 = number2;
}
}
02 中戏
public interface BaseLogInterface {
/**
* 返回时间日志
* */
void endLog(String msg,long startTime);
/**
* 返回时间错误日志
* */
void endLogError(String msg,long startTime,Throwable e);
/**
* 返回开始时间
* */
long startLog(String msgKey,String msgValue);
long init(String name,String param);
void error(String mag);
void info(String msg);
}
/**
* @author yangzhenyu
* 日志模板
* */
public abstract class BaseLog implements BaseLogInterface{
private static Logger log = LoggerFactory.getLogger(BaseLog.class);
private ReentrantLock lock = new ReentrantLock();
private String clazz;
public void setClazz(String clazz) {
this.clazz = clazz;
}
/**
* 打印错误日志
* */
public void error(String msg){
try{
lock.lock();
log.error(msg);
}finally {
lock.unlock();
}
}
/**
* 打印普通日志
* */
public void info(String msg){
try{
lock.lock();
log.info(msg);
}finally {
lock.unlock();
}
}
/**
* 返回时间日志
* */
public final void endLog(String msg,long startTime){
try{
lock.lock();
long endTime = System.currentTimeMillis();
log.info("<======执行源:【{}】==> {}执行结束,耗时:{}秒 =======>",clazz,msg,((endTime-startTime)/1000));
}finally {
lock.unlock();
}
}
/**
* 返回时间错误日志
* */
public final void endLogError(String msg,long startTime,Throwable e){
try{
lock.lock();
long endTime = System.currentTimeMillis();
log.error(String.format("<======执行源:【%s】==> %s执行结束,耗时:%s秒 =======>",clazz,msg,((endTime-startTime)/1000)),e);
}finally {
lock.unlock();
}
}
/**
* 返回开始时间
* */
public final long startLog(String msgKey,String param){
try{
lock.lock();
log.info("<======执行源:【{}】==>方法[{}}]开始执行 =======>",clazz,msgKey);
log.info("<======参数:【{}】 =======>",param);
return System.currentTimeMillis();
}finally {
lock.unlock();
}
}
}
@Api(value = "常量测试类", tags = {"常量测试类"})
@RestController
@RequestMapping(value="/api/util")
public class UtilController extends BaseLog {
@Override
public long init(String name, String param) {
this.setClazz("UtilController");
return startLog(name,param);
}
@Autowired
private RanDowUtil ranDowUtil;
@ApiOperation(value = "随机数类测试")
@CrossOrigin(origins = "*")
@GetMapping("/ranDow")
public ResponseBo hello() {
String msgValue = "lock";
long startTime = init(msgValue, "");
try{
info(String.format("随机字符串:%s,随机int:%s,随机long:%s",ranDowUtil.getValue(),ranDowUtil.getNumber(),ranDowUtil.getBignumber()));
info(String.format("10以内的随机数:%s,10~20以内的随机数:%s",ranDowUtil.getNumber1(),ranDowUtil.getNumber2()));
endLog(msgValue,startTime);
}catch (Exception e){
endLogError(msgValue,startTime,e);
return ResponseBo.error("失败" + e.getMessage());
}
return ResponseBo.ok();
}
}
03 杀青
调用测试类:
结果:
测试成功!!!
以上是关于如何优雅的写随机数(java)-实战的主要内容,如果未能解决你的问题,请参考以下文章