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

Logback使用和常用配置

Logback 是 Spring Boot 默认集成的日志框架,相比 Log4j,它性能更高、配置更灵活,并且天然支持 Spring Profile 多环境配置。以下是详细配置步骤及常用配置示例。


一、添加依赖(非 Spring Boot 项目)

若项目未使用 Spring Boot,需手动添加 Logback 依赖:

<!-- Maven 依赖 -->
<dependencies><!-- Logback 核心 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.14</version></dependency><!-- 支持 Spring Profile 配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId><version>3.2.0</version></dependency>
</dependencies>

二、Logback 配置文件

配置文件名为 logback-spring.xmlSpring 推荐命名,logback-spring.xml,SpringBoot会自动加载),放置在 src/main/resources 目录下。

完整配置示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds"><!-- 通用日志格式 --><property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /><!-- 日志文件路径 --><property name="LOG_DIR" value="logs" /><property name="LOG_FILE" value="${LOG_DIR}/app.log" /><!-- 控制台输出(开发环境) --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${LOG_PATTERN}</pattern></encoder><!-- 仅 dev 环境启用 name ="dev" dev是application.yaml文件中的spring.profiles.active的值 --><springProfile name="dev"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>DEBUG</level></filter></springProfile></appender><!-- 滚动文件输出(生产环境) --><appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}</file><encoder><pattern>${LOG_PATTERN}</pattern></encoder><!-- 滚动策略:按时间 + 大小 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_DIR}/app-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>30</maxHistory><totalSizeCap>10GB</totalSizeCap></rollingPolicy></appender><!-- 异步日志(提升性能) --><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><queueSize>1024</queueSize><discardingThreshold>0</discardingThreshold><appender-ref ref="ROLLING_FILE" /></appender><!-- 日志记录器配置 --><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ASYNC" /></root><!-- MyBatis SQL 日志 --><logger name="com.example.mapper" level="DEBUG" additivity="false"><appender-ref ref="CONSOLE" /></logger><!-- Spring 框架日志降级 --><logger name="org.springframework" level="WARN" />
</configuration>

注:日志文件如果不是logback-spring.xml的名字,springProfile配置会读取不到devprod等环境变量的值

三、核心配置详解

1. 全局配置
  • <configuration scan="true" scanPeriod="30 seconds">
    启用配置文件热更新,每隔 30 秒检查配置变化。
  • <property>
    定义变量(如 LOG_PATTERN),便于复用。

2. 输出器(Appenders)
a. 控制台输出(ConsoleAppender)
  • <encoder>:定义日志格式,%d 表示时间,%thread 为线程名,%-5level 左对齐日志级别。
  • <springProfile>:根据 Spring Profile 动态启用(如仅 dev 环境输出 DEBUG 级别)。
b. 滚动文件输出(RollingFileAppender)
  • <rollingPolicy>
    • SizeAndTimeBasedRollingPolicy:按时间和文件大小滚动。
    • fileNamePattern:归档文件名(%i 为滚动序号,.gz 自动压缩)。
    • maxFileSize:单个文件最大大小(触发滚动)。
    • maxHistory:保留最近 30 天日志。
    • totalSizeCap:日志总量上限(避免磁盘占满)。
c. 异步输出(AsyncAppender)
  • <queueSize>:异步队列大小(默认 256,增大可减少阻塞)。
  • <discardingThreshold>:队列剩余容量阈值(0 表示队列满时丢弃 INFO 以下日志)。

3. 日志记录器(Loggers)
  • <root>:根记录器,所有日志的默认配置。
  • <logger>
    • name:包或类名(如 com.example.mapper)。
    • level:日志级别(优先级高于 root)。
    • additivity="false":禁止向上传递日志事件(避免重复输出)。

四、Spring Profile 多环境配置

通过 springProfile 标签实现环境差异化配置:

<!-- 开发环境:输出 DEBUG 到控制台 name ="dev" dev是application.yaml文件中的spring.profiles.active的值 -->
<springProfile name="dev"><root level="DEBUG"><appender-ref ref="CONSOLE" /></root>
</springProfile><!-- 生产环境:仅输出 ERROR 到文件 name ="prod" prod是application.yaml文件中的spring.profiles.active的值-->
<springProfile name="prod"><root level="INFO"><appender-ref ref="ASYNC" /></root><logger name="com.example" level="WARN" />
</springProfile>

五、代码中使用日志

在类中通过 SLF4J API 记录日志:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;@Service
public class UserService {private static final Logger logger = LoggerFactory.getLogger(UserService.class);public void createUser(String username) {logger.debug("创建用户: {}", username);  // DEBUG 级别需配置对应 Loggerlogger.info("用户创建成功: {}", username);}
}

六、常见问题排查

  1. 日志未输出

    • 检查 logback-spring.xml 是否在 src/main/resources 目录。
    • 确认依赖无冲突(排除其他日志框架如 Log4j)。
    • 检查日志级别是否允许(如 DEBUG 需 Logger 和 Root 均开启)。
  2. 滚动文件未生成

    • 确认 LOG_DIR 路径存在且有写入权限。
    • 检查 fileNamePattern 是否符合预期(如日期格式)。
  3. 性能问题

    • 使用异步 Appender 并增加 queueSize
    • 避免高频输出 DEBUG 日志(生产环境关闭)。

七、总结

通过 Logback 可实现:

  1. 多环境差异化配置:利用 springProfile 标签。
  2. 高效日志管理:异步输出 + 滚动归档。
  3. 精细化日志控制:按包或类设置级别。

建议生产环境配置:

  • 使用 AsyncAppender 提升性能。
  • 限制 maxHistorytotalSizeCap 防止磁盘溢出。
  • 关闭非必要 DEBUG 日志。

相关文章:

Logback使用和常用配置

Logback 是 Spring Boot 默认集成的日志框架&#xff0c;相比 Log4j&#xff0c;它性能更高、配置更灵活&#xff0c;并且天然支持 Spring Profile 多环境配置。以下是详细配置步骤及常用配置示例。 一、添加依赖&#xff08;非 Spring Boot 项目&#xff09; 若项目未使用 Sp…...

赛季7靶场 -- Code -- HTB writeup(Just hint)

本系列仅说明靶场的攻击思路&#xff0c;不会给出任何的详细代码执行步骤&#xff0c;因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。 1.首先我们对靶场进行了Nmap扫描&#xff0c;很快我们发现了Web应用端口何SSH端口 2.显然我们无法直接突破ssh&#xff0c;因为…...

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…...

【QT】Qt creator快捷键

Qt creator可以通过以下步骤快捷键査看调用关系&#xff1a; 1.打开代码文件。 2.将光标放在你想要查看调用关系的函数名上。 3.按下键盘快捷键 CtrlshiftU。 4.弹出菜单中选择“调用路径”或“被调用路径” 5.在弹出的窗口中可以查看函数的调用关系 折叠或展开代码快捷键&…...

Flask接口开发--GET接口

安装Flask 1.安装命令&#xff1a; pip3 install Flask2.查看Flask版本&#xff1a; pip3 show flask如图我的Flask版本号是2.0.3 项目创建 1、在PyCharm中&#xff0c;我们点击左上方的 file&#xff0c;选择 New Project&#xff0c;创建一个Flask项目。&#xff08;Py…...

爬虫豆瓣电影

以下是一个简单的使用 requests 和 BeautifulSoup 库来爬取网页标题的 Python 爬虫示例代码&#xff0c;以爬取豆瓣电影 Top250 首页为例&#xff08;注意遵守网站的 robots.txt 协议&#xff0c;不要过度爬取给网站造成负担&#xff09;&#xff1a; 首先确保你已经安装了 re…...

[ ] 前后端连接 结合常见故障场景和解决

调试流程图&#xff1a; 一、基础网络检查 IP与端口验证 确认前端请求的URL与后端实际运行的IP和端口完全一致&#xff08;如http://192.168.1.100:8080/api&#xff09;使用ping命令测试网络连通性&#xff0c;telnet检查端口是否开放&#xff1a; telnet 192.168.1.100 80…...

MyBatis-Plus 的加载及初始化

在 Spring Boot 启动过程中&#xff0c;MyBatis-Plus 的加载和初始化涉及多个阶段的工作。这些工作包括 MyBatis-Plus 自身的配置解析、Mapper 接口的扫描与注册、SQL 语句的动态注入以及底层 MyBatis 的初始化等。以下是对整个过程的详细分析&#xff1a; 1. Spring Boot 启动…...

LangChain开发(九)基于Rag实现文档问答

文章目录 关联阅读Rag是什么&#xff1f;Rag工作流索引&#xff08;Indexing&#xff09;检索和生成&#xff08;Retrieval and generation&#xff09; 文档问答实现流程代码实现 源码地址参考资料 关联阅读 LangChain开发&#xff08;一&#xff09;LangChain介绍和对话demo…...

Netty——TCP 粘包/拆包问题

文章目录 1. 什么是 粘包/拆包 问题&#xff1f;2. 原因2.1 Nagle 算法2.2 滑动窗口2.3 MSS 限制2.4 粘包的原因2.5 拆包的原因 3. 解决方案3.1 固定长度消息3.2 分隔符标识3.3 长度前缀协议3.3.1 案例一3.3.2 案例二3.3.3 案例三 4. 总结 1. 什么是 粘包/拆包 问题&#xff1f…...

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍&#xff1a; - ProxyPin是一个开源免费HTTP(S)流量捕获神器&#xff0c;支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量&#xff0c;支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…...

【例3.5】位数问题(信息学奥赛一本通-1313)

【题目描述】 在所有的N位数中&#xff0c;有多少个数中有偶数个数字3?由于结果可能很大&#xff0c;你只需要输出这个答案对12345取余的值。 【输入】 读入一个数N(N≤1000)。 【输出】 输出有多少个数中有偶数个数字3。 【输入样例】 2 【输出样例】 73 【题解代码】 #incl…...

python之selenium中的窗口切换

前提&#xff1a;触发一个事件打开一个新的窗口 1&#xff0c;先获取所有的句柄&#xff1a; handles driver.windowhandlers2&#xff0c;获取当前窗口 cururl driver.current_url3&#xff0c;循环遍历所有句柄 for handle in handles:driver.switch_to.window(handle)i…...

青少年编程与数学 02-011 MySQL数据库应用 20课题、连接与ORM

青少年编程与数学 02-011 MySQL数据库应用 20课题、连接与ORM 一、数据库连接基本概念连接过程连接状态连接池技术 二、Go语言连接MySQL数据库安装MySQL驱动导入相关包建立数据库连接检查连接状态执行SQL操作查询操作插入操作更新操作删除操作 完整示例 三、Python语言连接MySQ…...

Java 大视界 -- 基于 Java 的大数据分布式系统的监控与运维实践(155)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

三维空间中点、线、面的关系

三维空间中点、线、面的关系 点相对于平面的位置关系直线相对于平面的位置关系1.根据三点计算平面方程 //根据3点计算平面方程#include <iostream> #include <cmath> #include <vector>...

Spring JdbcTemplate 万字详解(通俗易懂)

目录 Δ前言 一、什么是JdbcTemplate&#xff1f; 1.定义&#xff1a; 2.作用&#xff1a; 3.环境搭建&#xff1a; 二、JdbcTemplate的简单使用 1.通过JdbcTemplate实现数据的添加&#xff1a; 2.通过JdbcTemplate实现数据的修改&#xff1a; 三、JdbcTemplate的进阶使用 …...

centos 7 搭建ftp 基于虚拟用户用shell脚本搭建

#!/bin/bash# 步骤1: 更新系统并安装vsftpd yum update -y yum install vsftpd -y# 步骤2: 创建虚拟用户信息文件并转换为数据库文件 cat << EOF > /etc/vsftpd/virtual_users.txt ftpvuser 123456 EOFdb_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsft…...

《Android低内存设备性能优化实战:深度解析Dalvik虚拟机参数调优》

1. 痛点分析&#xff1a;低内存设备的性能困局 现象描述&#xff1a;大应用运行时频繁GC导致卡顿 根本原因&#xff1a;Dalvik默认内存参数与硬件资源不匹配 解决方向&#xff1a;动态调整堆内存参数以平衡性能与资源消耗 2. 核心调优参数全景解析 关键参数矩阵&#xff1…...

【AI学习】概念了解

1,GPU 专门用于处理图形相关运算任务的微处理器,它起初主要聚焦于加速图形渲染,让计算机能够快速、流畅地显示高质量的图像、视频以及 3D 场景等内容,在电脑游戏、影视特效制作、动画设计等领域有着至关重要的作用。 与传统的中央处理器(CPU)相比,GPU 有着数量众多的核…...

WPF InkCanvas 控件详解

1. InkCanvas 是什么? InkCanvas 是 WPF 提供的一个手写绘图控件,它允许用户使用鼠标、触摸屏或手写笔在界面上进行绘图、标注等操作。 核心特点: ✅ 具备笔迹存储和管理功能。 ✅ 提供 Children 和 Strokes 两个集合,分别用于管理子控件和绘制的笔迹。 ✅ 通过 EditingM…...

数据库三级选择题(2)

C) 分布式数据库的事务管理包括恢复控制和并发控制&#xff0c;恢复控制一般采用的策略是基于两阶段提交协议 采用一定的计算方法定位数据的有 Ⅳ&#xff0e;散列&#xff08;哈希&#xff09;索引 下列提供逻辑独立性的是外模式/模式映像 UML所有活动有关判断的部分要用菱形表…...

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…...

CAS(Compare And Swap)

CAS核心原理 操作流程 CAS 包含三个参数&#xff1a;内存值&#xff08;V&#xff09;、预期值&#xff08;E&#xff09;和新值&#xff08;N&#xff09;。执行步骤如下&#xff1a; 比较&#xff1a;检查当前内存值 V 是否等于预期值 E。 交换&#xff1a;如果相等&#…...

熔断降级(Sentinel解决)

问题概述 在微服务架构中一定要预防微服务雪崩问题&#xff0c;微服务雪崩问题就是指在微服务架构中&#xff0c;当一个服务出现故障时&#xff0c;由于服务之间的依赖关系&#xff0c;故障可能会传播到其他服务&#xff0c;从而导致了大规模的服务失败&#xff0c;系统无法正…...

Deepseek API+Python 测试用例一键生成与导出 V1.0.4 (接口文档生成接口测试用例保姆级教程)

接口文档生成接口测试用例保姆级教程 随着测试需求的复杂性增加,测试用例的设计和生成变得愈发重要。Deepseek API+Python 测试用例生成工具在 V1.0.4 中进行了全方位的优化和功能扩展,特别是对接口测试用例设计的支持和接口文档的智能解析处理。本文将详细介绍 V1.0.4 版本…...

git 基本操作命令

一、初始化本地git仓库 git init 二、将当前目录下所有文件加载到本地git仓库 git add .三、提交内容和备注 git commit -m 提交类容四、(复制仓库路径)然后提交到仓库 git remote add origin 提交的仓库路径五、提交到远程仓库&#xff0c;如果这里提交失败&#xff0c;在…...

学习本地部署DeepSeek的过程(基于LM Studio)

除了使用Ollama部署DeepSeek&#xff0c;还可以使用LM Studio部署DeepSeek&#xff0c;后者是一款允许用户在本地计算机上运行大型语言模型&#xff08;LLMs&#xff09;的桌面应用程序&#xff0c;旨在简化本地模型的使用&#xff0c;无需云端连接或复杂配置即可体验 AI 功能。…...

web爬虫笔记:js逆向案例十一 某数cookie(补环境流程)

web爬虫笔记:js逆向案例十一 某数cookie(补环境流程) 一、获取网页数据请求流程 二、目标网址、cookie生成(逐步分析) 1、目标网址:aHR0cHM6Ly9zdWdoLnN6dS5lZHUuY24vSHRtbC9OZXdzL0NvbHVtbnMvNy9JbmRleC5odG1s 2、快速定位入口方法 1、通过脚本监听、hook_cookie等操作可…...

游戏引擎学习第180天

我们将在某个时候替换C标准库函数 今天我们要进行的工作是替换C标准库函数&#xff0c;这是因为目前我们仍然在使用C语言开发&#xff0c;并且在某些情况下会调用C标准库函数&#xff0c;例如一些数学函数和字符串格式化函数&#xff0c;尤其是在调试系统中&#xff0c;我们使…...

测试用例生成平台通过大模型升级查询功能,生成智能测试用例

在测试工作中&#xff0c;查询功能是各类系统的核心模块&#xff0c;传统的测试用例编写往往耗时且重复。如何让老旧平台焕发新活力&#xff1f;本文将结合大模型技术&#xff0c;通过用户输入的字段信息&#xff0c;自动化生成高效、精准的测试用例。同时&#xff0c;我们还将…...

kafka零拷贝技术的底层实现

什么是 Sendfile&#xff1f; sendfile 是一种操作系统提供的系统调用&#xff08;system call&#xff09;&#xff0c;用于在两个文件描述符&#xff08;file descriptor&#xff09;之间高效传输数据。它最初由 Linux 内核引入&#xff08;从 2.1 版本开始&#xff09;&…...

Win11+VS2022+CGAL5.6配置

1. CGAL库简介 CGAL&#xff08;Computational Geometry Algorithms Library&#xff09;是一个开源的计算几何算法库&#xff0c;主要用于处理几何问题和相关算法的实现。它提供了丰富的几何数据结构和高效算法&#xff0c;覆盖点、线、多边形、曲面等基本几何对象的表示与操…...

Linux编译器gcc/g++使用完全指南:从编译原理到动静态链接

一、gcc/g基础认知 在Linux开发环境中&#xff0c;gcc和g是我们最常用的编译器工具&#xff1a; gcc&#xff1a;GNU C Compiler&#xff0c;专门用于编译C语言程序g&#xff1a;GNU C Compiler&#xff0c;用于编译C程序&#xff08;也可编译C语言&#xff09; &#x1f4cc…...

Vue3项目中的.vscode文件夹

.vscode 文件夹主要用于存放与 Visual Studio Code&#xff08;VS Code&#xff09;编辑器相关的项目配置文件&#xff0c;这些文件能让项目在 VS Code 里的开发体验更加个性化和高效。 extensions.json 在 .vscode 文件夹中&#xff0c;extensions.json 文件的作用是列出项目…...

蓝桥杯嵌入式十六届模拟三

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…...

造成服务器网络连接不稳定的原因是什么?

服务器的稳定性会影响到网络的响应速度和用户的体验感&#xff0c;当服务器网络连接不稳定时&#xff0c;会到时用户在浏览网站的过程中出现页面卡顿或页面消失等情况&#xff0c;给企业造成一定的经济损失&#xff0c;本文就来介绍一下造成服务器网络连接不稳定的因素都有哪些…...

[FPGA基础学习]加法器、三八译码器及DE2-115基本使用方法和数码管显示

软件安装&#xff1a;QuartusLite安装说明及驱动更新 DE2-115上电及程序烧录 1.用包装盒里的USB 电缆将PC的USB端口和DE2-115开发板的USB Blaster连接器连接 起来&#xff0c;为了实现主机和开发板之间的通讯&#xff0c;必须安装USB Blaster 驱动软件 鼠标右击“USB-Blaster…...

VSCode 市场发现恶意扩展正在传播勒索软件!

在VSCode 市场中发现了两个隐藏着勒索软件的恶意扩展。其中一个于去年 10 月出现在微软商店&#xff0c;但很长时间没有引起注意。 这些是扩展ahban.shiba 和 ahban.cychelloworld&#xff0c;目前已从商店中删除。 此外&#xff0c;ahban.cychelloworld 扩展于 2024 年 10 月…...

树状数组 3 :区间修改,区间查询

【题目描述】 这是一道模板题。 给定数列 a[1],a[2],…,a[n]&#xff0c;你需要依次进行q个操作&#xff0c;操作有两类&#xff1a; 1lrx&#xff1a;给定 l,r,x对于所有 i∈[l,r]&#xff0c;将a[i]加上x&#xff08;换言之&#xff0c;将 a[l],a[l1],…a[r] 分别加上 x&a…...

C++的IO流

1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了相应的缓…...

QLoRA和LoRA 微调

QLoRA 其实是一种结合了量化和 LoRA 微调技术的统一方法&#xff0c;而不是同时使用两种不同的微调方式。换句话说&#xff0c;QLoRA 的意思就是&#xff1a;先把大模型的主权重用低精度&#xff08;例如 4-bit&#xff09;量化&#xff0c;从而大幅减少存储需求&#xff1b;然…...

Android电话监听器的设计与实现:深入解析Service与TelephonyManager

目录 一、引言 二、Service核心机制解析 1. Service的本质特性 2. 生命周期管理 3. 服务类型全景 三、Service实战开发 1. 启动式Service开发&#xff08;lesson1&#xff09; 2. 绑定式Service开发 四、电话监听器完整实现&#xff08;lesson3&#xff09; 1. 系统架…...

java学习笔记7——面向对象

关键字&#xff1a;static 类变量 静态变量的内存解析&#xff1a; 相关代码&#xff1a; public class ChineseTest {public static void main(String[] args) {System.out.println(Chinese.nation); //null 没赋值前System.out.println(Chinese.nation); //中国 静态变量赋值…...

java学习——函数式编程(1)

函数式编程 Java 的函数式编程是一种以函数为核心构建逻辑的编程范式,强调不可变性、声明式代码和无副作用的操作。它通过Lambda表达式、函数式接口(如Function、Predicate、Consumer等)和Stream API等特性实现,将计算过程抽象为函数的组合与转换,而非传统的命令式步骤。…...

java 批量下载doc\excle\pdf

指定图片集合 下载到指定文件夹 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; import java.util.List;public class OfficeFileDownloader {/*** 需要下载的Office文档URL列表*/private static final List<Strin…...

Python爬虫:Feapder 的详细使用和案例

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Feapder 概述1.1 Feapder介绍1.2 Feapder 核心特点1.3 Feapder 主要组件1.4 Feapder的安装2. 基础爬虫编写2.1 创建爬虫2.2 运行爬虫3. 数据采集案例3.1 新闻网站采集3.2 电商商品采集3.3 使用 Spider 类创建更强大爬…...

【江协科技STM32】读写备份寄存器RTC实时时钟(学习笔记)

参考相关文章理解&#xff1a; 【江协科技STM32】Unix时间戳&#xff08;学习笔记&#xff09;-CSDN博客 【江协科技STM32】BKP备寄存器&RTC实时时钟&#xff08;学习笔记&#xff09;_stm32断电保存时钟-CSDN博客 读写备份寄存器 接线图&#xff1a;VBAT是从STLINK的…...

Linux touch命令

参考资料 Linux 常用命令 - touch 【创建空文件与修改时间戳】 目录 一. 用法简介二. 配合扩展字符&#xff0c;批量创建文件三. 修改文件的时间戳3.1 -t 配置项3.2 -d 配置项3.3 配合find命令实现批量时间戳修改 四. 结合 find 批量创建相同时间的新文件 一. 用法简介 ⏹当指…...

PyTorch图像预处理--Compose

torchvision.transforms.Compose 是 PyTorch 中用于图像预处理的核心工具&#xff0c;可将多个图像变换操作组合成一个顺序执行的流水线。 ‌1. 定义与作用‌ ‌功能‌&#xff1a;将多个图像处理步骤&#xff08;如缩放、裁剪、归一化等&#xff09;串联为一个整体&#xff…...