编辑
2023-03-21
学习记录
00

java开启新线程:🏝️

方法1:继承Thread类

1):定义bai一个继承自Java.lang.Thread类的du类A.

2):覆盖zhiA类Thread类中的run方法。

3):我们编写需要在run方法中执行的操作:run方法中的代码,线程执行体。

4):在main方法(线程)中,创建一个线程对象并启动线程。

(1)创建线程类对象:

A类 a = new A类();

(2)调用线程对象的start方法:

a.start();//启动一个线程

注意:不要调用run方法。如果run方法被称为对象调用方法,则仍然只有一个线程,并且没有启动新线程。

创建启动线程实例:

//定义一个类A 继承java.lang.Thread class A extends Thread{ //A类 覆盖Thread类中的 run方法 @Override public void run(){ //在run方法填写要执行的操作 for (int j = 0 ;j<10;j++){ System.out.println("执行方法A的逻辑"+j); } } }

编辑
2023-03-17
实用工具
00

介绍

代码自动生成器非常好用,我们只需要提供我们数据库的表名,然后就可以让生成器自动帮我们完成各种代码的创建,整个过程非常清爽,可以说是加班人的福利!

引入依赖

xml
<!-- mybatisplus代码生成依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.1</version> </dependency>
编辑
2023-03-16
实用工具
00

简介

Knife4j是一款基于Swagger 2的在线API文档框架,是日常开发中很常用的框架,基于此框架,后端可以和前端开发人员进行高效沟通。 官网

引入knife4j依赖

xml
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency>

配置yml

yml
knife4j: enable: true openapi: title: SpringWeb官方文档 description: "学习SpringWeb框架集成的项目" email: 823621247@qq.com concat: 如痴如醉 url: https://localhost:8080/doc.html version: v4.0 license: Apache 2.0 license-url: https://stackoverflow.com/ terms-of-service-url: https://stackoverflow.com/ group: test1: group-name: 控制器 api-rule: package api-rule-resources: - com.lhw.controller

重启服务器输入localhost/doc.html即可进入

编辑
2023-03-15
实用工具
00

Druid简介🍿

Druid 是Java语言中最好的数据库连接池。

虽然 HikariCP 的速度稍快,但是,Druid能够提供强大的监控和扩展功能,也是阿里巴巴的开源项目。

Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。

Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate中已经介绍 Spring Boot 2.x 默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源。

而Druid已经在阿里巴巴部署了超过600个应用,经过好几年生产环境大规模部署的严苛考验!

  • stat:Druid内置提供一个StatFilter,用于统计监控信息。

  • wall:Druid防御SQL注入攻击的WallFilter就是通过Druid的SQL Parser分析。Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。

  • log4j2:这个就是 日志记录的功能,可以把sql语句打印到log4j2 供排查问题。

添加Druid依赖

xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.23</version> </dependency> <!--数据库驱动--> .. <!--log4j--> ..
编辑
2023-03-14
实用工具
00

前提

很多时候程序出现的异常并不是,我们在enum里定义好的那些,大部分是程序运行时的异常,为了返回值的统一性,我们需要对那些突然出现异常进行操作

代码

java
package com.lhw.management.config; import com.lhw.common.Result; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; /** * 描述:拦截Controller方法的返回值,统一处理返回值/响应体 * @author lihaowei */ @RestControllerAdvice(basePackages = {"com.ewell.medai.connotation.qc.management.controller"}) public class ResultAdvice implements ResponseBodyAdvice<Object> { @Autowired private ObjectMapper objectMapper; @Override public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) { return true; } @SneakyThrows @Override public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { if(o instanceof String){ return objectMapper.writeValueAsString(Result.success(o)); } if(o instanceof Result){ return o; } return Result.success(o); } }