21道关于Vue3的面试题及其解析
Vue 3是一种流行的JavaScript框架,它是Vue.js的第三个主要版本,于2020年9月18日正式发布。关于Vue
3的一些关键信息:
文章目录
- 1. 性能优化
- 2. 组合式API(Composition API)
- 3. 响应式系统改进
- 4. 更好的TypeScript支持
- 5. 其他新特性
- 6. 兼容性与迁移
- 7.具体相关试题
- 1. 什么是Vue 3?
- 2. Vue 3相比Vue 2有哪些主要改进?
- 3. 什么是Composition API?
- 4. Composition API与Options API有什么区别?
- 5. 如何在Vue 3中使用TypeScript?
- 6. Vue 3中的响应式系统是如何工作的?
- 7. 什么是Proxy?它与Object.defineProperty有什么区别?
- 8. Vue 3中的虚拟DOM优化了哪些方面?
- 9. 什么是Tree-shaking?它在Vue 3中如何工作?
- 1. Tree-shaking 在 Vue 3 中的工作方式
- 2. 举例说明
- 10. Vue 3中的组件生命周期钩子有哪些变化?
- 11. 如何在Vue 3项目中进行性能优化?
- 12. Vue 3中的Teleport是什么?它的用途是什么?
- 13. 请解释Vue 3中的响应式系统的工作原理。
- 14. Vue 3中的Suspense是什么?如何使用它来处理异步组件?
- 15. Vue 3中的Fragment是什么?它的用途是什么?
- 16. Vue 3中的工程化工具Vite是什么?它有什么优势?
- 17. Vue 3的命令变化有哪些?
- 18. Vue 3的项目结构有哪些调整?
- 19. Vue 3的新特性都有什么?
- 1. 性能优化
- 2. 响应式系统改进
- 3. Composition API
- 4. Teleport(传送门)
- 5. Fragment(碎片)
- 6. Suspense(悬念)
- 7. TypeScript支持增强
- 8. 自定义指令增强
- 9. 全局API调整
- 20. 举例说明Vue 3的事件修饰符都有什么?
- 1. `.stop`
- 2. `.prevent`
- 3. `.capture`
- 4. `.self`
- 5. `.once`
- 21. 举例说明Vue 3中组件懒加载的实现方式?
- 1. 使用`defineAsyncComponent`
- 2. 结合`Suspense`组件
- 3. 利用路由懒加载
1. 性能优化
- 更快的渲染速度:Vue 3利用现代JavaScript特性(如Proxy),在保持现有API的同时,提升了应用的运行效率。通过使用Proxy代理对象和优化虚拟DOM算法等方式,提高了渲染性能。
- 更小的体积:Vue 3通过移除一些不常用的功能,以及使用Tree-Shaking等技术,帮助减小了包的大小,使得初始加载时间更快,最终包体积更小。
2. 组合式API(Composition API)
- 逻辑复用与组织:Vue 3引入了Composition API,这是一种新的API风格,使开发者更容易组织和重用组件逻辑。它允许将组件的相关代码组织在一起,而不是根据选项分散在不同部分,有助于提高代码的可维护性和可重用性。
- setup函数:Composition API的核心是setup函数,它在组件实例初始化之前调用,可以接收组件的props和context作为参数,并且必须返回一个对象,该对象中的属性和方法可以在模板中直接使用。
3. 响应式系统改进
- 使用Proxy替代defineProperty:Vue 3使用Proxy代理对象来重新实现数据响应式系统,提供了更加全面和高效的数据劫持和变化追踪能力。这使得Vue 3在处理大型应用程序时性能更佳。
4. 更好的TypeScript支持
- 类型定义文件:Vue 3提供了更好的TypeScript支持,包括类型定义文件,以帮助开发者在编码过程中更好地进行类型检查。
5. 其他新特性
- Teleport(传送门):这是Vue 3中的一个新特性,使得将内容从一个组件传送到DOM中的不同位置变得更容易,对于在模态框等情况下移动DOM元素非常有用。
- Suspense(悬挂):Vue 3引入了Suspense,这是一种新的方式来处理异步数据加载和代码拆分。它使得在等待异步数据时可以显示占位符或加载指示器,以提供更好的用户体验。
- 多根节点支持:Vue 3支持组件的多个根节点,这意味着可以在一个组件内返回多个顶级元素,而不必包裹它们在一个额外的容器内。
- 全局API重构:Vue 3对全局API进行了重构,以提高可用性和一致性。例如,全局的
Vue.observable()
方法现在已经更名为reactive()
,全局的Vue.set()
方法更名为app.$set()
。
6. 兼容性与迁移
- 向下兼容:Vue 3在一定程度上与Vue 2保持了兼容性,但并不是完全向后兼容。如果从Vue 2迁移到Vue 3,可能需要对代码进行一些修改。
- 迁移指南:Vue团队提供了详细的迁移指南和工具,以帮助开发者平滑过渡到Vue 3。
7.具体相关试题
1. 什么是Vue 3?
答案:Vue 3是Vue.js框架的最新版本,它引入了许多改进和优化,包括性能提升、更好的类型支持、组合API等。
2. Vue 3相比Vue 2有哪些主要改进?
答案:Vue 3的主要改进包括使用Proxy替代Object.defineProperty实现响应式系统,提供更好的类型支持,引入Composition API,以及性能优化等。
3. 什么是Composition API?
答案:Composition API是Vue 3中新引入的API设计模式,它允许开发者更灵活地组织和管理组件逻辑。
4. Composition API与Options API有什么区别?
答案:Composition API提供了更好的逻辑复用和代码组织方式,而Options API则将逻辑分散在组件的各个选项中。Composition API使用函数来组织逻辑,而Options API则通过对象的选项来定义逻辑。
5. 如何在Vue 3中使用TypeScript?
答案:Vue 3对TypeScript提供了更好的支持,开发者可以在Vue组件中使用TypeScript来编写代码,并利用TypeScript的类型推断功能。
6. Vue 3中的响应式系统是如何工作的?
答案:Vue 3使用Proxy对象作为响应式系统的基础,能够更细粒度地追踪数据变化,并自动更新视图。
7. 什么是Proxy?它与Object.defineProperty有什么区别?
答案:Proxy用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等),它是ES6中新引入的特性。与Object.defineProperty相比,Proxy提供了更细粒度的变化跟踪。
8. Vue 3中的虚拟DOM优化了哪些方面?
答案:Vue 3对虚拟DOM进行了优化,包括编译器优化、Tree-shaking支持以及更高效的差异更新等。
9. 什么是Tree-shaking?它在Vue 3中如何工作?
答案:Tree-shaking是一种在打包时自动移除未使用代码的技术。在Vue 3中,通过Tree-shaking可以减小打包后的体积。
1. Tree-shaking 在 Vue 3 中的工作方式
- 配置构建工具
- 使用 webpack 4 及以上版本:Tree-shaking 功能更强大且更高效。
- 设置 mode 为 ‘production’:以启用生产模式下的优化功能。
- 按需导入组件
- 推荐使用按需导入(按需加载)的方式引入第三方组件库,而不是直接导入整个库。这可以减小最终构建产物的体积,并实现 Tree-shaking。
- 注册所需组件
- 在 Vue 3 中,可以使用
app.component
方法来注册所需的组件。
- 在 Vue 3 中,可以使用
2. 举例说明
- 场景假设
- 创建一个包含多个函数的文件
utils.js
,如add
、subtract
、multiply
、divide
和square
等。但在实际的 Vue 组件中,只使用到了add
和subtract
函数。
- 创建一个包含多个函数的文件
- 具体示例
utils.js
export function add(a, b) {return a + b; } export function subtract(a, b) {return a - b; } export function multiply(a, b) {return a * b; } export function divide(a, b) {return a / b; } export function square(n) {return n * n; }
- MyComponent.vue
<template>Result: {{ result }} </template> <script>import { add, subtract } from './utils.js'; // 只引入 add 和 subtract 函数export default {data() {return {result: null,};},mounted() {this.calculate();},methods: {calculate() {const a = 5;const b = 3;this.result = add(a, b) - subtract(a, 2); // 只使用了 add 和 subtract 函数进行计算},},}; </script>
- 构建输出
- 当我们构建打包输出时,Tree-shaking 的优化会自动去除未使用的
multiply
、divide
和square
函数,只保留被使用的add
和subtract
函数的代码。最终构建出来的代码只会包含add
和subtract
函数相关的代码,减少了打包体积。
- 当我们构建打包输出时,Tree-shaking 的优化会自动去除未使用的
10. Vue 3中的组件生命周期钩子有哪些变化?
答案:Vue 3引入了一些新的组件生命周期钩子,如onBeforeMount、onMounted、onBeforeUpdate、onUpdated等。
11. 如何在Vue 3项目中进行性能优化?
答案:可以通过代码分割、懒加载、避免不必要的计算和渲染等方式进行性能优化。
12. Vue 3中的Teleport是什么?它的用途是什么?
答案:Teleport是Vue 3中新增的一个内置组件,它允许将组件的部分内容渲染到DOM树中的其他位置。
13. 请解释Vue 3中的响应式系统的工作原理。
答案:Vue 3使用Proxy对象来代理数据对象,当数据发生变化时,Proxy会通知Vue实例更新视图。
14. Vue 3中的Suspense是什么?如何使用它来处理异步组件?
答案:Suspense是Vue 3中用于处理异步组件加载的新特性,它可以在等待异步组件加载时显示一些占位符内容。
15. Vue 3中的Fragment是什么?它的用途是什么?
答案:Fragment允许组件返回多个根节点,解决了Vue 2中组件必须有一个根节点的问题。
16. Vue 3中的工程化工具Vite是什么?它有什么优势?
答案:Vite是一个快速的前端开发工具,它使用原生ES模块和Rollup进行打包,提供了更快的开发体验和更小的打包体积。
17. Vue 3的命令变化有哪些?
答案:启动项目的命令由npm run dev变成了npm run serve,这使得开发过程更加统一和简洁。
18. Vue 3的项目结构有哪些调整?
答案:移除了配置文件目录、config和build文件,以及vue.config.js文件。新增了public文件夹,并将index.html移至public中。在src文件夹中新增了views文件夹,用于分类视图组件和公共组件。
19. Vue 3的新特性都有什么?
Vue 3引入了众多新特性,以下是一些主要的新特性及其简要介绍:
1. 性能优化
- 更快的渲染速度:Vue 3通过重构虚拟DOM、事件缓存等技术,实现了初始渲染/更新提速达100%。
- 更小的捆绑体积:Vue 3的压缩后代码大小约为20KB,相比Vue 2减少了91%,这有助于加快应用程序的加载速度。
- 改进的内存管理:Vue 3在内存管理方面进行了改进,使得应用程序在长时间运行时更加稳定,减少了内存泄漏和性能下降的风险。
2. 响应式系统改进
- 基于Proxy的响应式对象:Vue 3使用ES6的Proxy API实现响应式对象,相较于Vue 2中的Object.defineProperty,Proxy提供了更全面的数据劫持和变化追踪能力,性能开销更小。
- 自动监听对象中所有属性的变化:Vue 3利用Proxy能够自动监听对象中所有属性的变化,无需像Vue 2那样循环递归地给每个属性增加getter/setter监听器。
3. Composition API
- 逻辑复用与组织:Composition API是Vue 3的核心特性之一,它允许开发者将组件的逻辑拆分成独立的函数(称为“组合函数”),这些函数可以在不同的组件之间共享和重用。这有助于减少代码冗余,提高代码的可维护性和可测试性。
- 响应式数据的细粒度控制:Composition API还支持响应式数据的细粒度控制,使得开发者能够更精确地管理组件的状态。
4. Teleport(传送门)
- 任意位置渲染:Teleport允许开发者将组件的模板渲染到DOM树中的任意位置。这一特性在构建一些需要跨越多个组件层次的UI结构时非常有用,比如模态框、悬浮卡片等。
5. Fragment(碎片)
- 多根节点支持:Vue 3支持Fragment,允许组件返回多个根节点。这使得开发者在构建组件时不再受限于单一的根节点,能够更加灵活地组织HTML结构。
6. Suspense(悬念)
- 异步组件处理:Suspense组件用于处理异步组件的加载状态。它可以提供一个占位符,在异步组件加载过程中显示一些过渡效果或提示信息,提升了用户体验。
7. TypeScript支持增强
- 类型定义完善:Vue 3对TypeScript的支持得到了进一步的加强,新的Vue 3类型定义更加完善,提供了更丰富的类型检查和自动补全功能。
8. 自定义指令增强
- 更强大的自定义指令功能:Vue 3提供了更强大的自定义指令功能,支持更多的钩子函数和参数。同时,Vue 3还对指令的绑定和解绑过程进行了优化,提高了性能。
9. 全局API调整
- 简洁一致的API:对全局API进行了调整和优化,使得API更加简洁和一致。
20. 举例说明Vue 3的事件修饰符都有什么?
1. .stop
- 功能:阻止事件冒泡。
- 示例:在点击按钮时,通常点击事件会冒泡到父元素。使用
.stop
修饰符后,点击事件不会冒泡到父元素,只会触发当前元素的点击事件处理函数。
<button @click.stop="handleClick">点击我</button>
new Vue({el: '#app',methods: {handleClick() {console.log('按钮被点击');}}
});
2. .prevent
- 功能:阻止事件的默认行为。
- 示例:对于链接的点击事件,默认行为是跳转到链接的目标页面。使用
.prevent
修饰符后,可以阻止这种默认的跳转行为。
<a href="https://www.example.com" @click.prevent="handleLinkClick">访问网站</a>
new Vue({el: '#app',methods: {handleLinkClick() {console.log('链接被点击,但未跳转');}}
});
3. .capture
- 功能:使用事件捕获模式,即事件从外向内传播,先触发祖先元素的事件处理程序,再触发当前元素的事件处理程序。
- 示例:在一个包含子元素的容器上使用
.capture
修饰符,当子元素触发点击事件时,会先触发容器的点击事件处理程序,然后才触发子元素的点击事件处理程序。
<div @click.capture="captureClick"><button @click="normalClick">点击我</button></div>
new Vue({el: '#app',methods: {captureClick() {console.log('捕获到点击事件(捕获阶段)');},normalClick() {console.log('普通点击事件(冒泡阶段)');}}
});
4. .self
- 功能:只有当事件是从当前元素本身触发时,才会执行事件处理函数,不会对子元素的事件进行处理。
- 示例:在一个包含子元素的容器上使用
.self
修饰符,当点击子元素时,不会触发容器的点击事件处理程序,只有点击容器本身时才会触发。
<div @click.self="selfClick"><button @click="childClick">点击我</button></div>
new Vue({el: '#app',methods: {selfClick() {console.log('div 被点击');},childClick() {console.log('按钮被点击,但未触发 div 的点击事件');}}
});
5. .once
- 功能:事件只触发一次,第一次触发后,该事件监听器就会被移除。
- 示例:点击按钮时,只会触发一次点击事件处理函数,再次点击将不会有任何反应。
<button @click.once="oneTimeClick">点击我一次</button>
new Vue({el: '#app',methods: {oneTimeClick() {console.log('按钮只被点击一次');}}
});
21. 举例说明Vue 3中组件懒加载的实现方式?
1. 使用defineAsyncComponent
- 创建异步组件:使用
defineAsyncComponent
可以定义一个异步组件,它会在需要渲染时才动态加载组件。例如:-
const AsyncComponent = defineAsyncComponent(() =>import('./components/MyComponent.vue') );
-
- 在模板中使用:在模板中通过
<component>
标签并结合v-if
指令来控制异步组件的渲染。同时,使用一个变量来管理组件是否应该被渲染。例如:-
<template><div id="app"><h1>欢迎来到我的 Vue 3 应用</h1><button @click="loadComponent">加载懒加载组件</button><component v-if="isComponentVisible" :is="AsyncComponent"></component></div> </template>
-
export default {data() {return {isComponentVisible: false,AsyncComponent: null};},methods: {loadComponent() {this.AsyncComponent = defineAsyncComponent(() =>import('./components/MyComponent.vue'));this.isComponentVisible = true;}} };
-
2. 结合Suspense
组件
- 定义异步组件和加载状态:使用
defineAsyncComponent
定义异步组件,并在其中配置loadingComponent
和errorComponent
来指定加载中和加载失败时的显示内容。例如:-
const AsyncComponent = defineAsyncComponent({loader: () => import('./components/MyComponent.vue'),loadingComponent: {template: `<div>加载中...</div>`},errorComponent: {template: `<div>加载失败,请稍后再试。</div>`},delay: 200, // 延迟显示 loading 组件的时间timeout: 3000 // 超时设置 });
-
- 在模板中使用
Suspense
:将异步组件包裹在Suspense
组件中,以处理加载状态。例如:-
<template><div><h1>Lazy Component Demo</h1><Suspense><template #default><AsyncComponent /></template><template #fallback><p>Loading...</p></template></Suspense></div> </template>
-
3. 利用路由懒加载
- 配置路由懒加载:在路由配置中,使用动态导入来实现组件的懒加载。当用户访问特定路由时,才会加载对应的组件。例如:
-
const routes = [{path: '/foo',component: () => import('./components/Foo.vue')} ];
-
相关文章:
21道关于Vue3的面试题及其解析
Vue 3是一种流行的JavaScript框架,它是Vue.js的第三个主要版本,于2020年9月18日正式发布。关于Vue 3的一些关键信息: 文章目录 1. 性能优化2. 组合式API(Composition API)3. 响应式系统改进4. 更好的TypeScript支持5. …...
使用 Visual Studio Code (VS Code) 开发 Python 图形界面程序
安装Python、VS Code Documentation for Visual Studio Code Python Releases for Windows | Python.org 更新pip >python.exe -m pip install --upgrade pip Requirement already satisfied: pip in c:\users\xxx\appdata\local\programs\python\python312\lib\site-pa…...
深入理解 MyBatis 框架的核心对象:SqlSession
Mybatis框架中的SqlSession对象详解 引言 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息࿰…...
day09_实时类标签/指标
文章目录 day09_实时类标签/指标一、日志数据实时采集2、Flume简介2.3 项目日志数据采集Flume配置2.3.1 涉及的Flume组件和参数2.3.2 Nginx日志采集2.3.3 用户行为日志采集 二、Nginx日志数据统计1、日志格式说明2、数据ETL2.1 日志抽取2.1.1 正则表达式2.1.2 基于Spark实现Ngi…...
AWTK-WEB 快速入门(4) - JS Http 应用程序
XMLHttpRequest 改变了 Web 应用程序与服务器交换数据的方式,fetch 是 XMLHttpRequest 继任者,具有更简洁的语法和更好的 Promise 集成。本文介绍一下如何使用 JS 语言开发 AWTK-WEB 应用程序,并用 fetch 访问远程数据。 用 AWTK Designer 新…...
github不翻墙就可以访问
目录 简介资料准备windows平台设置下载运行git设置firefox设置 ubuntu平台设置下载启动服务设置系统代理git设置firefox设置证书 注意事项 简介 由于github访问不稳定,严重影响了国内软件开发,在网上搜索并验证了一些方法.现在整理出来一个可以正常使用的方法, 在windows和Lin…...
【AI-32】浅显易懂地说一下LangChain
好的!我来用最通俗的方式解释一下 LangChain 是什么,以及它为什么在 AI 开发中如此重要。 一句话理解 LangChain LangChain 是一个帮你快速搭建AI应用的工具箱,它把大型语言模型(如 GPT)和外部数据、计算工具、业务流…...
使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)指南
在网络应用中,代理服务器是用于中转用户请求和服务端响应的工具。正向代理主要用于客户端与外部服务器之间的访问代理,帮助客户端隐藏其 IP 地址或访问受限资源。本文将详细介绍如何使用 Nginx 搭建正向代理服务器,特别是针对 HTTPS 网站的代…...
Linux学习笔记之进程
进程 进程的定义 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,也是操作系统结构的基础。 例如当QQ程序运行的时候,计算机会先从磁盘读取QQ程序到内存,然后OS管理这个程序,…...
win11 终端乱码导致IDE 各种输出也乱码
因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…...
iOS主要知识点梳理回顾-5-运行时方法交换
方法交换可以放在 load 或 initialize 方法中,也可以自己根据时机来空,比如开启某个开关后才需要交换方法。如果是在load中调用,交换工作会在类加载时(程序启动)自动调用;如果是在initialize中调用…...
python后端调用Deep Seek API
python后端调用Deep Seek API 需要依次下载 ●Ollama ●Deepseek R1 LLM模型 ●嵌入模型nomic-embed-text / bge-m3 ●AnythingLLM 参考教程: Deepseek R1打造本地化RAG知识库:安装部署使用详细教程 手把手教你:deepseek R1基于 AnythingLLM API 调用本地…...
Unity开发播放视频
Unity开发播放视频 介绍VideoPlayer原理步骤VideoPlayer动态加载 总结 介绍 原生Unity播放视频VideoPlayer播放视频,这里我没有选择使用插件,还有一个播放视频的插件也可以AVPro Video,这里不过多介绍就说一下原生VideoPlayer的基础用法。 …...
【练习】图论
F. Friendly Group 图中选择一个点-1 边两端点都选择1 边一个端点选择-1 添加链接描述 #include<iostream> using namespace std; #include<vector> #include<cstring> const int N300010; int n,m; vector<int> G[N]; int temp1,temp2; bool vis[N…...
gis风场加载
https://gitee.com/openGPL json数据格式使用v1 “sakitam-gis/mapbox-wind”: “1.1.2” import { WindLayer } from "sakitam-gis/mapbox-wind"; windLayer new WindLayer("wind", res.data, {windOptions: {// colorScale: (m) > {// // consol…...
大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
大疆无人机需要的轨迹kml文件,是一种专门的格式,这个kml里面只有轨迹点,其它的属性信息都不需要。 BigemapPro提供了专门的大疆格式输出, 软件这里下载 www.bigemap.com 安装后,kml导入如下图: 然后选择…...
【CXX】2 CXX blobstore客户端说明
本示例演示了一个调用blobstore服务的C客户端的Rust应用程序。事实上,我们会看到两个方向的调用:Rust到C以及C到Rust。对于您自己的用例,您可能只需要其中一个方向。 示例中涉及的所有代码都显示在此页面上,但它也以可运行的形式提…...
图数据库neo4j进阶(一):csv文件导入节点及关系
CSV 一、load csv二、neo4j-admin import<一>、导入入口<二>、文件准备<三>、命令详解 一、load csv 在neo4j Browser中使用Cypher语句LOAD CSV,对于数据量比较大的情况,建议先运行create constraint语句来生成约束 create constraint for (s:Student) req…...
3.3 学习UVM中的uvm_driver 类分为几步?
文章目录 前言1. 定义2. 核心功能3. 适用场景4. 使用方法5. 完整代码示例5.1 事务类定义5.2 Driver 类定义5.3 Sequencer 类定义5.4 测试平台 6. 代码说明7. 总结 前言 以下是关于 UVM 中 uvm_driver 的详细解释、核心功能、适用场景、使用方法以及一个完整的代码示例ÿ…...
Docker 常用命令基础详解(一)
一、Docker 初相识 在当今数字化时代,软件开发和部署的效率与灵活性成为了关键因素。Docker,作为一款开源的应用容器引擎,犹如一颗璀璨的明星,照亮了软件开发与部署的道路,为开发者们带来了前所未有的便利。它就像是一…...
机器学习之AAE(Adversarial Autoencoder,对抗自编码器)生成数据样本
对抗自编码器(Adversarial Autoencoder,AAE)是一种结合了自编码器(Autoencoder)和生成对抗网络(GAN)的方法,用于生成新数据样本。它的目标是学习到数据的潜在分布,并通过生成对抗训练来优化潜在空间,使其接近一个已知的简单分布(例如,高斯分布)。 AAE的结构和训练…...
用大模型学大模型03-数学基础 概率论 最大似然估计(MLE)最大后验估计(MAP)
https://metaso.cn/s/r4kq4Ni 什么是最大似然估计(MLE)最大后验估计(MAP)?深度学习中如何应用,举例说明。 好的,我现在需要回答关于最大似然估计(MLE)和最大后验估计&…...
名词解释:npm,cnpm,yarn,vite,vue,electron
1. npm (Node Package Manager) 读音: “N-P-M” 或者直接读作 “npm”。 npm 是 Node.js 的官方包管理器,用于安装、发布和管理 JavaScript 软件包。它允许开发者轻松地共享代码,并且可以通过命令行工具来管理依赖关系。通过 npm init 命令可以交互式…...
ESXi安装【真机和虚拟机】(超详细)
项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上ÿ…...
每日一题——矩阵最长递增路径
矩阵最长递增路径问题 题目描述数据范围:进阶要求:示例示例 1示例 2 题解思路算法步骤:代码实现代码解释复杂度分析总结 题目描述 给定一个 n 行 m 列的矩阵 matrix,矩阵内所有数均为非负整数。你需要在矩阵中找到一条最长路径&a…...
设置ollama接口能外部访问
为了配置Ollama以允许外网访问,你可以按照以下步骤进行操作: 确认Ollama服务已正确安装并运行: 使用以下命令检查Ollama服务的状态: bash Copy Code systemctl status ollama如果服务未运行,使用以下命令启动它&…...
TOML介绍
0 Preface/Foreword TOML,一种配置文件格式。Toms Obvious Minimal Language. 1 介绍 TOML: Toms Obvious Minimal Language,“显而易见的最小化语言 ” JSON:不支持注释 YAML:过于复杂...
macOS部署DeepSeek-r1
好奇,跟着网友们的操作试了一下 网上方案很多,主要参考的是这篇 DeepSeek 接入 PyCharm,轻松助力编程_pycharm deepseek-CSDN博客 方案是:PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…...
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
作者:谢吉宝(唐三) 编者按: 云原生 API 网关系列教程即将推出,欢迎文末查看教程内容。本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三) 在云栖大会的精…...
京东 旋转验证码 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 使用的第三方接码平台识别…...
R18 XR L1 enhancement
这篇是R18 XR的最后一部分,主要是L1方面的增强。 这部分增强大概的背景如下。 一些 XR 应用(例如增强现实)不仅在 DL 方向需要高数据速率,在 UL 方向也需要高数据速率。如果应用需要在 UL 方向传输视频流量,则 UL 中支持的 XR 用户数量可能非常有限。因此,增加有限的时间…...
利用Java爬虫按图搜索1688商品(拍立淘):实战案例指南
在电商领域,按图搜索功能(如1688的“拍立淘”)为用户提供了更直观、便捷的购物体验。通过上传图片,用户可以快速找到与图片相似的商品。本文将详细介绍如何利用Java爬虫技术实现按图搜索1688商品,并获取其详情数据。 …...
算法-计算字符的最短距离
力扣题目:821. 字符的最短距离 - 力扣(LeetCode) 给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。 返回一个整数数组 answer ,其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 …...
sqlilabs--小实验
一、先盲注判断 ?id1 and sleep(2)-- 如果发现页面存在注点,使用时间盲注脚本进行注入 import requestsdef inject_database(url):name for i in range(1, 20): # 假设数据库名称长度不超过20low 48 # 0high 122 # zmiddle (low high) // 2while low &l…...
【JavaScript爬虫记录】记录一下使用JavaScript爬取m4s流视频过程(内含ffmpeg合并)
前言 前段时间发现了一个很喜欢的视频,可惜网站不让下载,简单看了一下视频是被切片成m4s格式的流文件,初步想法是将所有的流文件下载下来然后使用ffmpeg合并成一个完整的mp4,于是写了一段脚本来实现一下,电脑没有配python环境,所以使用JavaScript实现,合并功能需要安装ffmpeg,…...
腿足机器人之一- 机械与电子组件概览
腿足机器人之一机械与电子组件概览 引言机械组件骨架材料关节设计关节机械组件轴承(ings)连杆(Linkages)齿轮(Gears) 电气组件电机控制器传感器 四足机器人设计双足机器人设计波士顿Atlas机器人 引言 腿足…...
利用二分法+布尔盲注、时间盲注进行sql注入
一、布尔盲注: import requestsdef binary_search_character(url, query, index, low32, high127):while low < high:mid (low high 1) // 2payload f"1 AND ASCII(SUBSTRING(({query}),{index},1)) > {mid} -- "res {"id": payloa…...
本地部署DeepSeek Nodejs版
目录 1.下载 Ollama 2.下载DeepSeek模型 3.下载 ollama.js 1.下载 Ollama https://ollama.com/ 下载之后点击安装,等待安装成功后,打开cmd窗口,输入以下指令: ollama -v 如果显示了版本号,则代表已经下载成功了。…...
mapbox进阶,添加绘图扩展插件,绘制任意方向矩形
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...
哈希槽算法与一致性哈希算法比较
Redis 集群模式使用的 哈希槽(Hash Slot) 算法与传统的 一致性哈希(Consistent Hashing) 算法在数据分布和节点管理上有显著的区别。以下是两者的详细比较: 1. Redis 哈希槽算法 1.1 基本原理 Redis 集群将整个数据集…...
DeepSeek+Excel 效率翻倍
2025年初,DeepSeek以惊人的效率突破技术壁垒,用极低的成本实现了与行业顶尖AI相媲美的性能,瞬间成为全球科技领域的热门话题。 那么AI工具的普及将如何改变我们的工作方式?Excel会被取代吗? 今天,珠珠带你…...
【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】
1. 背景 vLLM是一个快速且易于使用的LLM推理和服务库。企业级应用比较普遍,尝试安装相关环境,尝试使用。 2. 环境 模块版本python3.10CUDA12.6torch2.5.1xformers0.0.28.post3flash_attn2.7.4vllm0.6.4.post1 2.1 安装flash_attn 具体选择什么版本&…...
Prompt通用技巧
Prompt 的典型构成 角色:给 AI定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」指示:对任务进行描述上下文: 给出与任务相关的其它背景信息(尤其在多轮交互中)。例子 : 必要时给出举例,学术中称为 one-shot learning,few-sho…...
【R语言】方差分析
一、基本术语 在R语言以及更广泛的统计学领域中,方差分析(ANOVA,即Analysis of Variance)是一种用于比较两个或更多组数据的均值是否存在显著差异的统计方法。可以使用aov()函数或其他相关函数(如anova())…...
XSS 常用标签及绕过姿势总结
XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…...
haproxy详解笔记
一、概述 HAProxy(High Availability Proxy)是一款开源的高性能 TCP/HTTP 负载均衡器和代理服务器,用于将大量并发连接分发到多个服务器上,从而提高系统的可用性和负载能力。它支持多种负载均衡算法,能够根据服务器的…...
「软件设计模式」工厂方法模式 vs 抽象工厂模式
前言 在软件工程领域,设计模式是解决常见问题的经典方案。本文将深入探讨两种创建型模式:工厂方法模式和抽象工厂模式,通过理论解析与实战代码示例,帮助开发者掌握这两种模式的精髓。 一、工厂方法模式(Factory Metho…...
Flutter_学习记录_数据更新的学习
Flutter 如果界面上有数据更新时,目前学习到的有3种: 第一种: 直接用 StatefulWidget组件,然后当数据更新时,调用setState的方法更新数据,页面上的数据会直接更新;第二种: 用 State…...
淘宝订单列表Fragment转场动画卡顿解决方案
如何应对产品形态与产品节奏相对确定情况下转变为『在业务需求与产品形态高度不确定性的情况下,如何实现业务交付时间与交付质量的确定性』。我们希望通过混合架构(Native 业务容器 Weex 2.0)作为未来交易终端架构的重要演进方向,…...
【状态空间方程】对于状态空间方程矩阵D≠0时的状态反馈与滑模控制
又到新的一年啦,2025新年快乐~。前几个月都没更新,主要还是因为不能把项目上的私密工作写进去,所以暂时没啥可写的。最近在山里实习,突然想起年前遗留了个问题一直没解决,没想到这两天在deepseek的加持下很快解决了&am…...