java常用工具类

1.json转换工具1. package com.taotao.utils;

3. import java.util.List;

5. import com.fasterxml.jackson.core.JsonProcessingException;

6. import com.fasterxml.jackson.databind.JavaType;

7. import com.fasterxml.jackson.databind.JsonNode;

8. import com.fasterxml.jackson.databind.ObjectMapper;

10. /**

11. * json转换工具类

12. */

13. public class JsonUtils {

15. // 定义jackson对象

16. private static final ObjectMapper MAPPER = new ObjectMapper();

18. /**

19. * 将对象转换成json字符串。

20. * <p>Title: pojoToJson</p>

21. * <p>Description: </p>

22. * @param data

23. * @return

24. */

25. public static String objectToJson(Object data) {

26. try {

27. String string = MAPPER.writeValueAsString(data);

28. return string;

29. } catch (JsonProcessingException e) {

30. e.printStackTrace();

31. }

32. return null;

33. }

35. /**

36. * 将json结果集转化为对象

37. *

38. * @param jsonData json数据

39. * @param clazz 对象中的object类型

40. * @return

41. */

42. public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {

43. try {

44. T t = MAPPER.readValue(jsonData, beanType);

45. return t;

46. } catch (Exception e) {

47. e.printStackTrace();

48. }

49. return null;

50. }

52. /**

53. * 将json数据转换成pojo对象list

54. * <p>Title: jsonToList</p>

55. * <p>Description: </p>

56. * @param jsonData

57. * @param beanType

58. * @return

59. */

60. public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {

61. JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);

62. try {

63. List<T> list = MAPPER.readValue(jsonData, javaType);

64. return list;

65. } catch (Exception e) {

66. e.printStackTrace();

67. }

69. return null;

70. }

72. }

2.cookie的读写

1. package com.taotao.common.utils;

3. import java.io.UnsupportedEncodingException;

4. import java.net.URLDecoder;

5. import java.net.URLEncoder;

7. import javax.servlet.http.Cookie;

8. import javax.servlet.http.HttpServletRequest;

9. import javax.servlet.http.HttpServletResponse;

12. /**

13. *

14. * Cookie 工具类

15. *

16. */

17. public final class CookieUtils {

19. /**

20. * 得到Cookie的值, 不编码

21. *

22. * @param request

23. * @param cookieName

24. * @return

25. */

26. public static String getCookieValue(HttpServletRequest request, String cookieName) {

27. return getCookieValue(request, cookieName, false);

28. }

30. /**

31. * 得到Cookie的值,

32. *

33. * @param request

34. * @param cookieName

35. * @return

36. */

37. public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {

38. Cookie[] cookieList = request.getCookies();

39. if (cookieList == null || cookieName == null) {

40. return null;

41. }

42. String retValue = null;

43. try {

44. for (int i = 0; i < cookieList.length; i++) {

45. if (cookieList[i].getName().equals(cookieName)) {

46. if (isDecoder) {

47. retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");

48. } else {

49. retValue = cookieList[i].getValue();

50. }

51. break;

52. }

53. }

54. } catch (UnsupportedEncodingException e) {

55. e.printStackTrace();

56. }

57. return retValue;

58. }

60. /**

61. * 得到Cookie的值,

62. *

63. * @param request

64. * @param cookieName

65. * @return

66. */

67. public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {

68. Cookie[] cookieList = request.getCookies();

69. if (cookieList == null || cookieName == null) {

70. return null;

71. }

72. String retValue = null;

73. try {

74. for (int i = 0; i < cookieList.length; i++) {

75. if (cookieList[i].getName().equals(cookieName)) {

76. retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);

77. break;

78. }

79. }

80. } catch (UnsupportedEncodingException e) {

81. e.printStackTrace();

82. }

83. return retValue;

84. }

86. /**

87. * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码

88. */

89. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,

90. String cookieValue) {

91. setCookie(request, response, cookieName, cookieValue, -1);

92. }

94. /**

95. * 设置Cookie的值 在指定时间内生效,但不编码

96. */

97. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,

98. String cookieValue, int cookieMaxage) {

99. setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);

100. }

102. /**

103. * 设置Cookie的值 不设置生效时间,但编码

104. */

105. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,

106. String cookieValue, boolean isEncode) {

107. setCookie(request, response, cookieName, cookieValue, -1, isEncode);

108. }

110. /**

111. * 设置Cookie的值 在指定时间内生效, 编码参数

112. */

113. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,

114. String cookieValue, int cookieMaxage, boolean isEncode) {

115. doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);

116. }

118. /**

119. * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)

120. */

121. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,

122. String cookieValue, int cookieMaxage, String encodeString) {

123. doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);

124. }

126. /**

127. * 删除Cookie带cookie域名

128. */

129. public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,

130. String cookieName) {

131. doSetCookie(request, response, cookieName, "", -1, false);

132. }

134. /**

135. * 设置Cookie的值,并使其在指定时间内生效

136. *

137. * @param cookieMaxage cookie生效的最大秒数

138. */

139. private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,

140. String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {

141. try {

142. if (cookieValue == null) {

143. cookieValue = "";

144. } else if (isEncode) {

145. cookieValue = URLEncoder.encode(cookieValue, "utf-8");

146. }

147. Cookie cookie = new Cookie(cookieName, cookieValue);

148. if (cookieMaxage > 0)

149. cookie.setMaxAge(cookieMaxage);

150. if (null != request) {// 设置域名的cookie

151. String domainName = getDomainName(request);

152. System.out.println(domainName);

153. if (!"localhost".equals(domainName)) {

154. cookie.setDomain(domainName);

155. }

156. }

157. cookie.setPath("/");

158. response.addCookie(cookie);

159. } catch (Exception e) {

160. e.printStackTrace();

161. }

162. }

164. /**

165. * 设置Cookie的值,并使其在指定时间内生效

166. *

167. * @param cookieMaxage cookie生效的最大秒数

168. */

169. private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,

170. String cookieName, String cookieValue, int cookieMaxage, String encodeString) {

171. try {

172. if (cookieValue == null) {

173. cookieValue = "";

174. } else {

175. cookieValue = URLEncoder.encode(cookieValue, encodeString);

176. }

177. Cookie cookie = new Cookie(cookieName, cookieValue);

178. if (cookieMaxage > 0)

179. cookie.setMaxAge(cookieMaxage);

180. if (null != request) {// 设置域名的cookie

181. String domainName = getDomainName(request);

182. System.out.println(domainName);

183. if (!"localhost".equals(domainName)) {

184. cookie.setDomain(domainName);

185. }

186. }

187. cookie.setPath("/");

188. response.addCookie(cookie);

189. } catch (Exception e) {

190. e.printStackTrace();

191. }

192. }

194. /**

195. * 得到cookie的域名

196. */

197. private static final String getDomainName(HttpServletRequest request) {

198. String domainName = null;

200. String serverName = request.getRequestURL().toString();

201. if (serverName == null || serverName.equals("")) {

202. domainName = "";

203. } else {

204. serverName = serverName.toLowerCase();

205. serverName = serverName.substring(7);

206. final int end = serverName.indexOf("/");

207. serverName = serverName.substring(0, end);

208. final String[] domains = serverName.split("\\.");

209. int len = domains.length;

210. if (len > 3) {

211. // www.xxx.com.cn

212. domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];

213. } else if (len <= 3 && len > 1) {

214. // xxx.com or xxx.cn

215. domainName = "." + domains[len - 2] + "." + domains[len - 1];

216. } else {

217. domainName = serverName;

218. }

219. }

221. if (domainName != null && domainName.indexOf(":") > 0) {

222. String[] ary = domainName.split("\\:");

223. domainName = ary[0];

224. }

225. return domainName;

226. }

228. }

3.HttpClientUtil1. package com.taotao.utils;

3. import java.io.IOException;

4. import java.net.URI;

5. import java.util.ArrayList;

6. import java.util.List;

7. import java.util.Map;

9. import org.apache.http.NameValuePair;

10. import org.apache.http.client.entity.UrlEncodedFormEntity;

11. import org.apache.http.client.methods.CloseableHttpResponse;

12. import org.apache.http.client.methods.HttpGet;

13. import org.apache.http.client.methods.HttpPost;

14. import org.apache.http.client.utils.URIBuilder;

15. import org.apache.http.entity.ContentType;

16. import org.apache.http.entity.StringEntity;

17. import org.apache.http.impl.client.CloseableHttpClient;

18. import org.apache.http.impl.client.HttpClients;

19. import org.apache.http.message.BasicNameValuePair;

20. import org.apache.http.util.EntityUtils;

22. public class HttpClientUtil {

24. public static String doGet(String url, Map<String, String> param) {

26. // 创建Httpclient对象

27. CloseableHttpClient httpclient = HttpClients.createDefault();

29. String resultString = "";

30. CloseableHttpResponse response = null;

31. try {

32. // 创建uri

33. URIBuilder builder = new URIBuilder(url);

34. if (param != null) {

35. for (String key : param.keySet()) {

36. builder.addParameter(key, param.get(key));

37. }

38. }

39. URI uri = builder.build();

41. // 创建http GET请求

42. HttpGet httpGet = new HttpGet(uri);

44. // 执行请求

45. response = httpclient.execute(httpGet);

46. // 判断返回状态是否为200

47. if (response.getStatusLine().getStatusCode() == 200) {

48. resultString = EntityUtils.toString(response.getEntity(), "UTF-8");

49. }

50. } catch (Exception e) {

51. e.printStackTrace();

52. } finally {

53. try {

54. if (response != null) {

55. response.close();

56. }

57. httpclient.close();

58. } catch (IOException e) {

59. e.printStackTrace();

60. }

61. }

62. return resultString;

63. }

65. public static String doGet(String url) {

66. return doGet(url, null);

67. }

69. public static String doPost(String url, Map<String, String> param) {

70. // 创建Httpclient对象

71. CloseableHttpClient httpClient = HttpClients.createDefault();

72. CloseableHttpResponse response = null;

73. String resultString = "";

74. try {

75. // 创建Http Post请求

76. HttpPost httpPost = new HttpPost(url);

77. // 创建参数列表

78. if (param != null) {

79. List<NameValuePair> paramList = new ArrayList<>();

80. for (String key : param.keySet()) {

81. paramList.add(new BasicNameValuePair(key, param.get(key)));

82. }

83. // 模拟表单

84. UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);

85. httpPost.setEntity(entity);

86. }

87. // 执行http请求

88. response = httpClient.execute(httpPost);

89. resultString = EntityUtils.toString(response.getEntity(), "utf-8");

90. } catch (Exception e) {

91. e.printStackTrace();

92. } finally {

93. try {

94. response.close();

95. } catch (IOException e) {

96. // TODO Auto-generated catch block

97. e.printStackTrace();

98. }

99. }

101. return resultString;

102. }

104. public static String doPost(String url) {

105. return doPost(url, null);

106. }

108. public static String doPostJson(String url, String json) {

109. // 创建Httpclient对象

110. CloseableHttpClient httpClient = HttpClients.createDefault();

111. CloseableHttpResponse response = null;

112. String resultString = "";

113. try {

114. // 创建Http Post请求

115. HttpPost httpPost = new HttpPost(url);

116. // 创建请求内容

117. StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);

118. httpPost.setEntity(entity);

119. // 执行http请求

120. response = httpClient.execute(httpPost);

121. resultString = EntityUtils.toString(response.getEntity(), "utf-8");

122. } catch (Exception e) {

123. e.printStackTrace();

124. } finally {

125. try {

126. response.close();

127. } catch (IOException e) {

128. // TODO Auto-generated catch block

129. e.printStackTrace();

130. }

131. }

133. return resultString;

134. }

135. }

4.FastDFSClient工具类1. package cn.itcast.fastdfs.cliennt;

3. import org.csource.common.NameValuePair;

4. import org.csource.fastdfs.ClientGlobal;

5. import org.csource.fastdfs.StorageClient1;

6. import org.csource.fastdfs.StorageServer;

7. import org.csource.fastdfs.TrackerClient;

8. import org.csource.fastdfs.TrackerServer;

10. public class FastDFSClient {

12. private TrackerClient trackerClient = null;

13. private TrackerServer trackerServer = null;

14. private StorageServer storageServer = null;

15. private StorageClient1 storageClient = null;

17. public FastDFSClient(String conf) throws Exception {

18. if (conf.contains("classpath:")) {

19. conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());

20. }

21. ClientGlobal.init(conf);

22. trackerClient = new TrackerClient();

23. trackerServer = trackerClient.getConnection();

24. storageServer = null;

25. storageClient = new StorageClient1(trackerServer, storageServer);

26. }

28. /**

29. * 上传文件方法

30. * <p>Title: uploadFile</p>

31. * <p>Description: </p>

32. * @param fileName 文件全路径

33. * @param extName 文件扩展名,不包含(.)

34. * @param metas 文件扩展信息

35. * @return

36. * @throws Exception

37. */

38. public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {

39. String result = storageClient.upload_file1(fileName, extName, metas);

40. return result;

41. }

43. public String uploadFile(String fileName) throws Exception {

44. return uploadFile(fileName, null, null);

45. }

47. public String uploadFile(String fileName, String extName) throws Exception {

48. return uploadFile(fileName, extName, null);

49. }

51. /**

52. * 上传文件方法

53. * <p>Title: uploadFile</p>

54. * <p>Description: </p>

55. * @param fileContent 文件的内容,字节数组

56. * @param extName 文件扩展名

57. * @param metas 文件扩展信息

58. * @return

59. * @throws Exception

60. */

61. public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {

63. String result = storageClient.upload_file1(fileContent, extName, metas);

64. return result;

65. }

67. public String uploadFile(byte[] fileContent) throws Exception {

68. return uploadFile(fileContent, null, null);

69. }

71. public String uploadFile(byte[] fileContent, String extName) throws Exception {

72. return uploadFile(fileContent, extName, null);

73. }

74. }

1. <span style="font-size:14px;font-weight:normal;">public class FastDFSTest {

3. @Test

4. public void testFileUpload() throws Exception {

5. // 1、加载配置文件,配置文件中的内容就是tracker服务的地址。

6. ClientGlobal.init("D:/workspaces-itcast/term197/taotao-manager-web/src/main/resources/resource/client.conf");

7. // 2、创建一个TrackerClient对象。直接new一个。

8. TrackerClient trackerClient = new TrackerClient();

9. // 3、使用TrackerClient对象创建连接,获得一个TrackerServer对象。

10. TrackerServer trackerServer = trackerClient.getConnection();

11. // 4、创建一个StorageServer的引用,值为null

12. StorageServer storageServer = null;

13. // 5、创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用

14. StorageClient storageClient = new StorageClient(trackerServer, storageServer);

15. // 6、使用StorageClient对象上传图片。

16. //扩展名不带“.”

17. String[] strings = storageClient.upload_file("D:/Documents/Pictures/images/200811281555127886.jpg", "jpg", null);

18. // 7、返回数组。包含组名和图片的路径。

19. for (String string : strings) {

20. System.out.println(string);

21. }

22. }

23. }</span>

# ![image](http://upload-images.jianshu.io/upload_images/2509688-45370c9d24b87e31?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5.获取异常的堆栈信息

1. package com.taotao.utils;

3. import java.io.PrintWriter;

4. import java.io.StringWriter;

6. public class ExceptionUtil {

8. /**

9. * 获取异常的堆栈信息

10. *

11. * @param t

12. * @return

13. */

14. public static String getStackTrace(Throwable t) {

15. StringWriter sw = new StringWriter();

16. PrintWriter pw = new PrintWriter(sw);

18. try {

19. t.printStackTrace(pw);

20. return sw.toString();

21. } finally {

22. pw.close();

23. }

24. }

25. }

#6.easyUIDataGrid对象返回值1. package com.taotao.result;

3. import java.util.List;

5. /**

6. * easyUIDataGrid对象返回值

7. * <p>Title: EasyUIResult</p>

8. * <p>Description: </p>

9. * <p>Company: www.itcast.com</p>

10. * @author 入云龙

11. * @date 2015年7月21日下午4:12:52

12. * @version 1.0

13. */

14. public class EasyUIResult {

16. private Integer total;

18. private List<?> rows;

20. public EasyUIResult(Integer total, List<?> rows) {

21. this.total = total;

22. this.rows = rows;

23. }

25. public EasyUIResult(long total, List<?> rows) {

26. this.total = (int) total;

27. this.rows = rows;

28. }

30. public Integer getTotal() {

31. return total;

32. }

33. public void setTotal(Integer total) {

34. this.total = total;

35. }

36. public List<?> getRows() {

37. return rows;

38. }

39. public void setRows(List<?> rows) {

40. this.rows = rows;

41. }

44. }

7.ftp上传下载工具类1. package com.taotao.utils;

3. import java.io.File;

4. import java.io.FileInputStream;

5. import java.io.FileNotFoundException;

6. import java.io.FileOutputStream;

7. import java.io.IOException;

8. import java.io.InputStream;

9. import java.io.OutputStream;

11. import org.apache.commons.net.ftp.FTP;

12. import org.apache.commons.net.ftp.FTPClient;

13. import org.apache.commons.net.ftp.FTPFile;

14. import org.apache.commons.net.ftp.FTPReply;

16. /**

17. * ftp上传下载工具类

18. * <p>Title: FtpUtil</p>

19. * <p>Description: </p>

20. * <p>Company: www.itcast.com</p>

21. * @author 入云龙

22. * @date 2015年7月29日下午8:11:51

23. * @version 1.0

24. */

25. public class FtpUtil {

27. /**

28. * Description: 向FTP服务器上传文件

29. * @param host FTP服务器hostname

30. * @param port FTP服务器端口

31. * @param username FTP登录账号

32. * @param password FTP登录密码

33. * @param basePath FTP服务器基础目录

34. * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath

35. * @param filename 上传到FTP服务器上的文件名

36. * @param input 输入流

37. * @return 成功返回true,否则返回false

38. */

39. public static boolean uploadFile(String host, int port, String username, String password, String basePath,

40. String filePath, String filename, InputStream input) {

41. boolean result = false;

42. FTPClient ftp = new FTPClient();

43. try {

44. int reply;

45. ftp.connect(host, port);// 连接FTP服务器

46. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器

47. ftp.login(username, password);// 登录

48. reply = ftp.getReplyCode();

49. if (!FTPReply.isPositiveCompletion(reply)) {

50. ftp.disconnect();

51. return result;

52. }

53. //切换到上传目录

54. if (!ftp.changeWorkingDirectory(basePath+filePath)) {

55. //如果目录不存在创建目录

56. String[] dirs = filePath.split("/");

57. String tempPath = basePath;

58. for (String dir : dirs) {

59. if (null == dir || "".equals(dir)) continue;

60. tempPath += "/" + dir;

61. if (!ftp.changeWorkingDirectory(tempPath)) {

62. if (!ftp.makeDirectory(tempPath)) {

63. return result;

64. } else {

65. ftp.changeWorkingDirectory(tempPath);

66. }

67. }

68. }

69. }

70. //设置上传文件的类型为二进制类型

71. ftp.setFileType(FTP.BINARY_FILE_TYPE);

72. //上传文件

73. if (!ftp.storeFile(filename, input)) {

74. return result;

75. }

76. input.close();

77. ftp.logout();

78. result = true;

79. } catch (IOException e) {

80. e.printStackTrace();

81. } finally {

82. if (ftp.isConnected()) {

83. try {

84. ftp.disconnect();

85. } catch (IOException ioe) {

86. }

87. }

88. }

89. return result;

90. }

92. /**

93. * Description: 从FTP服务器下载文件

94. * @param host FTP服务器hostname

95. * @param port FTP服务器端口

96. * @param username FTP登录账号

97. * @param password FTP登录密码

98. * @param remotePath FTP服务器上的相对路径

99. * @param fileName 要下载的文件名

100. * @param localPath 下载后保存到本地的路径

101. * @return

102. */

103. public static boolean downloadFile(String host, int port, String username, String password, String remotePath,

104. String fileName, String localPath) {

105. boolean result = false;

106. FTPClient ftp = new FTPClient();

107. try {

108. int reply;

109. ftp.connect(host, port);

110. // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器

111. ftp.login(username, password);// 登录

112. reply = ftp.getReplyCode();

113. if (!FTPReply.isPositiveCompletion(reply)) {

114. ftp.disconnect();

115. return result;

116. }

117. ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录

118. FTPFile[] fs = ftp.listFiles();

119. for (FTPFile ff : fs) {

120. if (ff.getName().equals(fileName)) {

121. File localFile = new File(localPath + "/" + ff.getName());

123. OutputStream is = new FileOutputStream(localFile);

124. ftp.retrieveFile(ff.getName(), is);

125. is.close();

126. }

127. }

129. ftp.logout();

130. result = true;

131. } catch (IOException e) {

132. e.printStackTrace();

133. } finally {

134. if (ftp.isConnected()) {

135. try {

136. ftp.disconnect();

137. } catch (IOException ioe) {

138. }

139. }

140. }

141. return result;

142. }

144. public static void main(String[] args) {

145. try {

146. FileInputStream in=new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));

147. boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images","/2015/01/21", "gaigeming.jpg", in);

148. System.out.println(flag);

149. } catch (FileNotFoundException e) {

150. e.printStackTrace();

151. }

152. }

153. }

8.各种id生成策略1. package com.taotao.utils;

3. import java.util.Random;

5. /**

6. * 各种id生成策略

7. * <p>Title: IDUtils</p>

8. * <p>Description: </p>

9. * @date 2015年7月22日下午2:32:10

10. * @version 1.0

11. */

12. public class IDUtils {

14. /**

15. * 图片名生成

16. */

17. public static String genImageName() {

18. //取当前时间的长整形值包含毫秒

19. long millis = System.currentTimeMillis();

20. //long millis = System.nanoTime();

21. //加上三位随机数

22. Random random = new Random();

23. int end3 = random.nextInt(999);

24. //如果不足三位前面补0

25. String str = millis + String.format("%03d", end3);

27. return str;

28. }

30. /**

31. * 商品id生成

32. */

33. public static long genItemId() {

34. //取当前时间的长整形值包含毫秒

35. long millis = System.currentTimeMillis();

36. //long millis = System.nanoTime();

37. //加上两位随机数

38. Random random = new Random();

39. int end2 = random.nextInt(99);

40. //如果不足两位前面补0

41. String str = millis + String.format("%02d", end2);

42. long id = new Long(str);

43. return id;

44. }

46. public static void main(String[] args) {

47. for(int i=0;i< 100;i++)

48. System.out.println(genItemId());

49. }

50. }

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();