年月日时分秒毫秒+随机数getSerialNum
package com.creditharmony.apporveadapter.core.utils; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Dom4JDriver;
import com.thoughtworks.xstream.mapper.MapperWrapper; /**
* 接口业务,共同处理.
*/
public class AdapterUtils { /**
* 根据传入的数字, 产生 【年月日时分秒毫秒+随机数】. 格式:yyyyMMddHHmmssSSS + '_' + 四位随机数
*
* @return 25位 随机数
*/
public static String getSerialNum() {
Random random = new Random();
String sRand = "";
for (int i = 0; i < 2; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
}
for (int i = 0; i < 2; i++) {
random = new Random();
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
} StringBuilder randNoSb = new StringBuilder();
String dateStr = DateFormatUtils.format(new Date(), "yyyyMMddHHmmssSSS");
randNoSb.append(dateStr).append(sRand); return randNoSb.toString();
} /**
* 取得邮件地址的服务商
*
* @param userAddr 邮件地址
* @return 邮件服务商
*/
public static String getMailExtName(String userAddr) {
if (StringUtils.isEmpty(userAddr) == false) {
if (userAddr.indexOf("@") > 0) {
int lastIdx = userAddr.lastIndexOf("@");
return userAddr.substring(lastIdx);
} else {
return "";
}
} else {
return "";
}
} /**
* 按照指定的格式取出区间参数.
*
* @param param 信息
* @return 状态号
*/
public static String getParam(String param, String inPattern) {
String code = ""; String pattern = "\\<" + inPattern + ">(.*?)\\</" + inPattern + ">";
// 正则表达式,取<error>和</error>之间的字符串
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(param);
// 取得对应的返回编号
while (m.find()) {
code = m.group(1);
}
return code;
} /**
* xml转bean. 将传入的XML转为对应的javaBean 该方法可忽略缺少或者多出的XML中节点对象
*
* @param xml 源XML内容
* @param clazz 对象Class
* @return 转换后Bean
*/
@SuppressWarnings("unchecked")
public static <T> T xmlToBean(String xml, Class<T>... clazz) { T t = null;
// xml转对象需要用到dom4j.jar包
XStream xStream = new XStream(new Dom4JDriver()) { protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@SuppressWarnings("rawtypes")
public boolean shouldSerializeMember(Class definedIn, String fieldName) { if (definedIn == Object.class) {
try {
return this.realClass(fieldName) != null; } catch (Exception e) {
return false;
}
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
} };
xStream.setMode(XStream.NO_REFERENCES);
xStream.processAnnotations(clazz);
t = (T) xStream.fromXML(xml); return t;
} /**
* 文件byte转文件InputStream 处理.
*
* @param buf 文件byte
* @return 文件InputStream
*/
public static final InputStream byte2Input(byte[] buf) {
return new ByteArrayInputStream(buf);
} /**
* 文件InputStream转文件byte 处理.
*
* @param inStream 文件InputStream
* @return 文件byte
*/
public static final byte[] input2byte(InputStream inStream) throws IOException {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
swapStream.close();
byte[] in2b = swapStream.toByteArray();
return in2b;
} /**
* 获取客户端IP地址.
* @param serialNum 请求唯一序列号
* @return IP地址
*/
public static String getClientIP(HttpServletRequest request, String serialNum) {
try {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
} catch (Exception e) {
}
return "";
} /**
* 获取当前项目URL地址.
*
* @return URL地址
*/
public static String getRequestPath() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String path = request.getRequestURL() + "/";
return path;
} public static String readString3(String pathName)
{
String str="";
File file=new File(pathName);
try { FileInputStream in=new FileInputStream(file); // size 为字串的长度 ,这里一次性读完 int size=in.available(); byte[] buffer=new byte[size]; in.read(buffer); in.close(); str=new String(buffer,"utf-8"); } catch (IOException e) {
// TODO Auto-generated catch block
return null;
}
return str; }
}
年月日时分秒毫秒+随机数getSerialNum的更多相关文章
- Asp.net(C#)年月日时分秒毫秒
年月日时分秒毫秒格式:yyyyMMddHHmmssfff
- C语言获取字符年月日时分秒毫秒
概述 本文演示环境: Windows10 使用C语言获取年月日时分秒毫秒, 代码 #include <iostream> #include <string> #include ...
- Android Calendar获取年月日时分秒毫秒
开始使用new Date()测试,并用通过date.getMonth(),和date.getDay()获取,不过后来发现这两个访求是jdk1.1版本的,现在已经不用了,而且结果也不正确. ; int ...
- Java输出当前的日期(年月日时分秒毫秒)
package test.remote.tools.combine; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- java日期格式(年月日时分秒毫秒)
package test.remote.tools.combine; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- SqlSever基础 getdate函数 返回系统当前的年月日,时分秒 毫秒
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出
class TimeCount { // 临时变量,存放当前类能表示的最大年份值 ; /// <summary> /// 获取毫秒能表示的最大年份数 /// </summary> ...
- JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;
学习目标 1.掌握创建日期对象的方法 2.掌握date对象中获取日期时间的方法 3.掌握date对象中设置日期时间的方法 如何创建一个日期对象 语法:new Date(); 功能:创建一个日期时间对象 ...
- 生成ID模板:年月日时分秒+6位自增码
因为生成订单ID.商品ID 或者什么什么ID的,不想用自增,又怕反复,于是就用 年与日时分秒 + 6位自增码 (共计20位长度)来当作ID 注意:假设你的ID是Long型.就要注意,Long的最大长 ...
随机推荐
- OpenCL洗牌函数shuffle
在OpenCL中,经常会碰到会对向量的多个分量进行交叉运算的情况,比如 float4 d4; //input float scale; //input float2 mix_0 = mix((floa ...
- 新坑:c#弄微信公众号
微信公众号作为一个平台级别的产品,对商业应用来说,有很大的吸引力.如何让公众号更好的吸粉?靠内容不是一般小商户可以做到的,那是网红自媒体的强项.一般商户要怎么突围?那就是提供实用,有意义的功能给粉丝. ...
- APICloud Studio2新建应用报错和检出错误
今天心血来潮,闲暇时间想做个移动应用app,听一哥们说APICloud开发app很方便,就查询了一下,看了之后简直就是热血沸腾,我感觉正是我一直要找的工具 信心满满的开始着手使用,看了一下介绍我选择了 ...
- 【书摘】一种基于Git的版本管理方案
本篇摘录自<前端工程化体系设计与实践>一书,笔者认为是一套相对合理的方案,建议团队可以根据实际情况进行调整并增加协作命名规范. master分支--主分支 存储已发布版本的源码,不能在此分 ...
- eclipse 导入gradle引入多模块项目,引入eclipse后变成了好几个工程
1.eclipse 导入gradle 项目 ,选择项目文件夹. 2.导入完成后,文档结构变成 ,多个子项目并列了,而且互不依赖,没有层级结构了. 3.点击项目目录,右上角这个小箭头,选择projec ...
- 标识符and数据类型
一,标识符 1.标识符用来给类,变量,包,方法等起名字的. 2.只能由字符,下滑线,美元符组成:这里的字符有大小写字母,中文字符,数字字符,但是符号只能有两个下划线和美元符. 3.不能由数字开头. 4 ...
- kvm虚拟化
1.kvm虚拟化介绍 什么是虚拟化 虚拟化就是通过模拟计算机硬件(cpu,内存,硬盘,网卡)来实现在一台物理服务器上运行同时多个不同的操作系统,并且使每个操作系统之间都是互相隔离的 为什么要学习虚拟化 ...
- 身边有个漂亮的java女程序员是什么体验?
程序员都是一些追求完美的人.女程序员细致认真,不仅能写代码而且注释详尽清晰.能做好单元测试BUG最少.能写标准规范的设计文件不会对不上模块编号也不会少了类或接口说明,提交代码不会忘记写LOG,不会和测 ...
- ReSharper2018破解详细方法
下载地址: 主程序官网下载链接:https://download.jetbrains.com/resharper/ReSharperUltimate.2018.3.3/JetBrains.ReShar ...
- 501. Find Mode in Binary Search Tree
Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...