常用工具类
计算当天开始时间和结束时间
DateTime date = DateUtil.date();
String startDateStr = DateUtil.formatDateTime(DateUtil.beginOfDay(date));
String endDateStr = DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(date,1)));
params.put("startDate",startDateStr);
params.put("endDate",endDateStr);
1-数组工具类(ArrayUtils)
package com.tianji.common.utils;import cn.hutool.core.util.ArrayUtil;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;/*** 数组工具类* @ClassName ArrayUtils**/
public class ArrayUtils extends ArrayUtil {/*** 将源数组转换成指定类型的列表** @param originList 原始列表* @param targetClazz 转换后列表元素的类型* @param <R> 原始列表元素的类型* @param <T> 目标列表元素的类型* @return 目标类型的集合*/public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz) {return convert(originList, targetClazz, null);}/*** 将源数组转换成指定类型的列表** @param originList 原始列表* @param targetClazz 转换后列表元素的类型* @param convert 转换特殊字段接口* @param <R> 原始列表元素的类型* @param <T> 目标列表元素的类型* @return 目标类型的集合*/public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz, Convert<R, T> convert) {if (isEmpty(originList)) {return null;}return Arrays.stream(originList).map(origin -> BeanUtils.copyBean(origin, targetClazz, convert)).collect(Collectors.toList());}
}
2-AspectUtils
package com.tianji.common.utils;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;import java.lang.reflect.Method;public class AspectUtils {/*** 获取被拦截方法对象* MethodSignature.getMethod() 获取的是顶层接口或者父类的方法对象* 所以应该使用反射获取当前对象的方法对象*/public static Method getMethod(ProceedingJoinPoint pjp) {//获取参数的类型Signature sig = pjp.getSignature();if (sig instanceof MethodSignature) {MethodSignature methodSignature = (MethodSignature) sig;return methodSignature.getMethod();} else {throw new IllegalArgumentException("It's not method");}}/*** 在aop切面中SPEL表达式对formatter进行格式化,* 转换出指定的值** @param formatter* @param method* @param args* @return*/public static String parse(String formatter, Method method, Object[] args) {LocalVariableTableParameterNameDiscoverer nameDiscoverer = new LocalVariableTableParameterNameDiscoverer();return SPELUtils.parse(formatter, nameDiscoverer.getParameterNames(method), args);}
}
3-断言工具类
package com.tianji.common.utils;import com.tianji.common.constants.ErrorInfo;
import com.tianji.common.exceptions.BadRequestException;import java.util.Map;public class AssertUtils {public static void equals(Object obj1, Object obj2, String ... message){if (obj1 == null || obj2 == null) {handleException(message);return;}if (obj1 == obj2) {return;}if(!obj1.equals(obj2)){handleException(message);}}public static void isNotNull(Object obj, String ... message){if (obj == null) {handleException(message);}}public static void isNotBlank(String str, String ... message){if (StringUtils.isBlank(str)) {handleException(message);}}public static void isTrue(Boolean boo, String... message) {if (BooleanUtils.isFalse(boo)) {handleException(message);}}public static void isFalse(Boolean boo, String... message) {if (BooleanUtils.isTrue(boo)) {handleException(message);}}private static void handleException(String ... message){String msg = ErrorInfo.Msg.REQUEST_PARAM_ILLEGAL;if(message != null && message.length > 0){msg = message[0];}throw new BadRequestException(msg);}public static void isNotEmpty(Iterable<?> coll, String ... message) {if(CollUtils.isEmpty(coll)){handleException(message);}}public static void isNotEmpty(Map<?, ?> map, String ... message) {if(CollUtils.isEmpty(map)){handleException(message);}}
}
4-BeanUtils
package com.tianji.common.utils;import cn.hutool.core.bean.BeanUtil;import java.util.List;
import java.util.stream.Collectors;/*** 继承自 hutool 的BeanUtil,增加了bean转换时自定义转换器的功能*/
public class BeanUtils extends BeanUtil {/*** 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理** @param source 原对象* @param clazz 目标对象的class* @param convert 转换器* @param <R> 原对象类型* @param <T> 目标对象类型* @return 目标对象*/public static <R, T> T copyBean(R source, Class<T> clazz, Convert<R, T> convert) {T target = copyBean(source, clazz);if (convert != null) {convert.convert(source, target);}return target;}/*** 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理** @param source 原对象* @param clazz 目标对象的class* @param <R> 原对象类型* @param <T> 目标对象类型* @return 目标对象*/public static <R, T> T copyBean(R source, Class<T> clazz){if (source == null) {return null;}return toBean(source, clazz);}public static <R, T> List<T> copyList(List<R> list, Class<T> clazz) {if (list == null || list.size() == 0) {return CollUtils.emptyList();}return copyToList(list, clazz);}public static <R, T> List<T> copyList(List<R> list, Class<T> clazz, Convert<R, T> convert) {if (list == null || list.size() == 0) {return CollUtils.emptyList();}return list.stream().map(r -> copyBean(r, clazz, convert)).collect(Collectors.toList());}
}
相关文章:
常用工具类
计算当天开始时间和结束时间 DateTime date DateUtil.date(); String startDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(date)); String endDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(date,1))); params.put("startDate&quo…...
【数据库原理】总结(期末版)
题型关系范式题[数据库原理]关系范式总结(自用)-CSDN博客事务分析题[数据库原理]事务-CSDN博客Sql题 MySQL:MySQL基本语法 Oracle:Oracle基本语法 关系代数[数据库原理]关系代数-CSDN博客 sql里面主要是考增删改查授权撤销权限等内容&#…...

【算能全国产AI盒子】基于BM1688CV186AH+FPGA智能物联工作站,支持差异化泛AI视觉产品定制
在数据呈现指数级增长的今天,越来越多的领域和细分场景对实时、高效的数据处理和分析的需求日益增长,对智能算力的需求也不断增强。为应对新的市场趋势,凭借自身的硬件研发优势,携手算能相继推出了基于BM1684的边缘计算盒子&#…...
材质相关内容整理 -ThreeJs
在Three.js中,材质是用来定义3D对象外观的关键部分。Three.js支持多种材质文件和类型,每种材质都有其特定的用途和优势。下面简单整理了一下目前Three.js支持的材质文件和类型。 一、Three.js支持的材质文件类型 JPEG (.jpg) 和 PNG (.png) 用途&#x…...
ES 嵌套查询
背景 一个配方由多种原材料组成,需求是根据各种原材料的用量搜索出对应的配方 配方实体类 class Formula {private long id;private String name;private List<Material> materials;}class Material {JsonProperty("material_id")private long m…...
《等保测评实战指南:从评估到加固的全程解析》
在当今数字化时代,信息安全已成为企业生存与发展的基石。随着网络攻击手段的不断演变和复杂度的提升,信息系统等级保护(简称“等保”)作为国家信息安全保障体系的重要组成部分,其重要性日益凸显。《等保测评实战指南&a…...
【24考研·交通】我的考研经历
文章目录 一、考前准备二、政治备考三、英语一备考四、数学一备考五、运筹学备考六、复试/调剂七、结语 距离24考研上考场过去快半年了,距离我拟录取也两个月多了,现在回想起来,最大的感受是:好像做了一场大梦。 其实这篇文章在考…...

ERP系统中有哪些模块?有哪些具体实现方案呢?
对于许多初次接触ERP系统的企业来说,可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块,需要明确的是,ERP系统是一个庞大的系统,包含了多个模块,每个模块都有其独特的功能和作用。这些模块涵…...
扩散模型在机器学习中的应用及原理
扩散模型在机器学习中的应用及原理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 什么是扩散模型? 在机器学习中,扩散模型ÿ…...
fastapi自定义中间件
fastapi自定义中间件 1、自定义中间件类 from fastapi import Request from starlette.middleware.base import BaseHTTPMiddlewareclass MyMiddleware(BaseHTTPMiddleware):def __init__(self, app,*args, **kwargs):super().__init__(app,*args, **kwargs)async def dispat…...

基于 MCU 的开发,能不能对代码进行单元测试?
在基于微控制器(MCU)的开发中,确实可以对代码进行单元测试,并且随着嵌入式软件开发实践的发展,越来越多的团队开始重视并实施单元测试和自动化测试。 单元测试是一种软件测试方法,用于验证程序模块…...

基于OpenCV与Keras的停车场车位自动识别系统
本项目旨在利用计算机视觉技术和深度学习算法,实现对停车场车位状态的实时自动识别。通过摄像头监控停车场内部,系统能够高效准确地辨认车位是否被占用,为车主提供实时的空闲车位信息,同时为停车场管理者提供智能化的车位管理工具…...

YOLOv10改进教程|C2f-CIB加入注意力机制
一、 导读 论文链接:https://arxiv.org/abs/2311.11587 代码链接:GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件,复制SE注意力机…...
算法训练营day06 哈希表(统计数,去重,降低时间复杂度)
💡 解题思路 📝 确定输入与输出🔍 分析复杂度🔨 复杂题目拆分 :严谨且完整 地拆分为更小的子问题(哈希表的使用场景)–(多总结)💭 选择处理逻辑:…...

影帝郭晋安关联保健品企业,草姬集团无研发费用销售成本不低
《港湾商业观察》黄懿 5月30日,草姬集团控股有限公司(下称“草姬集团”)递表港交所主板,农银国际为其独家保荐人。 草姬集团成立于1999年,是中国香港多元化保健品、美容与护肤品供应商,由TVB港星郭晋安及…...

leetcode-19-回溯-组合问题(剪枝、去重)
引自代码随想录 一、[77]组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]] 1、大致逻辑 k为树的深度,到叶子节点的路径即为一个结果 开始索引保证不…...

Java案例实现双色球
一问题: 二具体代码: package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…...

JS(JavaScript)的BOM操作
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

【CT】LeetCode手撕—82. 删除排序链表中的重复元素 II
题目 原题连接:82. 删除排序链表中的重复元素 II 1- 思路 模式识别1:已排序链表 ——> 判重逻辑 ,涉及到 while 2- 实现 ⭐82. 删除排序链表中的重复元素 II——题解思路 class Solution {public ListNode deleteDuplicates(ListNode h…...

C++ STL unique_ptr智能指针源码剖析
由于上一篇博客将shared_ptr,weak_ptr,enable_shared_form_this的源码实现整理了一遍,想着cpp智能指针还差个unique_ptr故写下此篇博客,以供学习 源码剖析 一,模板参数 首先,我们先看unique_ptr的模板参数,第一个参数_TP自是不用说表示对象类型,第二个模板参数定义了unique_p…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...