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

8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)

8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)

在 IntelliJ IDEA 的 Maven 项目中引入了 Log4j,并配置了日志同时输出到控制台和文件。
Log4j 提供了灵活的日志配置选项,可以根据项目需求调整日志级别、输出目标和格式。

1. 创建 Maven 项目

  1. 打开 IntelliJ IDEA。
  2. 选择 “File” > “New” > “Project…”。
  3. 选择 “Maven”,点击 “Next”。
  4. 填写 GroupId 和 ArtifactId,点击 “Next”。
  5. 确认项目位置,点击 “Finish”。

2. 添加 Log4j 依赖

在项目的 pom.xml 文件中添加 Log4j 2.x 依赖:
在这里插入图片描述

    <!-- 项目依赖 --><dependencies><!-- Log4j 2.x 依赖 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.20.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.20.0</version></dependency></dependencies>

3. 创建 Log4j 配置文件

src/main/resources 目录下创建 log4j2.xml 文件,配置 Log4j 的日志输出格式和级别:
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<!-- Log4j 2.x 配置文件这个文件定义了日志记录的行为,包括日志级别、输出目标、格式等。
-->
<Configuration status="WARN"><!-- <Configuration> 根元素- status: 设置 Log4j 自身的日志级别(如 WARN、ERROR 等)。用于调试 Log4j 自身的运行状态。--><Appenders><!-- <Appenders> 元素- 定义日志输出的目标(Appender)。- 可以配置多个 Appender(如控制台、文件、数据库等)。--><!-- 控制台输出 Appender --><Console name="Console" target="SYSTEM_OUT"><!-- <Console> 元素- name: Appender 的名称(用于在 Logger 中引用)。- target: 输出目标(SYSTEM_OUT 表示标准输出,即控制台)。--><!-- 日志格式化配置 --><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/><!-- <PatternLayout> 元素- pattern: 定义日志消息的格式。- %d{HH:mm:ss.SSS}: 日期时间(时:分:秒.毫秒)。- [%t]: 线程名(中括号包裹)。- %-5level: 日志级别(左对齐,宽度为 5)。- %logger{36}: 日志记录器名称(最大长度为 36)。- %msg: 日志消息。- %n: 换行符。--></Console><!-- 文件输出 Appender --><File name="File" fileName="logs/app.log"><!-- <File> 元素- name: Appender 的名称(用于在 Logger 中引用)。- fileName: 指定日志文件的路径和名称。--><!-- 日志格式化配置 --><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/><!-- <PatternLayout> 元素- pattern: 定义日志消息的格式。- %d{yyyy-MM-dd HH:mm:ss.SSS}: 日期时间(年-月-日 时:分:秒.毫秒)。- [%t]: 线程名(中括号包裹)。- %-5level: 日志级别(左对齐,宽度为 5)。- %logger{36}: 日志记录器名称(最大长度为 36)。- %msg: 日志消息。- %n: 换行符。--></File></Appenders><Loggers><!-- <Loggers> 元素- 定义日志记录器的配置(如日志级别、输出目标)。--><!-- 根日志记录器配置 --><Root level="info"><!-- <Root> 元素- level: 设置根日志记录器的日志级别(如 DEBUG、INFO、WARN、ERROR)。低于该级别的日志将不会被记录。--><!-- 引用 Appender --><AppenderRef ref="Console"/><AppenderRef ref="File"/><!-- <AppenderRef> 元素- ref: 引用之前定义的 Appender 的名称(如 "Console" 和 "File")。将日志输出到指定的 Appender。--></Root></Loggers>
</Configuration>

4. 编写示例代码

src/main/java 目录下创建一个 Java 类,使用 Log4j 记录日志:
在这里插入图片描述

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class App {// 获取 Logger 实例,用于记录日志private static final Logger logger = LogManager.getLogger(App.class);public static void main(String[] args) {// 记录 INFO 级别的日志logger.info("程序启动");try {// 示例:记录输入输出String input = "Hello, Log4j!";// 记录 DEBUG 级别的日志(只有 DEBUG 及以上级别的日志会被记录)logger.debug("输入内容: {}", input);String output = processInput(input);logger.debug("输出内容: {}", output);// 记录 INFO 级别的日志logger.info("程序运行正常");} catch (Exception e) {// 记录 ERROR 级别的日志,并附带异常信息logger.error("程序运行出错", e);}}// 示例方法:处理输入字符串private static String processInput(String input) {return input.toUpperCase();}
}

5. 运行程序

  1. 在 IntelliJ IDEA 中右键点击 App 类。
  2. 选择 “Run ‘App.main()’”.
  3. 程序运行后,日志会同时输出到控制台和文件 logs/app.log
5.1 由于log4j2.xml配置了记录级别≥info,所以控制台与文件,未记录debug级别的日志

在这里插入图片描述
在这里插入图片描述

5.2 修改log4j2.xml,配置为记录级别≥debug,查看运行结果,结果便记录了≥debug日志级别的日志

在这里插入图片描述

Log4j 介绍

1. Log4j 是什么?

Log4j 是一款功能强大、灵活且高性能的Java 日志记录框架,尤其是 Log4j 2.x 版本,解决了 Log4j 1.x 的许多问题,并提供了许多高级功能。它是许多大型 Java 项目的首选日志框架。然而,在使用时需要注意安全配置(如避免 Log4Shell 漏洞),并根据项目需求选择合适的日志级别和输出目标。它提供了灵活的日志记录功能,支持将日志输出到控制台、文件、数据库、网络等多种目标,并支持日志级别、格式化、过滤等高级功能。

2. Log4j 的主要版本
  • Log4j 1.x

    • 第一个稳定版本,功能强大但设计较老旧。
    • 已被官方标记为“结束生命周期”(EOL),不再维护。
    • 存在一些已知的安全漏洞(如 Log4Shell 漏洞)。
  • Log4j 2.x

    • 完全重写的版本,性能更高、功能更丰富。
    • 支持异步日志记录、Lambda 表达式、插件化架构等。
    • 是当前推荐使用的版本。
3. Log4j 的核心组件

Log4j 的架构主要由以下组件组成:

  1. Logger(日志记录器)

    • 用于记录日志消息的入口。
    • 通过类名或名称空间获取 Logger 实例(如 LogManager.getLogger(MyClass.class))。
    • 支持日志级别(如 DEBUGINFOWARNERROR)。
  2. Appender(输出目标)

    • 定义日志输出的目标(如控制台、文件、数据库、网络等)。
    • 常用 Appender:
      • ConsoleAppender:输出到控制台。
      • FileAppender / RollingFileAppender:输出到文件(支持滚动日志)。
      • SocketAppender:通过网络输出到远程服务器。
  3. Layout(日志格式化)

    • 定义日志消息的格式(如时间、线程名、日志级别、日志消息等)。
    • 常用 Layout:
      • PatternLayout:支持自定义格式(如 %d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n)。
      • JSONLayout:输出 JSON 格式的日志。
  4. Filter(过滤器)

    • 用于过滤日志消息(如根据日志级别、日志内容等)。
  5. Level(日志级别)

    • 定义日志的优先级,从低到高:
      • TRACE:调试细节。
      • DEBUG:调试信息。
      • INFO:一般信息。
      • WARN:警告信息。
      • ERROR:错误信息。
      • FATAL:严重错误。
4. Log4j 的工作原理
  1. 日志记录流程

    • 应用程序通过 Logger 实例调用日志方法(如 logger.info("message"))。
    • Log4j 根据日志级别和配置决定是否记录该消息。
    • 如果记录,消息会通过 Appender 输出到目标(如控制台、文件)。
    • 在输出前,可以通过 Layout 格式化消息。
  2. 配置方式

    • XML 配置:通过 log4j2.xml 文件配置。
    • Properties 配置:通过 log4j2.properties 文件配置。
    • 编程式配置:通过 Java 代码动态配置。
5. Log4j 的优势
  • 高性能
    • Log4j 2.x 支持异步日志记录,通过 LMAX Disruptor 库实现无锁队列,大幅提高日志记录性能。
  • 灵活性
    • 支持多种 Appender、Layout 和 Filter,可以轻松扩展。
  • 易用性
    • 提供简单的 API 和丰富的配置选项。
  • 可维护性
    • 日志级别和输出目标可以动态调整(无需重启应用)。
  • 安全性
    • Log4j 2.x 修复了 Log4j 1.x 中的安全漏洞(如 Log4Shell)。
6. Log4j 的安全注意事项
  • Log4Shell 漏洞
    • Log4j 1.x 和 Log4j 2.x 的早期版本存在严重的远程代码执行漏洞(CVE-2021-44228)。
    • 解决方案:
      • 升级到 Log4j 2.17.1 或更高版本。
      • 禁用 JNDI 查找(通过配置 log4j2.component.properties 或环境变量)。
  • 最小权限原则
    • 日志文件和配置文件的目录应设置适当的权限,防止未授权访问。

相关文章:

8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)

8.idea创建maven项目(使用Log4j日志记录框架Log4j 介绍) 在 IntelliJ IDEA 的 Maven 项目中引入了 Log4j&#xff0c;并配置了日志同时输出到控制台和文件。 Log4j 提供了灵活的日志配置选项&#xff0c;可以根据项目需求调整日志级别、输出目标和格式。 1. 创建 Maven 项目 …...

Linux 命名管道+日志

一、命名管道 1.1 进程通信的前提&#xff1a;先让不同进程看到同一份资源&#xff1b; 1.2 如何确保两个进程打开的是同一个文件&#xff1a;同路径下同一文件名&#xff1b; 1.3 命名管道&#xff1a;通过路径文件名确保这个份资源的唯一性&#xff1b; 1.4 接口&#xf…...

c/c++之信号处理<signal.h>

该库提供了一组用于处理信号的函数和宏。信号是由操作系统或程序本身生成的一种异步事件&#xff0c;用于通知某些事件的发生&#xff0c;例如非法操作、用户中断等。 信号 信号是进程之间通信的重要方式。信号是一种异步通知机制&#xff0c;由操作系统或其他进程发送给当前进…...

基于PyTorch的图像分类特征提取与模型训练文档

概述 本代码实现了一个基于PyTorch的图像特征提取与分类模型训练流程。核心功能包括&#xff1a; 使用预训练ResNet18模型进行图像特征提取 将提取的特征保存为标准化格式 基于提取的特征训练分类模型 代码结构详解 1. 库导入 import torch import torch.nn as nn import…...

DDoS vs CC攻击:哪种对服务器威胁更大?

引言 DDoS&#xff08;分布式拒绝服务&#xff09;与CC&#xff08;Challenge Collapsar&#xff09;攻击是两种常见的网络攻击手段&#xff0c;均会导致服务器资源耗尽、服务中断。但它们的攻击原理、防御难度及危害程度存在显著差异。本文将从技术原理、攻击效果、防御成本等…...

Weiss Robotics的WPG与WSG系列紧凑型机器人夹爪,精准、灵活、高效

在自动化和智能制造领域&#xff0c;Weiss Robotics 以其创新的智能抓取系统而受到广泛认可。本文将重点介绍 Weiss Robotics 的两大产品系列&#xff1a;WPG 系列和 WSG 系列。这些产品系列凭借其先进的技术特性&#xff0c;为各行各业的自动化需求提供了高效、灵活的解决方案…...

引力透镜效应添加光线弯曲程度可视化层的MATLAB代码

物理实现要点&#xff1a; ‌雅可比矩阵计算‌ 通过数值梯度计算偏转场的空间导数&#xff1a; 放大率μ反映像的亮度增强倍数 ‌动态范围处理‌ 使用对数压缩μ值范围&#xff1a;μ_vis log10(1μ)&#xff0c;避免高放大率区域饱和 ‌多物理量联合显示‌ 红圈标注爱因…...

OpenCV 图形API(71)图像与通道拼接函数-----从图像(GMat)中裁剪出一个矩形区域的操作函数 crop()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 裁剪一个2D矩阵。 该函数根据给定的 cv::Rect 裁剪矩阵。 输出矩阵必须与输入矩阵具有相同的深度&#xff0c;大小由给定的矩形大小指定。 注意…...

tarjan缩点+强联通分量

【模板】缩点https://www.luogu.com.cn/problem/P3387 首先我们要理解这道题为什么要用缩点 题目说的是有向图&#xff0c;如果无环的话就可以用DP来解决了 由于可以走重复的点&#xff0c;所以一个环上的点可以看成是一个点&#xff0c;它的点权就等于该环上所有点的点权之…...

tornado_登录页面(案例)

目录 1.基础知识​编辑 2.脚手架&#xff08;模版&#xff09; 3.登录流程图&#xff08;processon&#xff09; 4.登录表单 4.1后&#xff08;返回值&#xff09;任何值&#xff1a;username/password &#xff08;4.1.1&#xff09;app.py &#xff08;4.1.2&#xff…...

Educational Codeforces Round 178 (Rated for Div. 2)

ABC 略 D n个数互质&#xff0c;即n个数都是质数&#xff0c;预处理前4e5个质数&#xff0c;原排列从大到小排序求前缀和&#xff0c;质数求前缀和&#xff0c;从后往前循环第一个前者前缀和能大于等于后者就是留下的i个数。 #include<bits/stdc.h> #define int long …...

从Transformer原理角度来看,prompt设置输出字数限制会生效的原因

从Transformer原理角度来看,prompt设置输出字数限制会生效的原因 1. 生成过程的控制 Transformer在生成文本时是一个自回归的过程,它从起始标记开始,逐个生成下一个单词或标记。在这个过程中,模型会根据已经生成的文本和自身的参数来预测下一个可能的标记的概率分布。当设…...

WEB漏洞--CSRF及SSRF案例

CSRF案例 原理 检测是否存在CSRF&#xff08;跨站请求伪造&#xff09;漏洞 1. 手动测试 构造恶意请求&#xff1a;创建一个恶意网页或电子邮件&#xff0c;包含指向目标网站的恶意请求&#xff08;如更改密码或发送消息的URL&#xff09;。诱使用户访问该恶意请求&#xff0c;…...

Android开发——实现一个计算器

目录 代码讲解 activity_calculator.xmld代码讲解 1. 根布局&#xff08;LinearLayout&#xff09; 2. 显示区域&#xff08;TextView&#xff09; 3. 按钮区域&#xff08;GridLayout&#xff09; 4. 清除和删除按钮 5. 数字和操作符按钮 6. 其他行的按钮 7. 最后一行…...

23G显存可以跑多大尺寸的Qwen3?

随着阿里Qwen3系列大模型的发布,开发者们对如何在有限显存下部署不同尺寸的模型尤为关注。本文基于Qwen3的技术特性和实际测试数据,探讨在23G显存环境下可运行的模型选择及优化策略。 不过由于咱财力有限,只有一张A100,还不是空的,目前只有23G的显存。 那么这23G显存能跑…...

网络通讯【QTcpServer、QTcpSocket、QAbstractSocket】

目录 QTcpServer class简单描述成员函数和信号 QTcpSocket Class详细描述成员函数和信号 QAbstractSocket Class详细描述成员函数和信号成员函数说明文档 QT实现服务器和客户端通讯服务器端&#xff1a;通讯流程原代码 客户端通信流程原代码 QTcpServer class header: #includ…...

std::functional 类是干什么用的?

author: hjjdebug date: 2025年 04月 29日 星期二 15:54:53 CST description: std::functional 类是干什么用的&#xff1f; 文章目录 1.functional 对象的概念2.functional 对象存在的意义2.1 为什么要把接口再封一层&#xff1f;2.2 c中函数参数可以不用回调函数, 而改用func…...

人事管理系统6

模糊查询 DepartmentMapper.xml &#xff1a; <select id"findDepartmentListByName" resultMap"BaseResultMap"> select <include refid"Base_Column_List"/> from department where dname like %${dname}% /*where dname like con…...

链表的中间节点

这题需要用到快慢指针的思想&#xff0c;快指针叫fast&#xff0c;慢指针是slow&#xff0c;快指针每次往后移两个节点&#xff0c;slow只移动一个节点&#xff0c;这样子fast的速度是slow的两遍&#xff0c;当fast遍历完链表&#xff0c;slow才遍历一半&#xff0c;正好就在中…...

【学习学学】城市群与都市圈是什么?怎么

城市群与都市圈是什么&#xff1f;怎么发展 这些年城市群&#xff0c;都市圈的概念被逐渐提了出来&#xff0c;也是未来我国即将重点发展的对象之一。 因此&#xff0c;身边有一些朋友在问&#xff0c;城市群与都市圈有什么区别&#xff1f;哪个对城市发展影响更大&#xff1f…...

【深度学习与大模型基础】第14章-分类任务与经典分类算法

Part 1&#xff1a;什么是分类任务&#xff1f; 1.1 分类就是“贴标签” 想象你有一堆水果&#xff0c;有苹果&#x1f34e;、橘子&#x1f34a;、香蕉&#x1f34c;&#xff0c;你的任务是让机器学会自动判断一个新水果属于哪一类——这就是分类&#xff08;Classification&…...

第十五章:预训练大语言模型

目录 15.1 数据准备 15.1.1 数据预处理 15.1.2 数据调度 15.2 模型架构 15.2.1 主流架构 一、编码器架构&#xff08;Encoder-only&#xff0c;以 BERT 为代表&#xff09; 核心特点&#xff1a; 代表模型&#xff1a;BERT、RoBERTa、ALBERT 典型应用&#xff1a; 二…...

万象生鲜配送系统代码2025年4月29日更新日志

亲爱的用户&#xff1a;万象生鲜配送系统始终致力于为您提供更优质、高效的服务体验。经过我们技术团队的不懈努力&#xff0c;万象生鲜配送系统在 2025 年 4 月迎来了一次重大更新。本次更新涵盖了多个方面&#xff0c;包括功能新增、性能优化以及问题修复&#xff0c;旨在进一…...

Mac 创建QT按钮以及一些操作

在创建QT项目好 后我们打开mainwindow.cpp&#xff0c;下面所示的代码都是在这个cpp文件里面因为它是窗口的入口函数 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QPushButton>//按钮的头文件MainWindow::MainWindow(QWidget *pa…...

C++学习之shell高级和正则表达式

目录 1.正则表达式 2.C中使用正则 3.复习 4.sort命令 5.uniq命令 6.wc命令 7.grep命令 8.find命令 9.xargs命令 10.sed命令 11.awk命令 12.crontab 1.正则表达式 1 管道 使用| 将多个命令拼接在一起 原理&#xff0c;就是将前一个命令的标准输出作为后一个…...

SpringBoot获取用户信息常见问题(密码屏蔽、驼峰命名和下划线命名的自动转换)

文章目录 一、不返回password字段二、返回的createTime和updateTime为空原因解决&#xff1a;开启驼峰命名和下划线命名的自动转换 一、不返回password字段 在字段上面添加JsonIgnore注解即可 JsonIgnore // 在把对象序列化成json字符串时&#xff0c;忽略该字段 private Str…...

优化PCB Via Stub系列(2) – 运用U-Turn Via设计破解阻抗匹配困境,改善信号完整性

在PCB设计中&#xff0c;往往透过制程改善如背钻、盲孔或埋孔&#xff0c;来消除不必要的Via stub&#xff0c;可是多出来的制造成本会压低产品的毛利&#xff0c;可是又有什么办法可以不透过制程改善以缩小Via stub带来的SI困扰呢&#xff1f; 本周我们来讲从Layout布局的角度…...

飞鸟游戏模拟器 1.0.3 | 完全免费无广告,内置大量经典童年游戏,重温美好回忆

飞鸟游戏模拟器是一款专为安卓用户设计的免费游戏模拟器&#xff0c;内置了大量经典的童年游戏。该模拟器拥有丰富的游戏资源&#xff0c;目前已有约20,000款游戏&#xff0c;包括多种类型如冒险、动作、角色扮演等。用户可以直接搜索查找想要玩的游戏进行下载并启动。游戏库中…...

​钓鱼网页散播银狐木马,远控后门威胁终端安全

在当今网络环境下&#xff0c;许多人都有通过搜索引擎下载应用程序的习惯&#xff0c;虽然这种方式简单又迅速&#xff0c;但这也可能被不法分子所利用&#xff0c;通过设置钓鱼网站来欺骗用户。这些钓鱼网站可能会通过各种方式吸引用户点击&#xff0c;从而进行病毒的传播&…...

一文读懂 JavaScript 中的深浅拷贝

在 JavaScript 编程里&#xff0c;深浅拷贝是处理数据时极为关键的概念。理解它们的差异&#xff0c;能帮我们规避许多数据操作上的 “陷阱”。今天&#xff0c;咱们就借助简单的 “abc” 相关示例&#xff0c;深入探索深浅拷贝的奥秘&#xff0c;并且通过在浏览器控制台输出结…...

5G技术在工业4.0中的应用:连接未来,驱动智能制造

5G技术在工业4.0中的应用&#xff1a;连接未来&#xff0c;驱动智能制造 引言 工业4.0&#xff0c;作为第四次工业革命的核心&#xff0c;已经在全球范围内掀起了智能制造的浪潮。它不仅包括了自动化生产、智能物流、云计算和大数据的应用&#xff0c;更是融合了互联网、物联网…...

驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路

一、前言 在嵌入式Linux开发中&#xff0c;无论是CPU、外设控制器&#xff0c;还是简单的GPIO扩展器&#xff0c;大多数硬件模块都离不开时钟信号的支撑。 时钟子系统&#xff08;Clock Subsystem&#xff09;&#xff0c;作为Linux内核中基础设施的一部分&#xff0c;为设备…...

数据结构---单链表的增删查改

前言&#xff1a; 经过了几个月的漫长岁月&#xff0c;回头时年迈的小编发现&#xff0c;数据结构的内容还没有写博客&#xff0c;于是小编赶紧停下手头的活动&#xff0c;补上博客以洗清身上的罪孽 目录 前言 概念&#xff1a; 单链表的结构 我们设定一个哨兵位头节点给链…...

【codeforces 2104D,E】欧拉筛,字符串上dp

【codeforces 2104D&#xff0c;E】欧拉筛&#xff0c;字符串上dp Problem - D - Codeforces 题意&#xff1a; 给定一个长度为 n n n的数组 a 1 , a 2 , . . . , a n a_1, a_2, ... , a_n a1​,a2​,...,an​&#xff0c;其中 2 ≤ a i ≤ 1 0 9 2 \leq a_i \leq 10^9 2≤…...

UEC++第15天|番茄插件、实现跳跃、实现背景运动

这是flyBird的第二天&#xff0c;做了一些简单的功能&#xff0c;明天继续更新 vs的番茄插件 在visual stdudio里使用可以帮助代码补全&#xff0c;这一篇博客写的不错&#xff0c;大家可以参考一下。VS2019 安装番茄助手&#xff08;Visual Assist x 插件&#xff09;攻略_vs…...

论文笔记-基于多层感知器(MLP)的多变量桥式起重机自适应安全制动与距离预测

《IET Cyber-Systems and Robotics》出版山东大学 Tenglong Zhang 和 Guoliang Liu 团队的研究成果&#xff0c;文章题为“Adaptive Safe Braking and Distance Prediction for Overhead Cranes With Multivariation Using MLP”。 摘要 桥式起重机的紧急制动及其制动距离预测是…...

[论文阅读]Adversarial Semantic Collisions

Adversarial Semantic Collisions Adversarial Semantic Collisions - ACL Anthology Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP) 对抗样本是相似的输入但是产生不同的模型输出&#xff0c;而语义冲突是对抗样本的逆…...

Redis Sentinel 和 Redis Cluster 各自的原理、优缺点及适用场景是什么?

我们来详细分析下 Redis Sentinel (哨兵) 和 Redis Cluster (集群) 这两种方案的原理和使用场景。 Redis Sentinel (哨兵) 原理: Sentinel 本身是一个或一组独立于 Redis 数据节点的进程。它的核心职责是监控一个 Redis 主从复制 (Master-Slave) 架构。多个 Sentinel 进程协同…...

面向人工智能、量子科技、人形机器人等产业,山东启动制造业创新中心培育认定

从山东省工业和信息化厅了解到&#xff0c;2025年山东省制造业创新中心培育和认定已启动&#xff0c;重点面向全省传统优势产业、新兴产业及未来产业等领域&#xff0c;鼓励具备条件的龙头企业牵头创建省制造业创新中心。 今年&#xff0c;山东重点面向全省冶金、化工、轻工、…...

无锡哲讯科技:SAP财务系统——赋能企业智慧财务管理

数字化时代&#xff0c;财务管理的新挑战 在全球化竞争和数字经济快速发展的背景下&#xff0c;企业财务管理正面临前所未有的挑战。传统的财务核算方式效率低下、数据孤岛严重、决策滞后&#xff0c;难以满足现代企业高效运营的需求。如何实现财务数据的实时整合&#xff1…...

Linux命令使用记录(自用)

阿里开源镜像站:https://developer.aliyun.com/mirror/?spma2c6h.13651102.0.0.6c2a1b11I9pmUD&serviceTypemirror&tag top命令 top [选项] -p 只显示某个进程的信息 -d 设置刷新时间&#xff0c;默认是5s -c 显示产生进程的完整命令&#xff0c;默认是进程…...

Spring Security 的 CSRF 防护机制

CSRF&#xff1a;跨站请求伪造&#xff08;Cross-Site Request Forgery&#xff09; Spring Security 中的 .csrf() 是用来开启或配置这种保护机制&#xff0c;防止恶意网站“冒充用户”向你的网站发起请求。 一、CSRF 攻击原理简要 CSRF 的典型攻击场景如下&#xff1a; 用…...

跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战

当你的后端(Flask+MySQL,Windows开发)与前端(Vue,Mac开发)需要统一部署到服务器并实现交互时,完全可以通过「跨平台适配+反向代理」方案实现。本文将分步骤讲解如何在 Linux服务器(推荐)或 Windows服务器 上部署,并解决跨平台兼容性、跨域请求等核心问题。 一、技术…...

第八章 磁盘管理未完待续

1.磁盘管理 磁盘简介 名词&#xff1a;磁盘/硬盘/disk 存储设备类型从工作原理区分 机械 机械硬盘即是传统普通硬盘&#xff0c;主要由&#xff1a;盘片&#xff0c;磁头&#xff0c;盘片转轴及 控制电机&#xff0c;磁头控制器&#xff0c;数据转换器&#xff0c;接口&…...

杰理AC79-WiFi 的 AP、STA 和 Monitor 模式

WiFi 的 AP、STA 和 Monitor 模式是无线网卡的不同工作模式&#xff0c;它们的区别如下&#xff1a; AP 模式&#xff08;Access Point 模式&#xff0c;接入点模式&#xff09; 功能&#xff1a;将有线网络转换为无线网络&#xff0c;允许其他无线设备连接到该网络&#xff…...

MAC安装unar并解压.rar文件

MAC上默认解压.zip文件&#xff0c;对.rar文件进行解压需要安装专门对软件。本文记录如何在命令行安装unar并对.rar文件进行解压。 命令行安装 brew install unar打印如下log则安装成功 使用brew list unar检查是否安装成功 brew list unar使用unar解压 unar 文件名.rar...

`nmi_watchdog` 与 `softlockup_panic` 的区别与关系

1. 功能区别 参数作用触发条件影响nmi_watchdog启用 NMI&#xff08;不可屏蔽中断&#xff09;看门狗检测 CPU 是否长时间不执行调度&#xff08;软死锁&#xff09;仅记录警告&#xff08;默认&#xff09;&#xff0c;需配合 softlockup_panic 才会触发 panicsoftlockup_pan…...

【Bash】可以请您解释性地说明一下“2>1”这个语法吗?

Qwen3-235B 当然可以&#xff01;我们一步步拆解 2>&1 的含义&#xff0c;用生活化的例子来理解它&#xff1a; &#x1f9e0; 前提知识&#xff1a;三个“水流通道” 在 Linux/Unix 系统中&#xff0c;程序运行时有三种默认的“水流通道”&#xff1a; 标准输入&…...

打造美观 API 文档:Spring Boot + Swagger 实战指南

目录 打造美观 API 文档&#xff1a;Spring Boot Swagger 实战指南导语一、Swagger 简介二、Spring Boot 2 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 三、Spring Boot 3 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 四、多种接口文档风格展示…...

如何在 Android 上恢复已删除的照片?:简短指南

没有什么比不小心从 Android 智能手机中删除所有照片更糟糕的了。这样&#xff0c;除非您在重置之前已经备份了数据&#xff0c;否则您的所有照片都会消失。如果您忘记备份照片&#xff0c;您仍然可以按照一些简单的技术在 Android 设备上恢复已删除的照片。 如何在 Android 上…...