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

前端vue3项目学习

鸽王经过一个多月的学习(断断续续吧,毕竟还有其他杂事),学的昏天黑地,终于把主线捋的差不多了。只能说,前端真不是人学的,涉及的语言语法太杂乱了,入门真的太难了。而后端,借助已有的成熟框架,上手比前端容易多了。(实际上我只学的一知半解,很多从未见过的语法特性,搞得人头大。)
在此期间,AI发展给我的学习带来了极大的便利,也推荐大家在AI辅助下学习。
ps: 回想自己还有很多开的坑,都没有补上,就汗流浃背了。
springbooot : https://start.spring.io/

目录

  • 1 技术说明
    • 1.1 为什么会有这么多技术
      • 1.1.1 vite 前端构建工具(代码编译、依赖预构建、开发服务器支持)
      • 1.1.2 vue(代码框架)
      • 1.1.3 vite编译vue文件的流程(AI回答)
  • 2 前端项目结构概览
    • 2.1 index.html
    • 2.2 main.js
    • 2.3 App.vue
    • 2.4 vite.config.js
    • 2.5 jsconfig.json
    • 2.6 package.json
    • 2.7 node_modules
  • 3 基于VUE的前端源码组成(src文件夹下的)
    • 3.1 router/index.js
    • 3.2 axios
    • 3.3 stores/index.js
    • 3.4 vue组件
  • 4 语法补充(一些新的语法特性记录)(主要是javaScript)
    • 4.1 Promise
    • 4.2 import/export
  • 5. HTML DOM(文档对象模型)
  • 6.

1 技术说明

  • vue
  • vite
  • axios
  • pinna

涉及html、css、javascript等多种语言。

vite通过npm安装

npm install -g create-vite

pnpm 安装(需要管理员权限)

 npm install -g pnpm 

1.1 为什么会有这么多技术

主要还是各种技术发展。这里只做简单介绍。
实际上,你无需过度关注其中的原理和实现,因为web开发的技术更新换代十分迅速,如果你只是一个应用者,化较多的时间在研究一些即将过时的技术是得不偿失的。

实际上,我们只需要知道捋清楚启动过程,

1.1.1 vite 前端构建工具(代码编译、依赖预构建、开发服务器支持)

官网
創建項目

pnpm create vite

ES(ECMAScript)‌ 是 JavaScript 语言的标准化规范,由 ECMA 国际组织制定。JavaScript 是 ES 的一种实现,两者关系类似于“标准”与“具体实现”‌。

2016年开始,浏览器才逐步支持ES6,而在此之前JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。

  • 浏览器支持ES后,也就是说HTML中可以直接写JS,具体方式如下:
<script type="module" src="/src/main.js"></script>
  • 按需构建项目,也就是说,只有当页面加载出来的时候,才会执行对应的代码。

如webpack 工具就是先将所有的源代码进行打包,打包后运行main.js文件。

Vite 是一款面向现代浏览器的前端构建工具,其核心目标是通过 ‌原生 ESM(ECMAScript Modules)‌ 和 ‌按需编译‌ 大幅提升开发效率,并在生产环境提供高性能打包。

vite的特性

  • 开发模式基于原生 ESM 模块,按需编译,避免全量打包‌
  • 生产构建依赖 Rollup,输出高性能代码‌

1.1.2 vue(代码框架)

vue是前端框架。众所周知,浏览器上运行的是html文件。vue组件相当于html的一个变体,更适合程序员编程开发。

而将vue转化为标准的JavaScript代码是vite的功能。
vue3,在一个单文件组件(SFC)的vue组件中,就包含了html、css、javascript三部分。

<script setup>
</script><template>
</template><style scoped>
</style>

1.1.3 vite编译vue文件的流程(AI回答)

Vite 通过 ‌原生 ESM 按需编译‌ 和 ‌插件机制‌ 实现 Vue 单文件组件(SFC)的编译

一、依赖预构建与插件加载‌
‌依赖预构建‌
Vite 启动时使用 esbuild 预转换第三方依赖(如 vue)为 ESM 格式,加速后续编译效率‌。

缓存机制:预构建结果存储在 node_modules/.vite,避免重复处理‌。
‌@vitejs/plugin-vue 插件激活‌
该插件是 Vue SFC 编译的核心,负责拦截 .vue 文件请求并触发以下操作:

通过 buildStart 初始化编译环境;
在 transform 阶段解析并转换 SFC 内容‌。
‌二、SFC 解析与编译‌
‌模板(Template)编译‌
‌AST 生成‌:解析器将== < template > == 内容转换为抽象语法树(AST),标记元素、属性及动态表达式‌。
‌渲染函数生成‌:AST 经过转换器优化后,由代码生成器输出 JavaScript 渲染函数(如 render())‌57。
‌动态编译‌:支持运行时编译模板字符串(如 v-html 动态内容)‌。

脚本(Script)处理‌
‌TypeScript/Babel 转换‌:通过 @vitejs/plugin-vue 调用 @babel/core 或 esbuild 处理 < script > 中的代码,支持 TS 语法和语法降级‌。
‌组合式 API 支持‌:自动处理 setup 语法糖,转换为标准 JavaScript 代码‌。

‌样式(Style)处理‌
‌CSS 预处理器‌:内置支持 Sass/Less,编译 < style > 为 CSS,并通过 < style > 标签注入页面‌。
‌模块化(Scoped CSS)‌:通过 PostCSS 添加哈希属性(如 data-v-xxx),实现样式局部作用域‌。

2 前端项目结构概览

在这里插入图片描述

2.1 index.html

在vue3中,index.html是始终运行的文件,所有的组件都是挂在在这个DOM树上的。

<!DOCTYPE html>
<html lang=""><head><meta charset="UTF-8"><link rel="icon" href="/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vite App</title></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

这里面有两行关键代码:
(1) id 指定了vue组件的挂载点。一個標簽被稱爲一個DOM,組件是挂在這個DOM上的。

<div id="app"></div> 

与main.js中,xxx.mount('#app') 中的#appapp对应(实际上,此处不一定要写app,只要 id=“kkk”, .mount(‘#kkk’)对应就行。

(2)module指定了vue入口代码

<script type="module" src="/src/main.js"></script>

此处,<script type="module">是在ES模块的方法(浏览器已经广泛支持)

2.2 main.js

2.3 App.vue

根组件

2.4 vite.config.js

该文件是面向vite的,加载vite的相关配置。只不过配置文件是用js写的。
vite是node下的一个开发服务器。vite运行时,会自动解析项目根目录下名为vite.config.js的配置文件。

export default defineConfig()

defineConfig 用于定义vite配置。
入口参数为对象 {}

补充:js用{}标识一个对象,无需集合数据类型。键值对形式组成,逗号分隔。

{
server:{},//后端服务器相关配置
plugins:[vue()],//使用vue插件
resolve:{//模块解析相关配置alias:{'@': fileURLToPath(new URL('./src', import.meta.url)) //将@别名指向src目录}
},
}

这里举一个案例:

// 引入 Node.js 的 URL 模块中的 fileURLToPath 和 URL 函数
import { fileURLToPath, URL } from 'node:url';// 引入 Vite 的 defineConfig 函数,用于定义 Vite 配置
import { defineConfig } from 'vite';
// 引入 Vite 的 Vue 插件
import vue from '@vitejs/plugin-vue';// 使用 defineConfig 函数定义 Vite 配置,并导出默认配置对象
export default defineConfig({// 服务器配置server: {port: 5173, //前端的开发服务器端口,默认5173open: true // 启动时自动打开浏览器,默认false// 代理配置,用于将本地开发服务器的请求转发到其他服务器。proxy: {// 可以配置多个代理,这里只配置了一个 '/api'// 配置 /api 开头的请求代理 (后端的连接信息)'/api': {// 目标服务器地址target: 'http://localhost:8080',// 是否改变请求的原点(Origin)changeOrigin: true,// 重写请求路径,将 /api 开头替换为空字符串rewrite: (path) => path.replace(/^\/api/, ''),},},},// 插件配置,用于引入 Vite 插件plugins: [// 引入 Vue 插件vue(),],// 解析配置,用于配置模块解析选项resolve: {// 配置别名,用于简化模块导入路径alias: {// 将 '@' 别名映射到 src 目录的绝对路径'@': fileURLToPath(new URL('./src', import.meta.url))}}
});

2.5 jsconfig.json

jsconfig,json主要是针对javascript编辑及处理是的一个配置文件,在该文件下,同样可以配置路径别名。
通常来说,这里的路径别名设置最好与vite.config.js中配置保持一致。(优先级vite.config.js更高)

{"compilerOptions": {"paths": {"@/*": ["./src/*"]}},"exclude": ["node_modules", "dist"]
}

2.6 package.json

注意:该文件不可手动需改,是通过npm install自动生成。还有一个pnpm-lock.yaml文件,可以用于版本锁定。都是自动生成的,不要手动修改。

定义项目 元数据、依赖关系 和 脚本命令
元数据如:name、version等
依赖关系:生产依赖dependencies 开发依赖devDependencies
脚本命令:scripts中的内容

{"name": "chart_vue","version": "0.0.0","private": true,"type": "module","scripts": {"dev": "vite","build": "vite build","preview": "vite preview"},"dependencies": {"pinia": "^3.0.1","vue": "^3.5.13","vue-router": "^4.5.0"},"devDependencies": {"@vitejs/plugin-vue": "^5.2.1","vite": "^6.2.1","vite-plugin-vue-devtools": "^7.7.2"}
}

2.7 node_modules

该文件夹下全是依赖包,通过命令行运行pnpm installnpm install安装,无需手动作任何修改。

3 基于VUE的前端源码组成(src文件夹下的)

axios、router、store(Pinia),这几个是必备的。

3.1 router/index.js

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'home',component: HomeView,},{path: '/about',name: 'about',// route level code-splitting// this generates a separate chunk (About.[hash].js) for this route// which is lazy-loaded when the route is visited.component: () => import('../views/AboutView.vue'),},],
})export default router

一般定义在./src/router/index.js中
导入的时候,可直接简写为: (这是因为js的默认查找规则,模块系统会自动查找./router文件夹下一个名为index.js的文件,进一步,如果import xxx 在index.js文件中并不存在,xxx将被赋予文件下的export default的对象。)

import router from './router'

一般,router用createRouter定义,并且,在页面跳转时需要设置 路由导航受委。监听页面跳转。

<RouterView/> 

上述标签相当于占位符,这个位置显示的内容有浏览器地址栏决定。
浏览器地址和页面之间的映射关系定义在路由router中。

3.2 axios

与后端交互
响应拦截器
官网:https://www.axios-http.cn/docs/example
axios是基于Promise的网路请求库(具体而言,是HTTP)

3.3 stores/index.js

状态管理器。这里用到了工厂、单例的设计模式。Pinia官网

3.4 vue组件

SPA(Single Page Application,单页应用)是一种特别的网页应用程序,它通过加载一个单个 HTML 页面并在用户与应用程序交互时动态更新该页面的相关部分,而不是加载新的页面来提供与传统网页应用程序类似的用户体验。

4 语法补充(一些新的语法特性记录)(主要是javaScript)

4.1 Promise

参考官网1
参考官网2

Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。本质上 Promise 是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。

4.2 import/export

导入导出,默认导出,别名这些,
import {xxx } from aaa
import xxx from aaa
这两个区别就是,下一个为是默认的导入,上一个是通过名称导入。

5. HTML DOM(文档对象模型)

https://www.w3school.com.cn/js/js_htmldom.asp
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)DOM

6.

在 HTML 和 XML 等标记语言中,‌标签(Tag)‌、‌元素(Element)‌ 和 ‌属性(Attribute)‌ 是三个紧密相关但职责不同的核心概念。以下是它们的定义、区别和关系:

‌1. 标签(Tag)‌
‌定义‌:
标签是语法标记,用尖括号 < > 包裹,用于标识元素的‌开始‌和‌结束‌。
‌类型‌:
‌开始标签‌:如

,表示元素的起始。
‌结束标签‌:如
,表示元素的终止。
‌自闭合标签‌:如 或
,用于没有内容的元素(空元素)。
‌作用‌:
标签定义了元素的边界,但不包含额外信息。
‌2. 元素(Element)‌
‌定义‌:
元素是由 ‌开始标签 + 内容 + 结束标签‌ 组成的完整结构(自闭合标签例外)。它是文档的‌逻辑单元‌。
‌组成‌:
html
Copy Code

Hello World
开始标签:
内容:Hello World 结束标签:
‌作用‌: 元素代表文档中的一个独立部分(如段落、图片、按钮等)。 ‌3. 属性(Attribute)‌ ‌定义‌: 属性是附加在‌开始标签‌中的键值对,用于提供元素的额外信息或配置。 ‌语法‌: 示例: 链接 ‌作用‌: 配置元素的行为(如 href 定义超链接地址)。 控制样式(如 class 或 id 用于 CSS 选择)。 提供元数据(如 alt 描述图片内容)。

相关文章:

前端vue3项目学习

鸽王经过一个多月的学习&#xff08;断断续续吧&#xff0c;毕竟还有其他杂事&#xff09;&#xff0c;学的昏天黑地&#xff0c;终于把主线捋的差不多了。只能说&#xff0c;前端真不是人学的&#xff0c;涉及的语言语法太杂乱了&#xff0c;入门真的太难了。而后端&#xff0…...

ActiveMQ 性能优化与网络配置实战(二)

五、性能优化实战 5.1 基础配置调整 5.1.1 增加并发消费者 在 ActiveMQ 中&#xff0c;增加并发消费者是提高消息处理效率的重要手段之一。通过配置多个消费者并行处理消息&#xff0c;可以充分利用系统资源&#xff0c;加快消息的消费速度&#xff0c;从而提高系统的整体吞…...

Python 函数装饰器和闭包(装饰器基础知识)

本章内容&#xff1a; Python 如何计算装饰器句法 Python 如何判断变量是不是局部的 闭包存在的原因和工作原理 nonlocal 能解决什么问题 掌握这些基础知识后&#xff0c;我们可以进一步探讨装饰器&#xff1a; 实现行为良好的装饰器 标准库中有用的装饰器 实现一个参数化装饰器…...

“Everything“工具 是 Windows 上文件名搜索引擎神奇

01 Everything 和其他搜索引擎有何不同 轻量安装文件。 干净简洁的用户界面。 快速文件索引。 快速搜索。 快速启动。 最小资源使用。 轻量数据库。 实时更新。 官网&#xff1a;https://www.voidtools.com/zh-cn/downloads/ 通过网盘分享的文件&#xff1a;Every…...

【Machine Learning Q and AI 读书笔记】- 04 彩票假设

Machine Learning Q and AI 中文译名 大模型技术30讲&#xff0c;主要总结了大模型相关的技术要点&#xff0c;结合学术和工程化&#xff0c;对LLM从业者来说&#xff0c;是一份非常好的学习实践技术地图. 本文是Machine Learning Q and AI 读书笔记的第4篇&#xff0c;对应原…...

linux下安装ollama网不好怎么办?

文章目录 前言kkgithub下载脚本,而不是直接运行修改脚本修改权限还是不行?前言 今天想在linux上面更新一下ollama,于是去到官网: https://ollama.com/download/linux linux下安装ollama还是挺简单的: curl -fsSL https://ollama.com/install.sh | sh我也是特别嗨皮地就…...

(A题|支路车流量推测问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…...

RDMA高性能网络通信实践

RDMA高性能网络通信实践 一、背景介绍二、方法设计A.实现方案B.关键技术点三、代码及注释四、注意事项一、背景介绍 远程直接内存访问(RDMA)技术通过绕过操作系统内核和CPU直接访问远程内存,实现了超低延迟、高吞吐量的网络通信。该技术广泛应用于高性能计算、分布式存储和…...

【LeetCode Hot100】图论篇

前言 本文用于整理LeetCode Hot100中题目解答&#xff0c;因题目比较简单且更多是为了面试快速写出正确思路&#xff0c;只做简单题意解读和一句话题解方便记忆。但代码会全部给出&#xff0c;方便大家整理代码思路。 200. 岛屿数量 一句话题意 求所有上下左右的‘1’的连通块…...

图论---有向图的强连通分量(Tarjan求SCC)

强连通分量作用&#xff1a;有向图——>&#xff08;缩点&#xff09;有向无环图&#xff08;DAG&#xff09; 缩点&#xff1a;将所有连通的分量缩成一个点。 有向无环图作用/好处&#xff1a;求最短路/最长路 可以递推&#xff0c;按照拓扑图从前往后递推. x 是否在某个…...

2025年- H17-Lc125-73.矩阵置零(矩阵)---java版

1.题目描述 2.思路 &#xff08;1&#xff09;计算矩阵的行数 &#xff08;2&#xff09;计算矩阵的列数 &#xff08;3&#xff09;设计一个行列的bool数组 &#xff08;4&#xff09;遍历矩阵&#xff08;二维数组&#xff09;&#xff0c;如果遇到元素0&#xff0c;则把…...

【信息系统项目管理师-论文真题】2023下半年论文详解(包括解题思路和写作要点)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题(第一批):论信息系统项目的干系人管理1、写作要点2、解题思路项目干系人管理的过程和执行要点项目中所有干系人如何进行分类管理?试题(第二批):论信息系统项目的工作绩效域1、写作要点2、解题思路绩…...

分享5款开源、美观的 WinForm UI 控件库

前言 今天大姚给大家分享5款开源、美观的 WinForm UI 控件库&#xff0c;助力让我们的 WinForm 应用更好看。 WinForm WinForm是一个传统的桌面应用程序框架&#xff0c;它基于 Windows 操作系统的原生控件和窗体。通过简单易用的 API&#xff0c;开发者可以快速构建基于窗体…...

微软推出数款Phi 4“开放式”人工智能模型

微软周三推出了几款新的“开放式”人工智能模型&#xff0c;其中功能最强大的模型至少在一个基准测试上可与 OpenAI 的 o3-mini 相媲美。所有新的授权模型——Phi 4 mini reasoning、Phi 4 reasoning 和 Phi 4 reasoning plus——都是“推理”模型&#xff0c;这意味着它们能够…...

Python实例题:Python实现Python解释器

目录 Python实例题 题目 实现思路 代码实现 代码解释 词法分析器&#xff08;Lexer&#xff09;&#xff1a; 词法单元类&#xff08;Token&#xff09;&#xff1a; 抽象语法树节点类&#xff08;AST&#xff09;&#xff1a; 语法分析器&#xff08;Parser&#xff…...

【IP101】图像滤波技术详解:从均值滤波到高斯滤波的完整指南

&#x1f31f; 图像滤波魔法指南 &#x1f3a8; 在图像处理的世界里&#xff0c;滤波就像是给图片"美颜"的魔法工具。让我们一起来探索这些神奇的滤波术吧&#xff01; &#x1f4d1; 目录 1. 均值滤波&#xff1a;图像的"磨皮"大法2. 中值滤波&#xff1…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(六)

个人笔记整理---仅供参考 第六章项目管理概论 6.1PMBOK的发展 6.2项目基本要素 组织过程资产指的是项目上的&#xff0c;国产数据库的使用----安保和安全指的是环境因素 6.3项目经理的角色 6.4价值驱动的项目管理知识体系...

算法-堆、排序算法、矩阵乘法

满二叉树、完全二叉树 二叉树遵循下面的规律&#xff0c;当前节点i&#xff08;但是其实就是逐级填充&#xff09;: 左节点为 ix2右节点为 i*21父节点为 [i/2] 向下取整 使用数组表示二叉树&#xff1a; &#xff08;二叉树的深度自上而下&#xff0c;高度自下…...

Java 进阶--集合:告别数组的“僵硬”,拥抱灵活的数据容器

作者&#xff1a;IvanCodes 发布时间&#xff1a;2025年5月1日&#x1fae1; 专栏&#xff1a;Java教程 大家好&#xff01;&#x1f44b; 还记得我们上次聊的数组 (Array) 吗&#xff1f;它很基础&#xff0c;性能也不错&#xff0c;但有个致命的缺点&#xff1a;长度一旦定…...

Python 数据智能实战 (6):用户评论深度挖掘

写在前面 —— 从繁杂评论到精准洞察:主题发现与情感趋势分析,驱动产品优化与体验提升 在上篇内容中,我们学习了如何利用 LLM 提升用户分群的精度,以及如何超越传统购物篮分析,挖掘商品间的语义关联。今天,我们将聚焦于电商领域 价值密度最高 的非结构化数据之一——用…...

podman/docker国内可用的docker镜像源(2025-05)

一、添加Docker国内镜像 1、修改 /etc/docker/daemon.json 设置 registry mirror&#xff0c;具体命令如下: sudo vim /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me",&q…...

机器人--底盘

机器人底盘 底盘是机器人传感器和机器人主机的载体&#xff0c;也是移动机器人的基本形式。移动机器人通常可以采用轮式和足式进行移动。 也就是机器人底盘可以分为轮式底盘和足式底盘。 足式底盘控制复杂&#xff0c;这里只讨论轮式底盘。 底盘运动学模型 轮式机器人底盘按…...

Seata服务端同步提交事务核心源码解析

文章目录 前言一、doGlobalCommit&#xff08;同步提交&#xff09;2.1、closeAndClean()2.2、changeGlobalStatus2.3、doGlobalCommit2.3.1、findGlobalSession 总结 前言 本篇介绍Seata服务端TC如何驱动RM提交事务。 一、doGlobalCommit&#xff08;同步提交&#xff09; doG…...

2025五一杯B题五一杯数学建模思路代码文章教学: 矿山数据处理问题

完整内容请看文章最下面的推广群 问题1. 根据附件1中的数据和&#xff0c;建立数学模型&#xff0c;对数据A进行某种变换&#xff0c;使得变换后的结果与数据尽可能接近。计算变换后的结果与数据的误差&#xff0c;并分析误差的来源&#xff08;如数据噪声、模型偏差等&#xf…...

C++11新特性_自动类型推导

decltype 和 auto 均为 C 里用于类型推导的关键字&#xff0c;不过它们在使用方式、推导规则和应用场景上存在显著差异。下面为你详细介绍它们的区别&#xff1a; 1. 推导依据 auto&#xff1a;它依据变量的初始化表达式来推导类型。也就是说&#xff0c;auto 定义的变量必须有…...

【AI论文】ReasonIR:为推理任务训练检索器

摘要&#xff1a;我们提出了ReasonIR-8B&#xff0c;这是第一个专门针对一般推理任务进行训练的检索器。 现有的检索器在推理任务上表现出的收益有限&#xff0c;部分原因是现有的训练数据集侧重于与直接回答它们的文档相关的简短事实查询。 我们开发了一个合成数据生成管道&am…...

嵌入式AI还是一片蓝海

发现其实还是挺多人关注嵌入式和人工智能交叉领域的&#xff0c;随便一个问题&#xff0c;浏览量就27万了&#xff0c;但是这方面的内容确实少得可怜……所以干脆我自己来补点干货。 推荐一本最近很热门的新书——《边缘人工智能&#xff1a;用嵌入式机器学习解决现实问题》。 …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(13): ておきます ています & てあります

日语学习-日语知识点小记-构建基础-JLPT-N4阶段&#xff08;13&#xff09;&#xff1a; ておきます &ています &#xff06; てあります 。 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰 2、知识点&#xff08;1&#xff09;&#x…...

CMake管理外部依赖的模块

在 CMake 中&#xff0c;FetchContent 和 ExternalProject 都是管理外部依赖的模块&#xff0c;但它们的 设计目标、使用场景和执行时机 有本质区别。以下通过对比表格、代码示例和场景分析详细说明它们的区别。 核心区别对比表 特性FetchContentExternalProject执行阶段配置阶…...

[计算机科学#7]:CPU的三阶段,取指令、解码、执行

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a;本文详细介绍了CPU的工作原理&#xff0c;包括其结构…...

向量数据库和关系型数据库的区别,优点,缺点和典型应用场景

向量数据库与关系型数据库的全面对比 向量数据库和关系型数据库是两种截然不同的数据管理系统&#xff0c;各自针对特定的数据模型和查询模式进行了优化。随着人工智能和大数据技术的发展&#xff0c;向量数据库作为新兴的数据库类型&#xff0c;在处理非结构化数据方面展现出…...

《跨越边界:探索跨端框架中通用状态管理方案设计》

一款应用往往需要在多个终端&#xff0c;如Web、移动端、桌面端等同时运行&#xff0c;以满足用户多元化的使用场景。在这复杂的跨端开发领域中&#xff0c;状态管理堪称关键枢纽&#xff0c;直接关乎应用的性能、稳定性以及开发与维护的效率。如何设计一套通用的状态管理方案&…...

PHP之CURL通过header传参数及接收

一、传参数之冒号 注意一点&#xff0c;这里的header数据不是KV结构&#xff0c;而是一个一维数组。 看清楚&#xff0c;注意一点&#xff0c;是这样的结构&#xff1a; $ch curl_init(); $headers [X-Custom-Header: value123,Authorization: Bearer your_token_here // …...

【C++】brpc安装

brpc安装教程 环境&#xff1a;Ubuntu24.04 1 简单安装 即安装到系统环境下&#xff0c;依赖也是依赖apt安装。 官方参考教程 依赖准备 安装依赖&#xff1a; sudo apt-get install -y git g make libssl-dev libgflags-dev libprotobuf-dev libprotoc-dev protobuf-com…...

从0开始的c++知识讲解之字符串(1)

作者作为新手&#xff0c;对于知识的讲解也是边输出内容也是边学习&#xff0c;如有缺陷&#xff0c;请多海涵&#xff0c;但同样&#xff0c;我会帮助你从新手视角看到新手的疑惑&#xff0c;并帮助你解决此疑惑 一&#xff0c;开宗明义&#xff0c;立意先行 string在C里有可…...

Linux 第六讲 --- 工具篇(一)yum/apt与vim

前言&#xff1a; 经过前五讲对Linux基础指令与权限系统的系统学习&#xff0c;相信你已经能在命令行中自如地穿梭于文件丛林&#xff0c;精准调配权限密钥。但真正的Linux玩家&#xff0c;绝不会止步于基础操作的重复劳作。 从今天起&#xff0c;我们将打开Linux的"瑞士…...

xml 和 yaml 的区别

XML 和 YAML/YML 是两种常用的数据序列化格式&#xff0c;用于存储和读取结构化数据。以下是它们的核心区别和使用方法&#xff1a; 1. 格式特性对比 特性XMLYAML/YML语法复杂度标签嵌套&#xff0c;结构严格缩进分层&#xff0c;更简洁可读性较低&#xff08;冗余标签&#…...

1.67g 雨晨 22635.5305 Windows 11 企业版 23H2 极速增强版

五一特别制作 &#xff08;主要更新简述&#xff09; 全程由最新YCDISM2025装载制作 1、可选功能&#xff1a; 添加&#xff1a; Microsoft-Windows-LanguageFeatures-Basic-en-us-Package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package 2、功能增强&a…...

【C++】类和对象(中)——默认成员函数详解(万字)

文章目录 上文链接类的默认成员函数1. 构造函数(1) 什么是构造函数(2) 构造函数的使用 2. 析构函数(1) 什么是析构函数(2) 析构函数的使用(3) 小练习 3. 拷贝构造函数(1) 什么是拷贝构造函数(2) 拷贝构造函数的使用 4. 赋值运算符重载(1) 运算符重载(2) 运算符重载的简单应用(3…...

Ubuntu18 登录界面死循环 Ubuntu进不了桌面

今天碰到这个问题&#xff0c;真是把我恶心到了 网上很多方法都不靠谱&#xff0c;最后我还是自己摸索出一个方法 先进入终端 开机后在登陆界面按下shift ctrl F1&#xff08;或者F2&#xff0c;一直按&#xff09;进入tty命令行终端登陆后输入(本人的用户名为hp&#xff…...

caffe适配cudnn9.6.0(ai修改代码踩坑)

caffe适配cudnn&#xff1a;https://github.com/dyc2424748461/caffe &#xff08;测试一下&#xff0c;成没成&#xff0c;反正我看到它用gpu了&#x1f636;&#xff09; 因为突发奇想&#xff0c;想要玩easymocap&#xff0c;先是简单使用media跑通了一下&#xff0c;然后过…...

【MySQL数据库】视图

1&#xff0c;视图的基本介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。与真实表一样的是&#xff0c;视图包含带有名称的列和行数据&#xff1b;与真实表不一样的是&#xff0c;视图本身并不在数据库中存储数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化…...

Linux日常使用与运维的AI工具全景调研:效率革命的终极指南

Linux日常使用与运维的AI工具全景调研:效率革命的终极指南 引言:当Linux遇上AI,运维世界正在发生什么? 作为一名Linux系统管理员,你是否还在为以下问题困扰: 深夜被报警短信惊醒,却要手动排查复杂的系统故障?面对海量日志文件,像大海捞针一样寻找关键错误信息?重复…...

Linux——线程(3)线程同步

一、线程同步的引入 通过上面的抢票系统我们发现&#xff0c;有的线程&#xff0c;进行工作&#xff08;挂锁&#xff09;&#xff0c;当其马上结束工作&#xff08;解锁&#xff09;&#xff0c;发现外面有很多线程在排队等着加锁执行任务&#xff0c;这个线程解锁后就立马给…...

Redis实现分布式锁

分布式锁是分布式系统中解决资源竞争问题的重要机制。Redis凭借其高性能和原子性操作&#xff0c;成为实现分布式锁的热门选择。本文将详细介绍如何使用Java和Redis实现分布式锁&#xff0c;并重点讲解如何通过Lua脚本保证锁操作的原子性。 一、分布式锁的基本要求 一个可靠的…...

JavaScript如何实现类型判断?

判断一个数据的类型&#xff0c;常用的方法有以下几种&#xff1a; typeofinstanceofObject.prototype.toString.call(xxx) 下面来分别分析一下这三种方法各自的优缺点 typeof typeof的本意是用来判断一个数据的数据类型&#xff0c;所以返回的也是一个数据类型。但是会遇到下…...

Spring MVC 与 FreeMarker 整合

以下是 Spring MVC 与 FreeMarker 整合的详细步骤&#xff0c;包含配置和代码示例&#xff1a; 1. 添加依赖 在 pom.xml 中引入 Spring MVC 和 FreeMarker 的依赖&#xff08;以 Maven 为例&#xff09;&#xff1a; <!-- Spring Web MVC --> <dependency><gr…...

设计模式简述(十五)观察者模式

观察者模式 描述基本组件使用 描述 观察者模式&#xff0c;顾名思义就是一个对象观察着其他对象&#xff0c;一旦被观察的对象发生变化时&#xff0c;观察者对象也要做出相应动作。 其中&#xff0c;被观察者持有观察者的引用。由观察者主动注入被观察者内&#xff08;有点像…...

用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]

目录 前言一、现实场景1.1 手机相册的照片管理1.2 照片分类的需求 二、技术映射2.1 数组与照片分类的对应关系2.2 数组索引与照片标签的类比 三、知识点呈现3.1 数组的基本概念3.2 数组在编程中的重要性3.3 数组的定义与初始化3.4 数组的常见操作&#xff08;增删改查&#xff…...

字符串格式漏洞-[第五空间2019 决赛]PWN5

之前其实也写了一篇&#xff0c;现在再来看。又有新的收获了&#xff0c;于是记录一下 前置知识 格式化字符串漏洞详解-CSDN博客 讲得很清楚&#xff0c;我就不照猫画虎了 实践 main函数 首先先办法泄露我们输入的地址 from pwn import * elfpathlevel0 # ioprocess(elfp…...