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

Java-日志技术大全

一:目录

1.jul的使用

2.log4j的使用

3.logback的使用

4.log4j2的使用

二:jul使用

jul是JDK自带的日志技术,不需要导入其他依赖,默认的级别为info

1.关键组件:

(1).Logger:记录器

(2).Handler:处理器

(3).Formatter:布局

2.代码中配置jul:

@Testpublic void julLogger() throws Exception {Logger logger=Logger.getLogger("com.wxy.example");logger.info("日志技术");logger.log(Level.INFO,"info级别");System.out.println("-------------------");//关闭系统默认配置logger.setUseParentHandlers(false);//自定义配置日志级别//创建ConsoleHandlerConsoleHandler consoleHandler=new ConsoleHandler();//创建简单格式转换对象SimpleFormatter simpleFormatter=new SimpleFormatter();//进行关联consoleHandler.setFormatter(simpleFormatter);consoleHandler.setLevel(Level.ALL);logger.addHandler(consoleHandler);//配置日志具体级别logger.setLevel(Level.ALL);logger.severe("错误信息");logger.warning("警告信息");logger.info("日志输出");logger.fine("fine");logger.finer("finer");logger.finest("finest");}

3.在配置文件中配置:

handlers= java.util.logging.ConsoleHandler
.level= ALL
java.util.logging.ConsoleHandler.level= ALL
java.util.logging.ConsoleHandler.formatter= java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.encoding= UTF-8java.util.logging.FileHandler.pattern= D:/\u4EE3\u7801/Logs/ssm-jul-java%u.log
java.util.logging.FileHandler.limit= 50000
java.util.logging.FileHandler.count= 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append = true

文件名为logging.properties,配置了两种Handler,一种输出在控制台,一种输出在文件中。

@Testpublic void julLogger() throws Exception {InputStream                 inputStream=example.class.getClassLoader().getResourceAsStream("logging.properties");LogManager logManager=LogManager.getLogManager();logManager.readConfiguration(inputStream);Logger logger=Logger.getLogger("com.wxy");logger.severe("错误信息");logger.warning("警告信息");logger.info("日志输出");logger.fine("fine");logger.finer("finer");logger.finest("finest");}

需要用到LogManager对象来读取配置文件。

4.slf4j与jul结合使用:

依赖:

    <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.7.26</version></dependency>

 注意添加依赖的版本不同问题。

public class test {private static final Logger LOGGER=LoggerFactory.getLogger(test.class);public static void main(String[] args) {//PropertyConfigurator.configure("src/main/resources/log4j.properties");LOGGER.error("错误信息");LOGGER.warn("警告信息");LOGGER.info("普通信息");LOGGER.debug("调试信息");LOGGER.trace("trace信息");String username="张三";String password="13579";LOGGER.info(username+password);LOGGER.info("zhuijia ");}
}

 使用slf4j门面技术,需要通过LoggerFactory.getLogger()方法获取Logger实例对象,使用的是slf4j   提供的自动配置,也可以添加logging.properties配置文件进行配置,slf4j可以自动识别并读取配置文件。

三:log4j的使用:

1.关键组件:

(1).loggers:日志记录器,遵循父继子承的关系。

(2).appender:输出控制器

        ConsoleAppender:输出位置为控制台;

        FileAppender:输出位置为文件;

        DailyRollingFileAppender:根据日期更新拆分日志文件;

        RollingFileAppender:根据大小拆分日志文件;

        JDBCAppender:输出位置为数据库。

(3).layout:输出格式

        HTMLLayout:输出HTML格式的数据;

        SimpleLayout:输出默认格式的数据;

        PatternLayout:自定义输出格式。

log4j的PatternLayout的常用占位符:

c	用于输出日志事件的类别。例如,对于类别名称"a.b.c",模式%c{2}将输出"b.c"。
C	用于输出发出日志记录请求的调用方的全限定类名。例如,对于类名"org.apache.xyz.SomeClass",模式%C{1}将输出"SomeClass"。
d	用于输出记录事件的日期。例如,%d{HH:mm:ss,SSS}或%d{dd MMM yyyy HH:mm:ss,SSS}。
F	用于输出发出日志请求的文件名。
l	用于输出生成日志事件的呼叫者的位置信息。
L	用于输出发出记录请求的行号。
m	用于输出与日志记录事件关联的应用程序提供的消息。
M	用于输出发出记录请求的方法名称。
n	输出平台相关的行分隔符或多个字符。
p	用于输出日志事件的优先级。
r	用于输出从布局的构造到创建日志记录事件所经过的毫秒数。
t	用于输出生成日志事件的线程的名称。
x	用于输出与生成日志事件的线程关联的NDC(嵌套诊断上下文)。
X	X转换字符后跟MDC的密钥。例如,X{clientIP}将根据密钥clientIP打印MDC中存储的信息。
​

2.使用默认配置:

@Testpublic void Log4jLogger() {BasicConfigurator.configure();Logger logger=Logger.getLogger("com.wxy.example");logger.fatal("fatal信息,危险信息!!!");logger.error("错误信息!!!");logger.warn("warn警告信息");logger.info("info普通信息");logger.debug("debug调试信息");logger.trace("trace信息");String nameString="zhangsan";logger.info("info信息"+nameString);}

使用默认配置时一定要加上BasicConfigurator.configure();

3.自定义配置:

log4j.rootLogger=INFO,console,dailyRollingFileAppender
#log4j.logger.com.wxy=INFO,console,logFilelog4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-10p] [%t] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%l] %m%nlog4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-10p] [%t] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%l] %m%n
log4j.appender.logFile.File=D:/\u4EE3\u7801/Logs/ssm-log4j-java.log
log4j.appender.logFile.Encoding=UTF-8log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.conversionPattern=[%-10p] [%t] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%l] %m%n
log4j.appender.rollingFile.File=D:/\u4EE3\u7801/Logs/ssm-log4j-java.log
log4j.appender.rollingFile.Encording=UTF-8
log4j.appender.rollingFile.maxFileSize=10KB
log4j.appender.rollingFile.maxBackupIndex=5log4j.appender.dailyRollingFileAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyRollingFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyRollingFileAppender.layout.conversionPattern=[%-10p] [%t] [%d{yyyy-MM-dd HH:mm:ss:SSS}] [%l] %m%n
log4j.appender.dailyRollingFileAppender.File=D:/\u4EE3\u7801/Logs/log4j.log
log4j.appender.dailyRollingFileAppender.Encoding=UTF-8
log4j.appender.dailyRollingFileAppender.DatePattern='.'yyyy-MM-dd
@Testpublic void Log4jLogger() {Logger logger=Logger.getLogger("com.wxy.example");logger.fatal("fatal信息,危险信息!!!");logger.error("错误信息!!!");logger.warn("warn警告信息");logger.info("info普通信息");logger.debug("debug调试信息");logger.trace("trace信息");String nameString="zhangsan";logger.info("info信息"+nameString);}

log4j会自动识别并读取配置文件,不需要手动添加。

4.slf4j与log4j的结合使用:

依赖:

    <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.36</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

注意版本问题。

public class test {private static final Logger LOGGER=LoggerFactory.getLogger(test.class);public static void main(String[] args) {PropertyConfigurator.configure("src/main/resources/log4j.properties");LOGGER.error("错误信息");LOGGER.warn("警告信息");LOGGER.info("普通信息");LOGGER.debug("调试信息");LOGGER.trace("trace信息");String username="张三";String password="13579";LOGGER.info(username+password);LOGGER.info("zhuijia ");}
}

log4j.properties文件需要手动添加。

四:logback的使用:

logback通常与slf4j一块使用,默认级别为debug,可以使用异步日志。

1.依赖:

    <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency>

添加slf4j-api和logback-classic依赖,添加了logback-classic会自动添加logback-core。

2.配置文件:

<configuration><property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSSS} %c %M %L [%thread] %m%n"/><property name="log_dir" value="D:/代码/Logs"/><!-- 输出地址为控制台 --><appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"><!-- 控制输出流对象,默认System.out改为System.err,输出语句会变成红色的 --><target>System.err</target><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!-- 控制输出的格式 --><pattern>${pattern}</pattern></encoder></appender><!-- 输出地址为文件 --><appender name="fileAppender" class="ch.qos.logback.core.FileAppender"><file>${log_dir}/logback.log</file><append>true</append><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!-- 控制输出的格式 --><pattern>${pattern}</pattern></encoder></appender><!-- 以HTML格式输出文件中 --><appender name="fileHTMLAppender" class="ch.qos.logback.core.FileAppender"><file>${log_dir}/logback.html</file><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="ch.qos.logback.classic.html.HTMLLayout"><pattern>${pattern}</pattern></layout></encoder></appender><!-- 按照每天生成日志文件 --><appender name="APP_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${log_dir}/error-%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>5</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${pattern}</pattern><charset>UTF-8</charset></encoder><!-- 此日志文件只记录error级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><!-- 超过放行 --><onMatch>ACCEPT</onMatch><!-- 否则拦截 --><onMismatch>DENY</onMismatch></filter></appender><!-- 异步日志 --><appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="consoleAppender" /></appender><root level="ALL"><appender-ref ref="consoleAppender"/><appender-ref ref="fileAppender"/><appender-ref ref="fileHTMLAppender"/></root><!-- 自定义logger additivity属性是否继承root属性 --><logger name="com.wxy" level="ALL" additivity="false"><appender-ref ref="consoleAppender"/><appender-ref ref="APP_ERROR"/></logger>
</configuration>

3.测试: 

public class test {private static final Logger LOGGER=LoggerFactory.getLogger(test.class);public static void main(String[] args) {LOGGER.error("错误信息");LOGGER.warn("警告信息");LOGGER.info("普通信息");LOGGER.debug("调试信息");LOGGER.trace("trace信息");String username="张三";String password="13579";LOGGER.info(username+password);LOGGER.info("zhuijia ");}
}

五:log4j2的使用:

log4j2既包含了日志门面也包含了日志技术。但现在最主流的还是slf4j+log4j2的日志框架技术。

log4j2的PatternLayout的常用占位符:

- %m:输出日志消息(message)。 
- %n:换行符。 
- %c{10}:输出Logger的名称,最多显示10个字符。 
- %l:输出日志事件的位置信息,包括类名、方法名、行号等。 
- %C{1}:输出Logger的类名的最后一个元素(不包括包路径)。 
- %L:输出日志事件所在的行号。 
- %M:输出调用日志事件的方法名。 
- %d:输出日志时间日期。 
- %p:输出日志级别。 
- %t:输出线程名。 
- %r:输出自应用启动到输出该日志信息耗费的时间。 
- %x:输出线程上下文信息。 
- %X{key}:输出指定key的MDC(Mapped Diagnostic Context)信息。 
- %throwable:输出异常信息。 
- %highlight{level}:根据日志级别高亮显示日志消息。

1.依赖:

    <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.17.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.1</version></dependency><dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.2</version></dependency>

2.配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- status="warn" 日志框架本身的输出日志级别 monitorInterval="5" 自动加载配置文件的间隔时间,不低于5秒
-->
<configuration status="warn" monitorInterval="5"><properties><property name="LOG_HOME">D:/代码/Logs</property><property name="consolePattern">%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%l --- %m%n</property><property name="filePattern">[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n</property></properties><appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="${consolePattern}"/></Console><!-- 使用AsyncAppender异步,性能几乎无变化,不推荐使用 --><!-- <Async name="Async"><AppenderRef ref="Console"/></Async> --><File name="file" filename="${LOG_HOME}/log4j2.log"><PatternLayout pattern="${filePattern}"/></File><!-- 使用随机读写流的日志文件输出appender,性能好 --><RandomAccessFile name="accessFile" fileName="${LOG_HOME}/log4j2-myAcclog.log"><PatternLayout pattern="${filePattern}"></PatternLayout></RandomAccessFile><!-- 按照一定规则拆分日志文件的appender --><RollingFile name="rollingFile" fileName="${LOG_HOME}/log4j2-myrollog.log"filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/myrollog-%d{yyyy-MM-dd-HH-mm}-%i.log"><!-- 日志级别过滤器 -->		 <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/><!-- 日志消息格式 --><PatternLayout pattern="${filePattern}"/><Policies><!-- 在系统启动时,触发拆分规则,生成一个新的日志文件 --><!-- <OnStartupTriggeringPolicy /> --><!-- 按照文件大小进行拆分 --><SizeBasedTriggeringPolicy size="10 MB"/><!-- 按照时间节点进行拆分 --><TimeBasedTriggeringPolicy /></Policies>			<!-- 在同一个目录下,文件的个数限定为30个,超过进行覆盖 --><DefaultRolloverStrategy max="30" /></RollingFile></appenders><loggers><Root level="trace"><AppenderRef ref="Console" /><AppenderRef ref="file" /><AppenderRef ref="rollingFile" /></Root><!-- 使用AsyncLogger混合异步日志 includeLocation属性:日志记录的行号信息 --><AsyncLogger name="com.wxy" level="all" includeLocation="false" additivity="false"><AppenderRef ref="Console"/></AsyncLogger></loggers>
</configuration>

log4j2拥有多种异步日志的处理方式,主要分为AsyncLogger和AsyncApender。

AsyncApender异步日志的方式不建议使用,因为它和logback的性能差不多。

<Async name="Async"><AppenderRef ref="Console"/>
</Async>

在appenders标签中添加Async作为appender。

AsyncLogger提供了两种异步日志的方法,一种为全局异步,另一种为混合异步。

全局异步:在src/main/resources/下创建属性文件 log4j2.component.properties,在属性文件中添加如下即可,xml文件不做变化:

log4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

混合异步:在log4j2.xml文件中的loggers属性中添加AsyncLogger。

<AsyncLogger name="com.wxy" level="all" includeLocation="false" additivity="false"><AppenderRef ref="Console"/>
</AsyncLogger>

3.测试: 

public class test {private static final Logger LOGGER=LoggerFactory.getLogger(test.class);public static void main(String[] args) {//PropertyConfigurator.configure("src/main/resources/log4j.properties");LOGGER.error("错误信息");LOGGER.warn("警告信息");LOGGER.info("普通信息");LOGGER.debug("调试信息");LOGGER.trace("trace信息");String username="张三";String password="13579";LOGGER.info(username+password);LOGGER.info("zhuijia ");}
}

相关文章:

Java-日志技术大全

一&#xff1a;目录 1.jul的使用 2.log4j的使用 3.logback的使用 4.log4j2的使用 二&#xff1a;jul使用 jul是JDK自带的日志技术&#xff0c;不需要导入其他依赖&#xff0c;默认的级别为info 1.关键组件&#xff1a; (1).Logger&#xff1a;记录器 (2).Handler&…...

ARP-Batch-Retargeting 部署实战

git 地址&#xff1a; https://github.com/Shimingyi/ARP-Batch-Retargeting bpy安装&#xff1a; pypi上搜索 bpy bpy 4.3.0&#xff0c;4.2.0版本报错&#xff1a; Traceback (most recent call last):File "E:\project\jijia_4d\retarget\ARP-Batch-Retargeting-…...

二分查找题目:寻找峰值 II

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法证明代码复杂度分析 题目 标题和出处 标题&#xff1a;寻找峰值 II 出处&#xff1a;1901. 寻找峰值 II 难度 7 级 题目描述 要求 一个二维网格中的峰值元素是指其值严格大于相邻值&#xff08;左、…...

调和级数不为整数的证明

文章目录 1. 问题引入2. 证明2.1 引理12.2 引理22.3 引理3&#xff1a;2.4 核心证明&#xff1a; 3. 参考 1. 问题引入 s ( n ) 1 1 2 1 3 ⋯ 1 n , n ∈ N ∗ , n ≥ 2 s(n) 1\frac{1}{2}\frac{1}{3}\cdots\frac{1}{n}, \quad \\n \in N^*, n \ge2 s(n)121​31​⋯n1​,…...

Redis 源码分析-内部数据结构 dict

Redis 源码分析-内部数据结构 dict 在上一篇 Redis 数据库源码分析 提到了 Redis 其实用了全局的 hash 表来存储所有的键值对&#xff0c;即下方图示的 dict&#xff0c;dict 中有两个数组&#xff0c;其中 ht[1] 只在 rehash 时候才真正用到&#xff0c;平时都是指向 null&am…...

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令&#xff0c;用于初始化一个新的 Git 仓库。执行该命令后&#xff0c;Git 会在当前目录创建一个 .git 子目录&#xff0c;这是 Git 用来存储所有版本控制信息的地方。 使用方法如下&#xff1a; &#xff08;1&#xff…...

STM32小实验2

定时器实验 TIM介绍 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断…...

Oracle Dataguard(主库为双节点集群)配置详解(2):备库安装 Oracle 软件

Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;备库安装 Oracle 软件 目录 Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;备库安装 Oracle 软件一、Orac…...

基于 Pod 和 Service 注解的服务发现

基于 Pod 和 Service 注解的服务发现 背景 很多应用会为 Pod 或 Service 打上一些注解用于 Prometheus 的服务发现&#xff0c;如 prometheus.io/scrape: "true"&#xff0c;这种注解并不是 Prometheus 官方支持的&#xff0c;而是社区的习惯性用法&#xff0c;要使…...

操作系统之文件的逻辑结构

目录 无结构文件&#xff08;流式文件&#xff09; 有结构文件&#xff08;记录式文件&#xff09; 分类&#xff1a; 顺序文件 特点&#xff1a; 存储方式&#xff1a; 逻辑结构&#xff1a; 优缺点&#xff1a; 索引文件 目的&#xff1a; 结构&#xff1a; 特点…...

网络分析与监控:阿里云拨测方案解密

作者&#xff1a;俞嵩(榆松) 随着互联网的蓬勃发展&#xff0c;网络和服务的稳定性已成为社会秩序中不可或缺的一部分。一旦网络和服务发生故障&#xff0c;其带来的后果将波及整个社会、企业和民众的生活质量&#xff0c;造成难以估量的损失。 2020 年 12 月&#xff1a; Ak…...

vue实现虚拟列表滚动

<template> <div class"cont"> //box 视图区域Y轴滚动 滚动的是box盒子 滚动条显示的也是因为box<div class"box">//itemBox。 一个空白的盒子 计算高度为所有数据的高度 固定每一条数据高度为50px<div class"itemBox" :st…...

服务器/电脑与代码仓gitlab/github免密连接

git config --global user.name "xxxx" git config --global user.email "xxxxxx163.com" #使用注册GitHub的邮箱 生成对应邮箱的密码对 ssh-keygen -t rsa -b 4096 -C "xxxxxx163.com" 把公钥id_rsa.pub拷贝到github中 Setting----->…...

用户界面软件03

一种标准的满足不同的非功能性需求的技术是对子系统进行不同的考虑……但是一个用户 界面要求有大量的域层面的信息&#xff0c;以符合比较高的人机工程标准&#xff0c;所以&#xff0c;这些分开的子系统还是 紧密地耦合在一起的。 一个软件架构师的标准反应是将不同的非功能…...

年会抽奖Html

在这里插入图片描述 <!-- <video id"backgroundMusic" src"file:///D:/background.mp3" loop autoplay></video> --> <divstyle"width: 290px; height: 580px; margin-left: 20px; margin-top: 20px; background: url(D:/nianhu…...

(一)Ubuntu20.04版本的ROS环境配置与基本概述

前言 ROS不需要在特定的环境下进行安装&#xff0c;不管你是Ubuntu的什么版本或者还是虚拟机都可以按照教程进行安装。 1.安装ROS 一键安装ros及ros2 wget http://fishros.com/install -O fishros && . fishros 按照指示安装你想要的ros。 ros和ros2是可以兼容的…...

深入分析线程安全问题的本质

深入分析线程安全问题的本质 1. 并发编程背后的性能博弈2. 什么是线程安全问题&#xff1f;3. 源头之一&#xff1a;原子性问题3.1. 原子性问题示例3.2. 原子性问题分析3.3. 如何解决原子性问题&#xff1f; 4. 源头之二&#xff1a;可见性问题4.1. 为什么会有可见性问题&#…...

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景

58. Three.js案例-创建一个带有红蓝配置的半球光源的场景 实现效果 本案例展示了如何使用Three.js创建一个带有红蓝配置的半球光源的场景&#xff0c;并在其中添加一个旋转的球体。通过设置不同的光照参数&#xff0c;可以观察到球体表面材质的变化。 知识点 WebGLRenderer …...

插入实体自增主键太长,mybatis-plaus自增主键

1、问题 spring-boot整合mybtais执行insert语句时&#xff0c;主键id为长文本数据。 2、分析问题 1)数据库主键是否自增 2&#xff09;数据库主键的种子值设置的多少 3、解决问题 1&#xff09;数据库主键设置的时自增 3&#xff09;种子值是1 所以排查是数据库的问题 4、继…...

【利用 Unity + Mirror 网络框架、Node.js 后端和 MySQL 数据库】

要实现一个简单的1v1战斗小游戏&#xff0c;利用 Unity Mirror 网络框架、Node.js 后端和 MySQL 数据库&#xff0c;我们可以将其分为几个主要部分&#xff1a;客户端&#xff08;Unity&#xff09;、服务器&#xff08;Node.js&#xff09;和数据库&#xff08;MySQL&#xf…...

https原理

一、基本概念 1、https概念 https&#xff08;全称&#xff1a; Hypertext Transfer Protocol Secure&#xff0c;超文本传输安全协议&#xff09;&#xff0c;是以安全为目标的http通道&#xff0c;简单讲是http的安全版。 2、为啥说http协议不安全呢&#xff1f; 我们用h…...

如何处理京东商品详情接口返回的JSON数据中的缺失值?

1.在 Python 中处理缺失值 使用if - else语句进行检查和处理 假设通过requests库获取了接口返回的 JSON 数据&#xff0c;并使用json模块进行解析&#xff0c;存储在data变量中。 import json import requestsurl "YOUR_API_URL" response requests.get(url) dat…...

window对象

bom dom部分学完了&#xff0c;来看看bom吧~ bom是整个浏览器&#xff0c;本质上bom与dom是包含的关系&#xff0c;window是里面最大的对象 调用的方法默认对象是window&#xff0c;一般都会省略前面的window 创建的全局变量也是属于window的&#xff0c;当然window也可以省…...

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享&#xff08;P2P&#xff09;。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据&#xff0c;关…...

MySQL常用命令之汇总(Summary of Commonly Used Commands in MySQL)

MySQL常用命令汇总 简介 ‌MySQL是一个广泛使用的开源关系型数据库管理系统&#xff0c;由瑞典的MySQL AB公司开发&#xff0c;现属于Oracle公司。‌ MySQL支持SQL&#xff08;结构化查询语言&#xff09;&#xff0c;这是数据库操作的标准语言&#xff0c;用户可以使用SQL进…...

更新至2023年,各省数字经济变量/各省数字经济相关指标数据集(20个指标)

更新至2023年&#xff0c;各省数字经济相关指标数据集&#xff08;20个指标&#xff09; 1、时间&#xff1a;更新至2023年&#xff0c;具体时间如下 2、指标&#xff1a;互联网宽带接入端口(万个)&#xff08;2006-2023&#xff09;、互联网宽带接入用户(万户)&#xff08;2…...

聚类系列 (二)——HDBSCAN算法详解

在进行组会汇报的时候&#xff0c;为了引出本研究动机&#xff08;论文尚未发表&#xff0c;暂不介绍&#xff09;&#xff0c;需要对DBSCAN、OPTICS、和HDBSCAN算法等进行详细介绍。在查询相关资料的时候&#xff0c;发现网络上对于DBSCAN算法的介绍非常多与细致&#xff0c;但…...

【JavaEE】—— SpringBoot项目集成百度千帆AI大模型(对话Chat V2)

本篇文章在SpringBoot项目中集成百度千帆提供的大模型接口实现Chat问答效果&#xff1a; 一、百度智能云 百度千帆大模型平台是百度智能云推出的一个企业级一站式大模型与AI原生应用开发及服务平台。 注册地址&#xff1a;https://qianfan.cloud.baidu.com/ 注册成功后&…...

一种更激进的Hook实现方案猜想

XXX原创不原创不清楚&#xff0c;暂定为原创。毕竟windows 大神很多XXX 昨天才发现不是原创&#xff0c;这种方案是VEH HOOK的一种实现方案。VEH HOOK很久很久以前都被广泛使用了。只是自己没听说过。好悲哀呀。。。。 激进的猜想&#xff1a; 如果VEH HOOK在内核态处理异常…...

HTML5实现好看的端午节网页源码

HTML5实现好看的端午节网页源码 前言一、设计来源1.1 网站首页界面1.2 登录注册界面1.3 端午节由来界面1.4 端午节习俗界面1.5 端午节文化界面1.6 端午节美食界面1.7 端午节故事界面1.8 端午节民谣界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 H…...

微信小程序获取图片使用session(上篇)

概述&#xff1a; 我们开发微信小程序&#xff0c;从后台获取图片现实的时候&#xff0c;通常采用http get的方式&#xff0c;例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...

RT-DETR融合YOLOv9的下采样模块ADown

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2402.13616 代码链接&…...

【机器学习案列】学生抑郁可视化及预测分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

CES 2025|美格智能高算力AI模组助力“通天晓”人形机器人震撼发布

当地时间1月7日&#xff0c;2025年国际消费电子展&#xff08;CES 2025&#xff09;在美国拉斯维加斯正式开幕。美格智能合作伙伴阿加犀联合高通在展会上面向全球重磅发布人形机器人原型机——通天晓&#xff08;Ultra Magnus&#xff09;。该人形机器人内置美格智能基于高通QC…...

Linux第一个系统程序---进度条

进度条---命令行版本 回车换行 其实本质上回车和换行是不同概念&#xff0c;我们用一张图来简单的理解一下&#xff1a; 在计算机语言当中&#xff1a; 换行符&#xff1a;\n 回车符&#xff1a;\r \r\n&#xff1a;回车换行 这时候有人可能会有疑问&#xff1a;我在学习C…...

黑马跟学.苍穹外卖.Day04

黑马跟学.苍穹外卖.Day04 苍穹外卖-day04课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常…...

人生第一次面试之依托答辩

今天收到人生的第一场面试&#xff0c;是东华软件集团。答的那是依托答辩&#xff0c;就面了20分钟&#xff0c;还没考算法。其实依托答辩的效果是意料之中的&#xff0c;这次面试也只是想练练手。 目录 静态变量什么时候加载的&#xff1f; 重写和重载有什么区别&#xff1…...

STM32 : PWM 基本结构

这张图展示了PWM&#xff08;脉冲宽度调制&#xff09;的基本结构和工作流程。PWM是一种用于控制功率转换器输出电压的技术&#xff0c;通过调整信号的占空比来实现对负载的精确控制。以下是详细讲解&#xff1a; PWM 基本结构 1. 时基单元 ARR (Auto-reload register): 自动…...

【大模型(LLM)面试全解】深度解析 Layer Normalization 的原理、变体及实际应用

系列文章目录 大模型&#xff08;LLMs&#xff09;基础面 01-大模型&#xff08;LLM&#xff09;面试全解&#xff1a;主流架构、训练目标、涌现能力全面解析 02-【大模型&#xff08;LLM&#xff09;面试全解】深度解析 Layer Normalization 的原理、变体及实际应用 大模型&…...

《浮岛风云》V1.0中文学习版

《浮岛风云》中文版https://pan.xunlei.com/s/VODadt0vSGdbrVOBEsW9Xx8iA1?pwdy7c3# 一款有着类似暗黑破坏神的战斗系统、类似最终幻想的奇幻世界和100%可破坏体素环境的动作冒险RPG。...

学习threejs,导入babylon格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.BabylonLoader babyl…...

Django 社团管理系统的设计与实现

标题:Django 社团管理系统的设计与实现 内容:1.摘要 本文介绍了 Django 社团管理系统的设计与实现。通过分析社团管理的需求&#xff0c;设计了系统的架构和功能模块&#xff0c;并使用 Django 框架进行了实现。系统包括社团信息管理、成员管理、活动管理、财务管理等功能&…...

2025 GitCode 开发者冬日嘉年华:AI 与开源的深度交融之旅

在科技的浪潮中&#xff0c;AI 技术与开源探索的火花不断碰撞&#xff0c;催生出无限可能。2025 年 1 月 4 日&#xff0c;由 GitCode 联合 CSDN COC 城市开发者社区精心打造的开年首场开发者活动&#xff1a;冬日嘉年华在北京中关村 • 鼎好 DH3-A 座 22 层盛大举行&#xff0…...

嵌入式系统 tensorflow

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 探索嵌入式系统中的 TensorFlow&#xff1a;机遇与挑战一、TensorFlow 适配嵌入式的优势二、面临的硬件瓶颈三、软件优化策略四、实…...

Web无障碍

文章目录 &#x1f7e2;Web Accessibility-Web无障碍&#x1f7e2;一、Web Accessibility-Web1. web无障碍设计2. demo3.使用相关相关开源无障碍工具条(调用可能会根据网络有点慢) 如有其他更好方案&#xff0c;可以私信我哦✒️总结 &#x1f7e2;Web Accessibility-Web无障碍…...

Qt使用MySQL数据库(Win)----2.配置MySQL驱动

使用Everything软件&#xff0c;找到mysql.pro文件。并使用qt creator打开mysql.pro。 导入外部库 选择外部库 点击下一步&#xff0c;勾选。 为debug版本添加‘d’作为后缀取消勾选&#xff0c;然后点击下一步 添加后的Pro文件。 这样文件应该是改好了&#xff0c;选择releas…...

记录一下vue2项目优化,虚拟列表vue-virtual-scroll-list处理10万条数据

文章目录 封装BrandPickerVirtual.vue组件页面使用组件属性 select下拉接口一次性返回10万条数据&#xff0c;页面卡死&#xff0c;如何优化&#xff1f;&#xff1f;这里使用 分页 虚拟列表&#xff08;vue-virtual-scroll-list&#xff09;&#xff0c;去模拟一个下拉的内容…...

java 中 main 方法使用 KafkaConsumer 拉取 kafka 消息如何禁止输出 debug 日志

pom 依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.5.14.RELEASE</version> </dependency> 或者 <dependency><groupId>org.ap…...

前端性能优化全攻略:加速网页加载,提升用户体验

前端性能优化全攻略&#xff1a;加速网页加载&#xff0c;提升用户体验 在当今互联网时代&#xff0c;用户对于网页的加载速度和性能要求越来越高。一个快速响应、流畅加载的网页能够极大地提升用户体验&#xff0c;增加用户留存率和满意度。前端性能优化是实现这一目标的关键…...

关于内网外网,ABC类地址,子网掩码划分

本文的三个关键字是&#xff1a;内网外网&#xff0c;ABC类地址&#xff0c;子网掩码划分。围绕以下问题展开&#xff1a; 如何从ip区分外网、内网&#xff1f;win和linux系统中&#xff0c;如何查询自己的内网ip和外网ip。开发视角看内外网更多是处于安全考虑&#xff0c;接口…...