目录
1.判断数据为不为空
CollectionUtils.isEmpty(list)
导入包 import org.springframework.util.CollectionUtils;
StringUtils.isBlank(name)
导入包 import org.apache.commons.lang3.StringUtils;
2.场景 一个类两个字段部分数据重复
for (int i = 0; i < supplyChainCommoditySubclassAddReq.size(); i++) {
SupplyChainCommoditySubclassAddReq chainCommoditySubclassAddReq = supplyChainCommoditySubclassAddReq.get(i);
String relatedParenIds=chainCommoditySubclassAddReq.getRelatedParentIds();
Long relatedId=chainCommoditySubclassAddReq.getRelatedCid();
String relatedCid = Long.toString(relatedId);
String relatedParentIds = relatedParenIds.replace(relatedCid, "");
chainCommoditySubclassAddReq.setRelatedParentIds(relatedParentIds);
}
3.List数据分页
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.add(8);
list.add(9);
list.add(11);
list.add(12);
list.add(13);
list.add(14);
list.add(15);
int pageNo=(pageNo-1)*pageSize; //每页的起始索引
int pageSize=5; // 每页记录数
Integer sum = list.size(); //记录总数
if (pageNo+pageSize > sum) {
list = list.subList(pageNo,sum);
}else {
list = list.subList(pageNo,pageNo+pageSize);
}
System.out.println( list.size());
4.@SneakyThrows 处理异常
5.测试代码运行时间
long startTime = System.currentTimeMillis(); //获取开始时间
long endTime = System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ms")
6.图片url读取 当url错误时解决方案
@Override
public String getBase64ByImgUrl(String imgUrl){
getUrlJude(imgUrl);
try {
URL urlConet = new URL(imgUrl);
URLConnection con = urlConet.openConnection();
InputStream in = con.getInputStream();
byte[] buffer = new byte[4 * 1024];
int n = 0;
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
byte[] bs = out.toByteArray();
String s = Base64.getEncoder().encodeToString(bs);
String file=s.substring(0,4);
if (!file.equals("/9j/")){
throw new GlobalException(EnumStatusCode.SAVE_FILE_URL_MISTAKE);
}
return s;
} catch (IOException e) {
throw new GlobalException(EnumStatusCode.SAVE_FILE_URL_MISTAKE);
}
}
/**
* 读取url 并判断大小
*/
private void getUrlJude(String urlString){
int length=0;
URL url;
try {
url = new URL(urlString);
HttpURLConnection urlcon=(HttpURLConnection)url.openConnection();//打开连接
//根据响应获取文件大小
length=urlcon.getContentLength();
urlcon.disconnect();//关闭连接
}catch(Exception e){
throw new GlobalException(EnumStatusCode.SAVE_FILE_URL_MISTAKE);
}
long lengths = (long)length;
if (lengths < 1024) {
} else if (lengths < 1048576) {
} else if (lengths < 1073741824) {
double data3=(double) lengths / 1048576;
BigDecimal data1 = new BigDecimal("3");
BigDecimal data2 = new BigDecimal(data3);
if (data1.compareTo(data2) < 0) {
throw new GlobalException(EnumStatusCode.SAVE_FILE_URL_SIZE_OUT);
}
}else{
throw new GlobalException(EnumStatusCode.SAVE_FILE_URL_SIZE_OUT);
}
}
7.转换问题
(1)KB MB GB转换
public static void main(String[] args) {
long size=2753L;
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString = "";
if (size < 1024) {
fileSizeString = df.format((double) size) + "KB";
} else if (size < 1048576) {
fileSizeString = df.format((double) size / 1024) + "MB";
} else if (size < 1073741824) {
fileSizeString = df.format((double) size / 1048576) + "GB";
}
System.out.println(fileSizeString);
}
(2)String转list
String strs="1,2,3";
String[] str= strs.split(',');
List<String> list = Arrays.asList(type);
8.年月日的操作
(1)年月日的获取
Calendar calendar = Calendar.getInstance();
int monthNow = calendar.get(Calendar.MONTH) + 1;
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
int dayNow = calendar.get(Calendar.DATE);
int yearNow = calendar.get(Calendar.YEAR);
// 获取当前小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
// 获取当前分钟
int minute = calendar.get(Calendar.MINUTE);
(2)年月日的转换
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = simpleDateFormat.parse("2021-09-10 14:48:06");
System.out.println(date); //Fri Sep 10 14:48:06 CST 2021
System.out.println(" (int) (date.getTime() / 1000) = " + (int) (date.getTime() / 1000)); //时间戳 秒级别
9.mysql
(1)设置表字段
【1】设置表-字段-为空:
ALTER TABLE 表名称 MODIFY 字段名称 数据类型 DEFAULT NULL;
【2】设置表-字段-不为空:
LTER TABLE 表 ALTER COLUMN 字段名 数据类型 NOT NULL;
【3】修改表-字段-长度备注:
ALTER TABLE file_export_log MODIFY COLUMN capital_type VARCHAR(255) COMMENT ‘资金类型(交易明细)’;
(2)FIND_IN_SET (查询某个字段里是否包含id)
查询某个字段里是否包含id
SELECT
business_name AS businessName,
business_id AS businessId,
enterprise_ids AS enterpriseIds
FROM
business
WHERE
FIND_IN_SET(#{enterpriseIds},enterprise_ids)
(3)区分in和exists
select * from 表A
where id in (select id from 表B)
上面sql语句相当于
select * from 表A
where exists(select * from 表B where 表B.id=表A.id)
区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
10.string切割
String str = “abc,ac,ab,0”;
String[] strs=str.split(“,”);
for(int i=0,len=strs.length;i<len;i++){
System.out.print(strs[i].toString()+" ");
}
11.两个list《map》去重相同值
List<UserCollectionListResponseVo> v1 = new ArrayList<>();
List<UserCollectionListResponseVo> v2 = new ArrayList<>();
UserCollectionListResponseVo vv = new UserCollectionListResponseVo();
vv.setGoodId("aa");
v1.add(vv);
vv = new UserCollectionListResponseVo();
vv.setGoodId("bb");
v1.add(vv);
vv = new UserCollectionListResponseVo();
vv.setGoodId("cc");
v1.add(vv);
vv = new UserCollectionListResponseVo();
vv.setGoodId("cc");
v2.add(vv);
System.out.println("v1 = " + v1);
System.out.println("v2 = " + v2);
//删除重复字段
v1 = v1.stream().filter(b -> v2.stream()
.map(UserCollectionListResponseVo :: getGoodId).noneMatch(id -> Objects.equals(b.getGoodId(), id))).collect(Collectors.toList());
//去重
v1.addAll(v2);
v1 = v1.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(UserCollectionListResponseVo::getGoodId))), ArrayList::new));
System.out.println("v1 = " + v1);
12.BigDecimal
(1)乘除
minPercents.divide(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).toString() (除100)
minPercents.multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).toString()(乘100)
|加法 add()函数 减法subtract()函数 乘法multiply()函数 除法divide()函数 绝对值abs()函数|
|----------------------------------------------------------------------------|–|
(2)BigDecimal.setScale();//用于格式化小数点
setScale(1);//表示保留以为小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3
setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4
setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍
13.下标从零开始 长度从一开始
14.对接第三方
(1)别人调我们的接口
【1】请求格式:POST(ContentType:application/x-www-form-urlencoded)处理方式
接收值为 HttpServletRequest request
取值是:
Map<String, String> retMap = new HashMap();
Set<Map.Entry<String, String[]>> entrySet = request.getParameterMap().entrySet();
for (Map.Entry<String, String[]> entry : entrySet) {
String name = entry.getKey();
String[] values = entry.getValue();
int valLen = values.length;
if (valLen == 1) {
retMap.put(name, values[0]);
} else if (valLen > 1) {
StringBuilder sb = new StringBuilder();
for (String val : values) {
sb.append(",").append(val);
}
retMap.put(name, sb.toString().substring(1));
} else {
retMap.put(name, "");
}
}
15.转Json去除Data
JSONObject object = JSONObject.parseObject(retMap.get("body"));
System.out.println(object.get("taxInfo"));
16.开发中需要注意的时间
(1)插入合同时间
如果是时间戳,就不能用integer 因为integer最大值是转换成时间是2038-01-19 11:14:07
需要用long
17.BeanUtils.copyProperties
// 获取 Form 表单数据
Form form =new Form();
// 构造一个User对象
User user = new User();
// 从Form中拷贝属性到User对象中
BeanUtils.copyProperties(form ,user);
// 另外一种方式
ChannelConfigStatusDto param=new ChannelConfigStatusDto();
ChannelConfig value = BeanMapperUtils.map(param, ChannelConfig.class);
18.提交git到远程上去
第一步 点击 git bash here
第二步 输入相对应的语法
git add .
git commit -m ‘你需要提交的记录备注’
git push