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

Spring Boot日志配置

目录

logback

使用logback

获取日志对象

日志级别 

控制日志输出级别

日志输出格式控制

配置方式 

日志转存 

示例 


日志是应用程序不可或缺的一部分,记录着程序运行的信息。主要作用有:

  • 记录日常运营的重要信息
  • 记录应用报错信息
  • 记录过程数据等

logback

Logback 作为 Spring Boot 的默认日志实现框架,异步吞吐量相比于Log4j更加强大:

组件说明
Logger日志记录器,存放日志对象,负责日志分类和级别控制
Appender指定日志输出目的地
Layout日志格式转换成字符串,输出格式化的日志信息

使用logback

     在SpringBoot项目中,导入了spring-boot-starter起步依赖,则默认导入了logback所需的依赖,同样导入spring-boot-starter-web也是如此:

获取日志对象

方法一:

private static final Logger log = LoggerFactory.getLogger(LogbackApplication.class);
log.warn("sdadas");
log.info("info...");
log.error("jksabnfijASBF");
log.debug("daskdhaoisjdhja");

注意:使用Logger时导入的包是org.slf4j下的,而不是java.util。

方法二:使用@Slf4j注解:

注:该方法在启用前要先启用lombok(SpringBoot内置了lombok)

  <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

该方法省去了创建对象的麻烦,只需要加上@Slf4j注解,就会自动生成log变量。

日志级别 

SpringBoot的日志级别用于控制日志输出的详细程度,日志级别越高,输出的日志越详细。

级别说明
TRACE运行堆栈信息,使用率低
DEBUG调试时打印关键信息
INFO普通的打印信息,记录运维过程数据
WARN警告数据,不影响使用
ERROR记录错误日志信息
FATAL致命错误,代码异常导致程序退出的错误

控制日志输出级别

    可以在springboot的配置文件中设置日志的输出级别:

logging:level:root: error

日志输出格式控制

    对于单条日志信息来说,日期,触发位置,记录信息是最核心的信息。级别用于做筛选过滤,PID与线程名用于做精准分析。

配置方式 

logging:pattern:console: "%logger{36} - %msg%n"    #控制台输出格式file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" #文件输出格式
占位符说明示例输出
%d{yyyy-MM-dd HH:mm:ss}日期时间,按照指定的格式输出。yyyy-MM-dd HH:mm:ss 表示年-月-日 时:分:秒。2023-10-05 14:30:45
[%thread]输出日志的线程名称,放在方括号中。[main]
%-5level日志级别,固定宽度为 5 个字符,左对齐。常见的级别有 INFODEBUGERROR 等。INFO (注意后面有一个空格)
%logger{36}日志记录器的名称,最多显示 36 个字符。如果名称超过 36 个字符,会进行截断。com.example.MyClass
-一个分隔符,用于分隔日志记录器名称和日志消息。-
%msg日志消息内容,即开发者在代码中记录的日志信息。This is a log message.
%n换行符,表示日志记录结束并换行。(在文件中表现为换行)

 示例:"%d{yyyy-MM-dd HH:mm:ss} %logger{36} - %msg%n"

日志转存 

    日志不仅能在控制台上显示,还可以存在文件中,方便后续的查阅。

配置方式:设置日志文件名即可

logging:
    file:

        path: ./logs/   #路径

示例 

logging:file:path: ./logs/

 

 注意:不需要手动创建该路径,Springboot程序启动后会自动创建。如果不指定文件名,会自动默认创建在spring.log文件中。如果不修改路径,日志会追加在spring.log文件中。

 对于线上复杂的情况,可以对日志文件进行配置:

首先创建一个logback的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds" debug="false"><!-- 日志路径 部署在服务器 文件夹需要设计777权限 --><property name="log.base" value="C://logs/suke"/><!--日志存储天数--><property name="log.max.days" value="30"/><!-- 日志文件大小 --><property name="log.max.size" value="500MB"/><!-- 输出格式--><property name="log.pattern" value="%date{ISO8601} %level [%thread] %logger{56} : %msg%n"/><!--字符集--><property name="log.charset" value="UTF-8"/><!--控制台-附加器 --><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><!--格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern}</pattern><charset>${log.charset}</charset></encoder></appender><!--info-附加器--><appender name="infoFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.base}/info/_info.log</file><!--存储路径--><!-- 输出格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern}</pattern><charset>${log.charset}</charset></encoder><!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--按天回滚--><fileNamePattern>${log.base}/info/archive/info_%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><!--日志最大存储天数--><maxHistory>${log.max.days}</maxHistory><!--当天的日志 超过大小 压缩日志并保存 --><maxFileSize>${log.max.size}</maxFileSize></rollingPolicy><!--过滤器,只记录INFO级别的日志--><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--warn-附加器--><appender name="warnFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.base}/warn/_warn.log</file><!--存储路径--><!--输出格式--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern}</pattern><charset>${log.charset}</charset></encoder><!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.base}/warn/archive/warn_%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><!--日志最大存储天数--><maxHistory>${log.max.days}</maxHistory><!-- 当天的日志 超过大小 压缩日志并保存 --><maxFileSize>${log.max.size}</maxFileSize></rollingPolicy><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--error-附加器--><appender name="errorFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.base}/error/_error.log</file><!--存储路径 --><!--输出格式--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${log.pattern}</pattern><charset>${log.charset}</charset></encoder><!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${log.base}/error/archive/error_%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><!--日志最大存储天数--><maxHistory>${log.max.days}</maxHistory><!-- 当天的日志 超过大小 压缩日志并保存 --><maxFileSize>${log.max.size}</maxFileSize></rollingPolicy><!--级别-过滤器 error--><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName --><!--<logger name="org.springframework.aop.framework.CglibAopProxy" additivity="false"><level value="info" /><appender-ref ref="stdout" /></logger>--><logger name="com.fs" additivity="false"><level value="debug" /><appender-ref ref="stdout" /></logger><!-- root将级别为“DEBUG”及大于“DEBUG”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console --><root level="info"><appender-ref ref="stdout" /> <!-- 标识这个appender将会添加到这个logger --><appender-ref ref="infoFile" /><appender-ref ref="warnFile" /><appender-ref ref="errorFile" /></root>
</configuration>

注:Springboot会默认加载classpath:logback-spring.xml或者classpath:logback-spring.groovy或者:classpath:logback.xml,可自定义配置:

logging: config: classpath:logback-suke.xml

不要使用logback-logback.xml这个来命名,否则spring boot将不能完全实例化

相关文章:

Spring Boot日志配置

目录 logback 使用logback 获取日志对象 日志级别 控制日志输出级别 日志输出格式控制 配置方式 日志转存 示例 日志是应用程序不可或缺的一部分&#xff0c;记录着程序运行的信息。主要作用有&#xff1a; 记录日常运营的重要信息记录应用报错信息记录过程数据等…...

不可变数据:基于持久化数据结构的状态管理

不可变数据:基于持久化数据结构的状态管理 一、 什么是不可变数据&#xff1f; 不可变数据是指一旦创建就无法更改的数据。在计算机科学中&#xff0c;不可变数据结构是指其内容或状态不能被修改的数据结构。在不可变数据中&#xff0c;所有修改操作都会生成新的数据副本&#…...

PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例

本文通过具体代码示例讲解PyTorch中卷积操作的填充&#xff08;Padding&#xff09;和步幅&#xff08;Stride&#xff09;对输出形状的影响&#xff0c;帮助读者掌握卷积层的参数配置技巧。 一、填充与步幅基础 填充&#xff08;Padding&#xff09;&#xff1a;在输入数据边缘…...

C++手撕STL-其叁

Deque 今天我们进入新的容器&#xff1a;deque&#xff0c;一般叫做双端队列。 比起传统的先入先出的队列queue&#xff0c;deque的出场率显然要低得多&#xff0c;事实上deque比起queue来说最大的特点就是多了一个push_front()和pop_front()&#xff0c;其他并没有太多不同。…...

AI大模型-window系统CPU版安装anaconda以及paddle详细步骤-亲测有效

window系统CPU版安装anaconda以及paddle详细步骤-亲测有效 一 安装anaconda 下载地址:anaconda下载 下载成功后,选择非C盘安装,按提示安装即可修改镜像文件 安装成功后,运行anaconda软件,若提示更新则点击更新,更新完后,修改镜像文件 找到用户目录下的.condarc文件,覆…...

UML概览

&#x1f970;名片&#xff1a; &#x1f433;作者简介&#xff1a;乐于分享知识的大二在校生 &#x1f333;本系列专栏: (点击直达)统一建模语言UML &#x1fae3;致读者&#xff1a;欢迎评论与私信,对于博客内容的疑问都会尽量回复哒!!! 本文序&#xff1a; ⛰️本文介绍&…...

影刀填写输入框(web) 时出错: Can not convert Array to String

环境&#xff1a; 影刀5.26.24 Win10专业版 问题描述&#xff1a; [错误来源]行12: 填写输入框(web) 执行 填写输入框(web) 时出错: Can not convert Array to String. 解决方案&#xff1a; 1. 检查变量内容 在填写输入框之前&#xff0c;打印BT和NR变量的值&#xff…...

LLMs可在2位精度下保持高准确率

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

C语言高频面试题——结构体和联合体区别

在 C 语言中&#xff0c;结构体&#xff08;struct&#xff09; 和 联合体&#xff08;union&#xff09; 是两种重要的复合数据类型&#xff0c;用于组织和管理多个相关的变量。尽管它们在语法上有些相似&#xff0c;但在内存布局、用途和行为上有显著的区别。以下是详细的对比…...

App爬虫工具篇-mitmproxy

mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,它通过控制台的形式和ui界面的方式 此外,mitmproxy 还有两个关联组件,一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本,实现监听后的处理;另一个是 mitmweb,它…...

配置openjdk调试环境

先决条件 首先在Ubuntu 18.04上编译SlowDebug版本的openjdk。注意&#xff0c;这里我选择的是x86处理器的电脑。苹果M系列属于ARM芯片&#xff0c;指令集不一样。由于我在苹果上进行垃圾回收调试的时候会报SIGILL错误。为了了解JVM的内部工作原理&#xff0c;不要在这种问题上…...

加油站小程序实战教程13充值规则配置

目录 1 创建数据源2 搭建管理功能最终效果 我们目前已经实现了会员的注册以及登录功能&#xff0c;有了基础的认证之后就进入到了业务部分的开发。会员的话首先是可以进行充值&#xff0c;在充值的时候通常会有一定的赠送&#xff0c;本篇我们来开发一下充值规则的配置功能。 1…...

jQuery — 总结

介绍 jQuery是一款高效、轻量级的JavaScript库&#xff0c;旨在简化网页开发中的常见任务。自2006年发布以来&#xff0c;它凭借直观的语法和强大的功能迅速成为前端开发的标配工具。其核心设计理念是“写更少&#xff0c;做更多”&#xff0c;通过封装复杂的原生JavaScript操作…...

【信息安全工程师备考笔记】第二章 网络信息安全概述

第二章 网络攻击原理与常用方法 2.1 网络攻击概述 概念&#xff1a;损害网络 系统安全属性 的危害行为 危害行为基本类型 信息泄露攻击&#xff08;机密性&#xff09;完整性破坏攻击&#xff08;完整性&#xff09;拒绝服务攻击&#xff08;可用性&#xff09;非法使用攻击…...

国家自然科学基金答辩ppt制作案例模板下载

国家自然科学基金 National Natural Science Foundation of China 支持基础研究&#xff0c;坚持自由探索&#xff0c;发挥导向作用&#xff0c;发现和培养科学技术人才&#xff0c;促进科学技术进步和经济社会协调发展&#xff0c;逐渐形成和发展了由研究项目、人才项目和环境…...

代码随想录第三十七天|华为秋季笔试真题230823

刷题小记&#xff1a; 主要偏向扎实编码基础的考察&#xff0c;但貌似近些年题目难度有所提高&#xff0c;仅供参考。 卡码网136.获取连通的相邻节点列表&#xff08;卡码网136.获取连通的相邻节点列表&#xff09; 题目分析&#xff1a; 题目描述&#xff1a; 存在N个转发…...

KUKA机器人KR 3 D1200 HM介绍

KUKA KR 3 D1200 HM是一款小型机器人&#xff0c;型号中HM代表“Hygienic Machine&#xff08;卫生机械&#xff09;用于主副食品行业”&#xff0c;也是一款并联机器人。用于执行高速、高精度的抓取任务。这款机器人采用食品级不锈钢设计&#xff0c;额定负载为3公斤&#xff…...

从零开始创建MCP Server实战指南

一、MCP协议核心概念 1.1 什么是MCP&#xff1f; MCP&#xff08;Model Context Protocol&#xff09; 是一个标准化的“沟通规则”&#xff0c;由公司Anthropic提出&#xff0c;专门用于让大语言模型&#xff08;LLM&#xff0c;比如通义千问、ChatGPT等&#xff09;与外部工…...

C语言教程(十二):C 语言数组详解

一、引言数组的基本概念 数组是一组具有相同数据类型的元素的集合&#xff0c;这些元素在内存中连续存储。通过一个统一的数组名和下标来访问数组中的每个元素。使用数组可以方便地处理大量相同类型的数据&#xff0c;避免为每个数据单独定义变量。 二、一维数组 2.1 数组的…...

Linux[基础指令][2]

Linux[基础指令][2] cp(复制) 格式:cp [-rf] 源文件 {普通文件,目录} 拷贝 cp -r 递归拷贝目录 蓝色为目录,白色为具体文件 拷贝后面加一个不存在的文件会新建文件再拷贝 cp -ir -i是覆盖的时候询问 如果目标文件存在就会覆盖原有文件 mv(重命名/剪切) 格式:mv 源文件…...

MySQL_MCP_Server_pro接入cherry_studio实现大模型操作数据库

大模型直接与数据库交互&#xff0c;实现基本增删改查操作。首先贴下代码地址&#xff1a; https://github.com/wenb1n-dev/mysql_mcp_server_pro 安装环境&#xff1a;win10 1、下载代码 git clone https://github.com/wenb1n-dev/mysql_mcp_server_pro 2、使用conda创建…...

linux命令集

命令 grep -r --includeAndroid.bp libcfs ./ ​参数说明 选项/参数作用-r递归搜索子目录。--includeAndroid.bp仅搜索名为 Android.bp 的文件&#xff08;精确匹配文件名&#xff09;。libcfs要搜索的关键字&#xff08;单引号包裹特殊字符如 以避免被 Shell 解析&#xff…...

数据结构:链表

链表的概念及结构&#xff1a; 链表的概念&#xff1a; 链表是一种物理储存结构上非连续的储存结构&#xff0c;数据元素的逻辑顺序是通过引用链接次序实现的 那物理存储结构连续是什么意思&#xff1f; 之前我们讲过顺序表&#xff0c;顺序表的底层是数组&#xff0c;如下…...

【高并发内存池】从零到一的项目之高并发内存池整体框架设计及thread cache设计

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 前言1. 高并发内存池整体框架设计2. 高并发内存池--thread cache2.1 定长内存池的问题2.2 整体框架2.3 自由链表2.4 thread cache哈希桶的对齐规则2.5…...

电气动调节单座V型球阀带阀杆节流套沟槽孔板的作用-耀圣

电气动调节单座V球阀杆节流套是阀门中的一个重要组件&#xff0c;主要用于调节和控制流体介质的流量、压力或流速&#xff0c;同时兼具导向、密封和稳定阀杆运动降低流速减少冲刷的作用。以下是其具体功能和应用场景的详细说明&#xff1a; 1. 节流与流量控制** 作用原理**&am…...

vscode使用笔记

文章目录 安装快捷键 vscode是前端开发的一款利器。 安装 快捷键 ctrlp # 查找文件(和idea的双击shift不一样) ctrlshiftf # 搜索内容...

基于 SpringAI 整合 DeepSeek 模型实现 AI 聊天对话

目录 1、Ollama 的下载配置 与 DeepSeek 的本地部署流程 1.1 下载安装 Ollama 1.2 搜索模型并进行本地部署 2、基于 SpringAI 调用 Ollama 模型 2.1 基于OpenAI 的接口规范&#xff08;其他模型基本遵循&#xff09; 2.2 在 IDEA 中进行创建 SpringAI 项目并调用 DS 模型 3、基…...

Idea创建项目的搭建方式

目录 一、普通Java项目 二、普通JavaWeb项目 三、maven的JavaWeb项目 四、maven的Java项目 一、普通Java项目 1. 点击 Create New Project 2. 选择Java项目&#xff0c;选择JDK&#xff0c;点击Next 3. 输入项目名称&#xff08;驼峰式命名法&#xff09;&#xff0c;可选…...

【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型

【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型 ‌一、简介 ARIMAX‌&#xff08;Autoregressive Integrated Moving Average with eXogenous inputs&#xff09;模型是一种结合自回归&#xff08;AR&#xff09;、差分&#xff08;I&#xff09;、移动平均&a…...

【以太网安全】——防护高级特性配置总结

目前网络中以太网技术的应用非常广泛、然后、各种网络攻击的纯在&#xff08;例如针对ARP DHCP 等攻击&#xff09;不仅造成了网络合法用户无法正常访问网络资源、而且对网络信息安全构成严重威胁、以下配置是对局域网安全配置命令做详解 主要的安全威胁 MAC攻击:泛洪、欺骗 …...

微信小程序 van-dropdown-menu

点击其他按钮&#xff0c;关闭van-dropdown-menu下拉框 DropdownMenu 引入页面使用index.wxmlindex.scssindex.ts(重点)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入组件 "usingComponents": {"van-dropdown-menu": "vant/weapp…...

再见 Smartdaili,你好 Decodo!

我们将翻开新的篇章&#xff0c;推出新的名称以及更好的代理和刮擦解决方案。了解我们如何帮助全球用户构建、测试和扩展他们的公共网络数据项目。 Smartproxy&#xff0c;即后来的Smartdaili&#xff0c;由一个行业专业人士和企业家团队于2018年创立&#xff0c;其使命是创建一…...

海量文本中的词语距离:在 O(n) 时间内找到最近的词对

想象一个巨大的日志文件、一部鸿篇巨著或者网络爬虫抓取的数据——它们可能达到 TB 级别。现在&#xff0c;假设你需要找出两个特定的词&#xff08;比如 词语1​ 和 词语2​&#xff09;在这段庞大文本中出现时&#xff0c;彼此“靠得最近”的距离是多少。 挑战&#xff1a; …...

TextCNN 模型文本分类实战:深度学习在自然语言处理中的应用

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本分类是研究最多且应用最广泛的任务之一。从情感分析到主题识别&#xff0c;文本分类技术在众多场景中都发挥着重要作用。最近&#xff0c;我参与了一次基于 TextCNN 模型的文本分类实验&#xff0c;从数据准备到…...

前台调用接口的方式及速率对比

一、引言 在现代 Web 开发中&#xff0c;前台与后台的数据交互至关重要&#xff0c;而调用接口是实现这一交互的关键手段。不同的接口调用方式在速率上可能存在差异&#xff0c;这会影响用户体验和应用性能。本文将详细介绍几种常见的前台调用接口方式&#xff0c;并对它们的速…...

高级java每日一道面试题-2025年4月21日-基础篇[反射篇]-如何使用反射获取一个类的所有方法?

如果有遗漏,评论区告诉我进行补充 面试官: 如何使用反射获取一个类的所有方法&#xff1f; 我回答: 在Java中&#xff0c;反射是一种强大的机制&#xff0c;允许程序在运行时检查或“反射”自身&#xff0c;从而动态地操作类、字段、方法和构造函数等。这在需要动态调用方法…...

tomcat集成redis实现共享session

中间件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…...

2.6 递归

递归 特性&#xff1a; >.一递一归 >.终止条件 一般为&#xff1a;0 1 -1 #测试函数的返回值为函数 def test_recursion():return test_recursion() print(test_recursion()) RecursionError: maximum recursion depth exceeded #案例&#xff1a;计算 …...

鸿蒙应用开发:如何修改APP名称与APP的图标

如何修改APP的名称&#xff1f; 修改APP的名称需要修改entry/src/main/resources/base/element/string.json文件 将EntryAbility_label的value修改为“需要修改成的名字”。 文件目录&#xff1a; 代码修改&#xff1a; {"string": [{"name": "modu…...

AI 模型在前端应用中的典型使用场景和限制

典型使用场景 1. 智能表单处理 // 使用TensorFlow.js实现表单自动填充 import * as tf from tensorflow/tfjs; import { loadGraphModel } from tensorflow/tfjs-converter;async function initFormPredictor() {// 加载预训练的表单理解模型const model await loadGraphMod…...

前端性能优化全攻略:JavaScript 优化、DOM 操作、内存管理、资源压缩与合并、构建工具及性能监控

1 为什么需要性能优化&#xff1f; 1.1 性能优化的核心价值&#xff1a;用户体验与业务指标 性能优化不仅是技术层面的追求&#xff0c;更是直接影响用户体验和业务成败的关键因素。 用户体验&#xff08;UX&#xff09;&#xff1a; 响应速度&#xff1a;用户期望页面加载时…...

使用 acme.sh 自动更新 SSL 证书的指南

上篇文章讲了一下 如何利用acme.sh来申请ssl&#xff0c;但没有讲3个月到期后 如何续期&#xff0c;续期的时候会碰到什么问题&#xff1f; 1.查看当前的当前签发域名的到期时间 acme.sh list 2.重新申请ssl acme.sh --issue --dns dns_namesilo -d xxx.ai -d *.xxx.ai --dns…...

查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例

以下是查看Spring Boot项目所有配置信息的几种方法&#xff0c;包括 Actuator端点、日志输出、代码级获取 等方式&#xff0c;附带详细步骤和示例&#xff1a; 1. 使用Spring Boot Actuator Actuator是Spring Boot提供的监控和管理工具&#xff0c;包含/configprops端点可查看…...

C++与C

文章目录 C与C命令空间const关键字new/delete表达式引用&#xff08;重点&#xff09;概念引用的本质引用的使用场景引用作为函数的参数引用作为函数的返回值 总结 强制转换函数重载extern "C"默认参数 bool类型inline&#xff08;内联&#xff09;函数异常处理&…...

Nginx​中间件的解析

目录 一、Nginx的核心架构解析 二、Nginx的典型应用场景 三、Nginx的配置优化实践 四、Nginx的常见缺陷与漏洞 一、Nginx的核心架构解析 ​​事件驱动与非阻塞IO模型​​ Nginx采用基于epoll/kq等系统调用的事件驱动机制&#xff0c;通过异步非阻塞方式处理请求&#xff0c;…...

Ansys Zemax | 在 MATLAB 中使用 ZOS-API 的技巧

附件下载 联系工作人员获取附件 本文将介绍一些在MATLAB中使用 ZOS-API 的技巧&#xff0c;以提高您的工作效率并充分利用 ZOS-API 的功能。 简介 OpticStudio开发了应用程序接口 (API) &#xff0c;用户可以使用API与不同的脚本环境进行连接和交互。使用API&#xff0c;用…...

js 生成pdf 并上传文件

js 生成pdf 并上传文件 使用 JsPDF html2Canvas 代码直接使用 注意注释 import JsPDF from jspdf import html2Canvas from html2canvas // 上传文件的方法 import { handleUploadImage } from /utils/uploadQuillEditdownPDF() {// 要打印元素的idconst cloneDom document.…...

刷刷刷刷刷sql题

NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过&#xff0c;但为了学习sql&#xff0c;整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判断注入类型&#xff08;数字型或字符型&#xff09; 传1 …...

JavaScript 中的 this 及 this 指向的改变方法

在 JavaScript 的世界里&#xff0c;this是一个既强大又容易让人困惑的概念。它的指向在不同的函数调用场景下会动态变化&#xff0c;而call()、apply()和bind()这三个方法则为我们提供了精确控制this指向的能力。本文将从基础概念出发&#xff0c;结合具体案例&#xff0c;带大…...

安卓模拟器绕过检测全解析:雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南

安卓模拟器绕过检测全解析&#xff1a;雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南 模拟器过检测合集雷电mumu蓝叠逍遥夜神WSA 转自风车2025 前言 随着手机游戏和应用的普及&#xff0c;越来越多的用户选择在PC上通过模拟器来运行安卓应用。然而&#xff0c;许多应用和游戏为…...