Vue 3 30天精进之旅:Day 22 - 构建和部署
欢迎回来!在我们的Vue 3学习旅程的第22天,我们将探讨应用的构建和部署。在完成了我们的应用开发后,下一步就是如何将其部署到服务器,使得用户可以访问。
1. 构建Vue应用
构建Vue应用是将我们在本地开发的代码打包成生产环境可用的格式。在这个过程中,Vue CLI会对我们的代码进行一些优化,为我们的应用提供更好的性能和更快的加载速度。接下来,我们将详细了解构建Vue应用的步骤,以及每一步的具体操作和背后的原理。
1.1 安装依赖
在构建应用之前,确保你的开发环境已经配置好,并且所有的依赖项都已经安装。通常在创建Vue项目时,使用Vue CLI生成项目模板时,依赖项会自动安装。如果你在项目前途上进行了新的依赖开发,需要执行以下命令来安装项目所需的所有依赖:
npm install
此命令会根据项目根目录下的package.json
文件,自动下载和安装所有列出的依赖包。这些依赖包包括Vue、Vue Router、Vuex及其他可能需要的库。
1.2 进行构建
当所有依赖安装完毕后,我们就可以开始构建我们的应用了。Vue CLI提供了一个内置命令来创建生产版本的应用,命令如下:
npm run build
1.2.1 命令解释
当你运行npm run build
时,Vue CLI会自动执行在package.json
文件中的build
脚本。这通常是由Webpack构建工具配置的,Webpack会通过以下方式来处理你的应用:
- 代码压缩: Webpack会对JavaScript和CSS代码进行压缩,减少文件大小,提升加载速度。
- 树摇优化: Webpack会删除未使用的代码,提高应用性能。
1.2.2 查看构建过程
在命令行中执行npm run build
后,你会看到构建过程的详细日志。Webpack会显示哪些文件被处理,生成了多少个输出文件等信息。这些输出文件在完成构建后会存储在dist
目录中。
1.3 理解构建输出
一旦构建完成,你将在项目根目录下看到一个 dist
文件夹,里面保存着所有构建后的文件。这些文件是生产环境使用的,所以理解它们的结构是非常重要的。
1.3.1 dist
文件夹结构
dist
文件夹通常包含以下文件和目录:
txt
dist
├── index.html # 应用入口文件
├── js # 包含所有 JavaScript 文件
│ ├── app.js # 主要应用逻辑
│ ├── chunk-vendors.js # 供应商库(如Vue等第三方库)
├── css # 包含所有 CSS 文件
│ ├── app.css # 应用样式
└── ...
- index.html: 这是应用的主入口。它引入了构建后的JavaScript和CSS,以便浏览器可以加载和运行应用。
- js 目录: 这个目录下包含生成的JavaScript文件。
app.js
文件通常包括应用的主要代码逻辑,chunk-vendors.js
则包含了所有第三方依赖库的代码。 - css 目录: 如果你的项目中有CSS文件,经过构建后,它们会被压缩并存放于此。
1.3.2 资源的引用
在 index.html
中,所有的资源通常由Webpack配置自动处理,适当地引入和引用。你可以在构建后的 index.html
中看到类似以下内容:
html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="css/app.css"><title>Vue App</title>
</head>
<body><div id="app"></div><script src="js/chunk-vendors.js"></script><script src="js/app.js"></script>
</body>
</html>
在浏览器加载这个HTML页面后,它将首先加载CSS文件,如果文件加载完成,JavaScript文件才会被执行,进而通过Vue的实例渲染 #app
这个根节点。
1.4 优化构建配置
Vue CLI提供了一些内置选项来优化你的构建过程。你可以在项目的根目录下找到vue.config.js
文件(如果没有则可以自己创建)并进行一些配置以优化构建。例如,开启Gzip压缩,减少传输文件大小:
javascript
module.exports = {configureWebpack: {plugins: [// 可以添加Webpack插件进行额外的优化]},chainWebpack: (config) => {// 开启Gzip压缩const CompressionPlugin = require('compression-webpack-plugin');config.plugin('compression').use(CompressionPlugin, [{algorithm: 'gzip',test: /\.(js|css|html|svg)$/,threshold: 10240,minRatio: 0.8}]);}
};
1.5 构建后文件的使用
构建后的文件将被用于产品环境。你只需将 dist
文件夹中的文件部署到你的服务器或托管平台。这些文件经过压缩和优化,能够为终端用户提供更流畅的体验。
2. 部署Vue应用
当你完成Vue应用的构建后,接下来就是将它部署到服务器上,使其他人能够访问。这一步非常重要,因为部署不仅涉及到将文件上传到服务器,还需要考虑到如何配置、优化和维护应用。下面,我们将详细探讨如何部署Vue应用的多个步骤和可选平台。
2.1 选择部署平台
在选择部署平台时,根据你的需求和应用类型,市面上提供了多种选择。以下是一些常见的平台:
- Vercel:专为前端框架和静态网站设计,支持自动化构建和持续集成,非常适合快速部署。
- Netlify:同样适合静态网站,提供强大的构建、部署和服务器功能,操作简单,集成友好。
- GitHub Pages:免费的托管服务,适合开源项目和小型网站,简单易用。
- Firebase Hosting:Google提供的服务,适合需要云功能的现代应用,支持动态内容。
- DigitalOcean、AWS、Heroku:适合需要更高灵活性和配置的用户,通常涉及更多的服务器管理工作。
2.2 在Vercel上部署
Vercel是一个非常直观的部署平台,以下是具体的步骤:
2.2.1 创建Vercel账号
如果你还没有Vercel账号,请访问 Vercel官网 注册一个账号。
2.2.2 安装Vercel CLI
在命令行中安装Vercel CLI,以便快速部署。运行以下命令:
npm install -g vercel
2.2.3 部署应用
-
进入项目目录:首先,确保你在Vue项目的根目录下。
-
运行Vercel命令:执行以下命令:
vercel
-
登录 Vercel:如果是第一次使用,CLI会提示你登录。按照提示使用GitHub、GitLab或邮箱登录。
-
设置项目:接下来,Vercel会询问你一些设置(如项目名称、路径等)。你可以选择默认设置,Vercel会基于你的
dist
文件夹自动检测构建设置。 -
完成部署:部署过程中,Vercel会处理你的代码并生成URL。在命令行中会显示一个类似于
https://your-project-name.vercel.app/
的链接,你可以直接访问你的应用。
2.2.4 自动化部署
Vercel支持从GitHub、GitLab和Bitbucket中自动化部署,你只需将仓库链接到Vercel即可。每当你推送代码时,Vercel会自动重新构建和部署应用。
2.3 在Netlify上部署
Netlify也是一个提供静态网站托管的平台,以下是部署步骤:
2.3.1 创建Netlify账号
访问 Netlify官网 注册一个账号。
2.3.2 上传构建的文件
-
新建站点:登录后,点击“New site from Git”或“Deploy manually”。
-
手动部署:如果选择手动部署,直接将
dist
文件夹中的所有内容拖放到上传区域,Netlify会自动处理部署。
2.3.3 配置项目参数
在Netlify中,您可以配置部署的选项,比如自定义域名、HTTPS支持等。Netlify会自动为您的站点配置HTTPS。
2.3.4 访问应用
一旦部署完成,你将获得一个Netlify提供的URL,可以通过该链接访问你的应用。
2.4 使用GitHub Pages部署
GitHub Pages是一个简单的选择,适合小型项目或个人博客。
2.4.1 准备仓库
确保你的项目代码已经推送到GitHub的一个仓库。
2.4.2 将构建文件推送到GitHub
-
在项目根目录下,使用以下命令将构建后的文件推送到
gh-pages
分支:bash
git checkout -b gh-pages git --work-tree dist git add --all git commit -m "Deploying Vue app" git push origin gh-pages --force
-
在仓库的设置中启用GitHub Pages,选择
gh-pages
作为源。
2.4.3 访问应用
你将获得 https://<your-github-username>.github.io/<your-repo-name>/
的链接来访问应用。
2.5 在Firebase Hosting上部署
Firebase提供了强大的功能,非常适合希望使用云功能的开发者。
2.5.1 创建Firebase账号
访问 Firebase官网 创建一个账号并登录。
2.5.2 安装Firebase CLI
在命令行中输入以下命令来安装Firebase CLI:
npm install -g firebase-tools
2.5.3 初始化Firebase项目
-
在项目根目录下运行:
firebase init
-
选择 “Hosting” 选项并按照提示配置。
-
输入要使用的
dist
文件夹作为公共目录。
2.5.4 部署应用
运行以下命令进行部署:
firebase deploy
一旦部署完成,你将获得一个Firebase提供的URL来访问你的应用。
2.6 配置与优化
在完成部署后,你可以进行进一步的配置与优化,包括:
- HTTPS支持:大多数平台会自动为你的应用启用HTTPS,确保安全性。
- 自定义域名:为你的应用配置自定义域名,提高品牌形象和可信度。
- 持续集成:利用CI/CD工具(如GitHub Actions)进行自动化构建和测试,以确保应用的稳定性。
在本节中,我们探讨了如何将Vue应用部署到不同的平台。每个平台都有其独特的优势和配置步骤,选择合适的平台即可让你迅速将应用发布至互联网上。这个过程中不仅包括上传构建好的文件,还涉及到配置HTTPS、自定义域名等多个方面。在下一节中,我们将深入了解如何优化应用性能,使得用户获得更加流畅的体验。
3. 配置与优化
在成功部署你的Vue应用后,下一步就是考虑如何进一步优化应用的性能、可维护性和用户体验。这一部分我们将重点讨论一些可以实施的配置和优化策略,让你的Vue应用运行得更加顺畅。
3.1 性能优化
优化应用性能至关重要,它直接影响到用户的加载速度和整体体验。以下是一些可以实施的性能优化手段:
3.1.1 惰性加载(Lazy Loading)
对于大型Vue应用,惰性加载可以显著改善首屏加载时间。通过将路由或组件分割成更小的部分,你可以确保只有用户需要特定页面时,相关的JavaScript才会被加载。
javascript
const Foo = () => import(/* webpackChunkName: "foo" */ './Foo.vue');const routes = [{ path: '/foo', component: Foo },
];
这样,Foo
组件就会在用户访问/foo
时才加载,而不是在应用加载时加载所有内容。
3.1.2 精简依赖
定期审查并移除不再使用的库和依赖,可以减小最终构建的文件大小。确保只包含必要的依赖库和模块,这会帮助减轻加载负担。
3.1.3 资源压缩
使用Webpack的压缩插件,可以在构建过程中自动压缩JavaScript和CSS文件,减少文件体积,提高加载速度。
javascript
const CompressionPlugin = require('compression-webpack-plugin');module.exports = {configureWebpack: {plugins: [new CompressionPlugin({algorithm: 'gzip',test: /\.(js|css|html|svg)$/,threshold: 10240,minRatio: 0.8}),],},
};
3.1.4 缓存优化
利用HTTP缓存策略,可以减少用户在后续访问时需要下载的资源。确保服务器配置正确的缓存头,例如Cache-Control 和 ETag。
3.2 监控和分析
应用的优化不仅在于提升性能,同时也需要实时监控和用户行为分析。优秀的监控工具可以帮助你及时发现问题并做出优化。
3.2.1 使用Google Analytics
Google Analytics是一个强大的工具,可以让你获取每个页面的用户行为和访问数据。你可以通过集成Google Analytics来跟踪访问量、用户停留时间、转化率等重要指标。
在主文件中添加以下代码:
javascript
import Vue from 'vue';
import VueAnalytics from 'vue-analytics';Vue.use(VueAnalytics, {id: 'UA-XXXXXXXX-X', // 替换为你的Google Analytics IDrouter,
});
3.2.2 使用性能监控工具
工具如Sentry、New Relic或Lighthouse等,可帮助你监控应用的运行时性能,并实时捕获潜在的错误和性能瓶颈。
3.3 安全性配置
在开发和部署过程中,确保应用的安全性也非常重要。下面是一些常见的安全设置:
3.3.1 使用HTTPS协议
确保所有流量通过HTTPS进行加密,以保护用户数据。在如今的互联网环境中,任何一个现代应用都应该强制使用HTTPS。
3.3.2 防止XSS和CSRF攻击
确保在处理用户输入时做好防范,使用库如DOMPurify来过滤和清除潜在的恶意代码。CSRF(跨站请求伪造)也需要被妥善处理,可以通过CSRF令牌来防护。
3.3.3 配置CORS
对于涉及到跨域请求的应用,合理配置CORS(跨源资源共享)规则是必要的。确保只允许可信的域访问你的API,以增强安全性。
3.4 友好的用户体验
良好的用户体验对于应用的成功至关重要,以用户为中心的设计能使用户更容易使用你的应用。
3.4.1 使用加载指示器
在数据加载或路由切换时,使用加载指示器(如进度条或旋转图标)来提示用户。这样能够提升用户的耐心,减少等待时的焦虑感。
html
<template><div v-if="loading">加载中...</div><div v-else>内容</div>
</template>
3.4.2 错误处理
在应用中实现错误捕捉和处理机制。在遇到错误时,应提供友好的错误提示,并引导用户进行后续操作。
3.4.3 响应式设计
确保你的应用在不同设备和屏幕大小上都能良好展示。这可以通过媒体查询和使用UI框架(如Vuetify、Bootstrap Vue等)来实现。
在这一节中,我们探讨了如何对Vue应用进行配置与优化。通过实施性能优化、监控用户行为、强化安全性及提升用户体验,你的应用将能够在各种使用场景中表现得更卓越。优化是一个持续的过程,定期检查和改进将使应用保持良好的运行状态。接下来,让我们看看如何进行项目的后续维护和更新,以确保应用始终保持最佳状态。
4. 总结
今天我们cover了Vue应用的构建和部署知识。在完成构建后,通过选择适合的平台,可以轻松将我们的应用发布到网上。接下来的日子里,你可以进一步探索如何优化你的应用性能,以及如何集成更多的功能。
明天,我们将学习Vue中的性能优化技巧,帮助你打造更加流畅的用户体验。敬请期待!
相关文章:
Vue 3 30天精进之旅:Day 22 - 构建和部署
欢迎回来!在我们的Vue 3学习旅程的第22天,我们将探讨应用的构建和部署。在完成了我们的应用开发后,下一步就是如何将其部署到服务器,使得用户可以访问。 1. 构建Vue应用 构建Vue应用是将我们在本地开发的代码打包成生产环境可用…...
Ansible中Playbook的逻辑控制语句-when
playbook的逻辑控制语句 when 条件判断语句,类似if loop 循环语句,类似loop block 将几个任务组成一个代码块,便于针对一组操作的异常进行处理 when的基本用法 when的运算符操作 when关键字可以配合各种运算符进行操作,如下&…...
制造业物联网的十大用例
预计到 2026 年,物联网制造市场价值将达到 4000 亿美元。实时收集和分析来自联网物联网设备与传感器的数据,这一能力为制造商提供了对生产流程前所未有的深入洞察。物联网(IoT)有潜力彻底改变制造业,使工厂能够更高效地…...
InfiniBand与IP over InfiniBand(IPOIB):实现高性能网络通信的底层机制
在现代高性能计算(HPC)和数据中心环境中,网络通信的效率和性能至关重要。InfiniBand(IB)作为一种高性能的串行计算机总线架构,以其低延迟、高带宽和高可靠性而广泛应用于集群计算和数据中心。IP over InfiniBand(IPOIB)则是在InfiniBand网络上实现IP协议的一种方式,它…...
【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
机器学习 | scikit-learn中分块拟合vs一次性拟合所有数据
Scikit-learn是一个广泛使用的机器学习Python库,提供了一系列分类、回归、聚类等算法。机器学习的关键挑战之一是处理无法一次性放入内存的大型数据集。本文探讨了使用scikit-learn将数据分块拟合与一次性拟合的策略,讨论了每种方法的优点和局限性。 大…...
两个同一对象targetList和 sourceList 去重
我现在需要解决的问题是从一个Java的源列表`sourceList`中移除所有在目标列表`targetList`中存在的数据,并且还要去除`targetList`中的重复数据。让我先理清楚这两个问题的思路。 首先,如何快速从`sourceList`中移除含有`targetList`的数据。这里的“含有”应该是指两个列表中…...
小游戏源码开发之可跨app软件对接是如何设计和开发的
专业小游戏开发的团队往往会面临跨领域和不同平台客户需要追加同一款游戏的需求,所以就要设计和开发一款可任意对接不同 App 软件的小游戏,那么针对这类需求小游戏开发团队早已有了成熟的解决方案,针对设计和开发可跨平台游戏对接大概流程简单…...
掌握正则表达式_模式匹配的艺术
当然,以下是《掌握正则表达式:模式匹配的艺术》文章内容,使用 Java 正则表达式,并包含丰富的代码示例: 1. 引言 1.1 正则表达式的定义与历史 正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于描述文本模式的强大工具。它最初由数学家 Stephen Kleene…...
FacePoke详细使用指南:如何利用开源AI工具优化照片人物表情
文章目录 前言1. 本地使用FacePoke1.1 整合包方式安装1.2 Docker方式部署 2. FacePoke功能演示3. 公网使用FacePoke3.1 创建远程连接公网地址 4. 固定远程访问公网地址 前言 在数字创意的世界里,一款名为FacePoke的工具正以其风趣而强大的功能吸引着无数创作者的目…...
本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui
通过ollama本地部署deepseek 总共两步 1.模型部署 2.[web页面] 参考官网 ollama:模型部署 https://ollama.com/ open-webui:web页面 https://github.com/open-webui/open-webui 设备参考 Mac M 芯片 windows未知 蒸馏模型版本:deepseek-r1:14b 运行情况macminim2 24256 本地…...
分发饼干(力扣455)
从这道题开始我们就进入贪心算法的学习了。这个算法没有固定的套路,甚至题目之间的联系也很少,基本上每一道题都要当新题来写。我们能做的只有见多识广,这样才有机会在考试中根据以往经验解决贪心的题目。贪心的本质上就是找到局部最优解&…...
信息收集-主机服务器系统识别IP资产反查技术端口扫描协议探针角色定性
知识点: 1、信息收集-服务器系统-操作系统&IP资产 2、信息收集-服务器系统-端口扫描&服务定性 一、演示案例-应用服务器-操作系统&IP资产 操作系统 1、Web大小写(windows不区分大小写,linux区分大小写) 2、端口服务特征(22就是linux上的服…...
建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07
本次要学视频检测,我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来,保留红框的部分。 然后我们来看一下源代码: import cv2 as cvdef face_detect_demo(…...
vue-点击生成动态值,动态渲染回显输入框
1.前言 动态点击生成数值,回显输入框,并绑定。 2.实现 <template><div style"display:flex;align-items: center;flex-direction:row"><a-input:key"inputKey"v-model"uploadData[peo.field]"placehold…...
Idea 插件 Quickly-Code-Toolkit
使用说明 (一)全局设置 Paging Wrapper Setting(分页设置) 功能:主要用于在方法写入时,为返回参数提供分页包装类。设置方式:需准确填写分页包装类的全限定名,例如:com…...
fun-transformer学习笔记-Task1——Transformer、Seq2Seq、Encoder-Decoder、Attention之间的关系
Transformer、Seq2Seq、Encoder-Decoder、Attention由这四者之间的关系可以从模型架构的发展脉络来理解: Seq2Seq 与 Encoder–Decoder 模型 “Seq2Seq”(sequence‐to‐sequence)是一类用于将一个变长序列映射为另一个变长序列的任务&#x…...
使用瑞芯微RK3588的NPU进行模型转换和推理
使用边缘设备进行算法落地时,通常要考虑模型推理速度,NVIDA系列平台可以使用TensorRT和CUDA加速,瑞芯微RK3588的板子上都是Arm的手机GPU,虽然没有类似CUDA的加速计算方式,但是提供了NPU进行加速推理,本文说…...
mysql读写分离与proxysql的结合
上一篇文章介绍了mysql如何设置成主从复制模式,而主从复制的目的,是为了读写分离。 读写分离,拿spring boot项目来说,可以有2种方式: 1)设置2个数据源,读和写分开使用 2)使用中间件…...
Vue笔记(九)
一、文章分类架子--PageContainer 学习PageContainer组件的封装,这一组件用于搭建页面基础结构,为后续内容展示提供统一布局。它可能包含通用的页面样式、导航栏、侧边栏等基础元素的结构搭建。 在Vue组件中, <template> 标签内定义基础…...
YOLO11框架使用
YOLO11 1. Frame Understanding2. What can YOLO11 do?3.如何训练自己数据集?3.1 配置环境3.2 制作自己数据集3.3 配置文件3.3.1 数据集配置文件3.3.2 网络模块配置文件4.修改训练参数配置文件5. 训练脚本编写6.结果展示1. Frame Understanding 2. What can YOLO11 do? Ult…...
RK3588视觉控制器与AI 算法:开启工业视觉检测新境界
在实际应用中,工业相机拍摄产品的图像,RK3588 迅速接收并进行预处理。AI 算法随即对图像进行深入分析,提取特征并与预设的标准进行对比,从而准确判断是否存在缺陷。 例如,在电子元件生产线上,RK3588 和 AI…...
C语言基础入门:2.5基础输入输出
【C语言基础】输入输出完全指南:从printf到缓冲区安全 文章目录 【C语言基础】输入输出完全指南:从printf到缓冲区安全一、格式化输出艺术:printf函数详解二、scanf输入安全与缓冲区处理三、字符级交互:getchar与putchar实战程序员…...
压缩stl文件大小
1、MeshLab下载界面,从MeshLab下载适合自己系统的最新版本。 2、打开 MeshLab软件,将stl文件拖入其中。 3、 4、Percentage reduction参数即为缩放比例,根据自身想要将文件压缩到多大来。 然后点击apply 5、CtrlE弹出窗口保存文件后&…...
二、交换机的vlan子设备接入
一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章,本文接入了子设备 网络结构如下: 用路由器A和POE交换机B代替第一篇中的笔记本电脑,路由器A和交换机B都关闭DHCP服务,并分别接入一个IPC&#…...
KEPServerEX 的接口类型与连接方式的详细说明
目录 一、KEPServerEX 核心架构 二、KEPServerEX 支持的接口类型 三、KEPServerEX 支持的连接类型 1. 通用工业协议 2. 品牌专属协议 3. 行业专用协议 4. 数据库与文件接口 四、配置示例 1. 接口配置(以OPC UA为例) 2. 连接配置(以…...
Stack(栈)
定义:在Java编程语言中,栈(Stack)是一种非常重要的数据结构,具有后进先出的特性,即最后入栈的元素最先出栈。栈通常用于存储临时性的数据,如方法调用过程中的局部遍历、操作数栈等。 图像理解: 我们在这里要…...
【Vue3 Computed 与 Watch 维护对比】
让我们从开发体验和维护性的角度深入对比 computed 和 watch,通过具体场景分析它们的差异: 一、维护成本对比 1. 依赖管理差异 // 原始代码 const productFilter computed(() > {return products.value.filter((p) > p.price > minPrice.val…...
在node.js环境中使用web服务器http-server运行html静态文件
http-server http-server是一个超轻量级web服务器,它可以将任何一个文件夹当作服务器的目录供自己使用。 当我们想要在服务器运行一些代码,但是又不会配置服务器的时候,就可以使用http-server就可以搞定了。 使用方法 因为http-server需要…...
详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME
写在前面 电子邮件(Email)是一种通过互联网进行异步通信的技术,工作原理涉及多个协议、服务器和客户端协同工作。 接下来我们来介绍一下电子邮箱的工作原理 1. 电子邮件的核心组成部分 邮件客户端:用户直接交互的软件…...
算法学习笔记之并查集
简介 问题描述:将编号为1-N的N个对象划分为不相交集合,在每个集合中,选择其中的某个元素代表所在集合。 常见两种操作: 1.合并两个集合 2.查找某元素属于哪个集合 实现方法1 用编号最小的元素标记所在集合; 定义…...
【开源项目】ShowDoc适合IT团队的在线API文档、技术文档工具
1. 介绍 通过showdoc,可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。还可以利用showdoc的自动化能力,从程序注释中自动生成API文档,或者从搭配的RunApi客户端(类似postman的api…...
Tomcat添加到Windows系统服务中,服务名称带空格
要将Tomcat添加到Windows系统服务中,可以通过Tomcat安装目录中“\bin\service.bat”来完成,如果目录中没有service.bat,则需要使用其它方法。 打到CMD命令行窗口,通过cd命令跳转到Tomcat安装目录的“\bin\”目录,然后执…...
SQL最佳实践(笔记)
写在前面: 之前baeldung的Java Weekly Reviews里面推荐了一篇关于SQL优化的文章,正好最近在学习数据库相关知识,记一些学习笔记 原文地址:SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…...
历史性突破!DeepSeek双模型GitHub热度超OpenAI,展现中国AI力量
在2025年2月7日,中国AI领域传来了一则振奋人心的消息:DeepSeek旗下的两大开源项目在GitHub平台上实现了历史性突破,其Star数成功超越了OpenAI的明星项目。这一成就不仅标志着DeepSeek在技术研发和市场影响力上的重大飞跃,也为中国…...
deepseek+kimi一键生成PPT
1、deepseek生成大纲内容 访问deepseek官方网站:https://www.deepseek.com/ 将你想要编写的PPT内容输入到对话框,点击【蓝色】发送按钮,让deepseek生成内容大纲,并以markdown形式输出。 等待deepseek生成内容完毕后,…...
Java学习
一、赋值 赋值表达式,左边一定是变量,右边是变量或者数值,变量与数值都有类型,(数值里整数默认int,小数默认double) 类型由小转大,存储空间变大,数据不会丢失,是安全的,在需要时编译…...
Shell-基本命令与运算符
1.为什么要进行shell编程? 在Linux系统中,虽然有各种各样的图形化接口工具,但是shell仍然是一个非常灵活的 工具。 Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。 您可以通过使用shell使大量的任务自动化, 因此&#…...
JUnit 5 自定义注解:方法级 JSON 参数注入
JUnit 5 自定义注解:方法级 JSON 参数注入 为了实现 在测试方法上使用注解,并通过注解属性指定参数名称和 JSON 字符串(转换为 Java 对象),以下是基于 JUnit 5 正确扩展接口的解决方案: 一、实现步骤 1. …...
anolis os 8.9安装jenkins
一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…...
【CXX】0 Rust与C 互操作利器:CXX库介绍与示例
CXX库是一个非常强大的工具,它使得Rust和C之间的互操作性变得既安全又高效。本专栏将展示如何使用CXX库来桥接Rust和C代码,同时保持两者语言的特性和惯用法。 一、关键概念回顾 类型安全:CXX库通过静态分析类型和函数签名来保护Rust和C的不…...
tensorflow环境中已安装库
1. 深度学习课前准备工作 Anaconda3、TensorFlow和keras安装方法 1 下载Anaconda: Anaconda3-5.2.0-Windows-x86_64.exe 双击安装,选定环境变量 2 开始菜单打开Anaconda Prompt:(2、3、4有链接科学上网) 创建环境&am…...
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践 本文将基于提供的代码示例,详细介绍如何在一个Java微服务项目中使用Spring Security、JWT和Spring Cloud Gateway来构建一个高效且安全的微服务体系,并整合性能优…...
蓝桥杯(B组)-每日一题(求最大公约数最小公倍数)
题目: 代码展现: #include<iostream> using namespace std; int main() {int m,n,x,y;cin>>m>>n;//输入两个整数int b;bm%n;//取余数xm;//赋值yn;while(b)//当余数不为0的时候{xy;//辗转相除求最小公约数yb;bx%y;}cout<<y<&…...
RocketMQ、RabbitMQ、Kafka 的底层实现、功能异同、应用场景及技术选型分析
1️⃣ 引言 在现代分布式系统架构中,📩消息队列(MQ)是不可或缺的组件。它在系统🔗解耦、📉流量削峰、⏳异步处理等方面发挥着重要作用。目前,主流的消息队列系统包括 🚀RocketMQ、&…...
CEF132编译指南 MacOS 篇 - 构建 CEF (六)
1. 引言 经过前面一系列的精心准备,我们已经完成了所有必要的环境配置和源码获取工作。本篇作为 CEF132 编译指南系列的第六篇,将详细介绍如何在 macOS 系统上构建 CEF132。通过配置正确的编译命令和参数,我们将完成 CEF 的构建工作…...
使用stm32控制esp01s
title: 使用stm32控制esp01s date: 2025年2月9日 18:41:20 tags: 单片机模块使用 categories: stm32 description: 使用stm32控制esp01s连接WiFi查看内容等操作 前言 使用stm32f103控制esp01s是步入物联网的第一步,接下来的文章会详细讲解如何使用stm32控制esp01s…...
返回倒数第N个链表节点
力扣题目:LCR 140. 训练计划 II - 力扣(LeetCode) 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 示例 1: 输入:head [2,4,7,8], cnt 1 输…...
一、计算机等级考试——标准评分
(1)选择题 未做选择题 (2)基本造作 (3)上网题 (4)文字题 (5)表格题 (6)演示文稿 二、计算机等级考试——题库 (1&#x…...
tweenjs动画
目录 编辑 安装 HTML中应用 Threejs中应用 安装 npm install tweenjs/tween.js HTML中应用 <script src"https://cdnjs.cloudflare.com/ajax/libs/tween.js/23.1.3/tween.umd.js"></script><div id"box"></div><style…...