Javase | Java工具类、(SSM)各种依赖的作用
目录:
- Java工具类:
- 日期工具类
- 文件上传工具类
- 短信工具类
- 验证码工具类
- 邮件工具类
- 代码生成器
- (SSM)各种依赖的作用:
- spring-context 依赖:
- spring-context-supprt 依赖:
- spring-tx 依赖:
- mysql-connector-java 依赖:
- spring-jdbc 依赖:
- spring-data-jpa 依赖:
- mybatis 依赖 :
- mybatis-spring 依赖:
- mybatis-plus 依赖:
- spring-web 依赖:
- spring-webmvc 依赖 :
- freemarker 依赖:
- junit 依赖 :
- spring-test 依赖:
- kaptcha 依赖 :
- druid 依赖 :
- druid 与 mybatis-plus 的区别:
- jackson-databind 依赖 :
- springfox-swagger2 依赖:
- javax.servlet-api 依赖:
- jackson-databind 依赖 :
- commons-fileupload 依赖:
- commons-io 依赖
- commons-logging 依赖
- commons-lang
- commons-beanutils 依赖:
- commons-collections 依赖 :
- spring-core 依赖:
- spring-jdbc 依赖:
- spring-aspects 依赖:
- webjars-locator 依赖:
- logback-classic 依赖 :
- jstl 依赖
- quartz 依赖
- slf4j-api 依赖
- log4j 依赖:
- slf4j-log4j12 依赖:
- spring-context 依赖 :
- spring-core:
- spring-beans:
- spring-aspects 依赖:
- spring-aop 依赖:
- Spring Ioc 依赖:
- c3p0 依赖 :
- mchange-commons-java 依赖
- json-lib 依赖 :
- ezmorph 依赖:
- lombok 依赖:
- freemarker 依赖:
- mail 依赖:
- dom4j 依赖:
- commons-httpclient 依赖
- poi 依赖 :
- poi-ooxml 依赖
- itext7-core 依赖
- springfox-swagger2 依赖
- spring-security-config 依赖:
- spring-security-taglibs 依赖:
- jsr250 依赖:
Java工具类:
日期工具类
public class DateUtils { // 日期工具类public static String nowTime(){SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return simpleDateFormat.format(new Date());}
}
文件上传工具类
public class FileUpLoadUtils { //文件上传工具类@AutowiredDocService docService;/*** 文件上传方法*/public static DataResults Fileupload(MultipartFile file, HttpServletRequest request, Doc doc, DocService docService) {try {//1.获取原始文件名String uploadFileName = file.getOriginalFilename();System.out.println("要上传的原始文件名字是:" + uploadFileName);//2.截取文件扩展名String extendName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1, uploadFileName.length());//3.把文件加上随机数,防止文件重复String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();//4.生成的新的服务器文件名String newfileName = uuid + "." + extendName;System.out.println("生成的新的服务器文件名是:" + newfileName); //防止服务器文件名重名//5.获取真实的服务器文件上传地址 (文件的存储位置)String filePath = request.getServletContext().getRealPath("/doc") + "/" + newfileName;System.out.println("服务器运行目录,最终上传的路径:" + filePath);//6.执行上传file.transferTo(new File(filePath));System.out.println("文件上传结束!");//新增对象到数据库doc.setFileName(newfileName);boolean b=docService.save(doc);// DataResults : 数据结果工具类,作用: 显示方法的执行状态,该方法中参数为// ResultCode: 状态码枚举if (b) {return DataResults.success(ResultCode.SUCCESS);} else {return DataResults.fail(ResultCode.FAIL);}} catch (IOException e) {e.printStackTrace();return DataResults.fail(ResultCode.FAIL);}}
}
短信工具类
/*** 短信工具类*/
public class SendsMsgUtf8Utils {//请求地址private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";// contentInfo:前后端传进来的要发送的信息的内容public static String sengMessage(String phone,String contentInfo) throws Exception {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("UTF-8");method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");/*** 随机的验证码 -- 将该随机生成的"验证码"用在信息模板中, 当然也可以用 contentInfo(传进来的信息参数)用于信息模板中*/int mobile_code = (int)((Math.random()*9+1)*100000);/*** 信息模板,按照此格式发送信息,只有“验证码”(mobile_code)处的变量可改, 可改成传进来的 contentInfo 参数* 想要发其他的信息模板可上官网寻找、或上官网申请模板*/String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。"); //信息模板,按照此格式发送信息NameValuePair[] data = {//提交短信/*** 配置第三方短信接口信息:* account : 注册登录第三方短信接口平台 --- 服务查看用户名是登录用户中心 --- 验证码短信 --- 产品总览 --- APIID* password : 登录 --- 用户中心 --- 验证码短信 --- 产品总览 --- APIKEY*/new NameValuePair("account", "C93854163"), // APIIDnew NameValuePair("password", "6729a3ab5c4ea8e9ea179d9fd14d970a"), // APIKEY//手机号码new NameValuePair("mobile", phone),//要发送的短信模板内容new NameValuePair("content", content), //此处填的模板字符串,如content};method.setRequestBody(data);client.executeMethod(method);String SubmitResult =method.getResponseBodyAsString();//System.out.println(SubmitResult);Document doc = DocumentHelper.parseText(SubmitResult);Element root = doc.getRootElement();String code = root.elementText("code"); //状态码String msg = root.elementText("msg");String smsid = root.elementText("smsid");System.out.println("---------------------");System.out.println("操作状态码: "+code);System.out.println("msg为: "+msg);System.out.println("smsid为: "+smsid);if("2".equals(code)){System.out.println("短信提交成功-------");}return code; //操作状态状态码 2:表示短信发送成功}
}
验证码工具类
@Controller
@RequestMapping("/code")
public class CodeController {/*** 生成随机的验证码(图片)*/@RequestMapping("/createImage")public void createImage(HttpServletResponse response, HttpSession session) {try {int height = 34;int width = 110;//准备一个绘图工具类 画布 RGB( Red Green Blue 三原色)BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//画笔Graphics g = bufferedImage.getGraphics();//把画布填充颜色 白色填充矩形g.setColor(Color.WHITE);g.fillRect(0, 0, width, height);//随机生成字符串String words = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";char[] chars = words.toCharArray();Random random = new Random();StringBuilder sb = new StringBuilder();for (int i = 1; i <= 4; i++) {//随机一个下标int index = random.nextInt(chars.length);char c = chars[index];sb.append(c);Font font = new Font("Arial", Font.BOLD, 25);//随机颜色int red = random.nextInt(256);int green = random.nextInt(256);int blue = random.nextInt(256);Color color = new Color(red, green, blue);//绘制验证码g.setColor(color);g.setFont(font);g.drawString(String.valueOf(c), (width / 5) * i, 30);}//绘制验证干扰线for (int i = 1; i <= 10; i++) {//随机颜色int red = random.nextInt(256);int green = random.nextInt(256);int blue = random.nextInt(256);Color color = new Color(red, green, blue);g.setColor(color);int x1 = random.nextInt(width);int y1 = random.nextInt(height);int x2 = random.nextInt(width);int y2 = random.nextInt(height);g.drawLine(x1, y1, x2, y2);}System.out.println("系统正确随机的验证码是:" + sb.toString());session.setAttribute("syscode",sb.toString());//最后输出图片response.setContentType("image/jpg");//浏览器的响应类型是图片ServletOutputStream outputStream = response.getOutputStream();ImageIO.write(bufferedImage, "jpg", outputStream);} catch (Exception e) {e.printStackTrace();}}
}
邮件工具类
/*** 邮件工具类*/
public class EmailSendUtils {/*** 返回一个邮件发送对象* @return*/public static JavaMailSenderImpl createJavaMailSenderImpl() {JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();javaMailSender.setHost("smtp.qq.com");//实际项目中,平台搭建邮件服务器,如果真实项目需要自己搭建// 发送方邮箱 平台官方邮箱javaMailSender.setUsername("972666574@qq.com"); //模拟官方邮箱账号// 发送秘钥 不是邮箱密码 也不是QQ密码!!!javaMailSender.setPassword("raorcfdtjdnabfih"); //官方邮箱秘钥// 邮件协议javaMailSender.setProtocol("smtp");//属性Properties properties = new Properties();properties.setProperty("mail.smtp.auth", "true");properties.setProperty("mail.smtp.from", "972666574@qq.com"); //发送方properties.setProperty("mail.debug", "true");javaMailSender.setJavaMailProperties(properties);return javaMailSender;}/*** @param emailTo 发送给谁* @param content 邮件内容* @param title 邮件标题*/public static void sendEmail(String emailTo, String content, String title) throws Exception {//构建“邮件发送”对象JavaMailSenderImpl sender = EmailSendUtils.createJavaMailSenderImpl();//构建“简单邮件”对象 SimpleMailMessage:简单邮箱对象SimpleMailMessage smm = new SimpleMailMessage();// 设定邮件参数smm.setFrom(sender.getUsername()); //发送者是谁smm.setTo(emailTo); //发送给谁smm.setSubject(title); //邮件标题smm.setText(content); //邮箱内容给sender.send(smm);System.out.println("邮件发送" + emailTo + "成功....");}}
代码生成器
/*** MyBatis Plus官网代码生成器*/
public class GeneratorCodeConfig {public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);StringBuilder help = new StringBuilder();help.append("请输入" + tip + ":");System.out.println(help.toString());if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotEmpty(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir"); // E:\Server\OA-SYSTEMSystem.out.println(projectPath);System.out.println(projectPath + "/src/main/java");gc.setOutputDir(projectPath + "/src/main/java");gc.setAuthor("bruce"); //作者信息gc.setOpen(false);//实体属性 Swagger2 接口 注解gc.setSwagger2(false);mpg.setGlobalConfig(gc);// 改:配置自己数据源-----------数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://127.0.0.1:3306/oa2022?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");mpg.setDataSource(dsc);// 配置自己包配置PackageConfig pc = new PackageConfig();pc.setParent("com.oa");pc.setEntity("bean");pc.setMapper("mapper");pc.setService("service");pc.setServiceImpl("service.impl");mpg.setPackageInfo(pc);// 配置模板TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(null);mpg.setTemplate(templateConfig);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));strategy.setControllerMappingHyphenStyle(true);//数据库表的前缀strategy.setTablePrefix("tb_");mpg.setStrategy(strategy);mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}
}
(SSM)各种依赖的作用:
spring-context 依赖:
作用: spring的context上下文即IoC容器, spring中ioc容器要生效需要的依赖。
这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext
特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类
spring-context-supprt 依赖:
作用: Spring context的扩展支持,用于MVC方面 ( 也具有spring-content的基本功能)
spring-tx 依赖:
作用: 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理
mysql-connector-java 依赖:
作用: 连接mysql和java的依赖。
Java 连接MySQL需要驱动包,否则JDBC无法访问数据库(无法注册驱动),
常用的是mysql-connector-java,在idea中新建项目时可以在选择依赖时勾选Mysql,这样就会自动加载进来
spring-jdbc 依赖:
作用: 连接mysql和Java、创建sql语句、执行sql语句,为对JDBC 的简单封装
spring-data-jpa 依赖:
作用:jpa的前身是著名的ssh中的h——>Hibernate,所以spring-data-jpa 不是mybatis的依赖,用的比较少,但ssm项目中依然需要该依赖
mybatis 依赖 :
作用:mybatis框架需要的依赖。 mybatis的常用的加载数据库的机制为SPI加载机制。
Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、
创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高
( mybatis是一个jdbc框架,简化关于jdbc的操作,程序员只需写简单的mysql即可实现原本该有的内容)
----mybatis的jdbc中优化CURD的框架,而druid是jdbc中关于管理数据库连接对象(将数据库连接对象)放入到druid连接池中,两者处理的方面不同,有很大的区别
mybatis-spring 依赖:
作用: 连接spring和mybatis
mybatis-plus 依赖:
作用: mybatis框架需要的依赖,同中包含了 mybatis依赖 和 mybatis-spring(连接mybatis和spring)这两个依赖,
一个依赖有两个的效果
spring-web 依赖:
作用: 项目中的web内容要用到的依赖 ( 有了spring-webmvc就不用该依赖了 ) --为项目中是web应用内容服务
Spring web:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入
spring-webmvc 依赖 :
作用: SSM项目中的mvc以及web要用到的依赖。
这个jar 文件包含Spring MVC 框架相关的所有类。包括框架的Servlets,Web MVC框架,
控制器和视图支持。如果你的应用使用了独立的MVC 框架,则无需这个JAR 文件里的任何类
freemarker 依赖:
作用: freemarker模板引擎,简化业务代码
junit 依赖 :
作用: 进行单元测试要用的依赖。
spring-test 依赖:
作用: 测试代码要用到的依赖, 与 junit有功能重叠,但不冲突
kaptcha 依赖 :
作用: 谷歌的验证码工具,用于在登录页面时产生验证码
druid 依赖 :
(druid是jdbc的框架, 其将数据库连接对象交给druid连接池管理,仅仅是连接的这一开始部分,而mybatis-plus是简化连接之后的对数据库的CURD操作)
作用:alibaba 的 druid连接池,是一个jdbc工具,简化jdbc操作 ( jdbc的作用的连接mysql 与 Java,要导入对应的依赖要导入spring-jdbc 和
mysql-connector-java依赖才能实现java连mysql )
连接池依赖 :druid 将数据库连接对象 交给 连接池进行管理 和 连接,不用手动的连接和释放。 druid 能进行监控
druid 能为dataSouce的bean对象服务,把spring下的mybatis的dataSource交给 druid的连接池进行管理,该连接池(druid) 则交给spring进行管理
( 数据库连接池需要的依赖 )
—如要在applicationContext.xml中配置 连接数据库的 数据源( dataSource) bean对象,来配合jdbc.properties配置文件来连接数据库
druid 与 mybatis-plus 的区别:
druid 与 mybatis-plus 都是jdbc的框架,前者将数据库连接对象交给druid连接池来管理,后者管连接之后的CURD操作,后者也是jdbc的框架
(前者是连接,后者是具体的curd操作)
jackson-databind 依赖 :
作用 : 前后端数据传输要用到的依赖(用到与json有关的技术)
springfox-swagger2 依赖:
作用: 在代码中起注释作用,打包后形成一个关于代码信息的api文档
javax.servlet-api 依赖:
作用:为ssm项目中的与servlet有关的内容进行服务所需的依赖。
jackson-databind 依赖 :
作用:
commons-fileupload 依赖:
作用:
commons-io 依赖
作用:Commons IO是针对开发IO流功能的工具类库,为spring中的io流服务
主要包括六个区域:
工具类——使用静态方法执行共同任务
输入——用于InputStream和Reader实现
输出——用于OutputStream和Writer实现
过滤器——各种文件过滤器实现
比较器——各种文件的java.util.Comparator实现
文件监听器——监听文件系统事件的组件
commons-logging 依赖
作用: 用来记录程序运行时的活动的日志记录 的依赖, 在java平台中,有几个可以选择的日志记录的实现(log4j,JDK Logging API)
commons-logging.jar包是使用spring的必备包。(位置在spring-framework-2.5.6.SEC01\lib \jakarta-commons)
commons-lang
作用: 跟java.lang这个包的作用类似,Commons Lang这一组API也是提供一些基础的、通用的操作和处理,
如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。
这一组API的所有包名都以org.apache.commons.lang开头,共有如下8个包:
org.apache.commons.lang
org.apache.commons.lang.builder
org.apache.commons.lang.enum
org.apache.commons.lang.enums
org.apache.commons.lang.exception
org.apache.commons.lang.math
org.apache.commons.lang.mutable
org.apache.commons.lang.time
commons-beanutils 依赖:
作用:Apache开源组织提供的用于操作Java bean的工具包,为bean对象服务
commons-collections 依赖 :
作用:为Java标准的Collections API提供了相当好的补充。在此基础上对其常用的数据结构操作进行了很好的封装、抽象和补充。保证性能的同时大大简化代码。
spring-core 依赖:
作用: Spring的核心工具包。
Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,同时可以在自己的应用系统中使用这些工具类
spring-jdbc 依赖:
作用: 对JDBC 的简单封装 ( 用了mybatis 就不用引入jdbc依赖了)
spring-aspects 依赖:
作用: 提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如Eclipse AJDT。
( 简而言之是: 为spring aop服务的依赖 )
webjars-locator 依赖:
作用: 网络使定位器 依赖
logback-classic 依赖 :
作用: 日志依赖 ( 有其他功能相似的依赖 )
jstl 依赖
作用: 是一个不断完善的开放源代码的JSP标签库,为与jSP相关的内容服务,使得操作JSP的代码更简洁、方便
quartz 依赖
作用:作业调度框架,为作业调度服务。Quartz是一个完全由java编写的开源作业调度框架,由OpenSymphony组织开源出来。
所谓作业调度其实就是按照程序的设定,某一时刻或者时间间隔去执行某个代码。最常用的就是报表的制作了。
slf4j-api 依赖
作用: 为日志门面服务,与之前的日志依赖功能类似,但不重叠,相互使用。
是为java提供的简单日志Facade。Facade门面,更底层一点说就是接口。它允许用户以自己的喜好,在工程中通过slf4j接入不同的日志系统。
与 slf4j即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。
按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System
log4j 依赖:
作用: Log4j 框架是用 Java 语言编写的标准日志记录框架 ( 一般为其添加一个log4j.properties配置文件,来配置日志需要信息)
slf4j-log4j12 依赖:
作用: ①连接slf4j依赖 和 log4j 依赖,为这两个依赖服务 ( 连接slf4依赖 和 log4j依赖,是这两个依赖的适配器 )
②语句调用slf4j-log4j12链接slf4j-api和log4j中间的适配器。它实现了slf4j-apiz中StaticLoggerBinder接口,
从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法log4j,这个是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出
spring-context 依赖 :
作用: 该依赖为Spring 核心(spring-core)提供了大量扩展,帮助项目功能的实现。
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
外部依赖spring-beans, (spring-aop)。----第一个依赖介绍就是它
spring-core:
作用: Spring的核心工具包,Spring的核心功能/基本功能需要的依赖。Core模块主要的功能是实现了控制反转( IOC )与依赖注入( DI )、Bean配置以及加载。
Core模块中有Beans、BeanFactory、BeanDefinitions、ApplicationContext等概念,所以说有spring’-core是IOC、DI、bean配置等需要的依赖
spring-beans:
作用: Bean工厂与bean的装配需要的依赖
spring-aspects 依赖:
aspects :切面----面向切面的框架,实现面向切面功能需要的依赖
作用: Spring提供的对AspectJ(面向切面)框架的整合,实现面向切面功能需要的依赖。提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,
比如Eclipse AJDT。
( AspectJ:
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。)
spring-aop 依赖:
作用:Spring的面向切面编程,提供AOP(面向切面编程)的实现,( SSM项目不一定要引入该mvaven依赖,因为因为 spring-aop 是负责切面控制的,
目前这个项目还没有太多的业务,所以不需要用横向切面来做。(例如,如果这个系统有很多业务,我就可以用aop来控制事务或者控制日志输出,
如果这个系统目前只有1个 秒杀业务,是个简单系统,就不用切面,也是可以的))
Spring Ioc 依赖:
( 不一定要引入) 作用:控制反转依赖
c3p0 依赖 :
作用:为Java连接数据库服务,使其连接更便捷、快速。c3p0是一个库。它扩展了传统的jdbc数据库连接池,并且支持JDBC3规范和JDBC2的标准扩展
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,
而是从连接池中取出一个已建立的空闲连接对象。 使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。
而连接的建立、断开都由连接池自身来管理。 同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、
连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等
mchange-commons-java 依赖
作用: 这是c3p0数据库连接池的辅助包,如果没有这个包系统启动时会报classnotfoundexception,这是更新c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是只是一个包。
json-lib 依赖 :
作用:为json/与json有关的数据转换有关
JSON-lib可以将beans,maps,collections,java arrays,xml转换成json,再将json转换成beans,DynaBeans.
ezmorph 依赖:
作用: ezmorph是一个简单的java类库,用于将一种对象转换成另外一种对象。
ezmorph原先是Json-lib项目中的转换器。EZMorph支持原始数据类型(Primitive),对象(Object),多维数组转换与DynaBeans的转换
lombok 依赖:
作用: Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。
Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象:POJO(POJO: 简单的java对象,即javabean对象,除了springbean
其他都是POJO:简单的java对象)。它通过注释实现这一目的,
通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。
( lomback是一款简化开发的工具 )
—lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具
( lombok 依赖 和 logback-classic依赖两者是不同的,前者是简化java代码,消除冗长代码,后者的日志依赖 )
ps: @NoArgsConstructor、@Getter、@Setter是属于LomBok使用的范畴;
freemarker 依赖:
作用: freemarker是一种与web容器无关的技术,应用并不局限于页面。使用java开发出来的模板引擎。为减少前后缀的输入服务,简化开发,
可在xml文件中设置前后缀,那代码中就可不填文件的前缀和后缀,简化开发。
mail 依赖:
作用: 发送邮件
dom4j 依赖:
作用: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。 dom4j 是一种解析 XML 文档的开放源代码 XML 框架
dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件
commons-httpclient 依赖
作用: 远程请求客户端所需的依赖
poi 依赖 :
作用之一: 导出excel表格要用到
作用: 开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel
Apache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)
格式档案读和写的功能 ( 为读取和形成各类文档服务的依赖 ) --不同的文档格式有不同的依赖
poi-ooxml 依赖
作用: 是poi的依赖的一种, 不同的依赖代表不同的文档格式。
itext7-core 依赖
作用:
springfox-swagger2 依赖
作用: 在代码中起注释作用,打包后形成一个关于代码的api文档
spring-security-config 依赖:
作用: spring 安全链所需的依赖
spring-security-taglibs 依赖:
作用:
jsr250 依赖:
作用:
相关文章:
Javase | Java工具类、(SSM)各种依赖的作用
目录: Java工具类:日期工具类文件上传工具类 短信工具类验证码工具类邮件工具类代码生成器 (SSM)各种依赖的作用:spring-context 依赖:spring-context-supprt 依赖:spring-tx 依赖:mysql-connector-java 依赖:spring-j…...
深入探究Python中的JSON、Pickle和Shelve模块:特性与区别
更多资料获取 📚 个人网站:ipengtao.com 在Python中,处理数据序列化和持久化是极其重要的。JSON、Pickle和Shelve是三种常用的模块,它们提供了不同的方法来处理数据的序列化和持久化。本文将深入研究这三个模块,探讨它…...
文心大模型3.5 VS ChatGPT3.5,谁更会写代码 ?
问题:请帮我写一段代码,SAP物料凭证创建接口的代码 ? 文心大模型3.5:写了一段 python ChatGPT3.5 : 写的还可以啊,理解的很到位,而且用的是S/4新语法呀 ! DATA: lt_header TYPE TABLE OF bapi2017_gm_head_…...
【网络安全】用永恒之蓝(Eternal blue)测试windows系统的安全性
一、kali默认账户和密码都为kali 攻击机:Linux 的 kali 目标机:Windows7 x64 二、kali、metasploit、metasploit 攻击 windows操作系统、metasploit 攻击 永恒之蓝 全流程 ①kali:是黑客攻击机。开源免费的Linux操作系统,含有300…...
对于Web标准以及W3C的理解、对viewport的理解、xhtml和html有什么区别?
1、对于Web标准以及W3C的理解 Web标准 Web标准简单来说可以分为结构、表现、行为。 其中结构是由HTML各种标签组成,简单来说就是body里面写入标签是为了页面的结构。 表现指的是CSS层叠样式表,通过CSS可以让我们的页面结构标签更具美感。 行为指的是…...
大语言模型概述(一):基于亚马逊云科技的研究分析与实践
大型语言模型指的是具有数十亿参数(B)的预训练语言模型(例如:GPT-3, Bloom, LLaMA)。这种模型可以用于各种自然语言处理任务,如文本生成、机器翻译和自然语言理解等。 大语言模型的这些参数是在大量文本数据上训练的。…...
LuatOS-SOC接口文档(air780E)--repl - “读取-求值-输出” 循环
示例 --[[ 本功能支持的模块及对应的端口 模块/芯片 端口 波特率及其他参数 Air101/Air103 UART0 921600 8 None 1 Air105 UART0 1500000 8 None 1 ESP32C3 UART0 921600 8 None 1 -- 注意, 简约版(无CH343)不支持 ESP32C2 …...
SpringBoot项目打成jar包后,上传的静态资源(图片等)如何存储和访问
1.问题描述: 使用springboot开发一个项目,开发文件上传的时候,通常会将上传的文件存储到资源目录下的static里面,然后在本地测试上传文件功能没有问题,但是将项目打成jar包放到服务器上运行的时候就会报错,…...
Selenium Grid
Selenium Grid 什么是Selenium Grid Selenium是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上 Selenium Grid的两个版本 Grid1与Grid2两个版本的原理和基本工作方式完全相同,Grid2同时支持Selenium1和Selenium2&#x…...
ubuntu系统下搭建本地物联网mqtt服务器的步骤
那么假如我们需要做一些终端设备,例如温湿度传感器、光照等物联网采集设备要接入呢?怎么样才能将数据报送到服务器呢? 以下内容基于我们ubuntu系统下的emqx成功启动的基础上。我们可以用浏览器键入控制板的地址,如果启动成功&…...
计算机二级考试题库(答案)
题目一:计算机网络基础 1.计算机网络的定义是什么? 计算机网络是指由通讯设备和不同类型计算机组成的计算机系统,利用传输介质,如电缆、光缆、无线等与通讯协议,实现计算机之间的信息传递和共享资源。 2. 内网和外网有什么区别?…...
React Native 源码分析(五)—— Fabric创建View的过程
这篇文章详细分析一下,在React Native 新架构下,Fabric是如何创建View的,从React层发送把View信息到原生端开始分析。说明一点,React 层fiber的创建更新过程,不属于Fabric。其中Yoga的绘制过程不会太详细,只会给出大概流程,像布局缓存这些。文章的重点是帮你理解Fabric的…...
为什么同样的C代码在arm64-v8a可以跑,在armeabi-v7a会奔溃?
文章目录 背景过程第一个坑第二个坑 arm64-v8a 和 armeabi-v7a的区别实例64位,Android设备CPU:arm64-v8a32位,Android设备CPU:armeabi-v7a 基本数据类型在32位和64位的区别指针长度在32位和64位的区别 其他可能性chatgpt回答参考 背景 使用NDK开发项目的…...
C++初学者线路图 23年12月
高精度计算 1. 高精度加减法 高精度加减法课程(12月1日~12月4日)高精度加减法配套程序(12月5日~12月6日) 2. 高精度乘法 高精度乘法课程(12月7日~12月10日)高精度乘法…...
Day37| Leetcode 738. 单调递增的数字
今天就一个题目,做完吃完饭抓紧做六级试题。 Leetcode 738. 单调递增的数字 题目链接 738 单调递增的数字 本题目思路还是比较巧妙的,对于98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首…...
【工具分享】| 阅读论文神器 使用技巧 AI润色 AI翻译
文章目录 1 使用技巧1.1 功能一 即时翻译1.2 功能二 文献跳转1.3 功能三 多设备阅读1.4 功能四 小组讨论笔记共享1.5 功能五 个人文献管理 2 其他功能 超级喜欢Readpaper这一款论文阅读软件,吹爆他哈哈 为什么? 当然是他可以解决我们传统阅读论文的种种…...
String.prototype.match进行==判断
今天发现一个String.prototype.match的奇葩用法 export const isWeChat (() > {let ua window.navigator.userAgent.toLowerCase();return ua.match(/MicroMessenger/i) "micromessenger"; })();这是我在网站上找到的一个判断是否是微信浏览器的方法ÿ…...
less 笔记
<link rel"stylesheet/less" type"text/css" href"styles.less" /> <script src"https://cdn.jsdelivr.net/npm/less4" ></script>变量(Variables) 原生已支持 --前缀定义属性 var() 函数获取…...
Java中的异常你了解多少?
目录 一.认识异常二.异常分类三.异常的分类1.编译时异常2.运行时异常 四.异常的处理1.LYBL:事前防御型2.EAFP:事后认错型 五.异常的抛出Throw注意事项 六.异常的捕获1.异常的捕获2.异常声明throws3.try-catch捕获并处理 七.自定义异常 一.认识异常 在Jav…...
查找算法及哈希表
1 二分查找 1.1 重要概念 拟解决的问题:判断某个区间是否包含某个元素,无法确定区间中包含重复元素的具体位置;使用条件:查找的区间必须符合单调性;本质:采用分治思想,将某个单调区间一分为二…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
