常用java工具类

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南) 本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。 阅读详情

分享一个非常好用的一个的开源得工具类框架hutool
1.json转换工具

package com.taotao.utils;

import java.util.List;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

/**

  • json转换工具类
    */
    public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**

    • 将对象转换成json字符串。
    • Title: pojoToJson

    • Description:

    • @param data
    • @return
      */
      public static String objectToJson(Object data) {
      try {
      String string = MAPPER.writeValueAsString(data);
      return string;
      } catch (JsonProcessingException e) {
      e.printStackTrace();
      }
      return null;
      }

    /**

    • 将json结果集转化为对象
    • @param jsonData json数据
    • @param clazz 对象中的object类型
    • @return
      */
      public static T jsonToPojo(String jsonData, Class beanType) {
      try {
      T t = MAPPER.readValue(jsonData, beanType);
      return t;
      } catch (Exception e) {
      e.printStackTrace();
      }
      return null;
      }

    /**

    • 将json数据转换成pojo对象list

    • Title: jsonToList

    • Description:

    • @param jsonData

    • @param beanType

    • @return
      */
      public static List jsonToList(String jsonData, Class beanType) {
      JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
      try {
      List list = MAPPER.readValue(jsonData, javaType);
      return list;
      } catch (Exception e) {
      e.printStackTrace();
      }

      return null;
      }

}
2.cookie的读写
package com.taotao.common.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*

  • Cookie 工具类

*/
public final class CookieUtils {

/**
 * 得到Cookie的值, 不编码
 * 
 * @param request
 * @param cookieName
 * @return
 */
public static String getCookieValue(HttpServletRequest request, String cookieName) {
    return getCookieValue(request, cookieName, false);
}

/**
 * 得到Cookie的值,
 * 
 * @param request
 * @param cookieName
 * @return
 */
public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
    Cookie[] cookieList = request.getCookies();
    if (cookieList == null || cookieName == null) {
        return null;
    }
    String retValue = null;
    try {
        for (int i = 0; i < cookieList.length; i++) {
            if (cookieList[i].getName().equals(cookieName)) {
                if (isDecoder) {
                    retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");
                } else {
                    retValue = cookieList[i].getValue();
                }
                break;
            }
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return retValue;
}

/**
 * 得到Cookie的值,
 * 
 * @param request
 * @param cookieName
 * @return
 */
public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {
    Cookie[] cookieList = request.getCookies();
    if (cookieList == null || cookieName == null) {
        return null;
    }
    String retValue = null;
    try {
        for (int i = 0; i < cookieList.length; i++) {
            if (cookieList[i].getName().equals(cookieName)) {
                retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);
                break;
            }
        }
    } catch (UnsupportedEncodingException e) {
    	 e.printStackTrace();
    }
    return retValue;
}

/**
 * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码
 */
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
        String cookieValue) {
    setCookie(request, response, cookieName, cookieValue, -1);
}

/**
 * 设置Cookie的值 在指定时间内生效,但不编码
 */
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
        String cookieValue, int cookieMaxage) {
    setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);
}

/**
 * 设置Cookie的值 不设置生效时间,但编码
 */
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
        String cookieValue, boolean isEncode) {
    setCookie(request, response, cookieName, cookieValue, -1, isEncode);
}

/**
 * 设置Cookie的值 在指定时间内生效, 编码参数
 */
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
        String cookieValue, int cookieMaxage, boolean isEncode) {
    doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);
}

/**
 * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)
 */
public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
        String cookieValue, int cookieMaxage, String encodeString) {
    doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);
}

/**
 * 删除Cookie带cookie域名
 */
public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,
        String cookieName) {
    doSetCookie(request, response, cookieName, "", -1, false);
}

/**
 * 设置Cookie的值,并使其在指定时间内生效
 * 
 * @param cookieMaxage cookie生效的最大秒数
 */
private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
        String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
    try {
        if (cookieValue == null) {
            cookieValue = "";
        } else if (isEncode) {
            cookieValue = URLEncoder.encode(cookieValue, "utf-8");
        }
        Cookie cookie = new Cookie(cookieName, cookieValue);
        if (cookieMaxage > 0)
            cookie.setMaxAge(cookieMaxage);
        if (null != request) {// 设置域名的cookie
        	String domainName = getDomainName(request);
        	System.out.println(domainName);
            if (!"localhost".equals(domainName)) {
            	cookie.setDomain(domainName);
            }
        }
        cookie.setPath("/");
        response.addCookie(cookie);
    } catch (Exception e) {
    	 e.printStackTrace();
    }
}

/**
 * 设置Cookie的值,并使其在指定时间内生效
 * 
 * @param cookieMaxage cookie生效的最大秒数
 */
private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
        String cookieName, String cookieValue, int cookieMaxage, String encodeString) {
    try {
        if (cookieValue == null) {
            cookieValue = "";
        } else {
            cookieValue = URLEncoder.encode(cookieValue, encodeString);
        }
        Cookie cookie = new Cookie(cookieName, cookieValue);
        if (cookieMaxage > 0)
            cookie.setMaxAge(cookieMaxage);
        if (null != request) {// 设置域名的cookie
        	String domainName = getDomainName(request);
        	System.out.println(domainName);
            if (!"localhost".equals(domainName)) {
            	cookie.setDomain(domainName);
            }
        }
        cookie.setPath("/");
        response.addCookie(cookie);
    } catch (Exception e) {
    	 e.printStackTrace();
    }
}

/**
 * 得到cookie的域名
 */
private static final String getDomainName(HttpServletRequest request) {
    String domainName = null;

    String serverName = request.getRequestURL().toString();
    if (serverName == null || serverName.equals("")) {
        domainName = "";
    } else {
        serverName = serverName.toLowerCase();
        serverName = serverName.substring(7);
        final int end = serverName.indexOf("/");
        serverName = serverName.substring(0, end);
        final String[] domains = serverName.split("\\.");
        int len = domains.length;
        if (len > 3) {
            // www.xxx.com.cn
            domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
        } else if (len <= 3 && len > 1) {
            // xxx.com or xxx.cn
            domainName = "." + domains[len - 2] + "." + domains[len - 1];
        } else {
            domainName = serverName;
        }
    }

    if (domainName != null && domainName.indexOf(":") > 0) {
        String[] ary = domainName.split("\\:");
        domainName = ary[0];
    }
    return domainName;
}

}
3.HttpClientUtil 相关包及文档下载
package com.taotao.utils;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil {

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

	// 创建Httpclient对象
	CloseableHttpClient httpclient = HttpClients.createDefault();

	String resultString = "";
	CloseableHttpResponse response = null;
	try {
		// 创建uri
		URIBuilder builder = new URIBuilder(url);
		if (param != null) {
			for (String key : param.keySet()) {
				builder.addParameter(key, param.get(key));
			}
		}
		URI uri = builder.build();

		// 创建http GET请求
		HttpGet httpGet = new HttpGet(uri);

		// 执行请求
		response = httpclient.execute(httpGet);
		// 判断返回状态是否为200
		if (response.getStatusLine().getStatusCode() == 200) {
			resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
		}
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			if (response != null) {
				response.close();
			}
			httpclient.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return resultString;
}

public static String doGet(String url) {
	return doGet(url, null);
}

public static String doPost(String url, Map<String, String> param) {
	// 创建Httpclient对象
	CloseableHttpClient httpClient = HttpClients.createDefault();
	CloseableHttpResponse response = null;
	String resultString = "";
	try {
		// 创建Http Post请求
		HttpPost httpPost = new HttpPost(url);
		// 创建参数列表
		if (param != null) {
			List<NameValuePair> paramList = new ArrayList<>();
			for (String key : param.keySet()) {
				paramList.add(new BasicNameValuePair(key, param.get(key)));
			}
			// 模拟表单
			UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
			httpPost.setEntity(entity);
		}
		// 执行http请求
		response = httpClient.execute(httpPost);
		resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			response.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	return resultString;
}

public static String doPost(String url) {
	return doPost(url, null);
}

public static String doPostJson(String url, String json) {
	// 创建Httpclient对象
	CloseableHttpClient httpClient = HttpClients.createDefault();
	CloseableHttpResponse response = null;
	String resultString = "";
	try {
		// 创建Http Post请求
		HttpPost httpPost = new HttpPost(url);
		// 创建请求内容
		StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
		httpPost.setEntity(entity);
		// 执行http请求
		response = httpClient.execute(httpPost);
		resultString = EntityUtils.toString(response.getEntity(), "utf-8");
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		try {
			response.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	return resultString;
}

}
4.FastDFSClient工具类 相关包以及文档下载
package cn.itcast.fastdfs.cliennt;

import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;

public class FastDFSClient {

private TrackerClient trackerClient = null;
private TrackerServer trackerServer = null;
private StorageServer storageServer = null;
private StorageClient1 storageClient = null;

public FastDFSClient(String conf) throws Exception {
	if (conf.contains("classpath:")) {
		conf = conf.replace("classpath:", this.getClass().getResource("/").getPath());
	}
	ClientGlobal.init(conf);
	trackerClient = new TrackerClient();
	trackerServer = trackerClient.getConnection();
	storageServer = null;
	storageClient = new StorageClient1(trackerServer, storageServer);
}

/**
 * 上传文件方法
 * <p>Title: uploadFile</p>
 * <p>Description: </p>
 * @param fileName 文件全路径
 * @param extName 文件扩展名,不包含(.)
 * @param metas 文件扩展信息
 * @return
 * @throws Exception
 */
public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception {
	String result = storageClient.upload_file1(fileName, extName, metas);
	return result;
}

public String uploadFile(String fileName) throws Exception {
	return uploadFile(fileName, null, null);
}

public String uploadFile(String fileName, String extName) throws Exception {
	return uploadFile(fileName, extName, null);
}

/**
 * 上传文件方法
 * <p>Title: uploadFile</p>
 * <p>Description: </p>
 * @param fileContent 文件的内容,字节数组
 * @param extName 文件扩展名
 * @param metas 文件扩展信息
 * @return
 * @throws Exception
 */
public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception {
	
	String result = storageClient.upload_file1(fileContent, extName, metas);
	return result;
}

public String uploadFile(byte[] fileContent) throws Exception {
	return uploadFile(fileContent, null, null);
}

public String uploadFile(byte[] fileContent, String extName) throws Exception {
	return uploadFile(fileContent, extName, null);
}

}
public class FastDFSTest {

@Test
public void testFileUpload() throws Exception {
	// 1、加载配置文件,配置文件中的内容就是tracker服务的地址。
	ClientGlobal.init("D:/workspaces-itcast/term197/taotao-manager-web/src/main/resources/resource/client.conf");
	// 2、创建一个TrackerClient对象。直接new一个。
	TrackerClient trackerClient = new TrackerClient();
	// 3、使用TrackerClient对象创建连接,获得一个TrackerServer对象。
	TrackerServer trackerServer = trackerClient.getConnection();
	// 4、创建一个StorageServer的引用,值为null
	StorageServer storageServer = null;
	// 5、创建一个StorageClient对象,需要两个参数TrackerServer对象、StorageServer的引用
	StorageClient storageClient = new StorageClient(trackerServer, storageServer);
	// 6、使用StorageClient对象上传图片。
	//扩展名不带“.”
	String[] strings = storageClient.upload_file("D:/Documents/Pictures/images/200811281555127886.jpg", "jpg", null);
	// 7、返回数组。包含组名和图片的路径。
	for (String string : strings) {
		System.out.println(string);
	}
}

}

5.获取异常的堆栈信息
package com.taotao.utils;

import java.io.PrintWriter;
import java.io.StringWriter;

public class ExceptionUtil {

/**
 * 获取异常的堆栈信息
 * 
 * @param t
 * @return
 */
public static String getStackTrace(Throwable t) {
	StringWriter sw = new StringWriter();
	PrintWriter pw = new PrintWriter(sw);

	try {
		t.printStackTrace(pw);
		return sw.toString();
	} finally {
		pw.close();
	}
}

}

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

import java.util.List;

/**

  • easyUIDataGrid对象返回值

  • Title: EasyUIResult

  • Description:

  • Company: www.itcast.com

  • @author 入云龙

  • @date 2015年7月21日下午4:12:52

  • @version 1.0
    */
    public class EasyUIResult {

    private Integer total;

    private List<?> rows;

    public EasyUIResult(Integer total, List<?> rows) {
    this.total = total;
    this.rows = rows;
    }

    public EasyUIResult(long total, List<?> rows) {
    this.total = (int) total;
    this.rows = rows;
    }

    public Integer getTotal() {
    return total;
    }
    public void setTotal(Integer total) {
    this.total = total;
    }
    public List<?> getRows() {
    return rows;
    }
    public void setRows(List<?> rows) {
    this.rows = rows;
    }

}

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

/**

  • ftp上传下载工具类

  • Title: FtpUtil

  • Description:

  • Company: www.itcast.com

  • @author 入云龙

  • @date 2015年7月29日下午8:11:51

  • @version 1.0
    */
    public class FtpUtil {

    /**

    • Description: 向FTP服务器上传文件
    • @param host FTP服务器hostname
    • @param port FTP服务器端口
    • @param username FTP登录账号
    • @param password FTP登录密码
    • @param basePath FTP服务器基础目录
    • @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
    • @param filename 上传到FTP服务器上的文件名
    • @param input 输入流
    • @return 成功返回true,否则返回false
      */
      public static boolean uploadFile(String host, int port, String username, String password, String basePath,
      String filePath, String filename, InputStream input) {
      boolean result = false;
      FTPClient ftp = new FTPClient();
      try {
      int reply;
      ftp.connect(host, port);// 连接FTP服务器
      // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
      ftp.login(username, password);// 登录
      reply = ftp.getReplyCode();
      if (!FTPReply.isPositiveCompletion(reply)) {
      ftp.disconnect();
      return result;
      }
      //切换到上传目录
      if (!ftp.changeWorkingDirectory(basePath+filePath)) {
      //如果目录不存在创建目录
      String[] dirs = filePath.split("/");
      String tempPath = basePath;
      for (String dir : dirs) {
      if (null == dir || “”.equals(dir)) continue;
      tempPath += “/” + dir;
      if (!ftp.changeWorkingDirectory(tempPath)) {
      if (!ftp.makeDirectory(tempPath)) {
      return result;
      } else {
      ftp.changeWorkingDirectory(tempPath);
      }
      }
      }
      }
      //设置上传文件的类型为二进制类型
      ftp.setFileType(FTP.BINARY_FILE_TYPE);
      //上传文件
      if (!ftp.storeFile(filename, input)) {
      return result;
      }
      input.close();
      ftp.logout();
      result = true;
      } catch (IOException e) {
      e.printStackTrace();
      } finally {
      if (ftp.isConnected()) {
      try {
      ftp.disconnect();
      } catch (IOException ioe) {
      }
      }
      }
      return result;
      }

    /**

    • Description: 从FTP服务器下载文件

    • @param host FTP服务器hostname

    • @param port FTP服务器端口

    • @param username FTP登录账号

    • @param password FTP登录密码

    • @param remotePath FTP服务器上的相对路径

    • @param fileName 要下载的文件名

    • @param localPath 下载后保存到本地的路径

    • @return
      */
      public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
      String fileName, String localPath) {
      boolean result = false;
      FTPClient ftp = new FTPClient();
      try {
      int reply;
      ftp.connect(host, port);
      // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
      ftp.login(username, password);// 登录
      reply = ftp.getReplyCode();
      if (!FTPReply.isPositiveCompletion(reply)) {
      ftp.disconnect();
      return result;
      }
      ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
      FTPFile[] fs = ftp.listFiles();
      for (FTPFile ff : fs) {
      if (ff.getName().equals(fileName)) {
      File localFile = new File(localPath + “/” + ff.getName());

       		OutputStream is = new FileOutputStream(localFile);
       		ftp.retrieveFile(ff.getName(), is);
       		is.close();
       	}
       }
      
       ftp.logout();
       result = true;
      

      } catch (IOException e) {
      e.printStackTrace();
      } finally {
      if (ftp.isConnected()) {
      try {
      ftp.disconnect();
      } catch (IOException ioe) {
      }
      }
      }
      return result;
      }

    public static void main(String[] args) {
    try {
    FileInputStream in=new FileInputStream(new File(“D:\temp\image\gaigeming.jpg”));
    boolean flag = uploadFile(“192.168.25.133”, 21, “ftpuser”, “ftpuser”, “/home/ftpuser/www/images”,"/2015/01/21", “gaigeming.jpg”, in);
    System.out.println(flag);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    }
    }
    8.各种id生成策略
    package com.taotao.utils;

import java.util.Random;

/**

  • 各种id生成策略

  • Title: IDUtils

  • Description:

  • @date 2015年7月22日下午2:32:10

  • @version 1.0
    */
    public class IDUtils {

    /**

    • 图片名生成
      */
      public static String genImageName() {
      //取当前时间的长整形值包含毫秒
      long millis = System.currentTimeMillis();
      //long millis = System.nanoTime();
      //加上三位随机数
      Random random = new Random();
      int end3 = random.nextInt(999);
      //如果不足三位前面补0
      String str = millis + String.format("%03d", end3);

      return str;
      }

    /**

    • 商品id生成
      */
      public static long genItemId() {
      //取当前时间的长整形值包含毫秒
      long millis = System.currentTimeMillis();
      //long millis = System.nanoTime();
      //加上两位随机数
      Random random = new Random();
      int end2 = random.nextInt(99);
      //如果不足两位前面补0
      String str = millis + String.format("%02d", end2);
      long id = new Long(str);
      return id;
      }

    public static void main(String[] args) {
    for(int i=0;i< 100;i++)
    System.out.println(genItemId());
    }
    }
    9.上传图片返回值
    package com.result;
    /**

  • 上传图片返回值

  • Title: PictureResult

  • Description:

  • Company: www.itcast.com

  • @author 入云龙

  • @date 2015年7月22日下午2:09:02

  • @version 1.0
    */
    public class PictureResult {

    /**

    • 上传图片返回值,成功:0 失败:1
      /
      private Integer error;
      /
      *
    • 回显图片使用的url
      /
      private String url;
      /
      *
    • 错误时的错误消息
      */
      private String message;
      public PictureResult(Integer state, String url) {
      this.url = url;
      this.error = state;
      }
      public PictureResult(Integer state, String url, String errorMessage) {
      this.url = url;
      this.error = state;
      this.message = errorMessage;
      }
      public Integer getError() {
      return error;
      }
      public void setError(Integer error) {
      this.error = error;
      }
      public String getUrl() {
      return url;
      }
      public void setUrl(String url) {
      this.url = url;
      }
      public String getMessage() {
      return message;
      }
      public void setMessage(String message) {
      this.message = message;
      }

}

10.自定义响应结构
package com.result;

import java.util.List;

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

/**

  • 自定义响应结构
    */
    public class TaotaoResult {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    // 响应业务状态
    private Integer status;

    // 响应消息
    private String msg;

    // 响应中的数据
    private Object data;

    public static TaotaoResult build(Integer status, String msg, Object data) {
    return new TaotaoResult(status, msg, data);
    }

    public static TaotaoResult ok(Object data) {
    return new TaotaoResult(data);
    }

    public static TaotaoResult ok() {
    return new TaotaoResult(null);
    }

    public TaotaoResult() {

    }

    public static TaotaoResult build(Integer status, String msg) {
    return new TaotaoResult(status, msg, null);
    }

    public TaotaoResult(Integer status, String msg, Object data) {
    this.status = status;
    this.msg = msg;
    this.data = data;
    }

    public TaotaoResult(Object data) {
    this.status = 200;
    this.msg = “OK”;
    this.data = data;
    }

// public Boolean isOK() {
// return this.status == 200;
// }

public Integer getStatus() {
    return status;
}

public void setStatus(Integer status) {
    this.status = status;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public Object getData() {
    return data;
}

public void setData(Object data) {
    this.data = data;
}

/**
 * 将json结果集转化为TaotaoResult对象
 * 
 * @param jsonData json数据
 * @param clazz TaotaoResult中的object类型
 * @return
 */
public static TaotaoResult formatToPojo(String jsonData, Class<?> clazz) {
    try {
        if (clazz == null) {
            return MAPPER.readValue(jsonData, TaotaoResult.class);
        }
        JsonNode jsonNode = MAPPER.readTree(jsonData);
        JsonNode data = jsonNode.get("data");
        Object obj = null;
        if (clazz != null) {
            if (data.isObject()) {
                obj = MAPPER.readValue(data.traverse(), clazz);
            } else if (data.isTextual()) {
                obj = MAPPER.readValue(data.asText(), clazz);
            }
        }
        return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
    } catch (Exception e) {
        return null;
    }
}

/**
 * 没有object对象的转化
 * 
 * @param json
 * @return
 */
public static TaotaoResult format(String json) {
    try {
        return MAPPER.readValue(json, TaotaoResult.class);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

/**
 * Object是集合转化
 * 
 * @param jsonData json数据
 * @param clazz 集合中的类型
 * @return
 */
public static TaotaoResult formatToList(String jsonData, Class<?> clazz) {
    try {
        JsonNode jsonNode = MAPPER.readTree(jsonData);
        JsonNode data = jsonNode.get("data");
        Object obj = null;
        if (data.isArray() && data.size() > 0) {
            obj = MAPPER.readValue(data.traverse(),
                    MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
        }
        return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
    } catch (Exception e) {
        return null;
    }
}

}

11.jedis操作
package com.taotao.jedis;

public interface JedisClient {

String set(String key, String value);
String get(String key);
Boolean exists(String key);
Long expire(String key, int seconds);
Long ttl(String key);
Long incr(String key);
Long hset(String key, String field, String value);
String hget(String key, String field);
Long hdel(String key, String... field);

}
package com.taotao.jedis;

import org.springframework.beans.factory.annotation.Autowired;

import redis.clients.jedis.JedisCluster;

public class JedisClientCluster implements JedisClient {

@Autowired
private JedisCluster jedisCluster;

@Override
public String set(String key, String value) {
	return jedisCluster.set(key, value);
}

@Override
public String get(String key) {
	return jedisCluster.get(key);
}

@Override
public Boolean exists(String key) {
	return jedisCluster.exists(key);
}

@Override
public Long expire(String key, int seconds) {
	return jedisCluster.expire(key, seconds);
}

@Override
public Long ttl(String key) {
	return jedisCluster.ttl(key);
}

@Override
public Long incr(String key) {
	return jedisCluster.incr(key);
}

@Override
public Long hset(String key, String field, String value) {
	return jedisCluster.hset(key, field, value);
}

@Override
public String hget(String key, String field) {
	return jedisCluster.hget(key, field);
}

@Override
public Long hdel(String key, String... field) {
	return jedisCluster.hdel(key, field);
}

}
package com.taotao.jedis;

import org.springframework.beans.factory.annotation.Autowired;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisClientPool implements JedisClient {

@Autowired
private JedisPool jedisPool;


@Override
public String set(String key, String value) {
	Jedis jedis = jedisPool.getResource();
	String result = jedis.set(key, value);
	jedis.close();
	return result;
}


@Override
public String get(String key) {
	Jedis jedis = jedisPool.getResource();
	String result = jedis.get(key);
	jedis.close();
	return result;
}


@Override
public Boolean exists(String key) {
	Jedis jedis = jedisPool.getResource();
	Boolean result = jedis.exists(key);
	jedis.close();
	return result;
}


@Override
public Long expire(String key, int seconds) {
	Jedis jedis = jedisPool.getResource();
	Long result = jedis.expire(key, seconds);
	jedis.close();
	return result;
}


@Override
public Long ttl(String key) {
	Jedis jedis = jedisPool.getResource();
	Long result = jedis.ttl(key);
	jedis.close();
	return result;
}


@Override
public Long incr(String key) {
	Jedis jedis = jedisPool.getResource();
	Long result = jedis.incr(key);
	jedis.close();
	return result;
}


@Override
public Long hset(String key, String field, String value) {
	Jedis jedis = jedisPool.getResource();
	Long result = jedis.hset(key, field, value);
	jedis.close();
	return result;
}


@Override
public String hget(String key, String field) {
	Jedis jedis = jedisPool.getResource();
	String result = jedis.hget(key, field);
	jedis.close();
	return result;
}


@Override
public Long hdel(String key, String... field) {
	Jedis jedis = jedisPool.getResource();
	Long result = jedis.hdel(key, field);
	jedis.close();
	return result;
}

}

TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读 模型的主要参数,如变换器的层数、三平面的维度、NeRF模型的具体细节和主要训练配置,在表1中详细说明。TripoSR的算法流程结合了先进的数据处理、模型设计和训练技术,使其能够在不到0.5秒的时间内从单张图像中快速生成详细的3D网格。总体而言,TripoSR是一个强大的3D重建工具,它在速度和质量上都表现出色,但也需要考虑到其对计算资源的需求和在处理极端复杂场景时可能遇到的挑战。:通过精心策划的训练数据集和多样化的数据渲染技术,TripoSR提高了模型的泛化能力和对真实世界图像的适应性。 阅读详情

相关推荐

双内核架构 Xenomai 4 安装教程

双内核 Xenomai 4 安装指南

^_^ 4466

Java四大常用JSON解析性能对比:Hutool、Fastjson2、Gson与Jackson测试

JSON 是现代软件开发中常用的数据交换格式,尤其在微服务和前后端分离的架构中更是必不可少。进行性能测试和对比分析,通过实测 20 万条数据解析,揭示各库在批量和逐条处理中的表现。本文将对 Java 中四大主流 JSON 解析库——仅供参考 仅供参考 仅供参考!

阿水的博客 1万+

等离子体密度诊断集

在实验上不仅要对带电粒子的分布和运动状态进行诊断,如电子温度、电子密度、电离温度等参数,还需要对等离子体中的中性粒子进行必要的实验测量,来获得有关物种的产生、能量分布以及各个激发态布居数分布等信息,如气体温度、转动温度、振动温度、激发温度等参数。

in546的博客 1351

hutool工具类踩坑记录 -- JSONUtil.toJsonStr()

JSONUtil.toJsonStr()踩坑

huahuo147的博客 5178

LAMMPS in文件详解:从零开始手把手教你配置金属分子动力学模拟

本文详细解析了LAMMPS in文件的配置方法,手把手教你完成金属分子动力学模拟的全流程。从软件环境准备、势函数选择,到使用Materials Studio构建模型、编写in文件进行能量最小化与系统弛豫,再到实施单轴拉伸生产模拟并提取应力应变数据,最后通过Python和OVITO进行结果分析与可视化,提供了完整的实战指南和常见问题排查技巧。

weixin_28475533的博客 527

手把手教你用Kokoro-82M-v1.1-zh搭建本地TTS服务(含WebSocket接口)

本文详细介绍了如何使用Kokoro-82M-v1.1-zh模型搭建本地TTS服务,包括环境配置、模型部署、WebSocket接口实现及性能优化。通过实战指南,开发者可以快速掌握本地部署TTS系统的关键技术,提升语音交互应用的开发效率。

weixin_30776273的博客 183

ObjectMapper的具体介绍与使用

ObjectMapper 类(com.fasterxml.jackson.databind.ObjectMapper)是 Jackson 的主要类,它可以帮助我们快速的进行各个类型和 Json 类型的相互转换。ObjectMapper通过writeValue()实现序列化,通过readValue()实现反序列化。ObjectMapper通过Feature枚举类,初始化了很多的默认配置。问题的json样式:String param=

欢迎来到 ABin-阿斌的博客:写一生代码,创一世佳话,筑一览芳华。 6720

Keil5与ARM编译器V5安装指南:从下载到配置全流程解析

本文提供Keil5与ARM Compiler V5的完整安装与配置指南。针对新版Keil5默认不包含V5编译器导致老工程编译失败的问题,详细解析了从软件下载、授权管理到获取并正确安装ARM Compiler V5(AC5)的全流程,确保开发者能顺利搭建兼容老项目的稳定开发环境。

weixin_29158047的博客 874

使用ObjectMapper转换json报错之问题分析

1.排查Object转换为json形式的String串,与解析json形式的String串是否使用的是同一个Object。这种问题一般出现在同一系统内部转换时会出现错误。 2.排查jsin形式的String

weixin_44907080的博客 2085

论文必备 - YOLOv12热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv12热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 1705

Python画柱状图(双柱状图,三柱状图)且显示对应数值

使用python实现双柱状图和三柱状图,并且在柱状图形的顶部显示对应数值;

yue200403的博客 1万+

如何在Java中实现对象和Map之间的转换

原创 一安2024年09月03日 07:01北京大家好,我是一安~在Java开发中,经常需要将Java对象转换成Map,或者反过来将Map转换成Java对象。这种转换在很多场景下都非常有用,比如在序列化和反序列化过程中、在数据传输和持久化时、或者在进行对象属性的批量操作时。本文将介绍几种不同的方法来实现Java对象和Map之间的相互转换,选择哪种方法取决于项目的具体需求和个人偏好。

竹林幽深 2310

Unity之如何接入NPOI 快速读取Excel

NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目

TxNet 4394

JAVA之常用的工具类

目录 1 org.apache.commons.io.IOUtils 2 org.apache.commons.io.FileUtils 3org.apache.commons.lang.StringUtils 4 org.apache.http.util.EntityUtils 5 org.apache.commons.lang3.StringUtils 6 org.apache....

上善若泪 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java中常用的工具类

本文主要介绍了Java中常用的工具类,日期类,格式化类,随机数类等,是对Java中常用的工具类的类型总结~

weixin_68093610的博客 1920

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java项目常用的工具类

java项目开发工具类拒绝过度封装,本文简单介绍了项目中常用的关于对象、集合、数组、Map等操作的工具类,开箱即用,值得拥有。

qq_43016560的博客 1230

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java中常用的工具类介绍

Java是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51亿个Java虚拟机,Java仍是企业和开发人员的首选开发平台。API:应用程序编程接口等价的可以看出现实生活中的操作说明说或者使用说明书。JavaAPIJava API指的是JDK中提供的各种功能的Java类。

m0_52514893的博客 323

java http工具类_11个常用java工具类(收藏一波)

前言这是统计github上的开源java项目,整理出最常用的11个开源工具类及其方法。大部分方法可以望文知意,请务必浏览一遍,知道有哪些好用的工具类,不必自己造轮子了。绝对的好东西,直接收藏吧!1.json转换工具1. package com.taotao.utils; 3. import java.util.List; 5. import com.fasterxml.jackson.core.J...

weixin_39959794的博客 934

Java中Collections工具类中常用方法详解

java.util.Collections工具类为Java开发者提供了一系列静态方法,用于简化集合操作,包括排序、搜索、填充、包装及同步等。常用方法如sort()用于对列表进行自然或自定义排序,binarySearch()用于在有序列表中查找元素,reverse()和shuffle()分别用于反转和随机排列列表元素。此外,fill()用于填充列表,frequency()用于统计元素出现次数,disjoint()用于判断两个集合是否无交集。工具类还提供了unmodifiableXXX和synchronized

记录学习编程的日常 1120

java常用集合工具类

java常用集合工具类

weixin_46528266的博客 264

【Java基础篇】——第4篇:Java常用类库与工具类

通过使用这些常用的类库与工具类,开发者可以更加高效地进行Java开发,避免重复造轮子,提升代码质量和可维护性。掌握这些工具类的使用,不仅能提高工作效率,还能让代码更加简洁和高效。

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1065

16种常用的Java工具类

16种常用的Java工具类org.apache.commons.io.IOUtilsorg.apache.commons.io.FileUtilsorg.apache.commons.lang.StringUtilsorg.apache.http.util.EntityUtils org.apache.commons.io.IOUtils closeQuietly() toString() copy() toByteArray() write() toInputStream() re

weixin_43272286的博客 369

28个java常用的工具类

28个java常用的工具类 

码农怀仔 241

JAVA常用的工具类

我们都知道,java中的很多集合,比如:ArrayList、LinkedList、HashMap、HashSet等,都是线程不安全的。中传递信息,比如:traceId,source等,便于在查询日志时能够串联一次完整的请求链路,快速定位问题。包下的一个类,它的全称是Mapped Diagnostic Context,我们可以认为它是一个线程安全的存放诊断日志的容器。**接口,MDC中获取当前请求的traceId,然后设置到header中。**方法,将这些线程不安全的集合,直接转换成线程安全集合。

java程序员 3771

Java8 StreamApi 常用重要功能封装工具类

封装Java8 StreamApi常用的使用方法,工具类代码如下: import java.util.*; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.stream.Collectors; /** * Java8 StreamAPI 常用使用封装 * * @author *** 2020/12/18 */ public class StreamApiUt

qq_38229543的博客 809

java开发中常用的工具类

实际开发中,java常用的工具类 在java开发中,工具类定义了一组公共方法,方便开发时重复的写一些,以下介绍开发人员在做项目时常用工具类。 1 org.apache.commons.lang.StringUtils isBlank:判断字符串是否为空(trim后判断)(trim函数去除字符串首尾的空格) isEmpty: 判断字符串是否为空(不trim并判断) equals:判断字符串是否相等...

qq_38735045的博客 954
上一篇: SpringMVC框架介绍
下一篇: Linux常用命令大全
_Romeo
_Romeo 优质创作者: 后端开发技术领域 优质创作者: 后端开发技术领域
博客等级 码龄8年 2万+粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Romeo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值