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

JS进阶学习04

一、深浅拷贝

1.浅拷贝

首先浅拷贝和深拷贝只针对引用类型

浅拷贝:拷贝的是地址

常见方法:

1. 拷贝对象:Object.assgin() / 展开运算符 {...obj} 拷贝对象
2. 拷贝数组:Array.prototype.concat() 或者 [...arr]

>如果是简单数据类型拷贝值,引用数据类型拷贝的是地址 (简单理解: 如果是单层对象,没问题,如果有多层就有问题)

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>const obj = {uname: "pink",age: 18,family: {baby: "小pink",},};// 浅拷贝// const o = { ...obj };// console.log(o); //Object { uname: "pink", age: 18, family: {…} }// o.age = 20;// console.log(o); //Object { uname: "pink", age: 20, family: {…} }// console.log(obj); //Object { uname: "pink", age: 18, family: {…} }const o = {};Object.assign(o, obj);o.age = 20;o.family.baby = "老pink";console.log(o); //Object { uname: "pink", age: 20, family: {…} }console.log(obj); //Object { uname: "pink", age: 18, family: {…} }</script></body>
</html>

2.深拷贝

首先浅拷贝和深拷贝只针对引用类型
深拷贝:拷贝的是对象,不是地址
常见方法:
1. 通过递归实现深拷贝
2. lodash/cloneDeep
3. 通过JSON.stringify()实现

(1)函数递归

函数递归:
如果一个函数在内部可以调用其本身,那么这个函数就是递归函数
·简单理解:函数内部自己调用自己, 这个函数就是递归函数
·递归函数的作用和循环效果类似
· 由于递归很容易发生“栈溢出”错误(stack overflow),所以 必须要加退出条件 return
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const obj = {uname: 'pink',age: 18,hobby: ['乒乓球', '足球'],family: {baby: '小pink'}}const o = {}// 拷贝函数function deepCopy(newObj, oldObj) {debuggerfor (let k in oldObj) {// 处理数组的问题  一定先写数组 在写 对象 不能颠倒if (oldObj[k] instanceof Array) {newObj[k] = []//  newObj[k] 接收 []  hobby//  oldObj[k]   ['乒乓球', '足球']deepCopy(newObj[k], oldObj[k])} else if (oldObj[k] instanceof Object) {newObj[k] = {}deepCopy(newObj[k], oldObj[k])}else {//  k  属性名 uname age    oldObj[k]  属性值  18// newObj[k]  === o.uname  给新对象添加属性newObj[k] = oldObj[k]}}}deepCopy(o, obj) // 函数调用  两个参数 o 新对象  obj 旧对象console.log(o)o.age = 20o.hobby[0] = '篮球'o.family.baby = '老pink'console.log(obj)console.log([1, 23] instanceof Object)// 复习// const obj = {//   uname: 'pink',//   age: 18,//   hobby: ['乒乓球', '足球']// }// function deepCopy({ }, oldObj) {//   // k 属性名  oldObj[k] 属性值//   for (let k in oldObj) {//     // 处理数组的问题   k 变量//     newObj[k] = oldObj[k]//     // o.uname = 'pink'//     // newObj.k  = 'pink'//   }// }</script>
</body></html>

(2)lodash

js库lodash里面cloneDeep内部实现了深拷贝

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><!-- 先引用 --><script src="./lodash.min.js"></script><script>const obj = {uname: "pink",age: 18,hobby: ["乒乓球", "足球"],family: {baby: "小pink",},};const o = _.cloneDeep(obj);console.log(o); //Object { uname: "pink", age: 18, hobby: (2) […], family: Object { baby: "老pink" } }o.family.baby = "老pink";console.log(obj); //Object { uname: "pink", age: 18, hobby: (2) […], family: Object { baby: "小pink" } }</script></body>
</html>

(3)JSON.stringify()

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>const obj = {uname: "pink",age: 18,hobby: ["乒乓球", "足球"],family: {baby: "小pink",},};// 把对象转换为 JSON 字符串// console.log(JSON.stringify(obj))const o = JSON.parse(JSON.stringify(obj));console.log(o); //Object { uname: "pink", age: 18, hobby: Array [ "乒乓球", "足球" ], family: {Object { baby: "123" }} }o.family.baby = "123";console.log(obj); //Object { uname: "pink", age: 18, hobby: Array [ "乒乓球", "足球" ], family: Object { baby: "小pink" } }</script></body>
</html>

二、异常处理

1.throw抛异常

2.try/catch捕获异常

3.debugger

相当于断点调试

三、处理this

1.this指向

(1)普通函数

普通函数的调用方式决定了 this 的值,即【谁调用 this 的值指向谁】  

 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><button>点击</button><script>// 普通函数:  谁调用我,this就指向谁console.log(this)  // windowfunction fn() {console.log(this)  // window    }window.fn()window.setTimeout(function () {console.log(this) // window }, 1000)document.querySelector('button').addEventListener('click', function () {console.log(this)  // 指向 button})const obj = {sayHi: function () {console.log(this)  // 指向 obj}}obj.sayHi()</script>
</body></html>

 (2)箭头函数

<script>console.log(this); // 此处为 window// 普通函数const sayHi = function () {console.log(this);};// 普通对象const user = {name: "小明",// 该箭头函数中的 this 为函数声明环境中 this 一致walk: () => {console.log(this);},sleep: function () {let str = "hello";console.log(this);let fn = () => {console.log(str);console.log(this); // 该箭头函数中的 this 与 sleep 中的 this 一致};// 调用箭头函数fn();},};// 动态添加方法user.sayHi = sayHi;// 函数调用// user.sayHi();// this指的是user// Object { name: "小明", walk: walk(), sleep: sleep(), sayHi: sayHi() }// user.sleep();// this指的是user(普通函数)// Object { name: "小明", walk: walk(), sleep: sleep(), sayHi: sayHi() }// hello// Object { name: "小明", walk: walk(), sleep: sleep(), sayHi: sayHi() }user.walk();// this指的是window(箭头函数)// Window// Window
</script>

 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><button class="btn">点击</button><script></script></body><script>// DOM 节点const btn = document.querySelector(".btn");// 箭头函数 此时 this 指向了 windowbtn.addEventListener("click", () => {console.log(this); //Window});// 普通函数 此时 this 指向了 DOM 对象btn.addEventListener("click", function () {console.log(this);//<button class="btn">});</script>
</html>

2.改变this

(1)call()- this指向传入的参数

 

(2)apply()-传入必须是数组,this指向数组

(3)bind()-不会调用函数,但改变this

(4)总结- important

四、性能优化 (重要)

1.防抖

所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间

 实现方式

(1)lodash提供的防抖来处理

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {width: 500px;height: 500px;background-color: #ccc;color: #fff;text-align: center;font-size: 100px;}</style>
</head><body><div class="box"></div><script src="./lodash.min.js"></script><script>const box = document.querySelector('.box')let i = 1  // 让这个变量++// 鼠标移动函数function mouseMove() {box.innerHTML = ++i// 如果里面存在大量操作 dom 的情况,可能会卡顿}// 添加事件// box.addEventListener('mousemove', mouseMove)// lodash 防抖的写法 - 500ms后加一// 语法:_.debounce(fun,时间)box.addEventListener('mousemove', _.debounce(mouseMove, 500))</script>
</body></html>

(2)手写一个防抖函数来处理

手写防抖函数

核心是利用setTimeout()定时器来实现

1.声明定时器变量

2.每次鼠标移动(时间触发)的时候都要先判断是否有定时器,如果有先清除以前的定时器

3.如果没有定时器,则开启定时器,存入到定时器变量里面。

4.定时器里面写函数调用

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {width: 500px;height: 500px;background-color: #ccc;color: #fff;text-align: center;font-size: 100px;}</style>
</head><body><div class="box"></div><script>const box = document.querySelector('.box')let i = 1  // 让这个变量++// 鼠标移动函数function mouseMove() {box.innerHTML = ++i// 如果里面存在大量操作 dom 的情况,可能会卡顿}// 防抖函数function debounce(fn, t) {let timeIdreturn function () {// 如果有定时器就清除if (timeId) clearTimeout(timeId)// 开启定时器 200timeId = setTimeout(function () {fn()}, t)}}// box.addEventListener('mousemove', mouseMove)box.addEventListener('mousemove', debounce(mouseMove, 200))</script>
</body></html>

2.节流

所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数。

(1) lodash函数

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {width: 500px;height: 500px;background-color: #ccc;color: #fff;text-align: center;font-size: 100px;}</style></head><body><div class="box"></div><script src="./lodash.min.js"></script><script>const box = document.querySelector(".box");let i = 1; // 让这个变量++// 鼠标移动函数function mouseMove() {box.innerHTML = ++i;// 如果里面存在大量操作 dom 的情况,可能会卡顿}// box.addEventListener('mousemove', mouseMove)// lodash 节流写法box.addEventListener("mousemove", _.throttle(mouseMove, 500));</script></body>
</html>

(2)手写一个节流函数

手写一个节流函数- 每隔 500ms + 1

节流的核心就是利用定时器(setTimeout)来实现

1.声明一个定时器变量

2.当鼠标每次滑动都先判断是否有定时器了,如果有定时器则不开启新定时器

3.如果没有定时器则开启定时器,记得存到变量里面

3.1 定时器里面调用执行的函数

3.2定时器里面要把定时器清空

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {width: 500px;height: 500px;background-color: #ccc;color: #fff;text-align: center;font-size: 100px;}</style></head><body><div class="box"></div><script>const box = document.querySelector(".box");let i = 1; // 让这个变量++// 鼠标移动函数function mouseMove() {box.innerHTML = ++i;// 如果里面存在大量操作 dom 的情况,可能会卡顿}// 手写一个节流函数- 每隔 500ms + 1// 节流的核心就是利用定时器(setTimeout)来实现// 1.声明一个定时器变量// 2.当鼠标每次滑动都先判断是否有定时器了,如果有定时器则不开启新定时器// 3.如果没有定时器则开启定时器,记得存到变量里面// 3.1 定时器里面调用执行的函数// 3.2定时器里面要把定时器清空// 节流函数function throttle(fn, t) {let timeId = null;return function () {if (!timeId) {timeId = setTimeout(function () {fn();// 清空定时器timeId = null;// 不用clearTimeout() // 原因:在setTimeout中是无法删除定时器多,因为定时器还在运作,所以使用timer=null 而不是clearTimeout(timer)}, t);}};}// box.addEventListener('mousemove', mouseMove)box.addEventListener("mousemove", throttle(mouseMove, 200));</script></body>
</html>

 3.总结

 

相关文章:

JS进阶学习04

一、深浅拷贝 1.浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝&#xff1a;拷贝的是地址 常见方法&#xff1a; 1. 拷贝对象&#xff1a;Object.assgin() / 展开运算符 {...obj} 拷贝对象 2. 拷贝数组&#xff1a;Array.prototype.concat() 或者 [...arr] >如果是简…...

CSS、SCSS 和 SASS 的语法差异

CSS、SCSS 和 SASS 的语法差异 CSS (Cascading Style Sheets) 标准样式表语言&#xff0c;所有浏览器原生支持语法特点&#xff1a; 使用大括号 {} 包裹规则使用分号 ; 结束声明简单的选择器-属性-值结构 .container {width: 100%;margin: 0 auto; }SCSS (Sassy CSS) CSS的…...

ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的使用场景

在Spring Boot项目中&#xff0c;ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的使用场景不同&#xff0c;但大部分开发者会更倾向于用 ThreadPoolTaskExecutor。我来给你拆解清楚&#xff0c;面试时直接甩这个答案&#xff01; 1️⃣ 核心区别 ThreadPoolExecutor&#xf…...

打卡31天

文件的规范拆分和写法 知识点回顾 规范的文件命名 规范的文件夹管理 机器学习项目的拆分 编码格式和类型注解 作业&#xff1a;尝试针对之前的心脏病项目&#xff0c;准备拆分的项目文件&#xff0c;思考下哪些部分可以未来复用。 补充介绍&#xff1a; pyc文件的介绍 知识…...

OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市

OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市分析 OBOO鸥柏品牌推出的AI数字人触摸屏查询触控人脸识别语音交互一体机&#xff0c;是其在智能交互设备领域的又一创新产品。该一体机整合了触摸屏查询、AI人脸识别、AI声源定位语音麦克风&#xff0c;触控交互以…...

基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、大模型技术原理与应用现状 2.1 大模型基本原理 2.2 在医疗领域的应用案例 三、闭合性尺桡骨干骨折概述 3.1 骨折定义与分类 3.2 流行病学特征 3.3 临床症状与诊断方法 四、大模型在术前风险预测中的应用 4.1 数…...

Win11上安装docker

Win11上安装docker 一、安装WSL&#xff08;Windows Subsystem for Linux&#xff09;二、安装docker到D盘三、启动docker四、测试启动容器 一、安装WSL&#xff08;Windows Subsystem for Linux&#xff09; 以管理员身份打开cmd 更新WSL wsl --update3. 安装WSL wsl --ins…...

Axure项目实战:智慧运输平台后台管理端-订单管理1(多级交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理 主要内容:条件组合、中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景…...

如何在 Android 手机和平板电脑上下载应用程序

对于Android用户来说&#xff0c;从Google Play Store下载应用程序并不陌生&#xff0c;对吧&#xff1f;但是&#xff0c;除了 Google Play 商店之外&#xff0c;您还可以在哪里为 Android 设备下载和安装应用程序呢&#xff1f;这就是我们今天要分享的内容。我们解释了 6 种下…...

C++23 新特性:允许 std::stack 与 std::queue 从迭代器对构造 (P1425R4)

文章目录 背景与动机提案内容与实现细节提案 P1425R4实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 总结 C23标准带来了许多令人兴奋的新特性和改进&#xff0c;其中之一便是对标准容器的增强。提案P1425R4允许 std::stack 和 std::queue 直接从一对迭代器…...

在线OJ系统测试报告

在线OJ系统测试报告 项目背景项目功能管理员功能用户功能 测试计划功能测试自动化测试性能测试 项目背景 本项目为在线OJ系统&#xff0c;采用微服务架构以及前后端分离的方法来实现&#xff0c;包含用户管理、题目管理、竞赛管理、判题服务、网关服务、消息与任务调度等多个子…...

31-35【动手学深度学习】深度学习硬件

1. CPU和GPU 1.1 CPU CPU每秒钟计算的浮点运算数为0.15&#xff0c;GPU为12。GPU的显存很低&#xff0c;16GB&#xff08;可能32G封顶&#xff09;&#xff0c;CPU可以一直插内存。 左边是GPU&#xff08;只能做些很简单的游戏&#xff0c;视频处理&#xff09;&#xff0c;中…...

Dify的大语言模型(LLM) AI 应用开发平台-本地部署

前言 今天闲着&#xff0c;捣鼓一下 Dify 这个开源平台&#xff0c;在 mac 系统上&#xff0c;本地部署并运行 Dify 平台&#xff0c;下面记录个人在本地部署Dify 的过程。 Dify是什么&#xff1f; Dify是一个开源的大语言模型&#xff08;LLM&#xff09;应用开发平台&#…...

《MQTT 从 0 到 1:原理、实战与面试指南全解》

一、MQTT 是什么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种 轻量级、基于发布/订阅&#xff08;Pub/Sub&#xff09;模式的消息传输协议&#xff0c;适用于物联网&#xff08;IoT&#xff09;、实时通信等对 低带宽、高延迟、不稳定…...

SpringMVC 通过ajax 实现文件的上传

使用form表单在springmvc 项目中上传文件&#xff0c;文件上传成功之后往往会跳转到其他的页面。但是有的时候&#xff0c;文件上传成功的同时&#xff0c;并不需要进行页面的跳转&#xff0c;可以通过ajax来实现文件的上传 下面我们来看看如何来实现&#xff1a; 方式1&…...

图片识别(TransFormerCNNMLP)

目录 一、Transformer &#xff08;一&#xff09;ViT&#xff1a;Transformer 引入计算机视觉的里程碑 &#xff08;二&#xff09;Swin-Transformer&#xff1a;借鉴卷积改进 ViT &#xff08;三&#xff09;VAN&#xff1a;使用卷积模仿 ViT &#xff08;四&#xff09;…...

手术机器人行业新趋势:Kinova多机械臂协同系统如何突破复杂场景适应性瓶颈?

机器人手术历经多阶段技术演进&#xff0c;已成为现代医疗重要方向。其需求增长源于医疗机构对高精度低风险手术方案的需求、微创手术普及及技术进步带来的复杂场景适应性提升。Kinova 轻型机械臂凭借模块化设计与即插即用功能&#xff0c;可快速适配不同手术环境&#xff0c;为…...

国酒华夏实业酒水供应链:全品类覆盖打造一站式购销平台

在消费升级与供应链效率双重驱动的酒水行业变革中&#xff0c;国酒华夏实业凭借全品类覆盖与数字化赋能&#xff0c;构建起集采购、品鉴、文化传播于一体的新型酒水供应链体系。其“一站式购销平台”模式不仅重塑了传统酒水流通链路&#xff0c;更通过精准服务与品质保障&#…...

【Qt】:设置hover属性,没有适应到子控件中

#ButtonStyle:hover 是一个 ID 选择器&#xff0c;仅对设置了 objectName"ButtonStyle" 的控件本身生效&#xff0c;不会自动应用到其子控件&#xff08;如 QLabel 和 QWidget&#xff09;。 在ButtonForm中&#xff0c;有一个Qwidget控件&#xff0c;在这个Qwidget中…...

缺乏经验的 PCB 过孔建模方法

您是一名背板设计人员,被指派设计一种新的高速、多千兆位串行链路架构,从多个线卡到背板上的多个交换矩阵交换卡。这些链路必须在第一天以 6GB/s 的速度运行,并且为 10GB/s (IEEE 802.3KR) 做好产品演进的准备。时间表很紧,您需要提出一个背板架构,以允许程序的其余部分…...

搭建人工智能RAG知识库的主流平台与特点概述

在2022年末chatgpt和2024年末deepseek的推动下&#xff0c;人工智能应用如雨后春笋&#xff0c;层出不穷&#xff0c;日新月异。现推荐一些截至目前比较主流的用来搭建RAG的平台。 1. Haystack 特点&#xff1a; 模块化架构&#xff1a;支持端到端问答系统构建&#xff0c;集…...

【QT】在界面A打开界面B时,界面A隐藏,界面B关闭时,界面A复现

在Qt6中&#xff0c;可以通过信号与槽机制实现界面A在关闭界面B时重新显示。以下是具体的实现步骤&#xff1a; 方法一&#xff1a;使用自定义关闭信号 在界面B中定义关闭信号&#xff1a;当界面B关闭时发射该信号。连接信号到界面A的显示槽&#xff1a;在界面A中创建界面B时…...

捡漏岗位:国考报名数据和岗位特征分析

2025 年国考官方数据及权威分析&#xff0c;报录比低于 10:1 的岗位主要集中在中西部艰苦边远地区、特殊专业技术岗位及定向招录岗位。 岗位名称招录机关地区招录人数报名人数报录比报考条件示例一级警长及以下&#xff08;三&#xff09;新疆出入境边防检查总站新疆3124:1男性…...

qt---命名规范

1、命名规范 1) 类名&#xff1a;单词首字母大写&#xff0c;单词和单词之间直接连接&#xff0c;无需连接字符 如&#xff1a;MyClass&#xff0c;QPushButton class MainWindow { };2) Qt中内置的类型&#xff0c;头文件和类命名同名。 如&#xff1a; #include <QStri…...

信息系统项目管理师考前练习3

项目组合管理 企业战略调整后,项目组合经理应优先: A. 终止所有不符合新战略的项目 B. 重新评估项目优先级与资源分配 C. 要求所有项目加快交付进度 D. 合并相似项目以减少成本 答案:B 解析:项目组合管理的核心是动态对齐战略,优先重新评估项目价值与资源匹配(第5版强调…...

【算法创新+设计】灰狼算法GWO+扰动算子,求解大规模TSP问题利器

目录 1.灰狼算法GWO原理2.连续空间到离散空间3.核心公式处理4.结果展示5.代码获取6.读者交流 1.灰狼算法GWO原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.连续空间到离散空间 GWO算法是针对连续空间问题设计的优化方法&#xff0c;而旅行商问题&#…...

GPU P-State 模式说明

在 NVIDIA GPU 上&#xff0c;“P-State”&#xff08;Performance State&#xff09;用来表示显卡当前的性能&#xff0f;功耗等级&#xff0c;P0 代表最高性能&#xff08;最高核心频率、最大功耗&#xff09;&#xff0c;数字越大性能越低、功耗越小。不同 P-State 的主要区…...

真实世界中的贝叶斯网络:Bootstrap、模型平均与非齐次动态的科研应用

在生态与环境科学领域&#xff0c;揭示变量间因果机制是理解复杂系统运行规律的核心挑战。传统实验方法受限于高昂成本与生态扰动风险&#xff0c;而经典统计模型仅能刻画变量相关性&#xff0c;难以突破"相关非因果"的认知瓶颈。贝叶斯网络作为融合图论与概率论的前…...

.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

一&#xff1a;背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点&#xff0c;这篇我们聚焦注入点可接收的几类参数的解读&#xff0c;非常有意思&#xff0c;在.NET高级调试 视角下也是非常重要的&#xff0c;到底是哪些参数&#xff0c;用一张表格整理如下&#xff…...

【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答

栏目内容论文标题End-to-End Navigation with Vision-Language Models: Transforming Spatial Reasoning into Question-Answering (端到端导航与视觉语言模型&#xff1a;将空间推理转化为问答)核心问题如何利用大型视觉语言模型&#xff08;VLM&#xff09;实现端到端的机器人…...

云原生攻防4(Kubernetes基础补充)

什么是K8S? Kubernetes 是做什么的? 什么是 Docker? 什么是容器编排? Kubernetes 一词来自希腊语,意思是“飞行员”或“舵手”。这个名字很贴切,Kubernetes 可以帮助你在波涛汹涌的容器海洋中航行。 Kubernetes 是 Google 基于 Borg 开源的容器编排调度引擎,作为 CNCF最…...

redis--redisJava客户端:Jedis详解

在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a; https://redis.io/docs/latest/develop/clients/ Jedis 以Redis命令做方法名称&#xff0c;学习成本低&#xff0c;简单实用&#xff0c;但是对于Jedis实例是线程不安全的&#xff08;即创建一个Jedis实例&a…...

SpringBoot-SpringBoot源码解读

SpringBoot-SpringBoot源码解读 一、Spring Boot启动过程概述 Spring Boot通过一系列的类和机制&#xff0c;简化了Spring应用的启动流程。当你执行SpringApplication.run()时&#xff0c;Spring Boot会自动完成应用的初始化、环境配置、组件加载、自动配置等任务&#xff0c…...

黑马程序员C++2024新版笔记 第4章 函数和结构体

1.结构体的基本应用 结构体struct是一种用户自定义的复合数据类型&#xff0c;可以包含不同类型的成员。例如&#xff1a; struct Studet {string name;int age;string gender; } 结构体的声明定义和使用的基本语法&#xff1a; struct 结构体类型 {成员1类型 成员1名称;成…...

【沉浸式求职学习day46】【华为5.7暑期机试题目讲解】

沉浸式求职学习 题目1题目2 题目1 一个超大智能汽车测试场有多个充电桩&#xff0c;每个充电桩的位置由其在二维平面上的坐标(x,y)表示。给定一辆智能汽车的当前位置(car_x,car_y)&#xff0c;请设计一个高效的算法&#xff0c;找出给定智能汽车行驶到充电桩行驶距离最近的k个…...

PDF处理控件Aspose.PDF教程:以编程方式将PDF转换为Word

您是否正在寻找在线将 PDF 转换为 Word 的方法&#xff1f;在本指南中&#xff0c;我们将探索如何使用 C#、Java 和 Python 编码解决方案将 PDF 文档转换为可编辑的 Word 文件。开发人员通过代码将 PDF 文件转换为 Word 格式&#xff0c;从而获得显著优势。这种方法可以轻松实现…...

旋转位置RoPE编码详解

一. 旋转位置编码和正余弦位置编码比对 旋转位置编码&#xff08;RoPE&#xff09;和正余弦位置编码&#xff08;Sinusoidal Position Encoding&#xff09;是两种常用的位置编码方法&#xff0c;它们在处理序列数据时具有不同的数学形式和特性。以下是对两者优劣的详细说明及…...

canvas(二)-动画(2d)

<canvas> 动画是通过 JavaScript 动态更新画布内容来实现的。它利用 requestAnimationFrame 方法实现平滑的动画效果&#xff0c;适用于游戏、数据可视化、交互式图形等场景。真的需要数据可视化等场景使用&#xff0c;还是直接引入外部模型还原度比较高&#xff0c;但同…...

Dynamics 365 Business Central Azure application registration

本方法适用于 单租户服务器身份验证。 实现方法 在大多数组织里ERP Admin 不一定有权限 Azure Admin权限&#xff0c;在实施过程中你只需要把以下指引发给你的系统管理员。 请注意后面有系统管理员设置好后&#xff0c;你如何检查。 导航到 https://admin.microsoft.com 并登…...

选择合适的Azure数据库监控工具

Azure云为组织提供了众多服务&#xff0c;使其能够无缝运行应用程序、Web服务和服务器部署&#xff0c;其中包括云端数据库部署。Azure数据库能够与云应用程序实现无缝集成&#xff0c;具备可靠、易扩展和易管理的特性&#xff0c;不仅能提升数据库可用性与性能&#xff0c;同时…...

Access链接Azure SQL

Hi&#xff0c;大家好呀&#xff01; 最近在给大家分享了SQL Server方面的一些视频&#xff0c;那今天我们也来讲讲Azure SQL。 什么是Azure SQL&#xff0c;这里我们就不介绍了&#xff0c;如果你没有用这个数据库&#xff0c;那你可以简单的把它理解成&#xff0c;就是SQL …...

34、React Server Actions深度解析

一、灵魂契约协议&#xff08;核心机制&#xff09; 1. 次元融合架构 "use server";async function borrowBook(bookId: number, readerName: string) {// 模拟数据库操作const result await db.execute(UPDATE books SET available false WHERE id ?,[bookId]…...

Azure 应用服务中的异常处理、日志记录和通知:综合指南

简介 Azure 应用服务是基于云的应用程序&#xff0c;使开发人员能够在云上构建、部署和管理应用程序。与任何应用程序一样&#xff0c;制定适当的异常处理、日志记录和通知实践至关重要&#xff0c;以确保应用程序平稳运行&#xff0c;并快速识别和解决任何问题。在本篇博文中&…...

第16天-使用Python Pillow库常见图像处理场景

1. 打开与显示图像 from PIL import Image# 打开图像文件 img = Image.open("input.jpg")# 显示图像基本信息 print(f"格式: {img.format}") # JPEG print(f"尺寸: {img.size}") # (宽度, 高度) print(f"模式: {img.mode}") …...

VUE3+TS实现图片缩放移动弹窗

完整代码 使用VUE3、TS&#xff0c;实现将图片通过鼠标拖拽缩放以及选择缩放比例。 <template><div><el-dialogv-model"dialogVisible"title"查看图片":close-on-click-modal"false":close-on-press-escape"false"fu…...

关于Vue自定义组件封装的属性/事件/插槽的透传问题

// parent.vue <Myinputv-model"keyWords"placeholder"请输入内容"size"small"input"input"change"change"width"320" ><template #prepend><el-select v-model"select" placeholder&qu…...

智能驾驶中的深度学习:基于卷积神经网络的车道线检测

摘要 智能驾驶是人工智能技术的重要应用领域之一,而车道线检测是实现自动驾驶的基础功能。本文介绍了一种基于深度学习的车道线检测方法,使用卷积神经网络(CNN)对道路图像进行实时分析。文章详细阐述了数据预处理、模型构建、训练优化及实际部署的完整流程,并提供了Pytho…...

在 Excel xll 自动注册操作 中使用东方仙盟软件2————仙盟创梦IDE

// 获取当前工作表名称string sheetName (string)XlCall.Excel(XlCall.xlfGetDocument, 7);// 构造动态名称&#xff08;例如&#xff1a;Sheet1!MyNamedCell&#xff09;string fullName $"{sheetName}!MyNamedCell";// 获取引用并设置值var namedRange (ExcelRe…...

【每周一个MCP】:将pytdx封装成MCP

文章目录 配置文件MCP代码(其实github上都有)不错不错,星星之火可以燎原。 https://github.com/ddholiday/onedayoneMCP/tree/main/MCPs/tdx-mcp 配置文件 pytdx有两种读取数据的方式,分别是,从API读取,和从本地读取。 其中,从API读取,需要IP和端口。 这个官方文档…...

Vue3中插槽, pinia的安装和使用(超详细教程)

1. 插槽 插槽是指, 将一个组件的代码片段, 引入到另一个组件。 1.1 匿名插槽 通过简单的案例来学习匿名插槽&#xff0c;案例说明&#xff0c;在父组件App.vue中导入了子组件Son1.vue&#xff0c;父组件引用子组件的位置添加了一个片段&#xff0c;比如h2标签&#xff0c;然…...