(09)Vue脚手架的使用(Vite、vue-cli、create-vue)
本系列教程目录:Vue3+Element Plus全套学习笔记-目录大纲
文章目录
- 第3章 Vue脚手架
- 3.1 vite
- 3.3.1 Vite使用
- 1)创建Vite项目
- 2)Vite项目打包
- 3.1.2 组件化开发
- 3.1.4 Vite工程运行原理
- 1)分析main.js
- 2)自定义根组件
- 3.2 vue-cli
- 3.2.1 vue-cli的使用
- 3.3.2 @vue/cli的使用
- 3.2 create-vue
第3章 Vue脚手架
作为后端程序员,我们熟悉项目初始化工具,比如 Spring Initializr,它可以帮助我们快速搭建一个具有Spring环境的项目结构,另外还支持我们勾选自己需要的功能,如模板引擎、Redis环境、Spring Security、测试单元等。
前端脚手架其实和它们非常相似,只不过它是针对前端开发的,即快速帮我们搭建一个整合好了Vue(React、Angular)环境的项目结构,同时也允许我们勾选自己所需要的前端功能,如Vue-Router、Pinia、Vitest等。
不同的前端框架有不同的脚手架工具,但核心思想是一样的:一键生成项目。
下列是常用脚手架以及适用框架对比:
脚手架名称 | 适用框架 | 底层构建工具 | 特点 |
---|---|---|---|
create-vue | Vue 3 | Vite | 官方推荐,底层采用Vite,轻量快速 |
Vue CLI | Vue 2 | Webpack | 功能强大但较重,已不推荐使用 |
create-react-app (CRA) | React | Webpack | Facebook 官方维护 |
create-next-app | React | Vite/Webpack | 支持 SSR/SSG |
Angular CLI (ng new ) | Angular | Webpack | 官方 CLI,企业级 |
Vite | 通用(Vue/React/Svelte) | Vite | 通用(可搭配 Vue/React/Svelte) |
我们可以站在后端视角上来观察这些前端脚手架:
概念 | 前端 | 后端类比 |
---|---|---|
项目初始化 | create-vue / create-react-app | Spring Initializr |
构建工具 | Vite / Webpack | Maven / Gradle |
依赖管理 | npm / pnpm / yarn | Maven / pip / bundler |
3.1 vite
Vite(法语中意为“快”)是由 Vue.js 作者尤雨溪(Evan You)开发的一个新型前端构建工具。
同时,Vite也是一个现代化的前端脚手架,以其快速的开发体验和高效的构建性能而闻名。对于熟悉 Vue 的你来说,Vite 是一个天然的搭档,可以帮助你更高效地开发和构建项目。
Vite官网:https://cn.vitejs.dev/
查看Vite版本:
C:\Users\Administrator>npm view create-vite versions['0.0.0-alpha.0', '0.0.0', '2.5.0', '2.5.1','2.5.2', '2.5.3', '2.5.4', '2.6.0','2.6.1', '2.6.2', '2.6.3', '2.6.4','2.6.5', '2.6.6', '2.7.0', '2.7.1','2.7.2', '2.8.0', '2.9.0', '2.9.1','2.9.2', '2.9.3', '2.9.4', '2.9.5','3.0.0', '3.0.1', '3.0.2', '3.1.0','3.2.0', '3.2.1', '4.0.0-beta.0', '4.0.0','4.1.0-beta.0', '4.1.0', '4.2.0-beta.0', '4.2.0-beta.1','4.2.0', '4.3.0-beta.0', '4.3.0', '4.3.1','4.3.2', '4.4.0', '4.4.1', '5.0.0-beta.0','5.0.0-beta.1', '5.0.0', '5.1.0', '5.2.0','5.2.1', '5.2.2', '5.2.3', '5.3.0','5.4.0', '5.5.0', '5.5.1', '5.5.2','5.5.3', '5.5.4', '5.5.5', '6.0.0','6.0.1', '6.1.0', '6.1.1', '6.2.0','6.2.1', '6.3.0', '6.3.1'
]
以下是Vite版本与NodeJS版本对应关系:
Vite 版本 | 推出时间 | 最低 Node.js 版本 | 推荐 Node.js 版本 | 说明 |
---|---|---|---|---|
Vite 2.x | 2021 年 | Node.js 12.20.0+ | Node.js 14.16.0+ | 初始支持现代前端工具链,需基础 ES Module 兼容性。 |
Vite 3.x | 2022 年 7 月 | Node.js 14.18.0+ | Node.js 16.0.0+ | 引入更严格的 ESM 规范,依赖 Node.js 14.18+ 的 ESM 修复。 |
Vite 4.x | 2022 年 12 月 | Node.js 14.18.0+ | Node.js 16.0.0+ | 兼容旧版 Node.js,但推荐升级到 16/18(因 Node.js 14 已结束维护)。 |
Vite 5.x | 2023 年 11 月 | Node.js 18.0.0+ | Node.js 20.0.0+ | 全面拥抱现代环境,放弃 Node.js 16 支持,依赖新特性(如 ESM 解析改进)。 |
Vite 6.x | 2024 年 11 月 | Node.js 18.0.0+ | Node.js 20.0.0+ | 兼容旧版 Node.js,但推荐升级到 20+版本 |
3.3.1 Vite使用
1)创建Vite项目
创建一个空的文件(Vue-01),打开控制台,输入初始化命令:
# 创建一个vite项目
npm create vite# 创建一个最新版本的vite项目,项目名为my-vite-app
npm create vite@latest my-vite-app
接着进vite初始化命令窗口:
npx: installed 1 in 1.437s
│
◆ Project name: # 输入项目名(默认为vite-project)
│ vite-project
└◇ Select a framework: # 选择初始化的框架(Vue)
│ Vue
│
◇ Select a variant: # 选择语言(JavaScript)
│ JavaScript
│
◇ Scaffolding project in E:\BaiduSyncdisk\01\doc\Temp\docCode\Vue-02\Vue-01\vite-project...
│
└ Done. Now run:cd vite-project # 初始化成功npm installnpm run dev
vite的项目结构如下:
vite-project就是我们的项目,文件夹描述如下:
- public:静态资源目录,放置在该文件夹下的文件可以通过浏览器直接访问。
- src:资源访问路径,存放Vue的所有组件。
运行npm install
命令安装vite项目所需依赖,之后输入npm run dev
将项目启动。
2)Vite项目打包
npm run build # 构建后生成dist 文件夹
打包之后,我就可以将打包之后的文件部署到服务器中,前端可以直接访问
- 前后分离方式:需要把 dist 文件夹内容部署到如 nginx 之类的服务器上。
- 前后不分离方式:把 dist 文件夹内容复制到 SpringBoot 项目
resources
下面
3.1.2 组件化开发
Vue的单页面开发其实很简单又很抽象,单页面是指唯一的Vue示例,也就是main.js里的new Vue({});那么多页面的效果是怎么实现的呢?这就依赖于组件化开发,每一个子页面都由多个组件构成,在url改变时刷新并渲染不同的组件群,这就达到了多页面的效果。
所谓组件化,就是把页面拆分成多个组件,每个组件依赖的 CSS、JS、模板、图片等资源放在一起开发和维护。 因为组件是资源独立的,所以组件在系统内部可复用,组件和组件之间可以嵌套,如果项目比较复杂,可以极大简化代码量,并且对后期的需求变更和维护也更加友好。
几乎任意类型的应用界面都可以抽象为一个组件树,如图所示:
Vue 的单文件组件 (即 *.vue
文件,英文 Single-File Component,简称 SFC) 是一种特殊的文件格式,使我们能够将一个 Vue 组件的模板、逻辑与样式封装在单个文件中。
下面是一个单文件组件的示例:
<script setup>//编写脚本
</script><template>//编写页面模板
</template><style scoped>//编写样式
</style>
vue 的单文件组件是网页开发中 HTML、CSS 和 JavaScript 三种语言经典组合的自然延伸。<template>
、<script>
和<style>
三个块在同一个文件中封装、组合了组件的视图、逻辑和样式。
在src/components中定义一个demo01.vue组件,
<script setup></script><template><div><h1>Hello Demo01</h1></div></template><style scoped></style>
在App.vue中使用组件:
<script setup>
// 导入demo01组件
import demo01 from "./components/demo01.vue";
</script><template><!-- 使用demo01组件 --><demo01 />
</template><style scoped></style>
这样一个组件的使用就完成了。
3.1.4 Vite工程运行原理
以Vite项目为例,程序的入口为index.html,
<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite + Vue</title></head><body><!-- 定义一个div容器,作为Vue的渲染目标 --><div id="app"></div><!-- 导入main.js文件 --><script type="module" src="./src/main.js"></script></body></html>
main.js分析:
// 导入Vue的createApp函数
import { createApp } from 'vue'// 导入样式
import './style.css'// 导入App组件
import App from './App.vue'// 创建Vue应用实例
const app = createApp(App)// 注册组件
app.mount('#app')
1)分析main.js
每个 Vue 应用都是通过 createApp
函数创建一个新的 应用实例:
import { createApp } from 'vue'const app = createApp({/* 根组件选项 */
})
我们传入 createApp
的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。如果你使用的是单文件组件,我们可以直接从另一个文件中导入根组件。
import { createApp } from 'vue'// 从一个单文件组件中导入根组件
import App from './App.vue'// 创建一个Vue实例(根组件)
const app = createApp(App)
但大多数真实的应用都是由一棵嵌套的、可重用的组件树组成的。例如,一个待办事项 (Todos) 应用的组件树可能是这样的:
App (root component)
├─ TodoList
│ └─ TodoItem
│ ├─ TodoDeleteButton
│ └─ TodoEditButton
└─ TodoFooter├─ TodoClearButton└─ TodoStatistics
2)自定义根组件
(1)在index.html定义与Vue关联的标签
<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite + Vue</title></head><body><!-- 定义一个div容器,作为Vue的渲染目标 --><div id="app"></div><div id="show"></div><!-- 导入main.js文件 --><script type="module" src="./src/main.js"></script></body></html>
(2)定义根组件,在src目录下定义Show.vue:
<script setup></script><template><div><h1>Show</h1><p>我是Show组件</p></div></template><style scoped></style>
(3)在main.js中导入Show组件,然后将其注册到Vue中
// 导入Vue的createApp函数
import { createApp } from 'vue'// 导入样式
import './style.css'// 导入App组件
import App from './App.vue'
import Show from './Show.vue'// 创建Vue应用实例
const app = createApp(App)
const show = createApp(Show)// 注册组件
app.mount('#app')
show.mount('#show')
打开页面:
3.2 vue-cli
vue-cli 是 Vue 早期推出的一款脚手架,vue-cli诞生于2016年,伴随 Vue 2.x 发展。它使用 webpack 创建 Vue 项目,也可以选择安装需要的各种插件,比如 Vuex、VueRouter等。
vue-cli 用于创建 vue2 的项目;随着Vue的更新,官方也推出了@vue/cli 用于创建 vue3 的项目,当然也支持 vue2。
- Vue CLI 2.x:早期版本,基于 Webpack 模板生成项目,配置复杂。
- Vue CLI 3+:现代化版本,支持插件系统、图形化界面,配置更灵活。
对比如下:
命令 | 对应版本 | 状态 | 发布时间 |
---|---|---|---|
npm install vue-cli | Vue CLI 2.x | 已废弃 | 2016-2018 |
npm install @vue/cli | Vue CLI 3+ | 官方维护 | 2018 至今 |
vue-cli与@vue-cli核心功能对比:
功能 | vue-cli (2.x) | @vue/cli (3+) |
---|---|---|
项目初始化 | vue init webpack my-project | vue create my-project |
配置方式 | 直接修改 Webpack 配置 | 通过 vue.config.js 覆盖配置 |
插件系统 | 不支持 | 支持插件(如 Vue Router、Vuex) |
图形化界面 | 无 | 提供 vue ui 管理项目 |
依赖管理 | 固定模板 | 按需选择功能(TypeScript、测试等) |
vue-cli官网:
目前,在vue-cli官网已经明确说明:“现在官方推荐使用 create-vue 来创建基于 Vite 的新项目。另外请参考 Vue 3 工具链指南 以了解最新的工具推荐。”
vue-cli官网地址:https://cli.vuejs.org/zh/
3.2.1 vue-cli的使用
首先安装全局的@vue/cli命令(要保证没有安装@vue/cli):
npm install -g vue-cli
使用vue-cli初始化项目:
# 语法
vue init webpack my-project-name# 使用示例
vue init webpack vue-demo-2.0# 下面是项目的默认配置,全部直接回车(Yes)
? Project name vue-demo-2.0
? Project description A Vue.js project
? Author
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Set up unit tests Yes
? Pick a test runner jest
? Setup e2e tests with Nightwatch? Yes
? Should we run `npm install` for you after the project has been created? (recommended) npm
项目结构如下:
启动项目:
# 进入项目
cd vue-demo-2.0# 启动项目
npm run dev
访问:http://localhost:8080
3.3.2 @vue/cli的使用
首先安装全局的@vue/cli命令(要保证没有安装vue-cli):
npm install -g @vue-cli
然后使用vue命令创建一个项目:
vue create vue-demo-3.0# 选择vue的版本
Vue CLI v5.0.8
? Please pick a preset: (Use arrow keys)
> Default ([Vue 3] babel, eslint) # vue3Default ([Vue 2] babel, eslint) # vue2Manually select features
以下是使用@vue-cli创建的vue项目结构:
启动项目:
npm run serve
访问:http://localhost:8080
3.2 create-vue
@vue/cli和create-vue都是Vue的脚手架工具且都支持Vue3,但它们属于不同的版本和生态系统。两者最本质的区别是所采用的构建工具不一样,create-vue是基于Vite而@vue/cli是基于Webpack。
特性 | @vue/cli | create-vue |
---|---|---|
底层构建工具 | Webpack | Vite |
项目初始化方式 | 交互式选择配置 + 插件系统 | 极简配置 + 现代化预设 |
启动/构建速度 | 较慢 | 极快(10-100 倍提升) |
配置复杂度 | 高(需处理 Webpack) | 低(开箱即用,按需扩展) |
冷启动速度 | 需要完整打包所有文件,项目越大启动越慢。 | 基于浏览器原生 ESM,按需编译,秒级启动。 |
热更新 | 需重新打包部分模块,耗时 1-3 秒。 | 直接更新单个模块,毫秒级响应。 |
官方定位 | Vue 2 时代的主流工具 | Vue 3 官方推荐的新标准 |
未来维护 | 维护阶段,新特性较少 | 活跃开发,持续优化 |
总结下来就是create-vue性能、速度、配置复杂度等各方面都由于全方面优于@vue/cli。@vue/cli
虽然支持 Vue 3,但已不再作为主要发展方向。Vue 核心团队已将资源倾斜到 Vite 和 create-vue
,Vue 官网 推荐新项目使用 create-vue
。
创建create-vue项目:
npm create vue
选择合适的组件:
◆ 请选择要包含的功能: (↑/↓ 切换,空格选择,a 全选,回车确认)
│ ◻ TypeScript
│ ◻ JSX 支持
│ ◻ Router(单页面应用开发)
│ ◻ Pinia(状态管理)
│ ◻ Vitest(单元测试)
│ ◻ 端到端测试
│ ◻ ESLint(错误预防)
│ ◻ Prettier(代码格式化)
以下是使用create-vue创建的vue项目结构:
安装项目依赖:
npm install
启动项目:
npm run dev
访问:http://localhost:5173
相关文章:
(09)Vue脚手架的使用(Vite、vue-cli、create-vue)
本系列教程目录:Vue3Element Plus全套学习笔记-目录大纲 文章目录 第3章 Vue脚手架3.1 vite3.3.1 Vite使用1)创建Vite项目2)Vite项目打包 3.1.2 组件化开发3.1.4 Vite工程运行原理1)分析main.js2)自定义根组件 3.2 vue…...
Unity 将Excel表格中的数据导入到Mysql数据表中
1.Mysql数据表users如下: 2.即将导入的Excel表格如下: 3.代码如下: using System; using System.Data; using System.IO; using Excel; using MySql.Data.MySqlClient; using UnityEngine; using UnityEditor;public class ImportExcel {// …...
【QT】信号与槽中多个按钮(pushbutton)共用一个槽函数的两种实现方式
两种方法的对比 方法1:sender() 优点:代码简洁,无需额外参数 缺点:依赖运行时类型转换,安全性较低 适用场景:简单场景,少量按钮 方法2:Lambda (推荐) 优点:安全直观&…...
Python----深度学习(神经网络的过拟合解决方案)
一、正则化 1.1、正则化 正则化是一种用于控制模型复杂度的技术。它通过在损失函数中添加额外的项(正则 化项)来降低模型的复杂度,以防止过拟合。 在机器学习中,模型的目标是在训练数据上获得较好的拟合效果。然而,过…...
【金仓数据库征文】从 HTAP 到 AI 加速,KingbaseES 的未来之路
国产数据库早已实现 “可替代”,但要真正与国际头部厂商掰手腕,必须在 HTAP(Hybrid‑Transaction/Analytical Processing)与 AI 加速 两条技术赛道上实现跨越。KingbaseES 自 V8R3 调整为多进程架构后,历经 V8R6、KSOn…...
创建第一个Spring Boot项目
什么是Spring Boot 随着Spring的快速发展,项目中的XML文件越来越多,繁琐的配置以及,整合第三方框架的配置问题,导致大大增加了开发和部署的效率,使开发者无法专心于业务的开发。Spring Boot就相当于使Spring框架的脚手…...
Java—— 正则表达式 练习
需求: 请编写正则表达式验证用户输入的手机号码是否满足要求。 请编写正则表达式验证用户输入的邮箱号是否满足要求。 请编写正则表达式验证用户输入的电话号码是否满足要求。 验证手机号码 13112345678 13712345667 13945679027 139456790271 验证座机电话号码 02…...
Linux[指令与权限]
Linux指令与权限 Linux环境中,打包文件有多种 tar (打包/解包) 指令 tar -czvf 文件要打包到的位置 文件(打包并压缩到) tar -xzvf 文件(在当前目录下解压) tar选项 -c创建压缩文件 -z使用gzip属性压缩 -v展现压缩过程 -f后面使用新建文档名 -x不要新建,解压 -C 文件…...
MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典
专栏:MySQL数据库成长记 个人主页:手握风云 目录 一、简介 1.1. 为什么要使用联合查询 1.2. 多表联合查询时的计算 1.3. 示例 二、内连接 2.1. 语法 2.2. 示例 三、外连接 4.1. 语法 4.2. 示例 一、简介 1.1. 为什么要使用联合查询 一次查询需…...
【Redis】集合类型Set 常用命令详解
1. sadd - 添加 语法:sadd key value > sadd testset A 1 > sadd testset B 1 > sadd testset C 1 > sadd testset C # set的值不能重复 0 > smembers set1 # 查询指定set的所有值,乱序 1) "B" 2) "A" 3) "C&qu…...
React 5 种组件提取思路与实践
在开发时,经常遇到一些高度重复但略有差异的 UI 模式,此时我们当然会把组件提取出去,但是组件提取的方式有很多,怎么根据不同场景选取合适的方式呢?尤其时在复杂的业务场景中,组件提取的思路影响着着代码的可维护性、可读性以及扩展性。本文将以一个[详情]组件为例,探讨…...
第十五届蓝桥杯 2024 C/C++组 合法密码
目录 题目: 题目描述: 题目链接: 思路: substr函数: 思路详解: 代码: 代码详解; 题目: 题目描述: 题目链接: P10906 [蓝桥杯 2024 国 B] 合法密码 -…...
云原生时代的双轮驱动
在当今数字化浪潮汹涌澎湃的时代,企业 IT 主管、CIO、CTO 们肩负着引领企业乘风破浪、实现数字化转型的重任。而主数据平台与数据中台,宛如企业数字化征程中的双引擎,为企业发展注入强劲动力。 一、主数据与数据中台:企业数据世界…...
GD32F407单片机开发入门(六)定时器TIMER详解及实战含源码
文章目录 一.概要二.通用定时器内部结构1.时基单元2.时钟源3.输入捕获4.输出比较 三.通用定时器内部特色四.TIME定时器1ms中断例程五.工程源代码下载六.小结 一.概要 定时器就是计数器,应用在我们生活的方方面面,比如有闹钟、计时器等。在GD32F407VET6定…...
时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库
小T导读:胜软科技在石油石化行业中选择使用 TDengine 处理时序数据,不仅显著降低了运维数据库的成本,也大幅减少了存储空间的占用,实现了从原有的 40 多套 Oracle 数据库向仅 9 套 TDengine集群的精简替换。在迁移过程中ÿ…...
【问题解决】本机navicat连接云服务器mysql
一般情况下,当你使用navicat等工具连接云服务器会因为mysql的安全机制,导致无法连接root用户,但是在测试环境中,不考虑安全性的前提条件下,可以通过修改MySQL的配置文件来连接云服务器mysql的root用户。 选择数据库&am…...
STM32F407 的通用定时器与串口配置深度解析
在 STM32F407 芯片的开发过程中,通用定时器和串口的配置与使用是极为关键的技能点。本文将结合提供的代码示例,深入剖析这两个模块的配置流程、工作原理以及实际应用,助力开发者更好地掌握相关技术。 一、通用定时器 (一&#x…...
深入探究Linux项目自动化构建工具:make与Makefile
目录 引言 一、make与Makefile概述 1.1 背景 1.2 理解 二、make工作原理 2.1 查找Makefile 2.2 确定目标文件 2.3 处理文件依赖 三、Makefile实例分析 3.1 简单C程序示例 3.2 项目清理机制 四、结合行缓冲区概念的有趣现象 五、结语 引言 在Linux软件开发的世界里…...
【Hive入门】Hive基础操作与SQL语法:DDL操作全面指南
目录 1 Hive DDL操作概述 2 数据库操作全流程 2.1 创建数据库 2.2 查看数据库 2.3 使用数据库 2.4 修改数据库 2.5 删除数据库 3 表操作全流程 3.1 创建表 3.2 查看表信息 3.3 修改表 3.4 删除表 4 分区与分桶操作 4.1 分区操作流程 4.2 分桶操作 5 最佳实践与…...
STM32F103 “BluePill” 上的 DMA 原理与实践
摘要:本文深入浅出地介绍什么是 DMA(直接存储器访问),它的核心原理、硬件架构,以及在 STM32F103(BluePill)上常见的几种使用场景(ADC、UART、内存拷贝等)。通过对比 CPU 轮询、中断、DMA 三种方式的数据搬运效率,结合寄存器级和 HAL 库示例代码,并附带性能测试与优化…...
软考软件设计师30天备考指南
文章目录 一、考情分析(一)综合知识(二)案例分析 二、30天学习规划(一)第1 - 5天:基础夯实(二)第6 - 10天:核心知识突破(三)第11 - 15…...
比较:AWS VPC peering与 AWS Transit Gateway
简述: VPC 对等连接和 Transit Gateway 用于连接多个 VPC。VPC 对等连接提供全网状架构,而 Transit Gateway 提供中心辐射型架构。Transit Gateway 提供大规模 VPC 连接,并简化了 VPC 间通信管理,相比 VPC 对等连接,支持大量 VPC 的 VPC 间通信管理。 VPC 对等连接 AWS V…...
【AI大模型】MCP:AI应用的“超级扩展坞”
一、什么是MCP MCP(Model Context Protocol,模型上下文协议)是一种新兴的开放协议,于2024年11月由Anthropic公司(Claude的开发者)开源。它的核心目标是建立一个类似USB-C的标准化协议,统一AI模…...
线程封装
目录 makefile Thread.hpp main.cc 以面向对象的方式造轮子 #ifndef _THREAD_HPP__ // 如果没有定义过 _THREAD_HPP__ #define _THREAD_HPP__ // 则定义 _THREAD_HPP__// 这里是头文件的实际内容(类、函数声明等)#endif // 结束条件…...
【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战
在日常开发中,SQL 注入是一种常见但危害巨大的安全漏洞。如果你正在使用 MyBatis 或 MyBatis-Plus 进行数据库操作,这篇文章将带你系统了解:这两个框架是如何防止 SQL 注入的,我们又该如何写出安全的代码。 什么是 SQL 注入&#…...
智能穿戴的终极形态会是AR眼镜吗?
清晨的地铁里,戴着普通眼镜的小张正通过镜片查看实时导航路线,眼前的虚拟箭头精准指引换乘方向;手术室里,主刀医生透过镜片看到患者血管的3D投影,如同获得透视眼般精准避开危险区域;装修现场,设…...
ubantu18.04(Hadoop3.1.3)Hive3.1.2安装指南
说明:本文图片较多,耐心等待加载。(建议用电脑) 注意所有打开的文件都要记得保存。本文的操作均在Master主机下进行 第一步:准备工作 本文是在之前Hadoop搭建完集群环境后继续进行的,因此需要读者完成我之…...
Hive 多表查询案例
文章目录 前提条件Hive 多表查询案例JOIN案例JOIN查询数据准备1. 内连接(INNER JOIN)2. 左外连接(LEFT OUTER JOIN)3. 右外连接(RIGHT OUTER JOIN)4. 全外连接(FULL OUTER JOIN)5. 多…...
4.23刷题记录(栈与队列专题)
第一部分:基础知识 栈先进后出,队列先进先出栈用stack实现,主要函数有pop,push,top队列由queue或者deque实现,主要函数有front,back,push,pop,emplace&#…...
Python常用的第三方模块之【jieba库】支持三种分词模式:精确模式、全模式和搜索引擎模式(提高召回率)
Jieba 是一个流行的中文分词Python库,它提供了三种分词模式:精确模式、全模式和搜索引擎模式。精确模式尝试将句子最精确地切分,适合文本分析;全模式则扫描文本中所有可能的词语,速度快但存在冗余;搜索引擎…...
Redisson实战:分布式系统中的五大典型应用场景
引言 在分布式系统架构中,数据一致性、高并发控制和资源协调是开发者面临的核心挑战。Redisson作为基于Redis的Java客户端,不仅提供了丰富的分布式对象和服务,还简化了分布式场景下的编程模型。本文将通过实际代码示例,解析Redis…...
webrtc建立连接的过程
WebRTC 连接全过程:从零到视频通话的每一步 WebRTC 是个神奇的技术,让浏览器直接进行点对点(P2P)音视频通话或数据传输,不用每次都靠服务器中转。想知道 Alice 和 Bob 是怎么通过 WebRTC 建立视频通话的吗?…...
system verilog 语句 耗时规则
在 SystemVerilog 中,确实有一类语句是**不消耗仿真时间(zero simulation time)**的,我们一般叫它们: ✅ 零延迟语句(Zero-Time Statements) 🔹1. 什么是“不费时间”的语句? 这些语句在仿真时…...
【Docker】在Ubuntu平台上的安装部署
写在前面 docker作为一种部署项目的辅助工具,真是太好用了需要魔法,不然无法正常运行笔者环境:ubuntu22.04 具体步骤 更新系统包索引 sudo apt update安装必要依赖包 sudo apt install -y apt-transport-https ca-certificates curl softwa…...
2025年阅读论文的常用工具推荐
在快速发展的学术界,阅读和整理论文的能力对于研究者和学生来说至关重要。随着科技的进步,各种工具应运而生,帮助我们更高效地处理文献。本文将为您推荐一些2025年最常用的阅读论文工具,让您的学术之路更加顺畅。 1. SumiNote S…...
pod内部共享命名空间与k8s命名空间是一个东西吗?
文章目录 小知识-命名空间**下面着重介绍一下刚刚提到的内部命名空间**IPC NamespaceNetwork Namespace 本文摘自于我的免费专栏《Kubernetes从0到1(持续更新)》请多关注 小知识-命名空间 注意,首先我要强调一点,Kubernetes命名空…...
Linux笔记---进程间通信:匿名管道
1. 管道通信 1.1 管道的概念与分类 管道(Pipe) 是进程间通信(IPC)的一种基础机制,主要用于在具有亲缘关系的进程(如父子进程、兄弟进程)之间传递数据,其核心特性是通过内核缓冲区实…...
JAVA设计模式——(三)桥接模式
JAVA设计模式——(三)桥接模式(Bridge Pattern) 介绍理解实现武器抽象类武器实现类涂装颜色的行为接口具体颜色的行为实现让行为影响武器修改武器抽象类修改实现类 测试 适用性 介绍 将抽象和实现解耦,使两者可以独立…...
设计模式--工厂模式详解
工厂模式 作用: 实现了创建者与调用者的分离 详细分类 简单工厂模式 工厂方法模式 抽象工厂模式 OOP七大原则: 开闭原则:一个软件的实体应该对拓展开发,对修改关闭 依赖反转原则:要针对接口编程,不…...
每天五分钟深度学习PyTorch:图像的处理的上采样和下采样
本文重点 在pytorch中封装了上采样和下采样的方法,我们可以使用封装好的方法可以很方便的完成采样任务,采样分为上采样和下采样。 上采样和下采样 下采样(缩小图像)的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。 下采样( 放大图像)的…...
前端面试场景题
目录 1.项目第一次加载太慢优化 / vue 首屏加载过慢如何优化 2.说说了解的es6-es10的东西有哪些 ES6(ES2015)之后,JavaScript 新增了许多实用的数组和对象方法,下面为你详细介绍: 3.常见前端安全性问题 XSS&#…...
国际化不生效
经过我的重重检查 最终发现是 版本问题。 原本下载默认next版本cnpm install vue-i18nnext 下载 国际化插件 cnpm install vue-i18n^9.14.3 删除掉node_models,再重新加载包:cnpm install 这时候就可以正常显示了 国际化操作: en.js zh…...
新一代人工智能驱动医疗数智化:范式变革、实践方向及路径选择
人工智能(AI)正以前所未有的速度重构医疗健康行业的底层逻辑,从数据获取、知识建模到临床决策支持,AI不仅是“辅助工具”,更日益成为医疗生产力体系的核心引擎。随着大模型、计算平台和数智基础设施的迅猛发展,医疗数智化正进入从“点状创新”走向“系统重构”的深水区。…...
OpenCV 图形API(55)颜色空间转换-----将图像从 RGB 色彩空间转换为 I420 格式函数RGB2I420()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从 RGB 色彩空间转换为 I420 色彩空间。 该函数将输入图像从 RGB 色彩空间转换为 I420。R、G 和 B 通道值的常规范围是 0 到 255。 输出图…...
大模型安全吗?数据泄露与AI伦理的黑暗面!
大模型安全吗?数据泄露与AI伦理的黑暗面! 随着人工智能技术的飞速发展,尤其是大型语言模型(如GPT-3、BERT等)的出现,AI的应用场景越来越广泛,从智能客服到内容生成,从医疗诊断到金融…...
穿越链路的旅程:深入理解计算机网络中的数据链路层
一、引言 在计算机网络的七层模型中,数据链路层(Data Link Layer) 是连接物理世界与逻辑网络世界的关键一环。它位于物理层之上,网络层之下,负责将物理层的“比特流”转换成具有结构的数据帧,并确保数据在…...
《AI大模型应知应会100篇》第35篇:Prompt链式调用:解决复杂问题的策略
第35篇:Prompt链式调用:解决复杂问题的策略 摘要 在大模型应用中,单次提示的能力往往受限于上下文长度和任务复杂度。为了解决这些问题,Prompt链式调用应运而生。本文将深入探讨如何通过分解任务、设计逻辑链路、传递中间结果&am…...
管理100个小程序-很难吗
20公里的徒步-真难 群里的伙伴发起了一场天目山20公里徒步的活动,想着14公里都轻松拿捏了,思考了30秒后,就借着春风带着老婆孩子就出发了。一开始溪流清澈见底,小桥流水没有人家;青山郁郁葱葱,枯藤老树没有…...
算法恢复训练-Part01-数组
注:参考的某算法训练营的计划 核心注意点 在 Golang(和大多数主流语言,如 C/C)中,二维数组按行访问的效率更高。因为它符合 Go 的内存连续存储结构,能提高 CPU Cache 命中率,减少内存跳跃带来…...
软件黑盒与白盒测试详解
黑盒测试与白盒测试的核心对比 一、定义与核心目标 黑盒测试 定义:将程序视为“黑盒”,仅通过输入和输出验证功能是否符合需求规格,不关注内部代码逻辑。目标:确保功能完整性、输入输出正确性及用户体验,例如验证购物车…...