当前位置: 首页 > news >正文

【SpringBoot】整合篇

1、log4j2

  • 第一步,导入依赖

    <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  <exclusions><!-- 去掉springboot默认配置 -->  <exclusion>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-logging</artifactId>  </exclusion>  </exclusions>  
    </dependency> <dependency> <!-- 引入log4j2依赖 -->  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-log4j2</artifactId>  
    </dependency> 
    

    如果用到 Mybatis-Plus 也需要排除默认日志依赖,不然会报错:

    SLF4J: Class path contains multiple SLF4J providers.
    SLF4J: Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@e874448]
    SLF4J: Found provider [org.apache.logging.slf4j.SLF4JServiceProvider@29b5cd00]
    SLF4J: See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual provider is of type [ch.qos.logback.classic.spi.LogbackServiceProvider@e874448]
    
  • 第二步,配置文件

    在项目的 resource 目录下新建文件 log4j2-spring.xml,如果自定义其他名称需在 application.yml中配置:

    logging:config: classpath:log4j2.xml
    

    配置文件 log4j2-spring.xml 模版:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
    <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
    <configuration monitorInterval="5"><!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --><!--变量配置--><Properties><!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符--><!-- %logger{36} 表示 Logger 名字最长36个字符 --><property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /><!-- 定义日志存储的路径 --><property name="FILE_PATH" value="更换为你的日志路径" /><property name="FILE_NAME" value="更换为你的项目名" /></Properties><appenders><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="${LOG_PATTERN}"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用--><File name="Filelog" fileName="${FILE_PATH}/test.log" append="false"><PatternLayout pattern="${LOG_PATTERN}"/></File><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile><!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/><Policies><!--interval属性用来指定多久滚动一次,默认是1 hour--><TimeBasedTriggeringPolicy interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖--><DefaultRolloverStrategy max="15"/></RollingFile></appenders><!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。--><!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效--><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息--><logger name="org.mybatis" level="info" additivity="false"><AppenderRef ref="Console"/></logger><!--监控系统信息--><!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。--><Logger name="org.springframework" level="info" additivity="false"><AppenderRef ref="Console"/></Logger><root level="info"><appender-ref ref="Console"/><appender-ref ref="Filelog"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileWarn"/><appender-ref ref="RollingFileError"/></root></loggers></configuration>
    

    配置参数简介:

    • 日志级别

      机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。

      • trace:追踪,就是程序推进一下,可以写个trace输出
      • debug:调试,一般作为最低级别,trace基本不用。
      • info:输出重要的信息,使用较多
      • warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
      • error:错误信息。用的也很多。
      • fatal:致命错误。
    • 输出源

      • CONSOLE(输出到控制台)
      • FILE(输出到文件)
    • 格式

      • SimpleLayout:以简单的形式显示
      • HTMLLayout:以HTML表格显示
      • PatternLayout:自定义形式显示
        • %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间
        • %-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
        • %c : logger的名称(%logger)
        • %t : 输出当前线程名称
        • %p : 日志输出格式
        • %m : 日志内容,即 logger.info(“message”)
        • %n : 换行符
        • %C : Java类名(%F)
        • %L : 行号
        • %M : 方法名
        • %l : 输出语句所在的行数, 包括类名、方法名、文件名、行数
        • hostName : 本地机器名
        • hostAddress : 本地ip地址

    log4j2配置详解:

    • 根节点Configuration

      属性:

      • status:用来指定log4j本身的打印日志的级别.
      • monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.

      子节点:

      • Appenders
      • Loggers(表明可以定义多个Appender和Logger).
    • Appenders节点:常见的有三种子节点:Console、RollingFile、File

    • Console 节点:用来定义输出到控制台的Appender。

      属性:

      • name:指定Appender的名字.
      • target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.

      子节点:

      • PatternLayout:输出格式,不设置默认为:%m%n.
    • File节点:用来定义输出到指定位置的文件的Appender.

      属性:

      • name:指定Appender的名字.
      • fileName:指定输出日志的目的文件带全路径的文件名.
      • PatternLayout:输出格式,不设置默认为:%m%n.
    • RollingFile节点:用来定义超过指定条件自动删除旧的创建新的Appender.

      属性:

      • name:指定Appender的名字.
      • fileName:指定输出日志的目的文件带全路径的文件名.
      • filePattern:指定当发生Rolling时,文件的转移和重命名规则.

      子节点:

      • PatternLayout:输出格式,不设置默认为:%m%n.
      • Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
        • TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am…而不是7am.
        • SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.
      • DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。
    • Loggers节点:常见的有两种:Root和Logger.

    • Root节点:用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

      属性:

      • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

      子节点:

      • AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.
    • Logger节点:用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

      属性:

      • name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
      • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF。

      子节点:

      • AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。
  • 第三步,在代码中使用

    • 直接使用 slf4j
      public class Demo {private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);public static void main(String... args) {log.error("Something else is wrong here");}
      }
      
    • 搭配 Lombok
      先导入 Lombok 依赖:
      <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version>
      </dependency>
      
      import lombok.extern.log4j.Log4j2;@Log4j2
      public class LogTest {public static void main(String[] args) {log.info("this is info log");log.error("this is error log");log.debug("this is debug log");log.warn("this is warn log");log.trace("this is trace log");log.fatal("this is fatal log");}
      }
      

2、MySQL + MybatisPlus

  • 第一步,pom.xml 导入依赖
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
    </dependency>
    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.9</version></dependency>
    
  • 第二步,application.yml 添加配置
    # mysql config
    spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf-8&amp;autoReconnect=trueusername: rootpassword: zhangsan123# mybatis-plus config
    mybatis-plus:type-aliases-package: com.story.domain 					# 别名扫描包,指定实体类所在的包路径mapper-locations: "classpath*:/mapper/**/*.xml" 			# Mapper.xml 文件地址configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl	# 定义MyBatis-Plus的日志实现方式(若不配置该参数,Mybatis在默认情况下会采用自动检测的方式):org.apache.ibatis.logging.slf4j.Slf4jImpl、org.apache.ibatis.logging.log4j.Log4jImpl、org.apache.ibatis.logging.stdout.StdOutImpl、org.apache.ibatis.logging.nologging.NoLoggingImplmap-underscore-to-camel-case: true 						# 是否开启下划线和驼峰的映射cache-enabled: false 									# 是否开启二级缓存global-config:banner: false											# 控制MyBatis-Plus启动时是否显示banner信息db-config:id-type: assign_id 									# 主键生成策略:AUTO、NONE、INPUT、ASSIGN_ID、ASSIGN_UUIDupdate-strategy: not_null 							# 更新策略: 只更新非空字段logic-delete-value: 1									# 指定了逻辑删除的值logic-not-delete-value: 0								# 指定了未逻辑删除的值
    
  • 第三步,代码编写(可通过 EasyCode、MybatisPlus代码生成器生成代码)
    • 实体类

      /*** 用户表*/
      @Data
      @TableName("api_student")
      public class Student {/*** 主键 ID,使用雪花算法生成*/@TableId(type = IdType.ASSIGN_ID)private Long id;/*** 名称*/private String name;/*** 年龄*/private Integer age;/*** 性别*/private String sex;/*** 班级id*/private Integer classId;
      }
      

      相关注解:@TableId、@TableName、@TableField、@TableLogic、@Version

    • 数据访问层(Mapper)

      package com.example.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
      import com.example.demo.model.Student;
      import org.apache.ibatis.annotations.Mapper;@Mapper
      public interface StudentMapper extends BaseMapper<Student> {
      }
      
    • 业务逻辑层(Service)

      package com.example.demo.service;import com.baomidou.mybatisplus.extension.service.IService;
      import com.example.demo.model.Student;public interface StudentService extends IService<Student> {
      }
      
      package com.example.demo.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
      import com.example.demo.mapper.StudentMapper;
      import com.example.demo.model.Student;
      import com.example.demo.service.StudentService;
      import org.springframework.stereotype.Service;@Service
      public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {
      }
      
    • 表现层(Controller)

      package com.example.demo.controller;import com.example.demo.service.StudentService;
      import jakarta.annotation.Resource;
      import org.springframework.web.bind.annotation.*;@RestController
      @RequestMapping("student")
      public class ApiUserController {@Resourceprivate StudentService studentService;@GetMappingpublic Object query(@RequestParam Integer id) {return  studentService.getById(id);}}
      
  • 第四步,启动项目,通过终端访问:curl http://127.0.0.1:8080/student?id=1

9、资料:

  • springboot整合log4j2日志全解
  • Spring-boot集成mybatis-plus

相关文章:

【SpringBoot】整合篇

1、log4j2 第一步&#xff0c;导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉springboot默认配置 --> <exclusion> <…...

写入json和读取json文件

/// <summary> ///写入文件 /// </summary> /// <param name"Stns"></param> /// <returns></returns> public ActionResult WriteJsonFile(string Stns) { strin…...

Vuex的理解及使用场景

Vuex 是 Vue.js 应用中一个专门为状态管理而设计的库&#xff0c;它基于 Fluts 和 Redux 的模式。Vuex 提供了一种集中式存储管理所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。以下是 Vuex 的理解及使用场景&#xff1a; Vuex 的理解 核心概…...

PostGis学习笔记

– 文本方式查看几何数据 SELECT ST_AsText(geom)FROM nyc_streets WHERE name ‘Avenue O’; – 计算紧邻的街区 SELECT name,ST_GeometryType(geom) FROM nyc_streets WHERE ST_DWithin( geom,ST_GeomFromText(‘LINESTRING(586782 4504202,586864 4504216)’,26918),0.1); …...

Qt 窗口类型、窗口标志和窗口属性

一、窗口类型 Qt 窗口标志枚举类型用于指定小部件的各种窗口系统属性。其中一些标志取决于底层窗口管理器是否支持它们。以下是窗口类型: Qt::QWidget:这是 QWidget 的默认类型。如果它们有父级,这种类型的部件是子部件,如果没有父控件,则为独立窗口。Qt::Window:通常具…...

相机学习笔记——工业相机的基本参数

0、相机分类 图像颜色不同可以分为黑白相机和彩色相机&#xff1a;相同分辨率下&#xff0c;黑白工业相机相比彩色工业相机精度更高&#xff0c;检测图像边缘时&#xff0c;黑白工业相机成像效果更好。 芯片类型不同可以分为CCD相机和CMOS相机&#xff1a;CCD工业相机具有体积小…...

MATLAB - ROS2 ros2genmsg 生成自定义消息(msg/srv...)

系列文章目录 前言 语法 ros2genmsg(folderpath)ros2genmsg(folderpath,Name=Value) 一、说明 ros2genmsg(folderpath) 通过读取指定文件夹路径下的 ROS 2 自定义信息和服务定义来生成 ROS 2 自定义信息。函数文件夹必须包含一个或多个 ROS 2 软件包。这些软件包包含 .msg 文…...

【Git 操作】-- 将 fork master 分支的最新commit更新到自己的仓库

目录 1.举例 2. 配置上游仓库&#xff08;Upstream&#xff09; 3. 获取上游仓库的更新 4. 切换到你自己的 master 分支 5. 合并上游仓库的 master 分支 6. 解决冲突&#xff08;如果有的话&#xff09; 7. 推送更新到你自己的 GitHub 仓库 1.举例 当我们从 github 的 h…...

[高等数学学习记录] 泰勒公式

1 知识点 1.1 要求 为简化计算, 通常用多项式近似表达复杂函数: 设函数 f ( x ) f(x) f(x) 在含有 x 0 x_0 x0​ 的开区间内具有 ( n 1 ) (n1) (n1) 阶导数, 试找出一个关于 ( x − x 0 ) (x-x_0) (x−x0​) 的 n n n 次多项式 p n ( x ) p_n(x) pn​(x) 近似表达 f…...

我的创作纪念日—128天的坚持|分享|成长

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…...

万字长文解读深度学习——多模态模型BLIP2

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总 万字长…...

selinux与防火墙

selinux 什么是selinux SELinux 是 Security-Enhanced Linux 的缩写&#xff0c;意思是安全强化的 linux 。 SELinux 主要由美国国家安全局&#xff08; NSA &#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 系统资源都是通过程序进行访问的&#xff0…...

java基础概念47-ArrayList、LinkList和迭代器

一、ArrayList集合 1-1、ArrayList的两种添加信息的方式 1-2、ArrayList集合底层逻辑 1、利用空参创建的集合&#xff0c;在底层创建一个默认长度为0的数组 2、添加第一个元素时&#xff0c;底层会创建一个新的长度为10的数组 3、存满时&#xff0c;会扩容1.5倍。 4、如果…...

Delphi 12.2.1 idhttpserver的使用方法

Delphi 12.2.1 idhttpserver的使用方法 1&#xff09;CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);事件 该事件和IDTCPSERVER的EXECUTE()事件一样&#xff0c;都是“线程方法”&#xff0c;即事件是在子线程里…...

【golang】单元测试,以及出现undefined时的解决方案

单元测试 要对某一方法进行测试时&#xff0c;例如如下这一简单减法函数&#xff0c;选中函数名后右键->转到->测试 1&#xff09;Empty test file 就是一个空文件&#xff0c;我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题&#xff1a; 找不到包。我们要在…...

jmeter 压测常用静默参数解释应用

简介&#xff1a; JMeter静默压测&#xff08;即无界面压测&#xff09;是一种常用的性能测试方法&#xff0c;用于模拟多个用户同时访问系统并测量系统的响应时间和吞吐量等关键性能指标。在JMeter静默压测中&#xff0c;常用的压测参数及其解释如下&#xff1a; 一、基本…...

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…...

《智能体雏形开发(高阶实操)》开发计划概述

智能体雏形开发计划 通过本计划,逐步完成一个可以真实运行的智能体雏形。 最终完成一个**“用户日志文件生成日报,日报再进一步汇总成周报”**的任务驱动型智能体雏形 第一阶段:基础准备与环境搭建 1. 学习基础知识 了解智能体的概念、类型和技术框架。学习大模型(如阿里…...

QT学习笔记-QStringList,QTimer

QStringList-存储和管理一系列的字符串 在Qt框架中&#xff0c;QStringList 是一个模板类 QList<QString> 的特化&#xff0c;专门用于处理 QString 对象&#xff08;即Qt中的字符串&#xff09;的列表。当你看到这样的声明&#xff1a; QStringList m_rec_topicList; …...

如何使用brew安装phpredis扩展?

如何使用brew安装phpredis扩展&#xff1f; phpredis扩展是一个用于PHP语言的Redis客户端扩展&#xff0c;它提供了一组PHP函数&#xff0c;用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…...

游戏引擎学习第25天

Git: https://gitee.com/mrxiao_com/2d_game 今天的计划 总结和复述&#xff1a; 这段时间的工作已经接近尾声&#xff0c;虽然每次编程的时间只有一个小时&#xff0c;但每一天的进展都带来不少收获。尽管看起来似乎花费了很多时间&#xff0c;实际上这些日积月累的时间并未…...

多线程运行时,JVM(Java虚拟机)的内存模型

在多线程运行时&#xff0c;JVM&#xff08;Java虚拟机&#xff09;的内存模型主要涉及以下几个方面&#xff1a; 1. 主内存和工作内存 JVM内存模型定义了主内存和工作内存的概念。主内存是所有线程共享的内存区域&#xff0c;而工作内存是每个线程私有的内存区域。线程对变量…...

kernel crash数据解析

crash数据解析 crash解析工具下载和编译方法如下&#xff1a; git clone https://github.com/crash-utility/crash.git cd crash; make targetARM64 crash工具解析ramdump文件&#xff1a; 1. 将dump 出来的ramdump 文件拷贝到 Linux 系统 2. 找到当前Linux 内核对应的vm…...

CLIP模型也能处理点云信息

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

利用若依代码生成器实现课程管理模块开发

目录 前言1. 环境准备1.1 数据库表设计与导入 2. 使用若依代码生成器生成模块代码2.1 导入数据库表2.2 配置生成规则2.2.1 基本信息配置2.2.2 字段信息配置2.2.3 生成信息配置 3. 下载与集成生成代码3.1 解压与集成3.2 启动项目并验证 4. 优化与扩展4.1 前端优化4.2 后端扩展 结…...

用Python做数据分析环境搭建及工具使用(Jupyter)

目录 一、Anaconda下载、安装 二、Jupyter 打开 三、Jupyter 常用快捷键 3.1 创建控制台 3.2 命令行模式下的快捷键 3.3 运行模式下快捷键 3.4 代码模式和笔记模式 3.5 编写Python代码 一、Anaconda下载、安装 【最新最全】Anaconda安装python环境_anaconda配置python…...

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD

目录 一、OFD 简介1.1 什么是 OFD&#xff1f;1.2 什么是 版式文档&#xff1f;1.3 为什么要用 OFD 而不是PDF&#xff1f; 二、ofdrw 简介2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD&#xff08;ofdrw-conterver&#xff09;3.1 介绍&#xff1a…...

linux环境人大金仓数据库修改密码

1.进入人大金仓安装目录 cd /home/opt/Kingbase/ES/V9/Server/bin2.连接数据库 ./ksql -U system -d mydb -h 127.0.0.1 -p 54321-u 用户名 -d 数据库名 -h ip地址 -p 端口号 3.修改密码 ALTER USER system WITH PASSWORD 密码;...

使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏

开发板选择 本次使用开发板模块丝印为ESP32-WROOM-32E 开发板库选择 Arduino IDE上型号选择为ESP32-WROOM-DA Module 显示屏选择 使用显示屏为8针SPI接口显示屏 驱动IC为ST7735S 使用库 使用三个Arduino平台库 分别是 Adafruit_GFXAdafruit_ST7735SPI 代码详解 首…...

Spring Cloud Alibaba(六)

目录&#xff1a; 分布式链路追踪-SkyWalking为什么需要链路追踪什么是SkyWalkingSkyWalking核心概念什么是探针Java AgentJava探针日志监控实现之环境搭建Java探针日志监控实现之探针实现编写探针类TestAgent搭建 ElasticsearchSkyWalking服务环境搭建搭建微服务微服务接入Sky…...