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

前端面试测试题目(一)

一、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模型的实践差异。


相关文章:

前端面试测试题目(一)

一、Vue的双向绑定机制&#xff08;v-model底层实现原理&#xff09; Vue的双向绑定核心由 响应式系统 和 指令语法糖 共同实现&#xff0c;具体原理如下&#xff1a; 响应式系统 Vue通过数据劫持和依赖收集实现数据变化到视图的同步&#xff1a; • 数据劫持&#xff1a;在Vue…...

最优化方法Python计算:无约束优化应用——线性回归分类器

一、线性回归分类器 假设样本数据为 ( x i , y i ) (\boldsymbol{x}_i, y_i) (xi​,yi​)&#xff0c;其中 i 1 , 2 , … , m i 1, 2, \dots, m i1,2,…,m。标签 y i y_i yi​ 取值于 k k k 个整数 { 1 , 2 , … , k } \{1, 2, \dots, k\} {1,2,…,k}&#xff0c;从而构…...

【汇正自控阀门集团】签约智橙PLM,智橙助泵阀“以国代进”

签约智橙&#xff0c;汇正阀门的“以国代进”举措 随着阀门市场竞争日益激烈、市场需求日益多样化&#xff0c;无论是出口海外、以国代进&#xff0c;还是进军新能源、造船、油气等投资景气的下游市场&#xff0c;阀门企业能否在快速迭代产品、保持技术领先的同时&#xff0c;…...

【macOS】iTerm2介绍

iTerm2 和 iTerm 是 macOS 上两个不同的终端模拟器&#xff0c;虽然名字相似&#xff0c;但它们是两个独立的项目&#xff0c;且 iTerm2 是 iTerm 的现代化继承者。以下是它们的核心区别和演进关系&#xff1a; 1. 历史背景 项目诞生时间状态开发者iTerm2002 年已停止维护Greg…...

2025年五一假期旅游市场新趋势:理性消费、多元场景与科技赋能

2025年五一假期&#xff0c;国内旅游市场再次迎来爆发式增长&#xff0c;官方数据显示&#xff0c;假期期间国内出游人次达3.14亿&#xff0c;游客总消费1802.69亿元。尽管数据规模亮眼&#xff0c;但深入分析可发现&#xff0c;旅游市场正经历结构性变革——消费行为趋于理性、…...

第3章 模拟法

3.1 模拟法概述 模拟法设计思想 模拟法通过将现实问题抽象成计算机可识别的符号与操作&#xff0c;按逻辑顺序“模拟”其过程&#xff0c;从而得到结果&#xff1b;它不依赖复杂公式或高深技巧&#xff0c;只需理清问题背景与实现步骤即可。 示例&#xff1a;鸡兔同笼问题 题…...

16.状态模式:思考与解读

原文地址:状态模式&#xff1a;思考与解读 更多内容请关注&#xff1a;深入思考与解读设计模式 引言 在开发软件系统时&#xff0c;特别是当对象的行为会随着状态的变化而变化时&#xff0c;系统往往会变得复杂。你是否遇到过这样的情况&#xff1a;一个对象的行为在不同的状…...

ActiveMQ 源码剖析:消息存储与通信协议实现(二)

四、KahaDB 消息存储实现细节 &#xff08;一&#xff09;存储原理分析 KahaDB 作为 ActiveMQ 从 5.4 版本开始的默认消息存储引擎&#xff0c;其基于日志文件的存储原理具有独特的设计和优势 。在 KahaDB 的存储目录&#xff08;如${activemq.data}/kahadb&#xff09;下&am…...

明远智睿SD2351核心板:工业AIoT时代的创新引擎

在当今工业互联网飞速发展的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;与物联网&#xff08;IoT&#xff09;的深度融合正以前所未有的态势重塑着传统制造业的格局。从自动化生产线的精准控制到智能仓储的高效管理&#xff0c;从设备运行的实时监测到产品质量的严格…...

iPhone 和 Android 在日期格式方面的区别

整篇文章由iPhone 和 Android 在日期格式方面有所不同引起,大致介绍了,两种时间标准,以及在 JavaScript 下的格式转换方法。 Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 iPhone 和 Android 在日期格式方面有所不同。其中,iPhone(iOS)使…...

使用VSCode在Windows 11上编译运行项目

使用VSCode在Windows 11上编译运行项目 VSCode是一个功能强大的跨平台代码编辑器&#xff0c;可以很好地支持C/C项目开发。以下是使用VSCode在Windows 11上编译运行此项目的详细步骤。 1. 安装VSCode 访问VSCode官网下载并安装VSCode安装完成后&#xff0c;启动VSCode 2. 安…...

边缘计算,运维架构从传统的集中式向分布式转变

在当今数字化时代&#xff0c;边缘计算的崛起正在改变着运维的格局。随着物联网、5G 等技术的快速发展&#xff0c;越来越多的数据和应用正在向边缘设备迁移&#xff0c;这给运维团队带来了新的挑战和机遇。 一、边缘计算崛起带来的运维挑战 边缘计算将计算和数据存储靠近数据…...

【基础篇】prometheus热更新解读

文章目录 本篇内容讲解热更新参数源码解读本篇总结本篇内容讲解 prometheus热更新源码解读 热更新参数 –web.enable-lifecycle : 代表开启热更新配置 修改配置文件发http请求# curl -X POST -vvv localhost:9090/-/reload * About to connect() to localhost port 9090 (…...

为了结合后端而学习前端的学习日志(1)——纯CSS静态卡片案例

前端设计专栏 使用纯CSS创建简洁名片卡片的学习实践 在这篇技术博客中&#xff0c;我将分享我的前端学习过程&#xff0c;如何使用纯HTML和CSS创建一个简洁美观的名片式卡片&#xff0c;就像我博客首页展示的那样。这种卡片设计非常适合作为个人简介、产品展示或团队成员介绍…...

汽车服务小程序功能点开发

汽车养护服务功能 智能保养预约&#xff1a;根据车辆品牌、型号及行驶里程&#xff0c;自动推荐保养项目&#xff0c;支持线上预约 4S 店或合作维修厂&#xff0c;选择服务时间与地点。故障诊断与维修&#xff1a;车主上传车辆故障现象&#xff0c;系统智能初步诊断&#xff0…...

SENSE2020BSI sCMOS科学级相机主要参数及应用场景

SENSE2020BSI sCMOS科学级相机是一款面向宽光谱成像需求的高性能科学成像设备&#xff0c;结合了背照式&#xff08;Back-Side Illuminated, BSI&#xff09;CMOS技术与先进信号处理算法&#xff0c;适用于天文观测、生物医学成像、工业检测等领域。以下是其核心特点及技术细节…...

《汽车噪声控制》复习重点

题型 选择 填空 分析 计算 第一章 噪声定义 不需要的声音&#xff0c;妨碍正常工作、学习、生活&#xff0c;危害身体健康的声音&#xff0c;统称为噪声 噪声污染 与大气污染、水污染并称现代社会三大公害 声波基本概念 定义 媒质质点的机械振动由近及远传播&am…...

物流无人机结构与载货设计分析!

一、物流无人机的结构与载货设计模块运行方式 1.结构设计特点 垂直起降与固定翼结合&#xff1a;针对复杂地形&#xff08;如山区、城市&#xff09;需求&#xff0c;采用垂直起降&#xff08;VTOL&#xff09;与固定翼结合的复合布局&#xff0c;例如“天马”H型无人机&am…...

docker创建一个centOS容器安装软件(以宝塔为例)的详细步骤

备忘&#xff1a;后续偶尔忘记了docker虚拟机与宿主机的端口映射关系&#xff0c;来这里查看即可&#xff1a; docker run -d \ --name baota \ --privilegedtrue \ -p 8888:8888 \ -p 8880:80 \ -p 8443:443 \ -p 8820:20 \ -p 8821:21 \ -v /home/www:/www/wwwroot \ centos…...

D盘出现不知名文件

各位大佬&#xff0c;电脑D盘去年还干干净净的&#xff0c;后来突然就出现了所圈部分的几个不知名文件&#xff0c;请问这是什么东西&#xff1f;是否可以删除&#xff1f;...

Rust 中 Arc 的深度分析:从原理到性能优化实践

在 Rust 的并发编程中&#xff0c;Arc&#xff08;Atomic Reference Counted&#xff09; 是一个非常关键的智能指针类型&#xff0c;用于在多个线程之间共享数据的所有权。它通过原子操作维护引用计数&#xff0c;确保在多线程环境下安全地管理堆内存资源。然而&#xff0c;很…...

qsort函数

在本篇中&#xff0c;将深入了解qsort函数的用法。 1.qsort函数的基础知识 该函数是用来排序的&#xff0c;这是一个可以直接用来排序数据的库函数&#xff08;#include<stdlib.h>&#xff09;&#xff0c;底层使用的是快速排序的方式。 常见的排序方式有&#xff1a; …...

01 一文了解大数据存储框架:数据库、数据仓库、数据集市、数据网格、数据湖、数据湖仓

1. 大数据存储框架 1.1 定义 数据库&#xff08;Database&#xff09;&#xff1a;数据库是按照数据结构来组织、存储和管理数据的仓库&#xff0c;是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据仓库&#xff08;Data Warehouse&#xff…...

QT —— QWidget(2)

QT —— QWidget&#xff08;2&#xff09; windowTitlewindowIconQt 资源系统 (qrc 机制) 详解基本概念使用方法1. 创建 .qrc 文件 设置背景windowOpacity 我们今天继续来学习QWidget&#xff0c;如果大家上一次的博客还没有看过&#xff0c;可以点击这里&#xff1a; https:/…...

微信小程序预览文件 兼容性苹果

uni.request({url: url,method: GET,header: {Authorization: token,responseType: blob,},responseType: "arraybuffer",success: (res) > {uni.hideLoading()const fs wx.getFileSystemManager(); //获取全局唯一的文件管理器let index url.lastIndexOf("…...

QT:qt5调用打开exe程序并获取调用按钮控件实例2025.5.7

为实现在 VS2015 的 Qt 开发环境下打开外部 exe&#xff0c;列出其界面按钮控件的序号与文本名&#xff0c;然后点击包含特定文本的按钮控件。以下是更新后的代码&#xff1a; #include <QCoreApplication> #include <QProcess> #include <QDebug> #include…...

Flink + Kafka 数据血缘追踪与审计机制实战

一、引言 在实时数据系统中,“我的数据从哪来?去往何处?” 是业务方最关心的问题之一。 尤其在以下场景下: 📉 金融风控:模型出现预警,需回溯数据源链路。 🧾 合规审计:监管要求提供数据全流程路径。 🛠 运维排查:Kafka Topic 数据乱序或错发后快速定位来源。 …...

【图书管理系统】详细讲解用户登录:后端代码实现及讲解、前端代码讲解

1. 约定前后端交互接口 [请求] /user/login [参数] userName&password [响应] 登录成功返回–true&#xff1b;登录失败返回–false 2. 后端代码 2.1 后端代码的逻辑 Controller层&#xff1a; &#xff08;1&#xff09;从请求和参数可以得出&#xff0c;前端通过127.0.…...

uni-app实现完成任务解锁拼图功能

界面如下 代码如下 <template><view class"puzzle-container"><view class"puzzle-title">任务进度 {{completedCount}}/{{totalPieces}}</view><view class"puzzle-grid"><viewv-for"(piece, index) in…...

鸿蒙开发——1.ArkTS声明式开发(UI范式基本语法)

鸿蒙开发——1、ArkTS声明式开发:UI范式基本语法 [TOC](鸿蒙开发——1、ArkTS声明式开发:UI范式基本语法)一、ArkTS的基本组成&#xff08;1&#xff09;核心概念&#xff08;像贴标签一样控制组件&#xff09;&#xff08;2&#xff09;基础工具包&#xff08;现成的积木块&am…...

ChatGPT-4o:临床医学科研与工作的创新引擎

技术点目录 2024大语言模型最新进展介绍ChatGPT-4o提示词使用方法与技巧ChatGPT-4o助力临床医学日常生活、学习与工作ChatGPT-4o助力临床医学课题申报、论文选题及实验方案设计ChatGPT-4o助力信息检索、总结分析、论文写作与投稿、专利idea构思与交底书的撰写ChatGPT-4o助力临床…...

Excel点击单元格内容消失

Excel点击单元格内容消失 前言一、原因说明二、解决方案1.菜单栏中找到“审阅”&#xff0c;选择“撤销工作表保护”2.输入密码3.解除成功 前言 Excel想要编辑单元格内容时&#xff0c;无论是单击还是双击单元格内容都莫名其妙的消失了 一、原因说明 单击或者双击Excel中单元…...

单片机-STM32部分:7、GPIO输入 按键

飞书文档https://x509p6c8to.feishu.cn/wiki/RtuVw6GgZiuwyBkxmdDcdsAFnKk 根据原理图&#xff0c;找到KEY1对应的PC3 找到CubeMX中的PC3&#xff0c;设置为GPIO_Input 右击&#xff0c;修改引脚名称为KEY1 或者在GPIO配置属性中修改 引脚模式&#xff1a;这里默认为输入模式&…...

从创意到变现:独立创造者的破局之路——解码《Make:独立创造者手册》

在创业浪潮奔涌的时代,独立创造者正成为商业领域中一股不可忽视的新兴力量。他们凭借对创新的执着、对问题的敏锐洞察,以及对自由创业模式的追求,试图在竞争激烈的市场中开辟属于自己的天地。《Make:独立创造者手册》如同一位经验丰富的创业导师,为独立创造者们提供了一套…...

14前端项目----登录/注册

登录/注册 assets用户注册模块登录模块tokenlogin组件业务token校验获取用户登录信息 登录成功---Header组件 assets assets文件夹:一般也是放置静态资源–>一般是多个组件共用的静态资源 webpack 会把 assests 静态资源当作是一个模块&#xff0c;打包到 js 文件里,不存在a…...

【FreeRTOS-消息队列】

参照正点原子以及以下gitee笔记整理本博客&#xff0c;并将实验结果附在文末。 https://gitee.com/xrbin/FreeRTOS_learning/tree/master 一、队列简介 1、FreeRTOS中的消息队列是什么 答&#xff1a;消息队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传…...

二叉查找树,平衡二叉树(AVL),b树,b+树,红黑树

🌲 一、二叉查找树(Binary Search Tree,简称 BST) 📌 定义 二叉查找树是一棵二叉树,它满足这样的特性: 每个节点最多有两个子节点(左、右)对于任意一个节点: 它左子树的所有节点值都比它小它右子树的所有节点值都比它大📈 举个例子 复制代码 10/ \5 20/ \ …...

可执行文件格式(ELF格式)以及进程地址空间第二讲【Linux操作系统】

文章目录 可执行文件的格式可执行文件中存储了什么可执行文件中的虚拟地址以及加载 进程地址空间第二讲CPU如何执行进程的代码再谈进程地址空间的区域划分 可执行文件的格式 源文件被编译器编译之后的可执行文件&#xff0c;并不是只有代码和数据&#xff0c;还有一定的格式&a…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.1 基础图表绘制(折线图/柱状图/散点图)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 PostgreSQL数据分析实战&#xff1a;基础图表绘制&#xff08;折线图/柱状图/散点图&#xff09;8.1 基础图表绘制8.1.1 折线图&#xff1a;展现数据趋势数据准备图表绘制步…...

Yii2.0 模型规则(rules)详解

一、基本语法结构 public function rules() {return [// 规则1[[attribute1, attribute2], validator, options > value, ...],// 规则2[attribute, validator, options > value, ...],// 规则3...]; }二、规则类型分类 1、核心验证器&#xff08;内置验证器&#xff0…...

Notepad++中XML格式化插件介绍

Notepad++中XML格式化插件介绍 背景安装指南安装步骤验证安装成功安装失败可尝试使用说明XML文件格式正确时格式化错误格式检查XML Tools插件核心功能盘点常见问题格式化后没变化中文显示乱码拯救杂乱XML格式!Notepad++这个神器插件,必须接收!背景 接手别人写的XML,缩进乱成…...

在 R 中,清除包含 NA(缺失值)的数据

在 R 中&#xff0c;清除包含 NA&#xff08;缺失值&#xff09;的数据可以通过多种方式实现&#xff0c;具体取决于你希望如何处理这些缺失值。以下是几种常见的方法&#xff0c;包括删除包含 NA 的行、删除包含 NA 的列&#xff0c;或者用特定值填充 NA。 1. 删除包含 NA 的…...

Linux复习笔记(一)基础命令和操作

遇到的问题&#xff0c;都有解决方案&#xff0c;希望我的博客能为你提供一点帮助。 一、Linux中的基础命令和操作&#xff08;约30%-40%) 1.用户和组&#xff08;5%左右&#xff09; 1.1用户简介&#xff08;了解&#xff09; 要求&#xff1a;了解&#xff0c;知道有三个用户…...

多线程的出现解决了什么问题?深入解析多线程的核心价值

多线程的出现解决了什么问题?深入解析多线程的核心价值 1. 引言 在计算机科学中,多线程(Multithreading) 是一种重要的并发编程技术,它允许一个进程同时执行多个任务,从而提高程序的性能和响应能力。那么,多线程究竟是为了解决哪些问题而诞生的?它的核心价值是什么?…...

java集合菜鸟教程

1、Java集合的分类 1Java中的集合类可以分为两大类&#xff1a; &#xff08;1&#xff09;实现Collection接口&#xff0c;Collection是一个基本的集合接口&#xff0c;Collection中可以容纳一组集合元素&#xff08;Element&#xff09;&#xff0c;图1是Collection与子类的…...

体育培训的实验室管理痛点 质检LIMS如何重构体育检测价值链

在竞技体育与全民健身并行的时代背景下&#xff0c;体育培训机构正面临双重挑战&#xff1a;既要通过科学训练提升学员竞技水平&#xff0c;又需严格把控运动安全风险。作为实验室数字化管理的核心工具&#xff0c;质检LIMS系统凭借其标准化流程管控与智能化数据分析能力&#…...

3、食品包装控制系统 - /自动化与控制组件/food-packaging-control

76个工业组件库示例汇总 食品包装线控制系统 这是一个用于食品包装线控制系统的自定义组件&#xff0c;提供了食品包装生产线的可视化监控与控制界面。组件采用工业风格设计&#xff0c;包含生产流程控制、实时数据监控和逻辑编程三个主要功能区域。 功能特点 工业风格UI设…...

AbMole的Calcein-AM/PI细胞双染试剂盒,精准区分细胞活死状态

在细胞生物学研究中&#xff0c;细胞活性检测是基础且关键的实验环节。然而&#xff0c;传统方法在检测活细胞和死细胞时常常面临诸多挑战&#xff1a;例如&#xff0c;检测过程复杂、耗时&#xff0c;容易受到细胞类型和实验条件的限制&#xff1b;荧光信号不稳定&#xff0c;…...

力扣刷题Day 37:LRU 缓存(146)

1.题目描述 2.思路 方法1&#xff1a;直接用Python封装好的数据结构OrderedDict&#xff08;兼具哈希表与双向链表的数据结构&#xff09;。 方法2&#xff1a;哈希表辅以双向链表。 3.代码&#xff08;Python3&#xff09; 方法1&#xff1a; class LRUCache(collections…...

动态规划之01背包——三道题助你理解01背包

目录 二维数组实现 一维数组实现 例一P1164 小A点菜 P1048 [NOIP 2005 普及组] 采药 P1802 5 倍经验日 首先做动规很好的一个办法就是卡哥提出的动规五部曲个人觉得很好用 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 确定递推公式 dp数组如何初始化 确定遍…...