一、Vue的双向绑定机制(v-model底层实现原理)
Vue的双向绑定核心由 响应式系统 和 指令语法糖 共同实现,具体原理如下:

  1. 响应式系统
    Vue通过数据劫持和依赖收集实现数据变化到视图的同步:
    • 数据劫持:在Vue 2中使用Object.defineProperty拦截数据的getter/setter,在Vue 3中升级为Proxy,实现更细粒度的监听。

    • 依赖收集:每个数据属性关联一个Dep(订阅器),当组件渲染时触发getter,将当前Watcher(观察者)添加到依赖列表中。数据变化时通过setter触发Dep.notify(),通知所有依赖的Watcher更新视图。

  2. v-model的语法糖机制
    v-model本质是v-bind:valuev-on:input的组合:
    • 表单元素:例如<input>v-model会监听input事件,并将event.target.value同步到绑定的数据属性。

    • 自定义组件:在Vue 2中,组件通过props: value接收数据,并通过$emit('input')更新父组件数据;Vue 3中改为modelValueupdate:modelValue事件。

    • 编译过程:Vue将v-model转换为对应的value绑定和事件监听代码。

    它让数据和界面自动保持同步:用户在界面上输入时数据会更新,数据变化时界面也会自动刷新

    • ​​数据绑定​​:用 v-bind 把数据绑到输入框的 value 属性(显示数据)。
    • ​​事件监听​​:用 v-on 监听输入框的 input 或 change 事件(更新数据)。

Vue 中 v-model 的实现原理详解

v-model 是 Vue 中实现双向数据绑定的核心指令,其本质是语法糖,结合了数据绑定(v-bind)与事件监听(v-on)的机制。以下是其实现原理的分层解析:


一、底层机制:响应式系统与事件监听

  1. 数据劫持与依赖收集
    • Vue 2.x:通过 Object.defineProperty 对数据对象的属性进行劫持,定义 getter/setter 以拦截属性的读取和修改。当数据变化时,触发 setter 通知依赖(Watcher)更新视图。

    • Vue 3.x:改用 Proxy 代理对象,支持对整个对象的监听,解决了 Vue 2.x 无法监听属性新增、删除及数组下标修改的问题。

  2. 事件绑定与值更新
    • 对表单元素(如 <input>),v-model 自动绑定 value 属性并监听 input 事件。当用户输入时,通过事件回调将新值同步到数据属性,触发响应式更新。

    • 不同类型表单元素的适配:

    ◦ 文本输入框:绑定 value 属性 + input 事件。

    ◦ 复选框/单选框:绑定 checked 属性 + change 事件。

    ◦ 下拉框:绑定 selected 属性 + change 事件。


二、原生表单元素的双向绑定

  1. 编译过程
    Vue 模板编译器将 v-model 转换为以下等价代码:

    <!-- 原生输入框 -->
    <input v-model="message">
    <!-- 编译结果 -->
    <input :value="message" @input="message = $event.target.value">
    

    通过动态绑定 value 属性和监听输入事件,实现数据与视图的同步。

  2. 修饰符的扩展
    .lazy:将 input 事件改为 change 事件(延迟同步)。

    .number:自动将输入值转为数字类型。

    .trim:去除输入值首尾空格。


三、自定义组件的双向绑定

  1. Vue 2.x 的实现
    • 默认使用 value 属性接收数据,通过 $emit('input') 事件更新父组件数据。

    • 自定义配置:通过 model 选项修改默认的 prop 和事件名:

    model: { prop: 'data', event: 'updateData' }
    

    父组件通过 v-model 绑定,子组件通过 this.$emit('updateData', value) 触发更新。

  2. Vue 3.x 的改进
    • 默认使用 modelValue 属性与 update:modelValue 事件,支持更灵活的组件通信。

    • 多 v-model 绑定:允许为组件绑定多个双向数据流,例如:

    <UserForm v-model:name="userName" v-model:age="userAge" />
    

    子组件通过 props 接收 nameage,并触发 update:nameupdate:age 事件。


四、Vue 2.x 与 Vue 3.x 的差异总结

特性Vue 2.xVue 3.x
响应式实现Object.definePropertyProxy
默认 Prop/事件value + inputmodelValue + update:modelValue
v-model不支持支持多绑定(如 v-model:title
修饰符扩展仅内置修饰符支持自定义修饰符

五、总结
v-model 的核心是通过响应式系统与事件监听实现双向同步:

  1. 数据到视图:通过绑定属性(如 value)将数据渲染到 DOM。
  2. 视图到数据:通过监听事件(如 input)将用户输入同步到数据层。
  3. 组件扩展:通过自定义 prop 和事件名,实现父子组件间的灵活通信。

通过这一机制,v-model 简化了表单交互的逻辑,成为 Vue 开发中提升效率的关键工具。


二、Vite前端工程化核心机制
Vite通过 原生ESM 和 按需编译 实现了高效的开发与构建流程:

  1. 开发环境(冷启动与HMR)
    • 冷启动快:直接以HTML为入口,浏览器通过ESM按需请求模块,无需打包整个项目。

    • 依赖预构建:使用esbuildnode_modules中的CommonJS模块转换为ESM格式并缓存,提升后续加载速度。

    • 热更新(HMR):基于WebSocket监听文件变化,仅重新编译变更模块,通过diff算法局部更新DOM,无需刷新页面。

  2. 生产环境打包
    • Rollup优化:使用Rollup进行代码压缩、Tree Shaking(删除未使用代码)、代码分割(Code Splitting)等。

    • 静态资源处理:CSS压缩、图片转Base64、文件名哈希缓存等。


三、.vue文件的编译与执行原理
Vue单文件组件(SFC)通过 构建工具链 转换为浏览器可执行的代码:

  1. 编译阶段
    • 解析SFC结构:构建工具(如Vite或Webpack)通过@vitejs/plugin-vuevue-loader.vue文件拆分为<template><script><style>三部分。

    • 模板编译:<template>转换为虚拟DOM的渲染函数(Render Function)。

    • 脚本处理:<script>中的逻辑被提取为JavaScript模块,支持Composition API或Options API。

    • 样式处理:<style>通过PostCSS或预处理器(如Sass)处理,支持作用域CSS(scoped属性)或CSS Modules。

  2. 浏览器执行
    • 开发环境:Vite动态编译SFC为ESM模块,浏览器直接加载并执行生成的JS代码,CSS通过<style>标签注入。

    • 生产环境:打包后的JS和CSS文件通过<script><link>标签引入,渲染函数生成DOM树,最终呈现页面。


总结
• Vue双向绑定:依赖响应式系统与语法糖编译,实现数据与视图的自动同步。

• Vite工程化:利用ESM按需加载和Rollup优化,兼顾开发效率与生产性能。

• .vue文件编译:构建工具链将SFC转换为标准JS/CSS,浏览器通过ESM或传统资源加载执行。


如何适配不支持ES6的浏览器?

若浏览器不支持ES6,可通过以下核心方案实现代码兼容:


一、使用 Babel 转译器(主流方案)
Babel 可将 ES6+ 代码转换为 ES5,使其在旧版浏览器中运行。具体步骤:

  1. 安装与配置
    • 安装核心包:

    npm install --save-dev @babel/core @babel/cli @babel/preset-env  
    

    • 创建 .babelrc 配置文件,指定转译规则:

    {  "presets": ["@babel/preset-env"]  
    }  
    

    • 在 package.json 添加构建脚本:

    "scripts": {  "build": "babel src -d dist"  
    }  
    
  2. 运行转译
    执行 npm run build,Babel 将 src 目录的 ES6 代码转译为 ES5 并输出到 dist 目录。


二、引入 Polyfill 填补缺失特性
Polyfill 模拟浏览器不支持的 API,如 PromiseArray.includes 等。

  1. 常用库
    • core-js:覆盖大部分 ES6+ 特性,需在入口文件引入:

    import "core-js/stable";  
    import "regenerator-runtime/runtime";  
    

    • polyfill.io:根据浏览器 UA 动态加载所需 Polyfill,通过 CDN 引入:

    <script src="https://polyfill.io/v3/polyfill.min.js"></script>  
    

    • 特定功能库:如 whatwg-fetch 兼容 fetch API。

  2. Babel 集成
    Babel 7.4.0 后需单独安装 core-jsregenerator-runtime

    npm install core-js regenerator-runtime  
    

    配置 .babelrc 自动按需加载 Polyfill:

    {  "presets": [  ["@babel/preset-env", {  "useBuiltIns": "usage",  "corejs": 3  }]  ]  
    }  
    

三、避免使用 ES6 特性(备选方案)
若无需复杂功能,可手动替换 ES6 语法:
• 箭头函数 → 传统函数表达式:

// ES6  
const add = (a, b) => a + b;  
// ES5  
var add = function(a, b) { return a + b; };  

• 模板字符串 → 字符串拼接:

// ES6  
`Hello, ${name}`;  
// ES5  
"Hello, " + name;  

四、使用 现代构建工具

  1. Webpack
    与 Babel 集成,自动转译并打包代码,处理资源加载和优化(如 Tree Shaking)。
  2. 框架内置支持
    React、Vue 等框架默认集成 Babel,开箱即用。

五、兼容性测试与策略

  1. 测试工具
    • 使用 Can I Use 查询特性兼容性。

    • 通过 BrowserStack 或 Sauce Labs 多浏览器测试。

  2. 渐进增强与优雅降级
    • 渐进增强:先实现基础功能,再逐步添加高级特性。

    • 优雅降级:先实现完整功能,再为旧浏览器提供降级方案。


总结
推荐组合方案:

  1. Babel + core-js:主流转译与 Polyfill 方案。
  2. Webpack 集成:自动化构建与优化。
  3. 按需加载 Polyfill:减少代码体积。

通过以上方法,可在旧版浏览器中运行 ES6 代码,同时保持开发效率。

向面试官介绍适配ES6的简洁回答:

核心思路:
如果浏览器不支持ES6,可以通过 代码转译 和 特性填补 实现兼容。

具体方案:

  1. Babel工具:将ES6代码(如箭头函数、模板字符串)自动转换为ES5语法,确保旧浏览器能读懂。
  2. Polyfill(如core-js):给浏览器“打补丁”,补充缺失的API(比如 PromiseArray.includes)。
  3. 构建工具(如Webpack):集成Babel和Polyfill,打包时自动优化代码,按需加载补丁,减少代码体积。

效果:
用户无需感知兼容问题,新旧浏览器都能正常运行,同时保留ES6的开发效率。


口语化示例:
“如果浏览器不支持ES6,我们可以用两个核心工具解决:
• Babel 负责把ES6语法(比如箭头函数)翻译成ES5,让旧浏览器能理解;

• Polyfill(比如core-js)负责补充缺失的API(比如Promise)。

再结合Webpack这类工具打包,按需加载补丁,最终让代码兼容老浏览器,同时保持开发时的高效。”

加分点:
提到“按需加载”和“构建优化”,体现性能意识。


JavaScript 异步传输详解

JavaScript 的异步传输机制是其核心特性之一,用于处理非阻塞操作(如网络请求、文件读写、定时任务等),避免单线程的代码阻塞,提升性能和用户体验。以下是异步传输的核心原理、实现方式及实际应用场景的深度解析:


一、异步传输的必要性

  1. 单线程限制
    JavaScript 是单线程语言,所有代码默认在主线程(调用栈)中按顺序执行。若遇到耗时操作(如网络请求),同步执行会导致后续代码被阻塞,页面失去响应。
    异步传输的作用:将耗时操作委托给浏览器或 Node.js 的底层 API(如 WebAPI、Libuv),主线程继续执行其他任务,待操作完成后通过回调函数或事件通知主线程处理结果。

二、异步传输的实现方式

  1. 回调函数(Callback)
    • 基础机制:将函数作为参数传递给异步 API,操作完成后调用该函数。

    setTimeout(() => console.log("1秒后执行"), 1000);
    fs.readFile('file.txt', (err, data) => { /* 处理结果 */ });
    

    • 问题:多层嵌套导致“回调地狱”,代码可读性差。

  2. Promise
    • 设计目的:解决回调地狱,提供链式调用(.then().catch())。

    • 三种状态:pending(等待)、fulfilled(成功)、rejected(失败)。

    fetch('api/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
    

    • 扩展方法:

    Promise.all():并行执行多个异步任务,全部完成后返回结果。

    Promise.race():取最先完成的任务结果。

  3. Async/Await
    • 语法糖:基于 Promise,用同步写法处理异步操作。

    async function loadData() {try {const response = await fetch('api/data');const data = await response.json();console.log(data);} catch (error) {console.error(error);}
    }
    

    • 优势:代码结构清晰,错误处理更直观(try/catch)。

  4. 事件监听与发布订阅
    • 适用场景:如 DOM 事件、Node.js 的 EventEmitter

    button.addEventListener('click', () => {console.log("按钮被点击");
    });
    
  5. Web Workers
    • 后台线程:将计算密集型任务(如大数据处理)交给独立线程执行,避免阻塞主线程。

    const worker = new Worker('worker.js');
    worker.postMessage(data);
    worker.onmessage = (event) => { /* 处理结果 */ };
    

三、底层机制:事件循环(Event Loop)
事件循环是 JavaScript 处理异步的核心模型,执行流程如下:

  1. 调用栈(Call Stack):执行同步代码。
  2. 任务队列(Task Queue):存放宏任务(如 setTimeoutsetInterval)。
  3. 微任务队列(Microtask Queue):存放微任务(如 Promise 的 .then()queueMicrotask)。

执行顺序:
• 同步代码 → 微任务队列全部执行 → 宏任务队列首个任务 → 循环。

示例:

console.log("同步1");
setTimeout(() => console.log("宏任务"), 0);
Promise.resolve().then(() => console.log("微任务"));
console.log("同步2");
// 输出顺序:同步1 → 同步2 → 微任务 → 宏任务

四、异步传输的应用场景

  1. 网络请求
    • AJAX:通过 XMLHttpRequestFetch API 实现异步数据加载。

    • WebSocket:实时通信场景(如聊天室)。

  2. 定时任务
    setTimeout/setInterval:延迟执行或周期性任务。

  3. 文件操作
    • Node.js:异步读写文件(fs.readFile)或数据库查询。

  4. 用户交互
    • 事件监听(点击、滚动等)通过异步回调响应用户行为。


五、最佳实践与注意事项

  1. 避免回调地狱:优先使用 PromiseAsync/Await,而非多层嵌套回调。

  2. 错误处理:
    • Promise 使用 .catch()try/catch(配合 Async/Await)。

  3. 性能优化:
    • 并行独立任务用 Promise.all() 加速。

    • 耗时计算使用 Web Workers

  4. 资源管理:
    • 使用 finally 释放资源(如关闭文件句柄)。


总结
JavaScript 的异步传输通过 事件循环 和 任务队列 实现非阻塞操作,主要方式包括回调函数、Promise、Async/Await 等。理解其底层机制(如宏任务/微任务执行顺序)和适用场景(网络请求、定时任务等),能显著提升代码效率和可维护性。对于复杂场景,可结合 Promise.allWeb Workers 进一步优化性能。


向面试官介绍OSI模型的正确分层(七层)及核心要点:

核心澄清
OSI模型是七层架构(而非八层),由国际标准化组织(ISO)提出,目的是解决不同网络体系结构的互联问题。其分层设计将网络通信拆解为七个独立且协作的功能层次,从底层物理连接到顶层应用服务依次为:


七层模型及功能简介

  1. 物理层(Physical Layer)
    • 核心职责:处理物理介质的比特流传输,定义机械/电气特性(如网线接口、电压标准)。

    • 典型设备:网卡、光纤、中继器。

  2. 数据链路层(Data Link Layer)
    • 核心职责:将比特流封装为数据帧(Frame),提供物理地址(MAC地址)寻址、差错校验和流量控制。

    • 典型协议:以太网(Ethernet)、PPP。

  3. 网络层(Network Layer)
    • 核心职责:通过逻辑地址(如IP地址)实现跨网络的路由选择,分割和重组数据包(Packet)。

    • 典型设备:路由器。

  4. 传输层(Transport Layer)
    • 核心职责:提供端到端(进程间)可靠或不可靠的数据传输,通过端口号标识应用程序。

    • 典型协议:TCP(可靠)、UDP(高效)。

  5. 会话层(Session Layer)
    • 核心职责:管理会话的建立、维护和终止,支持同步检查点和断点续传。

    • 示例场景:远程会议中的会话恢复。

  6. 表示层(Presentation Layer)
    • 核心职责:数据格式转换(如加密、压缩)、统一语法和语义(如JSON/XML解析)。

  7. 应用层(Application Layer)
    • 核心职责:直接面向用户提供网络服务接口(如HTTP网页访问、FTP文件传输)。

    • 典型协议:HTTP、SMTP、DNS。


分层协作与数据封装
• 数据流向:发送端数据从应用层逐层向下封装(添加协议头/尾),接收端则逆向解封装。例如:

• 应用层数据 → 表示层加密 → 传输层分段 → 网络层路由 → 物理层比特流传输。

• 对等通信:每层仅与目标设备的对应层交互(如发送端网络层与接收端网络层通过IP协议通信)。


常见误解与对比
• 八层模型的误区:实际OSI模型为七层,可能混淆了其他扩展模型(如TCP/IP四层模型,将OSI高三层合并为应用层)。

• TCP/IP与OSI的关系:TCP/IP是实际应用的协议栈,其网络接口层对应OSI的物理+数据链路层,应用层涵盖OSI的会话/表示/应用层。


总结回答示例
“OSI模型是国际标准化的七层网络架构,通过分层设计解决异构系统互联问题。从底层到顶层依次是物理层(比特流传输)、数据链路层(帧与MAC寻址)、网络层(IP路由)、传输层(端到端通信)、会话层(会话管理)、表示层(数据格式转换)和应用层(用户服务接口)。它通过分层封装与对等通信机制,实现了复杂网络任务的模块化协作。”

加分点:可补充分层设计优势(如职责分离、易于扩展)或与TCP/IP模型的实践差异。


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

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

相关文章

我用Deepseek + 亮数据爬虫神器 1小时做出輿情分析器

我用Deepseek 亮数据爬虫神器 1小时做出輿情分析器 一、前言二、Web Scraper API 实战&#xff08;1&#xff09;选择对应的URL&#xff08;2&#xff09;点击进入对应url界面&#xff08;3&#xff09;API结果实例和爬取结果展示&#xff08;4&#xff09;用户直接使用post请…

机器学习实战:归一化与标准化的选择指南

在机器学习实战中——是否需要归一化&#xff08;Normalization&#xff09;或标准化&#xff08;Standardization&#xff09;&#xff0c;取决于所使用的模型类型。 ✅ LightGBM / XGBoost 是否需要归一化或标准化&#xff1f; 不需要。 &#x1f527; 原因&#xff1a; L…

磁珠特点,原理与应用

什么是磁珠&#xff1f; 磁珠在1930年由日本东京工业大学的加藤与五郎和武井武两位教授发明&#xff0c;TDK首次生产&#xff0c;是电感的一种&#xff0c;区别就是&#xff1a;电感外面包裹着铁氧体材质。 因铁氧体具有高电阻率&#xff0c;低涡流损耗&#xff0c;高频时依旧…

【连载14】基础智能体的进展与挑战综述-多智能体系统设计

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 在基于大语言模型的多智能体系统&#xff08;LLM-MAS&#xff09;中&#xff0c;合作目标和合…

React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题

React Native踩坑实录&#xff1a;解决NativeBase Radio组件在Android上的兼容性问题 问题背景 在最近的React Native项目开发中&#xff0c;我们的应用在iOS设备上运行良好&#xff0c;但当部署到Android设备时&#xff0c;进入语言设置和隐私设置页面后应用崩溃。我们遇到了…

[Windows] 网络检测工具InternetTest v8.8.2.2503 单文件版_支持查询IP_DNS_WIFI密码一键恢复

InternetTest&#xff08;详情请戳 官网 / 作者项目地址&#xff09;是一款免费开源的网络检测实用工具&#xff0c;其可实现监控、诊断互联网网络连接&#xff0c;例如进行 ping 测试、延迟测试、WiFi 密码查看、IP 地址或域名信息查询等算是搭建网站及服务器的实用维护工具。…

配置Hadoop集群-集群配置

以下是 Hadoop 集群的核心配置步骤&#xff0c;基于之前的免密登录和文件同步基础&#xff0c;完成 Hadoop 分布式环境的搭建&#xff1a; 1. 集群规划 假设集群包含 3 个节点&#xff1a; master&#xff1a;NameNode、ResourceManagerslave1&#xff1a;DataNode、NodeMana…

Spring Bean有哪几种配置方式?

大家好&#xff0c;我是锋哥。今天分享关于【Spring Bean有哪几种配置方式&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring Bean有哪几种配置方式&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Bean的配置方式主要有三种&#xff…

Webpack中Compiler详解以及自定义loader和plugin详解

Webpack Compiler 源码全面解析 Compiler 类图解析&#xff1a; 1. Tapable 基类 Webpack 插件系统的核心&#xff0c;提供钩子注册&#xff08;plugin&#xff09;和触发&#xff08;applyPlugins&#xff09;能力。Compiler 和 Compilation 均继承此类&#xff0c;支持插件…

HAProxy + Keepalived + Nginx 高可用负载均衡系统

1. 项目背景 在现代Web应用中&#xff0c;高可用性和负载均衡是两个至关重要的需求。本项目旨在通过HAProxy实现流量分发&#xff0c;通过Keepalived实现高可用性&#xff0c;通过Nginx提供后端服务。该架构能够确保在单点故障的情况下&#xff0c;系统仍然能够正常运行&#…

Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…

VIC-2D 7.0 为平面样件机械试验提供全视野位移及应变数据软件

The VIC-2D系统是一个完全集成的解决方案&#xff0c;它基于优化的相关算法为平面试样的力学测试提供非接触、全场的二维位移和应变数据&#xff0c;可测量关注区域内的每个像素子集的面内位移&#xff0c;并通过多种张量选项计算全场应变。The VIC-2D 系统可测量超过 2000%变形…

多线程访问Servlet如何谨慎处理共享资源

1. 避免共享状态&#xff08;最佳实践&#xff09; 核心思想&#xff1a;Servlet 本身应设计为无状态&#xff08;Stateless&#xff09;&#xff0c;不依赖实例变量存储请求相关数据。 实现方式&#xff1a; 将变量声明在方法内部&#xff08;局部变量&#xff09;&#xff0…

从Windows到Mac的过渡:学习笔记与心得

作为一名长期使用Windows操作系统的用户&#xff0c;当我决定转换到Mac时&#xff0c;心中充满了期待与好奇。Mac以其独特的操作系统和设计风格著称&#xff0c;虽然有许多相似之处&#xff0c;但仍有不少差异需要适应。为了帮助其他有类似转换需求的朋友&#xff0c;我总结了一…

TestNG接口自动化

第一章、 Rest assured接口测试框架 一、概述 接口自动化的框架&#xff0c;主要是用来做接口自动化测试&#xff0c;返回的报文都是JSON 语法比较简单&#xff0c;只需要掌握常用的方法 用例运行的速度非常快 断言的机制 Json 封装相关方法&#xff0c;jsonpath&#xff0c;x…

【速写】KV-cache与解码的再探讨(以束搜索实现为例)

文章目录 1 Beam Search 解码算法实现2 实现带KV Cache的Beam Search解码3 关于在带kv-cache的情况下的use_cache参数 1 Beam Search 解码算法实现 下面是一个使用PyTorch实现的beam search解码算法&#xff1a; 几个小细节&#xff1a; 束搜索可以加入length_penalty&#…

ABP-Book Store Application中文讲解 - 前期准备 - Part 3:Acme.BookStore项目模块详解之二

1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - 前期准备 - Part 3:Acme.BookStore项目模块详解 项目之间的引用关系。 目录 1. .Domain.Shared 2. .Domain 3. .Application.Contracts 4. .Application 5…

【Leetcode刷题随笔】349. 两个数组的交集

1. 题目描述 给定两个数组nums1和nums2&#xff0c;返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。 示例1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2] 题目条件&#xff1a; 1 < nums1.length, nums2.length < 10…

Unity打包安卓失败 Build failure 解决方法

【Unity】打包安卓失败 Build failure 的解决方法_com.android.build.gradle.internal.res.linkapplicat-CSDN博客 unity在打包时设置手机屏幕横屏竖屏的方法_unity打包默认横屏-CSDN博客

Window、CentOs、Ubuntu 安装 docker

Window 版本 网址&#xff1a;https://www.docker.com/ 下载 下载完成后&#xff0c;双击安装就可以了 Centos 版本 卸载 Docker &#xff08;可选&#xff09; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-log…