Java-日志-Slf4j-Log4j-logback
文章目录
- SLF4J
- 基础概念
- 使用
- 输出形式
- 日志绑定
- 桥接旧的框架
- 实战
- logback
- 基础概念
- 配置文件
- Log4j
- 概述
SLF4J
参考:
https://www.cnblogs.com/shenStudy/p/15806951.html
https://slf4j.org/
基础概念
是什么?SLF4J(Simple Logging Facade for Java),是一个为Java日志系统提供标准化接口的框架。它的主要目的是为各种日志框架提供统一的API,从而简化日志记录的实现和管理。使用该日志框架,需要用到 logback.xml 或者 logback-spring.xml 。其具体的实现是由log4j或者logback等实现。
日志门面?SLF4J,为日志系统提供一套门面,通过面向接口规范来进行开发,避免了直接依赖具体的日志框架,可轻松切换不同的日志实现框架并且不需要改动代码。
使用
实现方式:单一存在的日志框架,例如JUL、Log4j、Logback、Log4j2(其本身也提供日志门面接口);现阶段主流使用slf4j+logback;未来趋势使用slf4j+log4j2;
日志架构:采用slf4j作为门面,log4j或者logback作为实现框架,中间使用桥接器完成桥接。
日志的输出级别:error、warn、info(默认级别)、debug、trace,从左到右级别依次降低;其中error、warn、info信息会在控制台输出,其余信息不会输出。
输出形式
带有占位符的日志输出:Logger.info("用户:{},{}",name,age);
输出系统异常:try {int i = 1 / 0;} catch (Exception e) {logger.error("出现异常:",e);}
日志绑定
各种框架的日志输出信息:
🍇 logback-classic框架:
11:12:32.471 [main] ERROR com.date1.slf4jjTest - error
11:12:32.487 [main] WARN com.date1.slf4jjTest - warn
11:12:32.487 [main] INFO com.date1.slf4jjTest - info
11:12:32.487 [main] DEBUG com.date1.slf4jjTest - debug
11:12:32.487 [main] INFO com.date1.slf4jjTest - 用户:xxx,26🍇 log4j框架:
引入依赖:slf4j-log4j12 (适配器) 以及 log4j
日志信息展示:
2024-01-22 14:11:51,695 - 0 ERROR [main] com.date1.slf4jjTest:21 - error
2024-01-22 14:11:51,695 - 0 WARN [main] com.date1.slf4jjTest:22 - warn
2024-01-22 14:11:51,695 - 0 INFO [main] com.date1.slf4jjTest:23 - info
2024-01-22 14:11:51,695 - 0 INFO [main] com.date1.slf4jjTest:29 - 用户:xxx,26运行测试方法,报错:log4j:WARN No appenders could be found for logger (com.date1.slf4jjTest).log4j:WARN Please initialize the log4j system properly.未进行log4j.proterties文件的配置;参考修改博客:https://www.cnblogs.com/Durant0420/p/14979620.html文件配置:具体配置文件内容 复制https://www.cnblogs.com/Durant0420/p/14979620.html 博客内容;🍇 slf4j-simple框架:
[main] ERROR com.date1.slf4jjTest - error
[main] WARN com.date1.slf4jjTest - warn
[main] INFO com.date1.slf4jjTest - info
[main] INFO com.date1.slf4jjTest - 用户:xxx,26🍇 slf4j-nop框架,关闭日志功能;
进程已结束,退出代码为 0
控制台无任何输出。🍇 jul日志实现:
使用该实现需要引入适配器slf4j-jdbc,且jul已经被内置;
日志信息展示:
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
严重: error
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
警告: warn
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
信息: info
一月 22, 2024 2:31:05 下午 com.date1.slf4jjTest function1
信息: 用户:xxx,26🍎 特点:绑定多个日志框架时,会默认使用依赖文件中第一个框架;
日志实现框架的绑定流程:
1.添加slf4j-api的依赖
2.使用slf4j的API在项目中进行统一的日志记录
3.绑定具体的日志实现框架绑定已经实现了slf4i的日志框架直接添加对应依赖绑定没有实现slf4i的日志框架先添加日志的适配器再添加实现类的依赖
4.slf4i有且仅有一个日志实现框架的绑定 (如果出现多个默认使用第一个依赖日志实现)
桥接旧的框架
是什么?项目设计之初使用简单的日志框架log4j,在后期程序实现过程中需要logback,桥接器可以实现不修改原先log4j而达到升级的目的。
实现?原始的log4j 升级为 logback需要配置log4j的桥接器,即在pom文件中:log4j-over-slf4j<!-- log4j 升级为 logback 配置桥接器--><dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>1.7.25</version></dependency>
🍎 注意:
桥接器与适配器不能同时出现,即log4j-over-slf4j 与slf4j-log4j12 ,如果同时出现,会出现栈内存溢出的错误,会陷入死循环。
实战
logback
基础概念
是什么?
Logback是一个广泛用于Java应用的日志记录库。
Logback主要分为三个模块:
logback-core:其它两个模块的基础模块
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API
logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能
日志级别有:error、warn、info、trace、debug(默认级别);
修改日志的默认信息需要通过配置文件;
组件之间的关系:
1. Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
2. Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
3. Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Lavout对象被封装在encoder中
配置文件
参见的配置文件:
logback会依次读取以下类型配置文件
logback.groovy
logback-test.xml
logback.xml如果均不存在会采用默认配置
控制台输出的appender配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--配置集中管理属性我们可以直接改属性的 value 值格式: ${name} --><property name=" pattern " value="[%-5level] %d{yyyy-MM-dd HH;mm;ssSSS} %c %M %L [%thread] %m%n " > </property><!--日志输出格式%-5level%dlyyyy-MM-dd HH;mm;ssSSS}日期%c类的完整名称%M为method%L为行号%thread线程名称%m或者%msg为信息%n换行--><!--控制台日志输出的 appender--><appender name="console" 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><!--root logger 配置--><root level="ALL"><appender-ref ref="console"></appender-ref></root></configuration>
日志文件输出的appender配置文件:
<appender name="check_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 定义一个名为check_log的日志输出目的地,类型是滚动日志记录器--><encoder><pattern>%msg%n</pattern><charset>UTF-8</charset></encoder><!-- encoder记录日志消息的格式,其中pattern消息格式,%msg%n=只记录消息体,charset字符集 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 使用基于时间的滚动策略,通过class配置--><fileNamePattern>${LOG_HOME}/check_log/%d{yyyy-MM-dd,aux}/check_log.%d{yyyy-MM-dd.HH}.log</fileNamePattern><!-- 文件路径,--></rollingPolicy>
</appender><appender name="check_log_async" class="ch.qos.logback.classic.AsyncAppender">
<!-- 定义异步日志文件器,通过class设置,该可以提高日志写入的性能,不会阻塞主线程--><discardingThreshold>0</discardingThreshold><!-- 队列满时,超出的事件被丢弃的阈值,0=意味着不丢弃任何事件 --><queueSize>512</queueSize><!-- 异步记录器使用的队列大小,512=队列大小 -->
</appender><logger name="com.unicom.associatedAuth.log.CheckLog" level="INFO" additivity="false">
<!-- 配置日志记录器,name=名称,及对应的类路径;level=日志级别,等于或高于info的会被处理; additivity=false表示日志记录器不会集成父日志记录器的输出目的地,仅输出到自己指定的appender --><appender-ref ref="check_log_async"/><!-- 日志记录器指定的appender-->
</logger>
Log4j
概述
Log4j 是一种基于 Java 的日志记录框架,它提供了强大的日志记录功能,包括日志级别、日志输出格式、日志滚动等。
- 使用:
采用maven形式,需要导入相应的依赖包;
配置在 properties 或 XML 文件进行。
案例:
# 输出到控制台
log4j.rootLogger=DEBUG, stdout
// 定义了一个根记录器(rootLogger),将其日志级别设置为 DEBUG,并将日志输出到控制台。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
// 定义名stdout 的输出器(appender)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
// 其输出格式设置为 PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
// 输出格式的字符串(ConversionPattern)
相关文章:
Java-日志-Slf4j-Log4j-logback
文章目录 SLF4J基础概念使用输出形式日志绑定桥接旧的框架实战 logback基础概念配置文件 Log4j概述 SLF4J 参考: https://www.cnblogs.com/shenStudy/p/15806951.html https://slf4j.org/ 基础概念 是什么?SLF4J(Simple Logging Facade fo…...
探索式测试
探索式测试是一种软件测试风格,它强调独立测试人员的个人自由和职责,为了持续优化其工作的价值,将测试学习、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目实现过程中并行地执行。 选择合适的探索式测试方法我…...
LeetCode LCP17速算机器人
速算机器人:探索字符指令下的数字变换 在编程的奇妙世界里,我们常常会遇到各种有趣的算法问题,这些问题不仅考验我们的逻辑思维,还能让我们感受到编程解决实际问题的魅力。今天,就让我们一同探讨一个关于速算机器人的…...
Taro+Vue实现图片裁剪组件
cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件,支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境,可以在网页、小程序等平台中使用。 源码 https:…...
ISP各模块功能介绍
--------声明,本文为转载整理------- ISP各个模块功能介绍: 各模块前后效果对比: 黑电平补偿(BLC) 在理想情况下,没有光照射的像素点其响应值应为0。但是,由于杂质、受热等其它原因的影响&…...
SQL-leetcode-584. 寻找用户推荐人
584. 寻找用户推荐人 表: Customer -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | referee_id | int | -------------------- 在 SQL 中,id 是该表的主键列。 该表的每一行表示一个客户的 id、姓名以及推…...
新冠肺炎服务预约微信小程序的设计与实现ssm+论文源码调试讲解
第4章 系统设计 4.1 系统设计的原则 在系统设计过程中,也需要遵循相应的设计原则,这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性,安全性,可定制化,可扩展性,可…...
多模态人工智能在零售业的未来:通过GPT-4 Vision和MongoDB实现智能产品发现
多模态人工智能在零售业的未来:通过GPT-4 Vision和MongoDB实现智能产品发现 引言 想象一下,顾客在购物时只需上传一张他们所期望的服装或产品的照片,几分钟内便能收到来自他们最喜欢的商店的个性化推荐。这就是多模态人工智能在零售领域所带…...
3D目标检测数据集——kitti数据集
KITTI官网网址:The KITTI Vision Benchmark Suite 下载数据集:The KITTI Vision Benchmark Suite KITTI数据集论文:CMSY9 github可视化代码:GitHub - kuixu/kitti_object_vis: KITTI Object Visualization (Birdview, Volumetric LiDar point cloud )...
从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
引言: 随着CentOS项目宣布停止维护CentOS 8并转向CentOS Stream,许多企业和组织面临着寻找可靠替代方案的挑战。在这个背景下,龙蜥操作系统(OpenAnolis)作为一个稳定、高性能且完全兼容的企业级Linux发行版࿰…...
Cocos二维Slider
1、可拖动区域计算 根据UI的世界坐标了宽高信息计算出handle的坐标范围 this.posMin new Vec2(this.node.worldPosition.x - this.uiSelf.contentSize.width * 0.5, this.node.worldPosition.y - this.uiSelf.contentSize.height * 0.5); this.posMax new Vec2(this.node.w…...
kubeneters-循序渐进Cilium网络(二)
文章目录 概要IP 地址配置接口配置解析结论 概要 接续前一章节,我们还是以这张图继续深入Cilium网络世界 IP 地址配置 通过检查 Kubernetes 集群的当前环境,可以获取实际的 IP 地址和配置信息。这些信息将被补充到之前的网络示意图中,以使…...
【再谈设计模式】模板方法模式 - 算法骨架的构建者
一、引言 在软件工程、软件开发过程中,我们经常会遇到一些算法或者业务逻辑具有固定的流程步骤,但其中个别步骤的实现可能会因具体情况而有所不同的情况。模板方法设计模式(Template Method Design Pattern)就为解决这类问题提供了…...
[开源]自动化定位建图系统(视频)
系统状态机: 效果展示: 1、 机器人建图定位系统-基础重定位,定位功能演示 2、 机器人建图定位系统-增量地图构建,手动回环检测演示 3、… 开源链接: https://gitee.com/li-wenhao-lwh/lifelong-backend Qt人机交互…...
Kali系统(Debian 10.3) 遇到的问题
目录 问题一:非问题 kali 基础官网与安装 问题二: 问题三: Kali系统 MySQL问题Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock (2) 问题四:重新安装MySQL 也就是MariaDB(MariaDB 含 MySQL相关…...
P2249 【深基13.例1】查找
题目描述 输入 n 个不超过 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1,a2,…,an,然后进行 m 次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如…...
【时时三省】(C语言基础)常见的动态内存错误3
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对同一块动态内存多次释放 示例: 解决方法就是释放完把p等于空指针就好了 动态开辟的空间忘记释放 示例: 只有p能找到这块空间 只有p知道这块动态开辟的空间起始地…...
Three.js 性能优化:打造流畅高效的3D应用
文章目录 前言一、减少几何体复杂度(Reduce Geometry Complexity)二、合并几何体(Merge Geometries)三、使用缓冲区几何体(Use BufferGeometries)四、纹理压缩与管理(Texture Compression and M…...
CancerGPT :基于大语言模型的罕见癌症药物对协同作用少样本预测研究
今天我们一起来剖析一篇发表于《npj Digital Medicine》的论文——《CancerGPT for few shot drug pair synergy prediction using large pretrained language models》。该研究聚焦于一个极具挑战性的前沿领域:如何利用大语言模型(LLMs)在数…...
Clisoft SOS与CAD系统集成
Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg,以包含支持ADS的模板&am…...
基于 GEE 下载逐年 MODIS 地表温度 LST 数据
目录 1 地表温度(LST) 2 数据准备 3 代码实现 3.1 加载研究区与数据集 3.2 数据预处理与标准化 3.3 逐年批量导出 3.4 可视化结果 4 运行结果 5 完整代码 1 地表温度(LST) 在遥感领域,地表温度(L…...
ISP图像调优流程
第一步:亮度调试 AE:ae目标值,ae权重表,ae曝光策略,ae收敛速度 .ae容忍值 ae权重表:中央区域权重,均值权重等。感兴趣的区域往AE目标亮度靠近 ae目标亮度: AE 目标亮度是随着增益升高而降低的。 AE 目标亮度的调整主要是看图像的过曝区大小是否达到要求(如对比机)…...
SpringBoot多数据源架构实现
文章目录 1. 环境准备2. 创建Spring Boot项目3. 添加依赖4. 配置多数据源5. 配置MyBatis-Plus6. 使用多数据源7. 创建Mapper接口8. 实体类定义9. 测试多数据源10. 注意事项10.1 事务导致多数据源失效问题解决方案: 10.2 ClickHouse的事务支持10.3 数据源切换的性能开…...
VAxios
VAxios(或v-axios)是一个基于Axios的Vue插件,旨在让开发者在Vue项目中更方便、快捷地引入和使用Axios。以下是对VAxios的详细介绍: 一、功能与特性 VAxios作为Axios的Vue封装插件,继承了Axios的众多特性,…...
macOS安装nvm
新建一个文件夹,使用git将nvm给clone下来 git clone https://github.com/nvm-sh/nvm.git 使用vim编辑~/.bash_profile文件(没有就新建)添加以下代码 export NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…...
每日算法Day14【删除二叉搜索树中的节点、修剪二叉搜索树、将有序数组转换为二叉搜索树、把二叉搜索树转换为累加树】
450.删除二叉搜索树中的节点 算法链接: 450. 删除二叉搜索树中的节点 - 力扣(LeetCode) 类型: 二叉树 难度: 中等 思路:两层判断,第一层判断节点与key大小,如果节点删除则判断其左右子节点情况;如果只有一…...
【数据分析(一)】初探 Numpy
目录 前言1. 一维 array 的生成2. 一维 array 的基本操作2.1. 查看属性2.2. 花式索引2.3. 条件筛查2.4. 数据统计 3. n 维 array 的生成4. n 维 array 的基本操作4.1. 查看属性4.2. 查询和切片4.3. 花式索引4.4. 矩阵 前言 Numpy是Python的常用开源数值计算扩展库,用…...
蓝桥杯嵌入式速通(1)
1.工程准备 创建一文件夹存放自己的代码,并在mdk中include上文件夹地址 把所有自身代码的头文件都放在headfile头文件中,之后只需要在新的文件中引用headfile即可 headfile中先提前可加入 #include "stdio.h" #include "string.h"…...
深度解析如何使用Linux中的git操作
1.如何理解版本控制 →Git&&gitee||github 多版本控制面对善变的甲方 版本控制是一种用于管理文件或代码变更的系统,帮助团队或个人追踪项目的历史记录,并支持多方协作开发。它在软件开发和文档管理中尤为重要,但也适用于其他需要追…...
青龙面板脚本开发指南:高效自动化任务的实现
青龙面板脚本开发指南:高效自动化任务的实现 青龙面板(Qinglong Panel)是一款强大的任务管理平台,支持多种语言的脚本开发和执行。通过在青龙面板中编写和管理脚本,用户可以轻松实现自动化任务,提高工作效…...
视频编辑最新SOTA!港中文Adobe等发布统一视频生成传播框架——GenProp
文章链接:https://arxiv.org/pdf/2412.19761 项目链接:https://genprop.github.io 亮点直击 定义了一个新的生成视频传播问题,目标是利用 I2V 模型的生成能力,将视频第一帧的各种变化传播到整个视频中。 精心设计了模型 GenProp&…...
ue5动画重定向,一键重定向。ue4小白人替换成ue5
这就是我们下载的 初学者动画内容包 点击设置选中列 绿色的是动画 黄色的关卡 蓝色是蓝图 ctrla 全选 ctrl鼠标左键 选中所有动画 重定向动画资产 不要选错,只要绿色 选择目标网格体 选择所有的绿色 动画 导出动画 添加前缀ycn 导出 一定要提前新建好存放的…...
C++ 枚举类型
【语法解析】 ● C 枚举类型 在C中,枚举(enumeration)类型是一种简单的数据类型,用于定义在程序中使用的常量。(1)枚举类型的定义格式:enum <类型名> {<枚举常量表>};(2…...
通过Apache、Nginx限制直接访问public下的静态文件
一、Apache 在public目录下的.htaccess文件中添加如下规则,来拒绝除了指定文件类型之外的所有请求 <FilesMatch "\.(?!(jpg|jpeg|png|gif|css|js|ico)$)[^.]$">Order Allow,DenyDeny from all </FilesMatch> 上述配置表示仅允许访问.jpg …...
Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
将 ProxySQL 配合 Spring Boot 使用,主要的目的是在 Spring Boot 应用程序中实现对 MySQL 主从同步的读写分离和负载均衡。这样,你可以利用 ProxySQL 自动将写操作路由到主库,而将读操作路由到从库。 1. 准备工作 确保你的 MySQL 主从同步环…...
ubuntu20下编译linux1.0 (part1)
author: hjjdebug date: 2025年 01月 09日 星期四 15:56:15 CST description: ubuntu20下编译linux1.0 (part1) 该博客记录了新gcc编译旧代码可能碰到的问题和解决办法, 可留作参考 操作环境: ubuntu20 $ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 $ as --vers…...
【AI日记】25.01.10
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛:Forecasting Sticker Sales 读书 书名:国家为什么会失败阅读原因:2024 年诺贝尔经济学奖得主的力作未删减版:https://book.dou…...
04_Redis数据类型-String字符串
1.Redis数据类型介绍 Redis是一种Key-Value类型缓存型数据库,Redis为了存储不同类型的数据,Value支持多种数据类型,Redis为我们提供了常用的9种数据类型。包括5种基本类型:String(字符串)、Hash(哈希)、List(列表),Set(集合)及zset(Sorted Set有序集合);和4种…...
mysql之基本select语句 运算符 排序分页
1.SQL的分类 DDL:数据定义语言. CREATE ALTER DROP RENAME TRUNCATE DML: 数据操作语言. INSERT DELETE UPDATE SELECT 重中之重 DCL: 数据控制语言. COMMIT ROLLBACK SAVEPOINT GRANT REVOKE 2.SQL语言的规则与规范 1.基本规则 SQL可以在一行或多行,为了提高可…...
springboot整合admin
1. 添加依赖 首先,在你的admin服务端pom.xml文件中添加Spring Boot Admin的依赖: <dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.5.4<…...
springboot整合gateway
1. 添加依赖 首先,在你的pom.xml文件中添加Spring Cloud Gateway的依赖: <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency> 如果…...
iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)
引言 在移动应用中,图片上传是一个常见的功能,尤其是在个人中心或社交平台场景中,用户经常需要上传图片到服务器,用以展示个人风采或记录美好瞬间。然而,实现多图片上传的过程中,如何设计高效的上传逻辑并…...
PyCharm 的安装与使用(Window)
1 PyCharm 简介 PyCharm 是一款由 JetBrains 公司开发的专门用于 Python 语言开发的集成开发环境(IDE)。以下是其相关介绍: 1.1 特点与功能 智能代码编辑:提供高度智能化的代码编辑器,支持语法高亮、自动补全、代码重…...
媒体资源生产转码过程
音视频基础 1. 音频基础原理 1.1 声音的基本概念 声波: 声音是通过空气或其他介质传播的机械波。声波的特性包括频率(Hz)、振幅(dB)和波形。采样率 (Sampling Rate): 每秒对声音信号进行采样的次数,单位为赫兹&…...
WPF控件Grid的布局和C1FlexGrid的多选应用
使用 Grid.Column和Grid.Row布局,将多个C1FlexGrid布局其中,使用各种事件来达到所需效果,点击复选框可以加载数据到列表,移除列表的数据,自动取消复选框等 移除复选框的要注意!!!&am…...
Postman配置环境变量
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman是一套比较方便的接口测试工具,但我们在使用过程中,可能会出现创建了API请求,但API的URL会随着服务器IP地址的变化而改…...
import语句详解
在 Java 中,import 语句用于引入其他包中的类、接口或静态成员,以便在当前源文件中直接使用它们,而不需要写完整的类名(包括包名)。以下是 import 语句的详细解释和使用方法: 一、import语句的基本概念 定…...
数据结构与算法之二叉树: LeetCode 199. 二叉树的右视图 (Ts版)
二叉树的右视图 https://leetcode.cn/problems/binary-tree-right-side-view/ 描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1 输入:root [1,2,3,nu…...
CentOS7修改Docker默认存储路径
当你使用Docker时,Docker的默认配置是将镜像、容器和卷存储在系统/var/lib/docker/目录下,如果docker镜像安装的太多会导致磁盘不够,你可以尝试以下方法来释放空间: 清理无用的镜像和容器:使用docker命令删除不再使用…...
宝塔面板使用 GoAccess Web 日志分析教程
宝塔面板是一个简单方便的服务器运维面板,但其网站统计功能是收费的。而 GoAccess 是一个用 C 编写的免费开源 Web日志分析器,本文将介绍如何在宝塔面板中开启 GoAccess Web 日志分析功能。 内容索引 下载安装 GoAccess在宝塔面板中添加日志切割的计划任务将 Web 日志输出到…...