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

文件路径与Resource接口详解

目录

  • 第一章、快速了解文件路径
    • 1.1)什么是文件路径?
      • 1.1.1)绝对路径
      • 1.1.2)相对路径
    • 1.2)重要:相对路径的表示方法
      • 1.2.1) ./ 与 ../
    • 1.3)文件路径与环境变量
      • 1.3.1)什么是环境变量
      • 1.3.2)环境变量设置举例
  • 第二章、操作系统的文件路径
    • 2.1)常用文件路径
      • 2.1.1)Windows操作系统目录
      • 2.1.2)Linux操作系统目录
    • 2.2)Windows系统CMD(命令提示符)
      • 2.2.1)CMD命令:目录和文件导航
      • 2.2.2)CMD命令目录和文件管理
    • 2.3)Linux系统命令
      • 2.3.1)Linux命令:目录和文件导航
      • 2.3.2)Linux命令:目录和文件管理
  • 第三章、Java中SpringBoot相关路径
    • 3.1)resources特殊资源目录
    • 3.2)类路径classpath
      • 3.2.1)什么是类路径
      • 3.2.2)yml文件中配置resources下的文件路径
    • 3.3)Resource接口
      • 3.3.1)Resource接口常用方法
      • 3.3.2)Resource接口使用示例
      • 3.3.3)加载文件资源

友情提醒:

先看目录,了解文章结构,点击目录可跳转到文章指定位置。

第一章、快速了解文件路径

1.1)什么是文件路径?

文件路径:是指向文件或目录(文件夹)在存储系统中的位置的标识符。通过文件路径,操作系统可以找到并访问该文件或目录。文件路径可以是绝对的,也可以是相对的。

1.1.1)绝对路径

绝对路径从根目录开始,一直到达目标文件或目录的完整路径。它包含了从根目录到目标文件或目录的所有目录名,绝对路径是固定的

Windows系统中的绝对路径:

C:\Users\Username\Documents\file.txt

在Unix/Linux/macOS系统中的绝对路径:

/home/username/documents/file.txt

两者的目录分隔符有区别

Windows中是\,在Unix/Linux/macOS中是/

1.1.2)相对路径

相对路径是从当前工作目录,开始到目标文件或目录的路径。它不包含从根目录开始的完整路径,而是相对于当前目录的位置。因此,相对路径可能因当前工作目录的不同而有所不同。

如果file.txt文件位于test子目录中,相对路径则是:

test/file.txt

1.2)重要:相对路径的表示方法

1.2.1) ./ 与 …/

./代表当前目录

./:代表当前目录。例如你在一个名为project的目录中,./指  project目录本身。./file.txt:表示当前目录下的 file.txt 文件。./subdir/:表示当前目录下的 subdir 子目录。

…/表示上一级目录

../:表示上一级目录(也称为父目录)../file.txt:表示上一级目录中的 file.txt 文件。../subdir/:表示上一级目录中的 subdir 子目录。

1.3)文件路径与环境变量

1.3.1)什么是环境变量

环境变量定义是操作系统路径、文件名等。环境变量命令行中直接引用,也可以被操作系统中的程序或脚本引用。例如Windows系统中常见的环境变量包括:

%USERPROFILE%:表示当前用户的主目录路径,如C:\Users\用户名。
%TEMP%:表示系统的临时文件夹路径,如C:\Users\用户名\AppData\Local\Temp%WINDIR%%WINDOWS%:表示Windows安装目录的路径,如C:\Windows

在Unix/Linux/macOS中:

$HOME:表示当前用户的主目录路径,如/home/用户名。
$PATH:表示可执行文件的搜索路径,由多个目录通过冒号:分隔。

使用echo $PATH查看path中包含的路径:
在这里插入图片描述

在使用命令时,系统按照 PATH 中定义的路径逐个查找,直到找到对应的执行文件。例如当安装了Java的jdk,执行javac命令时发现不可用,此时需要将jdk的安装目录添加到PATH中,使执行javac命令时能够通过PATH变量包含的路径查找。

1.3.2)环境变量设置举例

jdk1.8安装教程及环境变量配置

Linux虚拟机安装JDK及环境变量配置

第二章、操作系统的文件路径

2.1)常用文件路径

2.1.1)Windows操作系统目录

目录解释
C:C盘是系统盘,用于安装操作系统(如Windows)以及系统相关的文件和程序
D:D盘是操作系统的逻辑分区,通常用户的个人数据保存在非系统盘上。
C:\Users<username>用户的主目录,其中是用户的登录名。
C:\WindowsWindows系统文件存放的目录。
C:\Program Files安装的程序文件通常存放在此目录下。

2.1.2)Linux操作系统目录

目录解释
/表示根目录
/home用户主目录的基点,例如用户user的主目录就是/home/user。
/tmp公用的临时文件存储点。
/root系统管理员的主目录。
/etc系统管理和配置文件存放的目录。
/bin、/sbin、/usr/bin存放可执行文件的目录。
/etc/hosts表示根目录下的 etc 文件夹中的 hosts 文件。
~表示当前用户的主目录(home directory)
~/Documents/file.txt表示当前用户主目录下的 Documents 文件夹中的 file.txt 文件。

2.2)Windows系统CMD(命令提示符)

2.2.1)CMD命令:目录和文件导航

cd <目录路径>:更改当前目录到指定的目录路径。例如,cd C:\Users\Example\Documents cd ..:不是 cd..(注意空格):返回上一级目录:这会将当前目录更改为其父目录cd %HOMEPATH% :可以进入环境变量指定的路径盘符后跟冒号(例如 C:):切换盘符,然后按下 Enter 键dir:列出当前目录中的文件和子目录。可以使用dir /s列出所有子目录中的文件和文件夹。

2.2.2)CMD命令目录和文件管理

mkdir:创建新目录,例如,mkdir newfolder会在当前目录下创建一个名为newfolder的新文件夹。rmdir:删除空目录。注意,rmdir只能删除空目录。rmdir /s /q 目录名:删除非空目录,其中/s表示删除指定目录及其所有子目录和文件,/q表示安静模式。del:删除一个或多个文件。例如,del filename.txt会删除当前目录下的filename.txt文件。

2.3)Linux系统命令

2.3.1)Linux命令:目录和文件导航

cd <目录路径>:更改当前目录到指定的目录路径。例如,cd /home/username/Documentscd ..:返回上一级目录。cd ~:进入当前用户的主目录。注意,这与Windows中的cd %HOMEPATH%相似,但~Linux特有的快捷方式。cd -:切换到上一次所在的目录。这是Linux特有的一个快速切换功能。ls:列出当前目录中的文件和子目录。
ls -R可以递归列出所有子目录中的文件和文件夹
ls -l以列表形式显示详细信息,
ls -a显示所有文件(包括以点.开头的隐藏文件)。pwd:显示当前工作目录的完整路径

2.3.2)Linux命令:目录和文件管理

请注意,rm -rf命令非常危险,因为它可以删除任何目录及其内容,包括根目录(/),从而导致系统崩溃。

mkdir <目录名>:创建新目录。
例如,mkdir newfolder会在当前目录下创建一个名为newfolder的新文件夹。
例如,mkdir -p a/b/c会创建a、b和c目录,即使a和b目录不存在。rmdir <目录名>:删除空目录。与Windows中的rmdir相同,只能删除空目录。
rm -r <目录名>:删除非空目录及其所有内容。这里的-r选项表示递归删除。
rm <文件名>:删除一个或多个文件。rm filename.txt会删除当前目录下的filename.txt文件。
rm -f <文件名>:强制删除文件,忽略不存在的文件,并且不会有任何提示。
rm -p:删除多级空目录。cp:复制目录。复制目录时需要使用-r(或-R)选项来递归复制目录及其内容。
例如,cp -r source_dir target_dir会将source_dir目录及其所有子目录和文件
复制到target_dir目录中。如果target_dir不存在,它将被创建。mv:移动或重命名目录。可以将目录从一个位置移动到另一个位置,或者在同一位置重命名目录。
例如,mv old_dir new_dir会将old_dir目录重命名为new_dir,
如果new_dir是一个存在的目录,则old_dir及其内容会被移动到new_dir下。

第三章、Java中SpringBoot相关路径

3.1)resources特殊资源目录

在Java开发中,resources文件夹是一个至关重要的部分。它主要用于存放Java工程中的各种非源代码资源文件,这些资源文件可以是配置文件(如properties或XML文件)、图片、音频、模板文件等。Resource文件夹的作用主要体现在以下几个方面:

简化资源加载:Java提供了多种方式加载Resource目录中的文件,简化了资源加载的过程。开发者可以通过类路径(classpath)轻松访问这些资源。
跨平台兼容性:当Java项目被打包成JAR或WAR文件时,Resource目录中的文件会被自动包含在内,从而确保了跨平台兼容性。
在典型的Java项目结构中,Resource文件夹通常位于

src/main/resources(用于主应用程序的资源文件)
src/test/resources(用于测试相关的资源文件)下。

子目录:

src/main/resources/static:用于存放静态资源文件
(如HTMLCSSJavaScript、图片等)。
这些资源文件可以直接通过Web访问,访问路径为“/文件名”。src/main/resources/public:用于存放静态资源文件,优先级略低于static目录。src/main/resources/templates:用于存放模板文件,
如使用ThymeleafFreeMarker等模板引擎时所需的HTML模板文件。
这些模板文件通常用于渲染Web页面。classpath:/META-INF/resources:用于加载JAR包中的资源文件。如果
资源文件被打包在JAR包的META-INF/resources目录下,那么这些资源文件也可以通过Web访问

3.2)类路径classpath

3.2.1)什么是类路径

类路径(Classpath)是Java应用程序查找类文件(.class)和其他资源文件(如属性文件、XML配置文件等)的一组目录、JAR文件(Java ARchive)和ZIP文件的集合。它是Java虚拟机(JVM)和Java编译器在运行时和编译时用于定位类和其他资源的路径。

在Java中,类路径的作用类似于操作系统的PATH环境变量,但它是专门用于Java应用程序的。当Java应用程序运行时,JVM会沿着类路径查找并加载所需的类。如果JVM在类路径中找不到某个类,它将抛出ClassNotFoundException异常。

src/main/java:存放Java源代码文件的目录。这些源代码文件在编译后会
生成.class文件,并放置在构建输出目录(如Maven的target/classes)中,
这些.class文件随后会被包含在classpath中。src/main/resources:存放资源文件的目录,如配置文件(applicati
on.properties)、静态资源(如图片、CSSJavaScript文件等,
这些资源文件在构建过程中会被复制到构建输出目录,并包含在classpath中。依赖的JAR包:项目所依赖的第三方库(JAR包)也会被包含在classpath中。
这些JAR包通常通过MavenGradle等构建工具管理,并在构建过程中被
添加到项目的构建路径中。特殊资源目录

3.2.2)yml文件中配置resources下的文件路径

使用类路径(classpath:前缀)来引用这些文件

# application.yml
resources:configFilePath: classpath:config/application.propertiesstaticFilesDir: classpath:static/

3.3)Resource接口

3.3.1)Resource接口常用方法

方法签名描述
getInputStream()InputStream getInputStream() throws IOException找到并打开资源,返回一个InputStream以从资源中读取数据。每次调用通常都会返回一个新的InputStream实例
exists()boolean exists()判断资源是否以物理形式存在。返回一个布尔值,如果资源存在则返回true,否则返回false。
isFile()boolean isFile()判断这个资源是否代表了一个文件系统的文件。如果资源是一个文件系统文件,则返回true,否则返回false。
getURL()URL getURL() throws IOException返回一个资源的URL句柄。如果资源不能被解析为URL,则抛出IOException。
getFile()File getFile() throws IOException返回资源对应的File对象。如果资源不能被解析为绝对路径的文件,则抛出FileNotFoundException。
getFilename()String getFilename()返回资源的文件名。这通常是资源的最后一部分路径名。

不同的Resource实现类可能会对这些方法有不同的实现方式。例如,ClassPathResource会从类路径中加载资源,而FileSystemResource会从文件系统中加载资源。因此,在使用这些方法时,需要了解所使用Resource实现类的具体行为。

3.3.2)Resource接口使用示例

ClassPathResource从类路径中加载资源,
resource.getFile()获取File对象,
InputStream inputStream = resource.getInputStream() // 使用inputStream读取文件内容

import org.springframework.core.io.ClassPathResource;  
import org.springframework.core.io.Resource;  import java.io.File;  
import java.io.IOException;  public class ResourceLoaderExample {  public static void main(String[] args) {  Resource resource = new ClassPathResource("tamp/content.excel");  try {  File file = resource.getFile();  // 使用inputStream读取文件内容...  InputStream inputStream = resource.getInputStream()System.out.println("文件存在: " + file.getAbsolutePath());  } catch (IOException e) {  System.err.println("无法获取文件路径: " + e.getMessage());  }  }  
}

3.3.3)加载文件资源

在Java代码中,使用Resource或ResourceLoader来加载下面这些资源。

 # application.yml
resources:configFilePath: classpath:config/application.propertiesstaticFilesDir: classpath:static/

代码:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;@Configuration
public class ResourceConfig {//@Value注解获取配置文件中的值@Value("${resources.configFilePath}")private String configFilePath;//@Value注解获取配置文件中的值@Value("${resources.staticFilesDir}")private String staticFilesDir;private final ResourceLoader resourceLoader;public ResourceConfig(ResourceLoader resourceLoader) {this.resourceLoader = resourceLoader;}
/示例 1@Beanpublic Resource configResource() {//此时configFilePath已经被@value注解注入了文件路径//也就是列出classpath:config/application.properties文件Resource  resource = resourceLoader.getResource(configFilePath);return resource;}
/示例 2@Beanpublic Resource[] staticResources() {//此时staticFilesDir已经被@value注解注入了文件路径,//也就是列出classpath:static/example.txtreturn new Resource[]{resourceLoader.getResource(staticFilesDir + "example.txt")}; }
}

相关文章:

文件路径与Resource接口详解

目录 第一章、快速了解文件路径1.1&#xff09;什么是文件路径&#xff1f;1.1.1&#xff09;绝对路径1.1.2&#xff09;相对路径 1.2&#xff09;重要&#xff1a;相对路径的表示方法1.2.1) ./ 与 ../ 1.3&#xff09;文件路径与环境变量1.3.1&#xff09;什么是环境变量1.3.2…...

极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【二】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

分布式光纤传感|分布式光纤测温|线型光纤感温火灾探测器DTS|DTS|DAS|BOTDA的行业16年的总结【2024年】

背景&#xff1a; 从2008年&#xff0c;从事分布式光纤传感行业已经过了16年时间了&#xff0c;依稀记得2008年&#xff0c;看的第一遍论文就是中国计量大学张在宣老爷子的分布式光纤测温综述&#xff0c;我的经历算是行业内极少数最丰富的之一。混过学术圈&#xff1a; 发表…...

存储过程实现多个分类不同计算规则得到对应的分类、月份和款号

该存储过程 PRO_MON_MDCODE 实现多个分类不同计算规则得到对应的分类、月份和款号,其中线下分类的款最早出现时间会在20230101,最晚是当前月份后12月,电商的款取商品维表的23,24,25年商品年份的A款,其他业务分类逻辑(A-线上,B电商公司,C品牌公司)的款最早出现时间会在2…...

aj-report本地前后端分离部署运行

github项目地址 aj-report-mine 在源代码v1.4版本基础上&#xff0c;本地进行前后端分离部署开发 这里我是进行了整合&#xff0c;把自己在拉取源代码到成功运行过程中的一些东西直接整合&#xff0c;根据下面的步骤即可成功运行 资源获取 夸克网盘(16-github-aj-report-re…...

CSS 过渡动画效果

在 CSS 中&#xff0c;transition 是用来实现元素属性平滑过渡的一个属性。通过 transition&#xff0c;你可以指定当元素的状态发生变化时&#xff0c;如何在一定时间内平滑地过渡到新的样式&#xff0c;而不是立即跳变。 使用于侧边栏展开和收起了&#xff0c;左侧区域的自适…...

网络安全 - DOS

1.1.1 摘要 最近网络安全成了一个焦点&#xff0c;除了国内明文密码的安全事件&#xff0c;还有一件事是影响比较大的——Hash Collision DoS&#xff08;通过Hash碰撞进行的拒绝式服务攻击&#xff09;&#xff0c;有恶意的人会通过这个安全漏洞让你的服务器运行巨慢无比&…...

【强化学习】Stable-Baselines3学习笔记

【强化学习】Stable-Baselines3学习笔记 Stable-Baselines3是什么安装ExampleReinforcement Learning Tips and TricksVecEnv相关在stablebaselines中使用自定义环境 Stable-Baselines3是什么 Stable Baselines3&#xff08;简称SB3&#xff09;是一套基于PyTorch实现的强化学习…...

前端真实面试题自用

一、写在前面 笔者&#xff0c;经过计算机学硕考研的失败后&#xff0c;想谋求一份前端工作实在是太难了。一方面&#xff0c;确实曾经学习过的东西很久没有拾起&#xff0c;另一方面&#xff0c;对于前端面经还是记忆不深刻&#xff0c;特地写此贴记录笔者在真实前端面试中遇…...

vue3和springboot使用websocket通信

前端端口&#xff1a;9090 后端端口&#xff1a;8080 vue3 引入依赖&#xff1a; npm install sockjs-client stomp/stompjs vue页面 <template><div><h1>WebSocket 示例</h1><button click"sendMessage">发送消息</button>…...

JS 解构、数组扩展符和模板字符串的常见用法

文章目录 解构1. 对象解构2. 数组解构 数组扩展符模板字符串 解构 1. 对象解构 想把对象中的属性赋值给变量时, 需要一次一次的赋值&#xff0c;很麻烦。而对象解构, 就是把对象的结构拆解开, 然后把拆解后的属性自动赋值给匹配的变量。 (1) 对象属性赋值变量的传统写法&…...

低代码开源项目Joget的研究——Joget7社区版安装部署

大纲 环境准备安装必要软件配置Java配置JAVA_HOME配置Java软链安装三方库 获取源码配置MySql数据库创建用户创建数据库导入初始数据 配置数据库连接配置sessionFactory编译下载tomcat启动下载aspectjweaver移动jw.war文件编写脚本运行 测试参考资料 Joget&#xff0c;作为一款开…...

Golang 为什么没有注解?

Go 的哲学是:“少就是多,显式优于隐式。”注解虽然方便,但会违背 Go 追求简洁和清晰的设计理念。 什么是注解?为什么看起来很实用? 注解的定义:注解是一种特殊的元信息,用于修饰代码(如类、方法、字段等),让程序或工具在运行时或编译时解析和处理这些信息。例如: …...

Visual Studio Code(VS Code)配置C/C++环境

一、Visual Studio Code安装 Visual Studio Code&#xff0c;下文中简称为VS Code的详细安装方法请参考VSCode安装教程&#xff08;超详细&#xff09;-CSDN博客 二、MinGW编译器下载与配置 1、MinGW介绍 MinGW(Minimalist GNU for Windows)是一款用于Windows 平台的轻…...

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析&#xff1a; ​ 1. 与AI和机器学习的深度结合 趋势&#xff1a;LabVIEW正在向集成AI和机器学习方向发展&#xff0c;尤其是在数据处理、预测性维护和自动化控制领域。 原因&#xff1a;AI技术的普及使得实验和工业场景中的…...

Node.js 助力前端开发:自动化操作实战

前端开发中&#xff0c;重复性任务如新建文件、配置路由、生成组件等&#xff0c;往往耗时且容易出错。借助 Node.js 的强大能力&#xff0c;我们可以实现开发过程中的自动化操作&#xff0c;提高效率。 文章目录 自动生成 router 配置文件自动生成组件模板动态构建导航菜单自…...

HuggingFace peft LoRA 微调 LLaMA

1. 安装必要库 pip install transformers peft accelerate2. 加载 LLaMA 模型和分词器 从 Hugging Face Transformers 加载预训练的 LLaMA 模型和分词器。 from transformers import AutoModelForCausalLM, AutoTokenizer# 加载 LLaMA 模型和分词器 model_name "meta-…...

记-编译magisk_v22

1) 下载源码 git clone gitgitee.com:MayuriNFC/Magisk.git 使用国内镜像站 2) 切换标签: git checkout v22.0 3)下载/更新依赖 git submodule initgit sumodule update 4)下载对应ndk(自动下载出错了,用了手动下载), wget -c https://dl.google.com/android/reposito…...

前端登录业务

1.用户登录成功拿到token&#xff0c;放在请求拦截器的请求头中&#xff0c;调用户接口才可以获取到用户信息&#xff0c;存储到仓库中&#xff0c;以便其他组件使用用户信息 2.退出登录需要清空用户数据&#xff0c;以及本地存储&#xff0c;调退出登录接口告诉服务器当前toke…...

项目2路由交换

背景 某学校为满足日常教学生活需求&#xff0c;推动数字校园的建设&#xff0c;学校有办公楼和学生宿舍楼和服务器集群三块区域&#xff0c;请合理规划IP地址和VLAN&#xff0c;实现企业内部能够互联互通现要求外网能通过公网地址访问服务器集群&#xff0c;学生和老师能正常…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...