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

JavaScript 笔记 --- part6 --- JS进阶 (part1)

JS 进阶(part1)

作用域

局部作用域

  • 定义: 局部作用域指的是在函数内部定义的变量,只能在函数内部访问,外部不能访问。

  • 特点: 局部作用域变量只能在函数内部或代码块中访问,外部不能访问。

  • 分类:

    • 函数作用域: 指的是在函数内部定义的变量,只能在函数内部访问,外部不能访问。

    • 块作用域: 指的是在代码块({})中定义的变量,可以在代码块中访问,外部不能访问。

全局作用域

  • 定义: 全局作用域指的是在函数外部定义的变量,可以在整个程序范围内访问。

  • 特点: 全局作用域变量可以在整个程序范围内访问。

  • 建议: 不建议在全局作用域定义变量,容易造成命名冲突。

作用域链

  • 定义: 作用域链是由一系列变量对象组成的链式结构,它决定了变量的查找方式。

  • 作用: 作用域链的作用是保证对变量的访问权限。

  • 机制: 当解释器在执行代码时,会在当前作用域和上层作用域中查找变量,如果在当前作用域中没有找到,则继续在上层作用域中查找,直到找到为止。

  • 特点: 子作用域能够访问父作用域, 但父作用域不能访问子作用域。

JS 垃圾回收机制

  • 定义: 垃圾回收机制是指自动释放不再使用的内存,以便为应用程序提供更多的内存空间。

  • 内存的生命周期:

    1. 分配: 当我们声明变量、函数或创建对象时,系统会在内存中分配一块内存空间。
    2. 使用: 程序运行时(读写内存),系统使用分配的内存空间。
    3. 释放: 程序运行结束时,系统释放分配的内存空间。
  • 注意:

    1. 全局变量: 全局变量的生命周期与程序运行时长相关,当程序结束时,系统会自动释放全局变量所占用的内存。
    2. 局部变量: 局部变量的生命周期与函数执行时长相关,当函数执行结束时,系统会自动释放局部变量所占用的内存。
    3. 内存泄露: 未释放或无法释放内存。
  • 算法说明:

    1. 标记清除: 定义"无法到达的对象", 从根部出发, 如果能找到标记对象, 暂时不清除, 找不到则清除。
    2. 引用计数: 定义"内存不再使用", 就是看一个对象是否有指向它的引用, 如果没有, 则说明该对象不再使用, 可以进行回收。 / 缺点: 嵌套引用时, 无法回收。

闭包

  • 定义: 闭包是指有权访问另一个函数作用域的函数,创建闭包的常见方式是函数嵌套。

  • 特点: 闭包 = 内层函数 + 外层函数的变量

  • 作用: 封闭数据, 提供操作, 外部也可以访问函数内部的变量

  • 优点:

    1. 可以读取函数内部的变量和参数
    2. 可以在函数外部修改变量的值
    3. 延迟初始化, 只有在调用函数时才初始化变量
  • 缺点:

    1. 内存泄漏, 闭包会占用内存, 导致内存泄漏
    2. 性能问题, 每次调用函数都会创建新的闭包, 性能较低

function outer() {let a = 1;function inner() {console.log(a);}return inner;
}cosnt fun = outer();
fun();

变量提升

  • 定义: 变量提升是指 JavaScript 在执行代码前,会将在当前作用域下, var 声明的变量和函数, 提升到当前作用域的最前面, 只提升声明, 不提升赋值。

  • 作用: 变量提升可以让变量在函数内部使用前就已经声明, 避免报错, 但实际开发中, 应该避免使用变量提升。

展开运算符

  • 定义: 展开运算符是指将数组或类数组对象转换为用逗号分隔的参数序列。

  • 作用: 展开运算符可以将数组或类数组对象转换为用逗号分隔的参数序列, 方便求最值和合并数组。

  • 语法: 展开运算符是三个点(…)

  • 注意: 展开运算符只能用于数组或类数组对象, 不能用于字符串, 对象, Map, Set 等。

let arr = [1, 2, 3];
let arr2 = [4, 5, 6];let newArr = [...arr, ...arr2]; // [1, 2, 3, 4, 5, 6]let max = Math.max(...newArr); // 6

函数

函数提升

  • 定义: 函数提升是指 JavaScript 在执行代码前,会将在当前作用域下, 函数声明的函数, 提升到当前作用域的最前面。

函数参数

  • 动态参数

    • 定义: 动态参数指的是函数调用时, 传入的参数个数不确定, 可以是 0 个或多个。

    • 用法: 使用 arguments 对象(伪数组), 可以获取调用函数时传入的参数。

    • 作用: 可以实现函数的可变参数。

    function getSum() {let sum = 0;for (let i = 0; i < arguments.length; i++) {sum += arguments[i];}return sum;
    }let result = getSum(1, 2, 3); // 6
    
  • 剩余参数

    • 定义: 剩余参数指的是函数调用时, 传入的参数个数不确定, 但最后一个参数必须是数组。

    • 用法: 使用(a, b,…arr), 可以将传入的参数收集到真数组中。

    • 作用: 可以实现函数的可变参数。

    function getSum(a, b, ...arr) {let sum = a + b;for (let i = 0; i < arr.length; i++) {sum += arr[i];}return sum;
    }let result = getSum(1, 2, 3); // 6
    

箭头函数

  • 定义: 箭头函数是 ES6 新增的一种函数, 与普通函数的区别在于, 箭头函数没有自己的 this, arguments, super, new.target, 并且没有原型链。
// 普通的箭头函数
let add = (a, b) => {return a + b;
};
let result = add(1, 2); // 3// 只有一个参数的箭头函数可以省略括号, 只有一个语句的箭头函数可以省略大括号, 并且有返回值
let add1 = (a) => a + 1;
let result1 = add1(1); // 2// 返回一个对象
let obj = (name, age) => ({ name: name, age: age });let resultObj = obj("Tom", 20); // {name: 'Tom', age: 20}
箭头函数参数
  • 箭头函数没有 arguments 对象, 不能使用 arguments.length, 不能使用 arguments[i]获取参数, 但有剩余参数。

  • 箭头函数不会创建自己的 this, 但可以使用上级作用域的 this。

解构赋值

数组解构

  • 定义: 将数组中的单元值快速依次批量赋值给变量。

  • 语法: let [变量 1, 变量 2, 变量 3] = 数组;

  • 注意: 当解构赋值的变量个数与数组的单元值个数不一致时, 多余的变量会被赋值为 undefined, 少于的变量会被忽略。

/*普通数组解构*/
const arr = [1, 2, 3];
const [a, b, c] = arr;/*交换变量的值*/
let x = 1;
let y = 2;
[x, y] = [y, x];
console.log(x, y); // 2 1/*利用剩余参数*/
let [a, b, ...rest] = [1, 2, 3, 4, 5];
console.log(a, b, rest); // 1 2 [3, 4, 5]/*防止undefined传递*/
let [a = 0, b = 0, c = 0] = [1, 2];
console.log(a, b, c); // 1 2 0/*按需导入赋值*/
let [x, , y] = [1, 2, 3];
console.log(x, y); // 1 3/*多维数组解构*/
let [a, b, [c, d]] = [1, 2, [3, 4]];
console.log(a, b, c, d); // 1 2 3 4

对象解构

  • 定义: 将对象中的属性值快速依次批量赋值给变量。

  • 语法: let {变量 1: 变量 2, 变量 3: 变量 4} = 对象;

  • 注意: 当解构赋值的变量个数与对象属性个数不一致时, 多余的变量会被赋值为 undefined, 少于的变量会被忽略。且变量名应该与属性名一致。

/*普通对象解构*/
const obj = { name: "Tom", age: 20 };
const { name, age } = obj;/*重新改名*/
const obj2 = { name: "Tom", age: 20 };
const { name: n, age: a } = obj2;
//      旧名  新名/*对象数组的解构*/
const arr = [{ name: "Tom", age: 20 },{ name: "Jerry", age: 25 },
];
const [{ name, age }, { name: n, age: a }] = arr;/*多级对象解构*/
const pig = {name: "小猪",family: {father: "爸爸",mother: "妈妈",sister: {Siname: "姐姐",Sname: "妹妹",},},
};const {name,family: {father,mother,sister: { Sname, Siname },},
} = pig;

数组进阶

forEach 遍历

let arr = [1, 2, 3];arr.forEach(function (value, index) {console.log(value);console.log(index);
});

filter 过滤

const arr = [1, 2, 3, 4, 5];const newArr = arr.filter(function (value, index) {return value > 2;
});

map 映射

const arr = [1, 2, 3, 4, 5];const newArr = arr.map(function (value, index) {return value * 2;
});

reduce 归并

const arr = [1, 2, 3, 4, 5];const result = arr.reduce(function (prev, curr, index) {return prev + curr;
}, 0);// 如果有初值, 则作为第一次执行的 prev, 每一次循环的返回值作为下一次的 prev

find 找出第一个匹配项

const arr = [1, 2, 3, 4, 5];const result = arr.find(function (value, index) {return value > 2;
});

findIndex 找出第一个匹配项的索引

const arr = [1, 2, 3, 4, 5];const result = arr.findIndex(function (value, index) {return value > 2;
});

includes 判断是否包含

const arr = [1, 2, 3, 4, 5];const result = arr.includes(3);

相关文章:

JavaScript 笔记 --- part6 --- JS进阶 (part1)

JS 进阶(part1) 作用域 局部作用域 定义: 局部作用域指的是在函数内部定义的变量&#xff0c;只能在函数内部访问&#xff0c;外部不能访问。 特点: 局部作用域变量只能在函数内部或代码块中访问&#xff0c;外部不能访问。 分类: 函数作用域: 指的是在函数内部定义的变量&…...

使用matplotlib绘制Raincloud图/云雨图/柱状图/小提琴图

需求&#xff1a; 使用Python的matplotlib绘制数据分布、数据箱型图、数据散点图 参考&#xff1a; https://blog.csdn.net/weixin_39559994/article/details/128197965?fromshareblogdetail&sharetypeblogdetail&sharerId128197965&sharereferPC&sharesource…...

BT152-ASEMI机器人率器件专用BT152

编辑&#xff1a;LL BT152-ASEMI机器人率器件专用BT152 型号&#xff1a;BT152 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 引脚数量&#xff1a;3 封装尺寸&#xff1a;如图 特性&#xff1a;单向可控硅 工作结温&#xff1a;-40℃~150℃ …...

【Redis——通用命令】

文章目录 Redis为什么快&#xff1f;生产环境的概念Redis中最核心的两个命令get&#xff1a;通过key拿valueset&#xff1a;将key和value存入数据库 其他通用命令keysexist判定key是否存在delexpire&#xff1a;为指定的key设置一个过期时间TTL&#xff08;Time To Live&#x…...

qt之开发大恒usb3.0相机一

1.在大恒相机给的sample里没有看见qt开发的demo. 第一步先运行c sdk中中的demo&#xff0c;看了下代码&#xff0c;大恒使用的UI框架是MFC.然后 vs2022编译。运行结果 第一步&#xff0c;先用qt进行坐下页面布局&#xff0c;如下图&#xff08;保存图片的地方做了些更改&#…...

系列位置效应——AI与思维模型【80】

一、定义 系列位置效应思维模型是指在一系列事物或信息的呈现过程中&#xff0c;人们对于处于系列开头和结尾部分的项目的记忆效果优于中间部分项目的现象。具体而言&#xff0c;开头部分的记忆优势被称为首因效应&#xff0c;结尾部分的记忆优势被称为近因效应。这种效应反映…...

解决conda虚拟环境安装包却依旧安装到base环境下

最近跑项目装包装到几度崩溃&#xff0c;包一直没有安装到正确位置&#xff0c;为此写下这篇文章记录一下&#xff0c;也希望能帮到有需要的人。&#xff08;此文章开发环境为anaconda和window&#xff09; 方法一 先conda deactivate,看到&#xff08;base&#xff09;消失…...

设计看似完美却测不过? Intra-Pair Skew 是「讯号完整性(Signal Integrity)」里最隐形的杀手

各位不知道有没有遇过&#xff0c;一对很长的差分走线&#xff0c;看起来很正常&#xff0c;但是测试结果偶尔会fail偶尔会pass&#xff0c;不像是软件问题&#xff0c;也不像是制程问题。 看了一下Layout&#xff0c;发现阻抗匹配控制的非常好&#xff0c;TDR测试也显示阻抗好…...

使用MyBatis注解方式的完整示例,涵盖CRUD、动态SQL、分页、事务管理等场景,并附详细注释和对比表格

以下是使用MyBatis注解方式的完整示例&#xff0c;涵盖CRUD、动态SQL、分页、事务管理等场景&#xff0c;并附详细注释和对比表格&#xff1a; 项目结构 mybatis-annotation-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...

【头脑风暴】加权平均

一些加权平均而不是算术平均的思路&#xff0c;启发来源&#xff1a;ACLS,WACLS。 简单平均假设所有样本的误差和噪声特性相同&#xff0c;但在实际电路中&#xff0c;不同阶段、不同时间点的样本价值&#xff08;对最终精度的贡献&#xff09;是不同的。​​加权平均的核心思想…...

DAM-3B,英伟达推出的多模态大语言模型

DAM-3B是什么 DAM-3B&#xff08;Describe Anything 3B&#xff09;是英伟达推出的一款多模态大语言模型&#xff0c;专门用于为图像和视频中的特定区域生成详细描述。用户可以通过点、边界框、涂鸦或掩码等方式来标识目标区域&#xff0c;从而得到精准且符合上下文的文本描述…...

2025年暨南大学 ACM校赛分析与题解

文章目录 C.最长公共前缀D.排列H.回文串 法不定法&#xff0c;在于因时因势AC不了就是还得加练&#xff01; C.最长公共前缀 字典树模版题目&#xff0c;不了解字典树的同学&#xff0c;可以看我的另一篇博客 算法 之 字典树 class Node: # 和模版题目相似&#xff0c;但是多…...

图像处理——边缘检测

1 概述 边缘检测是图像处理和计算机视觉中的一项基本技术&#xff0c;用于识别图像中亮度变化剧烈的像素点&#xff0c;这些像素点通常对应于物体的边界。它通过检测图像中亮度或颜色变化显著的区域&#xff0c;提取出物体的轮廓&#xff0c;常用于计算机视觉、图像处理和模式识…...

认识哈希以及哈希表的模拟实现

文章目录 1.什么是哈希2.哈希函数2.1 除留余数法/除法散列法2.2 乘法散列法2.3 全域散列法 3.哈希冲突4.解决哈希冲突的方法4.1 开放定址法4.1.1 用除留余数法和线性探测模拟实现简单的哈希表 4.2 链地址法4.2.1 用除留余数法和链地址法模拟实现简单的哈希表 1.什么是哈希 概念…...

【Castle-X机器人】二、智能导览模块安装与调试

持续更新。。。。。。。。。。。。。。。 【Castle-X机器人】智能导览模块安装与调试 二、智能导览模块安装与调试2.1 智能导览模块安装2.2 智能导览模块调试2.2.1 红外测温传感器测试2.2.2 2D摄像头测试 二、智能导览模块安装与调试 2.1 智能导览模块安装 使用相应工具将智能…...

硬件须知的基本问题2

目录 1、典型电路 1. DC5V 转 DC3.3V 电路 2. 通信电路 2、STM32F103RCT6 最小系统如何设计搭建电路 1. 电源电路 2. 复位电路 3. 时钟电路 4. 下载电路 5. 单片机连接连接 3、请列举你所知道的二极管型号&#xff1f; 1. 整流二极管 2. 小信号二极管 3. 肖特基二极管 4. 超…...

Dify 使用 excel 或者 csv 文件创建知识库

Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库&#xff0c;导入excel/csv文件&#xff0c; 文件内容&#xff0c; 单击 “预览块”&#xff0c;可以确认会生成多个键值对的块&#xff0c; 配置 Embedding 模型和检索…...

深入理解二叉树遍历:递归与栈的双重视角

二叉树的遍历前序遍历中序遍历后续遍历总结 二叉树的遍历 虽然用递归的方法遍历二叉树实现起来更简单&#xff0c;但是要想深入理解二叉树的遍历&#xff0c;我们还必须要掌握用栈遍历二叉树&#xff0c;递归其实就是利用了系统栈去遍历。特此记录一下如何用双重视角去看待二叉…...

通过gap看margin和padding在布局中的应用

在CSS布局中&#xff0c;控制元素之间的间距有多种方式&#xff1a;margin、padding&#xff0c;还有新晋的gap属性。虽然选择多了&#xff0c;但这也带来了不少头疼的问题。比如&#xff0c;你的自定义组件到底该不该加margin&#xff1f;如果加了&#xff0c;那在使用这个组件…...

图像畸变-径向切向畸变实时图像RTSP推流

实验环境 注意&#xff1a;ffmpeg进程stdin写入两张图片的时间间隔不能太长&#xff0c;否则mediamtx会出现对应的推流session超时退出。 实验效果 全部代码 my_util.py #进度条 import os import sys import time import shutil import logging import time from datetime i…...

2025最新Facefusion3.1.2使用Docker部署,保姆级教程,无需配置环境

Docker部署Facefusion 环境 windows10 Facefusion3.1.2 安装 拉取源代码 git clone https://github.com/facefusion/facefusion-docker.git 此处如果拉不下来&#xff0c;需要科学上网&#xff0c;不会的可以找我。 运行容器 将Dockerfile.cpu文件中的的From python:3.…...

区块链实战:Hyperledger Fabric多节点网络部署与高性能业务链码

一、联盟链架构设计与技术选型 1.1 架构设计原则 联盟链采用​​分层架构​​&#xff0c;包含应用层、共识层、网络层和数据层&#xff1a; ​​应用层​​&#xff1a;提供用户接口&#xff08;Web/API&#xff09;和智能合约交互入口​​共识层​​&#xff1a;采用PBFT或…...

C++学习笔记(四十)——STL之归约算法

STL 算法分类&#xff1a; 类别常见算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器内容删除remove、remove_if、unique等删除元素归约for…...

docker容器运维工具——ctop

概述 Github主页&#xff1a;https://github.com/bcicen/ctop 当服务器上运行多个容器时&#xff0c;迅速查看所有容器运行情况及指标将会大为提高工作效率。ctop工具可以像top命令一样&#xff0c;对所有容器进行总览&#xff0c;并实现简单的操作。 部署 下载&#xff08;…...

RAG vs 微调:大模型知识更新的最优解之争

一、技术本质&#xff1a;知识注入的两条路径 在大模型应用落地的实践中&#xff0c;RAG&#xff08;检索增强生成&#xff09;与微调&#xff08;Fine-tuning&#xff09;已成为知识更新的两大核心技术路径。二者的本质差异在于是否对模型参数进行修改&#xff1a; 维度RAG微…...

FPGA前瞻篇-组合逻辑电路设计-多路复用器

多路选择器&#xff08;MUX&#xff09;简介 基本概念 多路选择器&#xff08;MUX&#xff0c;Multiplexer&#xff09;是一种多输入、单输出的组合逻辑电路。 它通过选择控制信号&#xff0c;在多个输入信号中选择一个连接到输出端。 可以理解为一个多路数字开关。 &…...

Day13(前缀和)——LeetCode2845.统计趣味子数组的数目

1 题目描述 给定一个下标从0开始的数组nums&#xff0c;以及整数modulo和k。找出并统计数组中趣味子数组的数目&#xff1a; 在范围[l,r]内&#xff0c;设cnt为满足nums[i]%modulok的索引i的数量&#xff0c;并且cnt%modulok。子数组是数组中的一个连续非空的元素序列。 其中一…...

WebcamJS中文文档

文章目录 WebcamJS针对Chrome 47及以上版本的重要说明浏览器支持演示示例开源协议快速入门指南配置初始化拍摄照片自定义图像大小裁剪图像翻转图像(镜像模式)冻结/预览图像设置备用SWF文件位置重置(关闭)API 参考自定义事件向服务器提交图像跟踪上传进度包含在现有表单中自…...

论文笔记(八十)π0.5: a Vision-Language-Action Model with Open-World Generalization

π0.5: a Vision-Language-Action Model with Open-World Generalization 文章概括摘要I. 引言II. 相关工作通用机器人操作策略。非机器人数据的协同训练。使用语言进行机器人推理和规划。具有开放世界泛化能力的机器人学习系统。 III. 序言IV. π 0.5 π_{0.5} π0.5​ 模型与…...

pymongo功能整理与基础操作类

以下是 Python 与 PyMongo 的完整功能整理&#xff0c;涵盖基础操作、高级功能、性能优化及常见应用场景&#xff1a; 1. 安装与连接 (1) 安装 PyMongo pip install pymongo(2) 连接 MongoDB from pymongo import MongoClient# 基础连接&#xff08;默认本地&#xff0c;端口…...

硬件须知的基本问题1

目录 1. 电路表示中的电压源表示符号有哪些&#xff1f; 2&#xff0e;查找电路表示中的电流源表示符号有哪些&#xff1f; 3&#xff0e;上拉电阻和下拉电阻的作用是什么&#xff1f; 4&#xff0e;0 欧姆电阻在电路中有什么作用&#xff1f; 5&#xff0e;电容的耦合…...

LangChain 中的 Task(任务) 主要通过 生成器(Generator) 实现,而非传统的迭代器(Iterator)

LangChain 中的 Task&#xff08;任务&#xff09; 主要通过 生成器&#xff08;Generator&#xff09; 实现&#xff0c;而非传统的迭代器&#xff08;Iterator&#xff09;。以下是关键分析&#xff1a; 任务链的流程控制 LangChain 的 链式结构&#xff08;Chains&#xff0…...

加里·基尔代尔:CP/M之父与个人计算时代的先驱

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 加里基尔代尔&#xff1a;CP/M之父与个人计算时代的先驱 一、早年生活与教育背景 1.…...

深入解析Spring Boot配置处理器:机制、架构与实践

深入解析Spring Boot配置处理器&#xff1a;机制、架构与实践 Spring Boot的配置处理器&#xff08;spring-boot-configuration-processor&#xff09;是支撑其智能配置体验的关键组件。本文结合实际开发需求&#xff0c;从使用方式、底层原理到性能优化与架构设计&#xff0c…...

Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed:

环境: Ragflow17.2 debian12.8 问题描述: Ragflow新建的知识库完成后刷新却没有显示,报错MethodNotAllowed: 405 Method Not Allowed: The method is not allowed for the requested URL. 后台日志: 2025-04-25 13:54:25,988 ERROR 235204 405 Method Not Allowed:…...

Maven进阶知识

一、Maven 坐标 &#xff08;一&#xff09;概念 在 Maven 中坐标是构件的唯一标识&#xff0c;其元素包括 groupId、artifactId、version、packaging、classifier。其中 groupId、artifactId、version 是必定义项&#xff0c;packaging 默认为 jar。 &#xff08;二&#x…...

通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据

假设我在Snowflake里有销售表&#xff0c;包含ID主键、门店ID、日期、销售员姓名和销售额&#xff0c;需要统计出每个月所有门店和各门店销售额最高的人&#xff0c;不一定是一个人&#xff0c;以及他所在的门店ID和月总销售额。 统计每个月份下&#xff0c;各门店内销售额最高…...

聊聊Spring AI Alibaba的YuQueDocumentReader

序 本文主要研究一下Spring AI Alibaba的YuQueDocumentReader YuQueDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-yuque/src/main/java/com/alibaba/cloud/ai/reader/yuque/YuQueDocumentReader.java public class YuQueDocument…...

Tauri文件系统操作:桌面应用的核心能力(入门系列四)

今天我们来聊聊Tauri中一个超级重要的功能 - 文件系统操作。这可是Web应用和桌面应用最大的区别之一。在浏览器里&#xff0c;出于安全考虑&#xff0c;我们对文件系统的访问被限制得死死的。但在Tauri桌面应用中&#xff0c;我们可以安全地访问用户的文件系统&#xff0c;这简…...

网络流之最大流(Dinic)

正文 在了解了Ford-Fulkerson 和Edmonds-Karp之后&#xff0c;我们可以进一步学习更高效的算法——Dinic。 Dinic算法的时间复杂度是O(VE)&#xff0c;实际运用过程中是比EK算法快的。 特性Ford-FulkersonEdmonds-Karp (EK)Dinic 增广路径选择 任意方式BFS找最短路径分层图多…...

LVGL模拟器:NXP GUIDER+VSCODE

1. 下载安装包 NXP GUIDER&#xff1a;GUI Guider | NXP 半导体 CMAKE&#xff1a;Download CMake MINGW&#xff1a;https://github.com/niXman/mingw-builds-binaries/releases SDL2&#xff1a;https://github.com/libsdl-org/SDL/releases/tag/release-2.30.8 VSCODE&…...

魔幻预言手游》:职业介绍!

在《魔幻预言》手游中&#xff0c;共有武玄、魔魅、剑仙三大核心职业&#xff0c;各具特色且定位鲜明&#xff0c;以下为具体介绍&#xff1a; 一、武玄&#xff08;战士&#xff09; 核心定位&#xff1a;近战物理输出与团队增益担当&#xff0c;兼具控制与防御能力。 战斗风…...

什么时候使用Python 虚拟环境(venv)而不用conda

是的&#xff01;python3.9 -m venv rtdetr_env 是 Python 原生的虚拟环境&#xff08;venv&#xff09;&#xff0c;而 conda 是另一个流行的虚拟环境管理工具&#xff08;来自 Anaconda/Miniconda&#xff09;。下面我会详细对比两者的区别&#xff0c;并讲解 venv 的基本用法…...

Vue3的内置组件 -实现过渡动画 TransitionGroup

Vue3的内置组件 -实现过渡动画 TransitionGroup 是一个内置组件&#xff0c;用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果 支持和 基本相同的 props、CSS 过渡 class 和 JavaScript 钩子监听器&#xff0c;但有以下几点区别&#xff1a; 默认情况下&…...

水果成篮--LeetCode

题目 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xff0c;你必须按照要求采摘水…...

ROS 快速入门教程05

15. IMU航向锁定的节点 编写锁定节点 打开vscode编写imu_node.cpp #include<ros/ros.h> #include<sensor_msgs/Imu.h> #include<tf/tf.h> #include<geometry_msgs/Twist.h>ros::Publisher vel_pub;void IMUCallback(sensor_msgs::Imu msg) {if(msg.o…...

用 C 语言实现通用的冒泡排序算法

在日常编程中&#xff0c;排序算法是一个非常常见且重要的工具。虽然有许多排序算法可以选择&#xff0c;但如果你需要一个能够处理不同数据类型的排序算法&#xff0c;如何设计一个通用的排序算法呢&#xff1f;今天我们将实现一个通用的冒泡排序算法&#xff0c;支持不同数据…...

Linux——进程间通信

目录 1. 进程间通信的介绍 1.1 概念 1.2 目的 1.3 进程间通信的本质 1.4 进程间通信的分类 2. 管道 2.1 概念 2.2 匿名管道 2.2.1 原理 2.2.2 pipe函数 2.2.3 匿名管道使用步骤 2.2.4 管道读写规则 2.2.5 管道的特点 2.2.6 管道的四种特殊情况 2.2.7 管道的…...

深入详解人工智能数学基础——微积分中拉格朗日乘数法在GAN训练中的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

精益数据分析(26/126):依据商业模式确定关键指标

精益数据分析&#xff08;26/126&#xff09;&#xff1a;依据商业模式确定关键指标 在创业与数据分析的探索之路上&#xff0c;每一次的学习都像是为前行点亮一盏灯。今天&#xff0c;我们依旧怀揣着共同进步的期望&#xff0c;深入解读《精益数据分析》的相关内容&#xff0…...