做酒店经理的一些网站/手机搭建网站

做酒店经理的一些网站,手机搭建网站,易语言网站批量注册怎么做,网站开发公司成都docker文件示例代码: # Use a minimal image for development FROM node:18-alpine# Set working directory inside the container WORKDIR /app# Copy package.json and package-lock.json (or yarn.lock) into the container COPY package.json package-lock.jso…

docker文件示例代码:

# Use a minimal image for development
FROM node:18-alpine# Set working directory inside the container
WORKDIR /app# Copy package.json and package-lock.json (or yarn.lock) into the container
COPY package.json package-lock.json* ./# Install the app dependencies with --legacy-peer-deps to bypass the peer dependency conflict
RUN npm install --legacy-peer-deps# Copy the rest of the application files into the container
COPY . .# Expose the port the app will run on
EXPOSE 3000# Start the Next.js app in development mode
CMD ["npm", "run", "dev"]

这段 Dockerfile 用于构建一个基于 Node.js 18 Alpine 版本的容器,并运行一个 Next.js 应用。


逐行解析

1. 选择基础镜像

FROM node:18-alpine
  • 使用 node:18-alpine 作为基础镜像,alpine轻量级 Linux 版本,比 node:18 体积更小,减少 Docker 镜像的大小。

2. 设置工作目录

WORKDIR /app
  • 容器内 创建 /app 目录,并把它作为 当前工作目录
  • 之后的所有操作都会在 /app 目录下执行。

3. 复制 package.jsonpackage-lock.json

COPY package.json package-lock.json* ./
  • 只复制 package.jsonpackage-lock.json,避免不必要的文件影响 npm install 缓存。
  • package-lock.json* 这样写是为了:
    • 兼容 package-lock.jsonpackage-lock.json.gz(如果存在)。

4. 安装依赖

RUN npm install --legacy-peer-deps
  • npm install 安装 Node.js 依赖
  • --legacy-peer-deps 选项用于:
    • 跳过 peerDependencies(依赖版本冲突时不报错)
    • 适用于 旧项目或有冲突的依赖

5. 复制项目代码

COPY . .
  • 复制 本地所有文件容器的 /app/ 目录
  • 这里 不会重复安装依赖,因为 npm install 早就运行过了。

6. 开放端口

EXPOSE 3000
  • 这个 只是声明 容器会使用 3000 端口,但默认不会让外部访问。
  • 真正让外部访问时,需要 -p 参数
    docker run -p 3000:3000 my-next-app
    
    这样才能 映射端口,让浏览器访问 http://localhost:3000

7. 运行 Next.js 应用

CMD ["npm", "run", "dev"]
  • 容器启动时执行 npm run dev,即 开发模式运行 Next.js
  • 这个命令等价于:
    npm run dev
    
    • dev 脚本通常在 package.json 里:
      "scripts": {"dev": "next dev"
      }
      
    • Next.js 开发服务器会在 localhost:3000 运行

完整流程

  1. 基于 node:18-alpine 创建一个容器
  2. /app 目录下工作
  3. 复制 package.json 并安装依赖
  4. 复制整个项目代码
  5. 暴露 3000 端口
  6. 运行 npm run dev 启动 Next.js 服务器

如何使用

1. 构建镜像

docker build -t my-next-app .

2. 运行容器

docker run -p 3000:3000 my-next-app

然后在浏览器访问:

http://localhost:3000

如果一切正常,你会看到 Next.js 应用的页面!🚀

设置工作目录,所有操作都会在 /app 目录下执行。当前app目录下没有内容吧,那怎么复制 package.json 和 package-lock.json

WORKDIR /app 之后,/app 目录虽然存在,但还是空的。

但是,Docker COPY 命令不会受这个影响,它会从宿主机(你的电脑)复制文件到 /app 目录下。


详细流程

WORKDIR /app
COPY package.json package-lock.json* ./

🔹 第一步:WORKDIR /app

  • 这会 切换到 /app 目录,如果 /app 目录不存在,Docker 会自动创建它

🔹 第二步:COPY package.json package-lock.json* ./

  • COPY 命令会从 宿主机(你的电脑)当前目录 复制 package.jsonpackage-lock.json/app 目录下。
  • ./ 代表目标路径是 当前目录,因为 WORKDIR /app 已经切换到 /app,所以 ./ 实际上就是 /app/

举个例子

假设你的 项目目录 结构如下:

/my-project├── Dockerfile├── package.json├── package-lock.json├── src/├── pages/└── node_modules/

你在 /my-project 目录下运行:

docker build -t my-next-app .

Docker 执行过程:
1️⃣ WORKDIR /app → 在容器内创建并切换到 /app
2️⃣ COPY package.json package-lock.json* ./ → 把 package.jsonpackage-lock.json 复制到 /app/
3️⃣ RUN npm install --legacy-peer-deps → 在 /app/ 里安装依赖
4️⃣ COPY . . → 复制 所有剩余文件(比如 src/pages/


总结

  • WORKDIR /app 只是 切换工作目录,不影响后续 COPY
  • COPY package.json package-lock.json* ./ 复制 package.jsonpackage-lock.json/app/
  • COPY . . 复制所有剩余文件
  • 这样可以 优化缓存,加快构建速度 🚀

如果还是不懂,那就先理解下面的内容。。

COPY package.json package-lock.json ./ 这行代码的意思

COPY package.json package-lock.json* ./

它的作用是:
👉 从宿主机(你的电脑)复制 package.jsonpackage-lock.json 到 Docker 容器的 /app/ 目录下。


拆解解释

COPY package.json package-lock.json* ./
  • package.json package-lock.json*要复制的文件(来自你的 本地电脑
  • ./目标路径(容器内的 /app/

为什么 ./ 代表 /app/

因为 之前已经有 WORKDIR /app

WORKDIR /app
COPY package.json package-lock.json* ./
  • WORKDIR /app当前工作目录 变成 /app
  • COPY package.json package-lock.json* ./ 里的 ./ 指的是 当前工作目录
  • 所以 ./ 实际上等同于 /app/

相当于:

COPY package.json package-lock.json* /app/

举个例子

假设你的 宿主机(电脑)的项目目录

/my-project├── Dockerfile├── package.json├── package-lock.json├── src/├── pages/└── node_modules/

当你运行:

docker build -t my-next-app .

Docker 会执行:
1️⃣ WORKDIR /app → 现在 /app 是容器内的工作目录
2️⃣ COPY package.json package-lock.json* ./ → 复制 package.jsonpackage-lock.json/app/ 目录
3️⃣ RUN npm install --legacy-peer-deps → 在 /app/ 里安装依赖
4️⃣ COPY . . → 复制 剩下的所有文件(比如 src/pages/


总结

./ 代表 容器里的 /app/,因为 WORKDIR /app/app 成为了当前目录
COPY package.json package-lock.json* ./ 相当于 COPY package.json package-lock.json* /app/
先复制依赖文件再复制整个项目,是为了优化 Docker 缓存,加快构建速度 🚀

COPY . .是什么意思,为什么这里是两个 ..

COPY . .

这条指令的作用是:
👉 把宿主机(你的电脑)的 当前目录.)的 所有文件 复制到 容器内的当前目录.)。

由于 WORKDIR /app 设定了工作目录为 /app,所以 . 实际上是 /app/,最终效果是:
🚀 把宿主机的整个项目目录复制到容器的 /app/ 目录里


拆解解释

COPY <源路径> <目标路径>
  • 第一个 .(源路径):指的是 宿主机上的当前目录(Docker 构建时的 Dockerfile 所在目录)
  • 第二个 .(目标路径):指的是 容器内的当前工作目录WORKDIR /app 已经设置)

所以:

WORKDIR /app
COPY . .

等价于:

COPY . /app/

举个例子

假设你的 本地项目目录(宿主机)

/my-project├── Dockerfile├── package.json├── package-lock.json├── src/├── pages/├── node_modules/├── public/└── .gitignore

你运行:

docker build -t my-next-app .

Docker 执行过程
1️⃣ WORKDIR /app切换到 /app/ 目录(如果没有,就创建它)
2️⃣ COPY package.json package-lock.json* ./复制 package.jsonpackage-lock.json/app/
3️⃣ RUN npm install --legacy-peer-deps安装依赖
4️⃣ COPY . .复制整个项目到 /app/,包括 src/pages/public/

最终容器内的 /app/ 目录会变成:

/app├── package.json├── package-lock.json├── src/├── pages/├── node_modules/  (npm install 之后才有)├── public/├── .gitignore

这样容器就拥有了完整的项目代码,可以运行 Next.js 了!🎉


为什么要 COPY . .

把整个项目复制到容器内,保证 npm run dev 可以运行
必须在 npm install 之后执行,避免 node_modules/ 被覆盖
确保 src/pages/ 这些代码文件都能进入容器


总结

  • COPY . . 就是 COPY . /app/
  • 把宿主机(本机)的项目文件,复制到容器内的 /app/ 目录
  • 必须在 npm install 之后执行,避免影响 node_modules/
  • 这样容器就可以运行 Next.js 应用了 🚀

COPY . . → 复制整个项目到 /app/,包括 src/、pages/、public/ 等,这样不就会重复复制前面已经复制过的文件了么,比如package.json package-lock.json

是的,COPY . . 确实会再次复制 package.jsonpackage-lock.json,但这不会影响构建结果,主要目的是 优化 Docker 构建缓存,加快构建速度。


为什么先 COPY package.json package-lock.json ./COPY . .

1️⃣ 先单独复制 package.jsonpackage-lock.json

COPY package.json package-lock.json* ./
RUN npm install --legacy-peer-deps

这样做的好处:

  • Docker 会缓存 npm install 结果,下次构建时,如果 package.json 没有改动,就不会重新安装依赖,直接用缓存的 node_modules
  • 避免 npm installCOPY . . 之后的代码改动影响(如果 src/ 里的文件改了,不影响 node_modules)。

2️⃣ 再复制整个项目

COPY . .

这样做的好处:

  • 确保 所有代码文件(src/pages/public/)都能进入容器
  • 不影响 node_modules/ 缓存,因为 npm install 之前已经执行过了。

如果不先 COPY package.json,直接 COPY . . 会怎样?

如果你只写:

COPY . .
RUN npm install --legacy-peer-deps

问题在于:

  1. 每次项目代码有一点改动(比如 src/ 文件变了),COPY . . 都会让 Docker 重新执行 RUN npm install,导致浪费时间!
  2. npm install 需要很久,每次构建都会重新下载依赖,非常慢。

总结

COPY package.json package-lock.json ./,让 npm install 结果被缓存,加快构建
COPY . .,确保所有代码文件(src/pages/ 等)被复制
即使 package.json 被重复复制,也不会影响最终构建速度 🚀

为什么先 COPY package.json package-lock.json ./,可以让 npm install 结果被缓存

Docker 构建时,会缓存每一层命令的结果,如果前面某一层的输入没有变,Docker 就不会重新执行它,而是直接用缓存。


🔹 Docker 的缓存机制

当你运行 docker build 时,Docker 会:

  1. 逐行读取 Dockerfile
  2. 检查每一层是否有变动
  3. 如果某一层和上次构建时相同,就复用缓存
  4. 如果某一层变了,后面的所有层都会重新执行(缓存失效)

🔹 举个例子

❌ 没有单独复制 package.json,直接 COPY . .

# 设置工作目录
WORKDIR /app# 直接复制整个项目
COPY . .# 安装依赖
RUN npm install --legacy-peer-deps

🚨 这里的问题

  • COPY . . 会把 所有文件(包括 src/pages/public/)都复制到 /app/
  • 如果 src/ 里的代码有改动,整个 COPY . . 就会变动
  • Docker 发现 COPY . . 变了,就会让 npm install 重新执行,缓存失效
  • npm install 需要很长时间,每次构建都要重复下载依赖,太慢了!💥

🔹 ✅ 优化方法:先 COPY package.json package-lock.json ./

# 设置工作目录
WORKDIR /app# 先复制 package.json 和 package-lock.json
COPY package.json package-lock.json* ./# 运行 npm install,并缓存 node_modules
RUN npm install --legacy-peer-deps# 复制剩下的所有文件
COPY . .

✅ 为什么这样能加速构建?

1️⃣ Docker 先执行 COPY package.json package-lock.json ./

  • 只复制 package.jsonpackage-lock.json,不会受 src/ 文件改动影响

2️⃣ 然后执行 RUN npm install --legacy-peer-deps

  • 如果 package.json 没变,Docker 直接复用上次构建的 node_modules
  • 跳过 npm install,节省时间!🚀

3️⃣ 最后执行 COPY . .

  • 复制 src/pages/public/ 等代码文件
  • 即使代码变了,npm install 也不会重新执行

🔹 🚀 这样做的结果

如果 package.json 没变,Docker 直接复用 node_modules,构建速度快很多
即使 src/ 代码变了,也不会触发 npm install,不会浪费时间
整个构建流程更高效,省时省力 🎯


⏳ 时间对比

方法构建时间(假设 npm install 需要 2 分钟)
直接 COPY . .每次构建都要等 2 分钟(因为 npm install 总是重新运行)
COPY package.json,再 COPY . .如果 package.json 没变,构建只需要几秒!

💡 这样优化后,构建速度可以快 10 倍以上! 🚀

如果 Docker 关闭后重新启动,还需要重新安装依赖吗?

如果你只是重启 Docker(比如 docker stopdocker start),不需要重新安装依赖,因为容器的文件系统还在,node_modules/ 也还在。

但是,如果你删除了容器或构建了新镜像,就需要重新安装依赖!


🔹 分情况讨论

✅ 1. 只是重启 Docker

docker stop my-container  # 关闭容器
docker start my-container # 重新启动
  • node_modules/ 还在,不需要重新安装依赖
  • 应用可以直接运行
  • 适用于日常使用

❌ 2. 删除容器后再启动

docker rm my-container   # 删除容器
docker run my-image      # 重新运行
  • 容器被删除,所有文件(包括 node_modules/)都会丢失
  • 需要重新 npm install
  • 这时 Docker 会根据 Dockerfile 重新安装依赖

❌ 3. 重新 docker build

docker build -t my-app .  # 重新构建镜像
docker run my-app         # 运行新容器
  • 如果 package.json 没变,Docker 可能会复用 npm install 的缓存
  • 如果 package.json 变了,npm install 会重新运行
  • 推荐使用 Docker Volume 来持久化 node_modules/(见下面的方法)

🔹 如何让 node_modules/ 不丢失?(Docker Volume 持久化)

方法 1️⃣:使用 docker-compose 绑定 node_modules 目录

创建 docker-compose.yml

version: '3'
services:app:build: .volumes:- .:/app- /app/node_modulesports:- "3000:3000"

这样即使你删除容器,node_modules/ 也不会丢失。


方法 2️⃣:手动挂载 Volume

运行容器时,使用 -v 选项:

docker run -v my-node-modules:/app/node_modules -p 3000:3000 my-app
  • 这样 node_modules/ 会存储在 Docker Volume 里
  • 即使你删除容器,依赖也不会丢失

🔹 总结

情况是否需要重新安装依赖?
仅重启 Docker (docker stopdocker start)不需要,node_modules/ 还在
删除容器后重新运行 (docker rm + docker run)需要,文件丢失
重新构建镜像 (docker build)⚠️ 可能需要,取决于 Docker 缓存
使用 Volume (-v 绑定 node_modules/)不需要,node_modules/ 保留在 Volume

推荐使用 Volume,这样即使容器被删,依赖也不会丢失 🚀

如果你关了电脑、退出了 Docker,下次启动后还需要重新安装依赖吗?

大多数情况下,不需要重新安装依赖!
如果你只是 关机、退出 Docker,再次启动,你的 容器和 node_modules/ 依然会保留,不需要重新 npm install

如果你删除了容器、清理了 Docker 数据,或者用了 --rm 运行容器,就需要重新安装依赖!


🔹 具体情况分析

操作需要重新安装依赖吗?原因
关机后重新开机不需要Docker 会保留容器和 node_modules/
退出 Docker 后重新启动不需要只要容器没有被删除,node_modules/ 还在
docker stop 停止容器,再 docker start不需要node_modules/ 还在,直接启动即可
docker rm 删除容器需要node_modules/ 被删,需要重新安装
docker build 重新构建镜像⚠️ 可能需要如果 package.json 没变,可能会用缓存
docker run --rm 运行临时容器需要--rm 让容器退出时自动删除,node_modules/ 会丢失

🔹 如何确保关机后 node_modules/ 不丢失?

✅ 方法 1:使用持久化 Volume

docker run -v my-node-modules:/app/node_modules -p 3000:3000 my-app

这样 node_modules/ 会存储在 Docker Volume 里,即使容器被删除,依赖也不会丢失


✅ 方法 2:用 docker-compose 管理项目

创建 docker-compose.yml

version: '3'
services:app:build: .volumes:- .:/app- /app/node_modulesports:- "3000:3000"

然后启动:

docker-compose up -d

这样即使你重启 Docker 或关机,node_modules/ 依然会保留。


🔹 总结

如果你只是关机、退出 Docker, 依赖不会丢失,开机后可以直接运行容器 🚀
但如果删除了容器,就需要重新安装 npm install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25大唐杯赛道一本科B组大纲总结(上)

25大唐杯省赛马上要开始&#xff0c;还没开始准备的要抓紧了 可看我之前发的备赛攻略&#xff0c;理论的准备要先将大纲整理成思维导图框架 然后根据重点&#xff0c;在资料中寻找&#xff0c;记忆 这里帮大家整理好了&#xff0c;后续其他组别会相继更新 基于竞赛大纲做的思…

4月手机新品前瞻,影像,性能与设计卷得起飞

在智能手机市场中,4月向来是新品频发的黄金时段。各大手机厂商纷纷摩拳擦掌,准备推出自家的重磅机型,在影像、性能与设计等核心领域展开激烈角逐,一场没有硝烟的“科技大战”即将拉开帷幕。接下来,让我们一同深入了解那些备受瞩目的新品,提前感受科技进步带来的魅力。 一…

设计审查效率革命|CAD原生数据直通自动公差验证

“为何 90% 的 GD&T 问题在设计评审时未被发现&#xff1f;怎样避免因 GD&T 考虑不周导致的批量返工&#xff1f;” 这正是 CETOL 自动辅助审查设计系统要解决的核心问题&#xff1a;通过200结构化审查规则拦截潜在设计疏漏。 功能一&#xff1a;装配约束健康诊断&…

近场探头的选型

近场探头包括磁场探头和电场探头。 下图中画圈的是电场探头&#xff1a; 左侧3只是磁场探头&#xff0c;最右侧一只是电场探头。不同孔径的磁场探头的有效测量距离和分辨率不同 电场探头和磁场探头分别在什么情况下使用&#xff1a; 一般近场测试&#xff0c;使用的都是磁场探…

Pycharm运行时报“Empty suite”,可能是忽略了这个问题

问题&#xff1a;使用Pycharm运行testcases目录下的.py文件&#xff0c;报“Empty suite”&#xff0c;没有找到测试项。 排查过python解释器、pytest框架安装等等&#xff0c;依然报这个错&#xff0c;依然没找到&#xff0c;最后终端运行&#xff1a; pytest test_demo.py&a…

鸿蒙北向应用开发:deveco 5.0 kit化文件相关2

鸿蒙北向应用开发:deveco 5.0 kit化文件相关 在kit化时,有时候会出现这样一种场景即你想把已有的d.ts导出换个名字,这样从名字上更贴合你的kit聚合 什么意思呢?比如现在有 ohos.hilog.d.ts 导出了hilog,现在你想kit化hilog,使得hilog导出名字为usrhilog,这样用户在使用你的k…

Linux 搭建dns主域解析,和反向解析

#!/bin/bash # DNS主域名服务 # user li 20250325# 检查当前用户是否为root用户 # 因为配置DNS服务通常需要较高的权限&#xff0c;只有root用户才能进行一些关键操作 if [ "$USER" ! "root" ]; then# 如果不是root用户&#xff0c;输出错误信息echo "…

OmniPlan Pro for Mac 项目管理流程

OmniPlan Pro for Mac 项目管理流程 文章目录 OmniPlan Pro for Mac 项目管理流程一、介绍二、效果三、下载 一、介绍 OmniPlan Pro mac是一款项目管理流程软件。能被用来优化资源、精简预算快速共享或添加任务&#xff0c;旨在能够帮助您可视化维护和简化项目&#xff0c;包含…

人工智能之数学基础:矩阵的相似变换

本文重点 矩阵的相似变换是线性代数中一个至关重要的概念,它揭示了矩阵之间的一种特殊关系,并通过可逆矩阵将一个矩阵转化为另一个相似矩阵,同时保持矩阵的某些本质特征不变。在机器学习领域,矩阵的相似变换发挥着不可或缺的作用,广泛应用于数据降维、聚类分析、分类推荐…

【SpringCloud】Eureka的使用

3. Eureka 3.1 Eureka 介绍 Eureka主要分为两个部分&#xff1a; EurekaServer: 作为注册中心Server端&#xff0c;向微服务应用程序提供服务注册&#xff0c;发现&#xff0c;健康检查等能力。 EurekaClient: 服务提供者&#xff0c;服务启动时&#xff0c;会向 EurekaS…

OpenCV图像拼接(3)图像拼接类cv::detail::MultiBandBlender

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::MultiBandBlender 是 OpenCV 中用于图像拼接&#xff08;stitching&#xff09;模块的一个类&#xff0c;主要用于将多张重叠的图像…

王者荣耀服务器突然崩了

就在刚刚王者荣耀服务器突然崩了 #王者荣耀崩了#的话题毫无预兆地冲上热搜&#xff0c;许多玩家发现游戏登录界面反复弹出异常提示&#xff0c;匹配成功后卡在加载界面&#xff0c;甚至出现对局数据丢失的情况。根据官方公告&#xff0c;目前技术团队已在全力抢修服务器 #王者…

【JavaScript】JavaScript Promises实践指南

【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗&#xff1f;这是一个很多人一开始就放弃的主题&#xff0c;但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么&#xff1f; “Promise”是异步编程中的一个基本概念&#xff0c;特别是在J…

算法分析与设计 专题三

目录 一、实验目的 二、实验内容 三、问题分析与求解 四、AC源代码、截图 五、实验小结 一、实验目的 1、了解贪心算法的分析过程&#xff0c;学会用贪心算法解决一些具体的问题。 2、了解广度优先算法和深度优先算法。 二、实验内容 1992 当然&#xff0c;我们的收藏中…

每日算法-250328

记录今天学习和解决的LeetCode算法题。 92. 反转链表 II 题目 思路 本题要求反转链表中从 left 到 right 位置的节点。我们可以采用 头插法 的思路来反转指定区间的链表。 具体来说&#xff0c;我们首先定位到 left 位置节点的前一个节点 prev。然后&#xff0c;从 left 位置…

【AI编程学习之Python】第一天:Python的介绍

Python介绍 简介 Python是一种解释型、面向对象的语言。由吉多范罗苏姆(Guido van Rossum)于1989年发明,1991年正式公布。官网:www.python.org Python单词是"大蟒蛇”的意思。但是龟叔不是喜欢蟒蛇才起这个名字,而是正在追剧:英国电视喜剧片《蒙提派森的飞行马戏团》(Mo…

保姆级教程:Vue3 + Django + MySQL 前后端联调(PyCharm+VSCode版)

一、环境准备与验证 这里为减少篇幅&#xff0c;默认大家都安装好了这些软件。不会下载安装的&#xff0c;教程也很多&#xff0c;这里不再做赘述。话不多说&#xff0c;咱们开始&#xff1a; 1. 安装验证 确保已安装以下软件并验证版本&#xff1a; # 验证Node.js node -v…

Spring Data审计利器:@LastModifiedDate详解!!!

&#x1f552; Spring Data审计利器&#xff1a;LastModifiedDate详解&#x1f525; &#x1f31f; 简介 在数据驱动的应用中&#xff0c;记录数据的最后修改时间是常见需求。Spring Data的LastModifiedDate注解让这一过程自动化成为可能&#xff01;本篇带你掌握它的核心用法…

Uniapp自定义TabBar组件全封装实践与疑难问题解决方案

前言 在当前公司小程序项目中&#xff0c;我们遇到了一个具有挑战性的需求&#xff1a;根据不同用户身份动态展示差异化的底部导航栏&#xff08;TabBar&#xff09; 。这种多角色场景下的UI适配需求&#xff0c;在提升用户体验和实现精细化运营方面具有重要意义。 在技术调研…

2025年- G27-Lc101-542. 01 矩阵--java版

1.题目描述 2.思路 总结&#xff1a;用广度优先搜索&#xff0c;首先要确定0的位置&#xff0c;不为0的位置&#xff0c;我们要更新的它的值&#xff0c;只能往上下左右寻找跟它最近的0的位置。 解题思路 我们用 BFS&#xff08;广度优先搜索&#xff09;求解&#xff0c;因为 …