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

在js中数组相关用法讲解

数组

uniqueArray

简单数组去重

/*** 简单数组去重* @param arr* @returns*/
export const uniqueArray = <T>(arr: T[]) => [...new Set(arr)];const arr1 = [1,1,1,1 2, 3];uniqueArray(arr); // [1,2,3]

uniqueArrayByKey

根据 key 数组去重

/*** 根据key数组去重* @param arr* @param key* @returns*/
export function uniqeArrayByKey(arr: any[], key: string) {const obj: Record<string, any> = {}return arr.reduce((prev, item) => {obj[item[key]] ? '' : (obj[item[key]] = true && prev.push(item))return prev}, [])
}const arr = [{ id: 1, parentid: 0 },{ id: 2, parentid: 1 },{ id: 3, parentid: 1 },{ id: 3, parentid: 1 },
]uniqeArrayByKey(arr, 'id')/*** [{ id: 1, parentid: 0 },{ id: 2, parentid: 1 },{ id: 3, parentid: 1 },
];**/

sortCompare

数组根据 key 排序

/*** 排序* arr: 所需排序的数组* prop:排序的依据字段* order:默认true -> 正序(小 -> 大) / false -> 倒序(大 -> 小)*/
export const sortCompare = (arr: any[], prop: string | number, order = true) => {return arr.sort(compare(prop, order))
}function compare(prop: string | number, order: boolean) {return (obj1: Record<string, any>, obj2: Record<string, any>) => {let val1 = obj1[prop]let val2 = obj2[prop]if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {val1 = Number(val1)val2 = Number(val2)}if (order) {if (val1 < val2) return -1else if (val1 > val2) return 1else return 0} else {if (val1 > val2) return -1else if (val1 < val2) return 1else return 0}}
}const arr = [{ order: 1, name: '1' },{ order: 10, name: '10' },{ order: 3, name: '3' },
]const sortArr = sortCompare(arr, order)/*** [{ order: 1, name: '1' },{ order: 3, name: '3' },{ order: 10, name: '10' },
];**/

multiFieldSort

数组根据多个字段排序

/*** multiFieldSort(data, [{ field: 'age', order: 'desc' }, { field: 'name' }, { field: 'salary', order: 'desc' }])* @param {*} arr* @param {*} sortFields* @returns*/
export function multiFieldSort(arr, sortFields) {return arr.sort((a, b) => {for (let i = 0; i < sortFields.length; i++) {let field = sortFields[i].fieldlet order = sortFields[i].order || 'asc'if (a[field] < b[field]) {return order === 'asc' ? -1 : 1}if (a[field] > b[field]) {return order === 'asc' ? 1 : -1}}return 0})
}

getArrayLabelByValue

根据数组和 value 获取数组中的 label,没有返回 undefined

interface IParams {arr: any[]value: anyvalueKey?: stringlabelKey?: stringdefaultValue?: string | number
}/*** 根据数组获取数组中的值* @param param* @returns*/
export function getArrayLabelByValue({arr,value,valueKey = 'value',labelKey = 'label',defaultValue = undefined,
}: IParams) {if (!Array.isArray(arr)) {throw new Error('Type requires an array')}const obj = arr.find(item => String(item[valueKey]) === String(value))return obj ? obj[labelKey] : defaultValue
}/*** {arr,value,valueKey = 'value',labelKey = 'label',defaultValue = undefined,
}*/const arr = [{label: 'Tom',value: '1',},{label: 'Lily',value: '2',},
]getArrayLabelByValue({ arr, value: '2' }) // Lily

shuffle

洗牌算法随机

/*** 洗牌算法随机* @param arr* @returns*/
export function shuffle(arr: any[]) {let result: any[] = [],random: numberwhile (arr.length > 0) {random = Math.floor(Math.random() * arr.length)result.push(arr[random])arr.splice(random, 1)}return result
}const arr = [1, 2, 3]shuffle(arr) // [2,3,1]

compact

去除数组中的无效/无用值

/*** 去除数组中的无效/无用值* @param arr* @returns*/
export function compact(arr: any[]) {return arr.filter(Boolean)
}compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34])// [ 1, 2, 3, 'a', 's', 34 ]

countOccurrences

检测数值出现次数

/*** 检测数值出现次数* @param arr* @param val* @returns*/
export function countOccurrences(arr: any[], val: any) {return arr.reduce((a, v) => (v === val ? a + 1 : a), 0)
}countOccurrences([1, 1, 2, 1, 2, 3], 1) // 3

flatten

指定深度扁平化数组

/*** 指定深度扁平化数组* @param arr* @param depth* @returns*/
export function flatten(arr: any[], depth = 1): any[] {return arr.reduce((a, v) => a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v), [])
}flatten([1, [2], 3, 4]) // [1, 2, 3, 4]
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2) // [1, 2, 3, [4, 5], 6, 7, 8]

deepFlatten

递归扁平化数组

/*** 递归扁平化数组* @param arr* @returns*/
export function deepFlatten(arr: any[]): any[] {return [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)))
}deepFlatten([1, [2], [[3], 4], 5]) // [1,2,3,4,5]

difference

查找两个数组之间的差异

/*** 查找两个数组之间的差异* @param a* @param b* @returns*/
export const difference = (a: any[], b: any[]) => {const s = new Set(b)return a.filter(x => !s.has(x))
}difference([1, 2, 3], [1, 2, 4]) // [3]

indexOfAll

返回数组中某值的所有索引

/*** 返回数组中某值的所有索引* @param arr* @param val* @returns*/
export const indexOfAll = (arr: any[], val: any) => arr.reduce((acc, el, i) => (el === val ? [...acc, i] : acc), [])indexOfAll([1, 2, 3, 1, 2, 3], 1) // [0,3]
indexOfAll([1, 2, 3], 4) // []

intersection

两数组的交集

/*** 两数组的交集* @param a* @param b* @returns*/
export const intersection = (a: any[], b: any[]) => {const s = new Set(b)return a.filter(x => s.has(x))
}intersection([1, 2, 3], [4, 3, 2]) // [2, 3]

intersectionBy

两数组都符合条件的交集

可用于在对两个数组的每个元素执行了函数之后,返回两个数组中存在的元素列表。

/*** 两数组都符合条件的交集* @param a* @param b* @param fn* @returns*/
export const intersectionBy = (a: any[], b: any[], fn: (arg0: any) => unknown) => {const s = new Set(b.map(fn))return a.filter(x => s.has(fn(x)))
}intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor) // [2.1]

intersectionWith

先比较后返回交集

/*** 先比较后返回交集* @param a* @param b* @param comp* @returns*/
export const intersectionWith = (a: any[], b: any[], comp: (arg0: any, arg1: any) => any) =>a.filter(x => b.findIndex(y => comp(x, y)) !== -1)intersectionWith([1, 1.2, 1.5, 3, 0], [1.9, 3, 0, 3.9], (a, b) => Math.round(a) === Math.round(b)) // [1.5, 3, 0]

addDeepProperty

给树结构每一层添加一层 deep 用以区分

export function addDeepProperty(tree, deep = 1) {// 添加属性 deep 到当前层级tree.deep = deep// 递归处理子节点if (tree.children && tree.children.length > 0) {tree.children.forEach(child => {addDeepProperty(child, deep + 1)})}return tree
}

相关文章:

在js中数组相关用法讲解

数组 uniqueArray 简单数组去重 /*** 简单数组去重* param arr* returns*/ export const uniqueArray <T>(arr: T[]) > [...new Set(arr)];const arr1 [1,1,1,1 2, 3];uniqueArray(arr); // [1,2,3]uniqueArrayByKey 根据 key 数组去重 /*** 根据key数组去重* …...

第四章 react-redux,@reduxjs/toolkit依赖,学习

redux系列文章目录 第一章 简单学习redux,单个reducer 第二章 简单学习redux,多个reducer 第三章 redux和react-redux&#xff0c;reduxjs/toolkit依赖结合使用 第五章 两张图告诉你redux常使用的api有哪些 前言 本章将使用react-redux&#xff0c;reduxjs/toolkit依赖创…...

雅思7分听说读写专项书籍推荐

对于目标 7分以上的雅思考生&#xff08;中高级水平&#xff09;&#xff0c;选对资料真的事半功倍。 下面按照 听力、阅读、写作、口语、综合书籍 五大类来分别列举高分推荐书籍&#xff0c;每本书包括&#xff1a;适合人群、核心内容、推荐理由&#xff0c;并贴合7分目标。 …...

C++容器使用说明

C标准库提供了多种容器&#xff0c;分为序列容器、关联容器、无序关联容器、容器适配器及其他相关类型。以下是所有标准容器的分类及简要说明&#xff1a; 1. 序列容器&#xff08;Sequence Containers&#xff09; 按线性顺序存储元素&#xff0c;支持随机或顺序访问。 vecto…...

Python-函数

1. 函数基础 1.1 定义函数 在Python中&#xff0c;使用def关键字来定义函数&#xff1a; def greet():"""简单的问候函数"""print("Hello, World!")1.2 调用函数 定义函数后&#xff0c;可以通过函数名加括号来调用&#xff1a; …...

【Redis】数据的淘汰策略

目录 淘汰策略方案&#xff08;8种&#xff09; LRU和LFU策略的区别 使用建议 手搓LRU算法 方式一 方式二 大家好&#xff0c;我是jstart千语。今天和大家回来聊一下redis&#xff0c;这次要讲的是它的淘汰策略。为什么需要淘汰策略呢&#xff0c;就是当redis里面的内存占…...

第七章:从类库到服务的分布式基石_《凤凰架构:构建可靠的大型分布式系统》

第七章&#xff1a;从类库到服务的分布式基石 一、服务发现&#xff08;Service Discovery&#xff09; 核心目标&#xff1a;解决分布式系统中服务实例动态变化时如何定位可用服务的问题。 1. 服务发现的意义 动态环境挑战&#xff1a; 微服务架构中&#xff0c;服务实例的…...

spring-ai-alibaba第九章使用Milvus构建大模型RAG应用

1、pom文件 <dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>${spring-ai-alibaba.version}</version></dependency><dependency&g…...

手撕LLM(一):从源码出发,探索LLM推理全流程

2025年&#xff0c;大模型爆发元年&#xff0c;各种各样的大模型、框架、工具层出不穷&#xff0c;不断刷新人们应用大模型的门槛&#xff0c;短短10行代码&#xff0c;就能完成“加载模型加载数据集推理强化学习”的全流程训练&#xff0c;但其底层的运行机制也被高度抽象的接…...

讯飞语音听写(流式版)开发指南

语音交互大模型的功能越来越受到重视。讯飞语音听写&#xff08;流式版&#xff09;为开发者提供了一种高效、准确的语音识别解决方案。本文将基于 Home.vue、iat_xfyun.js 和 sparkChat.js 这三个文档&#xff0c;详细阐述讯飞语音听写&#xff08;流式版&#xff09;的开发逻…...

P3654 First Step (ファーストステップ)

题目描述 可是……这个篮球场&#xff0c;好像很久没有使用过的样子啊…… 里面堆满了学校的各种杂物呢…… 我们 Aqours 的成员要怎么在里面列队站下呢&#xff1f; 我们浦之星女子学院的篮球场是一个 R 行 C 列的矩阵&#xff0c;其中堆满了各种学校的杂物 (用 # 表示)&a…...

MySQL篇(六)MySQL 分库分表:应对数据增长挑战的有效策略

MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略 MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略一、引言二、为什么需要分库分表2.1 性能瓶颈2.2 存储瓶颈2.3 高并发压力 三、分库分表的方…...

SonarQube 配置SQL Server 数据库遇到的问题

之前本机跑了一套SonarQube的社区版&#xff0c;默认使用的是H2数据库&#xff0c;那么我把它练到我机器上的SQL Server数据库了&#xff0c;期间遇到以下两个问题&#xff0c;并在配置过程中解决掉&#xff0c;特将这个过程记录下来。 一、JDBC连接SQL Server问题 1. 问题出…...

23种设计模式-行为型模式-备忘录

文章目录 简介问题解决代码关键实现要点功能扩展方向 总结 简介 备忘录是一种行为设计模式&#xff0c; 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用。你想加入撤销功能。你可以采用直接的方式来实现: 程序在执行任…...

IDEA/WebStrom操作之commit前批量清除console.log()与debugger

前言&#xff1a; 在前端开发过程中&#xff0c;往往需要频繁用到console.log()与debugger&#xff0c;来观察数据具体情况以及断点调试。在经历了水生火热的开发动作后&#xff0c;往往会残留一地console.log()和debugger&#xff0c;若开发者还得手动在多个文件中一个个去除…...

每日算法-250405

34. 在排序数组中查找元素的第一个和最后一个位置 题目 思路 本题的核心思路是二分查找。 解题过程 问题分析&#xff1a;在一个升序排列的数组中查找一个目标值 target 的起始和结束位置。这是一个典型的二分查找应用场景。核心转换&#xff1a;题目要求找到 target 的第一个…...

设计模式简述(四)模板方法模式

模板方法模式 描述基本定义使用 描述 当一系列业务的基本流程是相同的&#xff0c;对于不同的业务可以在各自子类实现 所谓模板方法指的就是父类中固定的那部分代码 其实这里的思想和前面设计原则中开闭原则的描述是一致的&#xff0c;父类中的模板代码就是稳定的部分&#x…...

论文修改时有哪些需要注意的问题?

论文修改是学术写作中不可或缺的环节&#xff0c;直接影响成果的专业性和说服力。许多作者因忽略细节或急于定稿&#xff0c;导致论文质量大打折扣。那么&#xff0c;如何修改才能提升论文的严谨性与可读性呢&#xff1f; 一、逻辑结构 论文修改时&#xff0c;先从头到尾通读…...

JAVA阻塞队列

目录 一、什么是阻塞队列&#xff1f;特点是什么&#xff1f; 二、阻塞队列的两种创建方式&#xff1a; 1、使用 ArrayBlockingQueue<>( ) : 2、使用 LinkedBlockingQueue<>( ) &#xff1a; 三、阻塞队列方法的使用&#xff1a; 阻塞队列关键的两个方法&…...

tomcat与spring-web

文章目录 SpringServletContainerInitializerWebApplicationInitializerWebApplicationInitializer接口AbstractContextLoaderInitializer抽象类AbstractDispatcherServletInitializer抽象类AbstractAnnotationConfigDispatcherServletInitializer抽象类 WebApplicationContext…...

将电脑控制手机编写为MCP server

文章目录 电脑控制手机后,截屏代码复习MCP server构建修改MCP的config文件测试效果困惑电脑控制手机后,截屏代码复习 def capture_window(hwnd: int, filename: str = None) -> dict:""&...

[ctfshow web入门]burpsuite的下载与使用

下载 吾爱破解网站工具区下载burpsuite https://www.52pojie.cn/thread-1544866-1-1.html 本博客仅转载下载链接&#xff0c;下载后请按照说明进行学习使用 打开 配置 burpsuite配置 burpsuite代理设置添加127.0.0.1:8080 浏览器配置 如果是谷歌浏览器&#xff0c;打开win…...

文章记单词 | 第25篇(六级)

一&#xff0c;单词释义 mathematical&#xff1a;形容词&#xff0c;意为 “数学的&#xff1b;数学上的&#xff1b;运算能力强的&#xff1b;关于数学的”trigger&#xff1a;名词&#xff0c;意为 “&#xff08;枪的&#xff09;扳机&#xff1b;&#xff08;炸弹的&…...

讯飞语音合成(流式版)语音专业版高质量的分析

一、引言 在现代的 Web 应用开发中&#xff0c;语音合成技术为用户提供了更加便捷和人性化的交互体验。讯飞语音合成&#xff08;流式版&#xff09;以其高效、稳定的性能&#xff0c;成为了众多开发者的首选。本文将详细介绍在 Home.vue 文件中实现讯飞语音合成&#xff08;流…...

【MediaPlayer】基于libvlc+awtk的媒体播放器

基于libvlcawtk的媒体播放器 libvlc下载地址 awtk下载地址 代码实现libvlc相关逻辑接口UI媒体接口实例化媒体播放器注意事项 libvlc 下载地址 可以到https://download.videolan.org/pub/videolan/vlc/去下载一个vlc版本&#xff0c;下载后其实是vlc的windows客户端&#xff0…...

复古未来主义屏幕辉光像素化显示器反乌托邦效果PS(PSD)设计模板样机 Analog Retro-Futuristic Monitor Effect

这款模拟复古未来主义显示器效果直接取材于 90 年代赛博朋克电影中的黑客巢穴&#xff0c;将粗糙的屏幕辉光和像素化的魅力强势回归。它精准地模仿了老式阴极射线管显示器&#xff0c;能将任何图像变成故障频出的监控画面或高风险的指挥中心用户界面。和……在一起 2 个完全可编…...

Kafka 如何保证消息有序性?

Kafka 保证消息顺序性&#xff0c;是基于 Partition&#xff08;分区&#xff09;级别的顺序 来实现的。下面我们详细拆解一下&#xff1a; ✅ 同一个 Partition 内&#xff0c;消息是严格有序的 Kafka 在 同一个分区&#xff08;Partition&#xff09;内&#xff0c;消息是按…...

【积木画】——第十三届蓝桥杯(2022)T7思路解析

题目描述 关键词 递推、dp 思路 显然这是一道递推题。 但是为什么我还要写在这呢&#xff1f;因为我虽然看了题解但是还是没想明白&#xff0c;综合了下面两篇 参考文献我才初步理解这题的精髓。所以还是自己写一遍为好。 我们把最终结果记为F(n)。 情况1 直接以一个竖着…...

Android studio xml布局预览中 Automotive和Autotive Distant Display的区别

在 Android Studio 中&#xff0c;Configure Hardware Profile 设置中的 Device Type 选项有两个不同的设置&#xff1a;Android Automotive 和 Android Automotive Distant Display&#xff0c;它们的含义和用途如下&#xff1a; 1. Android Automotive 含义&#xff1a;这个…...

第十三章:持久化存储_《凤凰架构:构建可靠的大型分布式系统》

第十三章 持久化存储 一、Kubernetes存储设计核心概念 &#xff08;1&#xff09;存储抽象模型 PersistentVolume (PV)&#xff1a;集群级别的存储资源抽象&#xff08;如NFS卷/云存储盘&#xff09;PersistentVolumeClaim (PVC)&#xff1a;用户对存储资源的声明请求&#…...

Nginx 基础使用(2025)

一、Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暂存目录 ├── conf # Nginx所有配置文件的目录 │ ├── fastcgi.conf # fastcgi相…...

Docker基础1

本篇文章我将从系统的知识体系讲解docker的由来和在linux中的安装下载 随后的文章会介绍下载镜像、启动新容器、登录新容器 如需转载&#xff0c;标记出处 docker的出现就是为了节省资本和服务器资源 当企业需要一个新的应用程序时&#xff0c;需要为它买台全新的服务器。这样…...

【奇点时刻】GPT4o新图像生成模型底层原理深度洞察报告

个人最近一直在关注openai的新图像生成特性&#xff0c;以下内容基于现阶段社区及研究者们对 GPT-4O 图像生成功能的公开测试、逆向分析与技术推测综合而成&#xff0c;OpenAI 并未正式发布完整的技术报告&#xff0c;因此本文为非官方推断总结。但从多方信息与技术背景出发&am…...

Java的Selenium的特殊元素操作与定位之模态框

Modal Dialogue Box&#xff0c;又叫做模式对话框&#xff0c;是指在用户想要对对话框以外的应用程序进行操作时&#xff0c;必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。 alert&#xff08;警告&#xff09; //访问本地的HTML文件 chromeDr…...

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测 目录 回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【JCR一区级】Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测&#xf…...

Python菜鸟教程(小程序)

目录 一.简易计算器 二.学生成绩分级 三.密码设置 四.作业选择 点赞收藏,评论支持 一.简易计算器 print(-------使用的运算符-------\n) print(1.加号) print(2.减号) print(3.乘号) print(4.除号) Aint(input(请输入第一个数: )) Bint(input(请输入第二个数: )) Fi…...

类的(多态性、虚函数)基础练习

练习1&#xff1a;&#xff08;简单&#xff09; #include <iostream> using namespace std; class Vehicle { public: virtual void run() const0; }; class Car: public Vehicle { public: void run() const { cout << "run a car. "<<…...

特殊的质数肋骨--dfs+isp

1.dfs全排列组数&#xff0c;an记得还原 2.如果范围确定且只比较质数&#xff0c;isp比线性筛快&#xff0c;主要这个范围太大了 https://www.luogu.com.cn/problem/P1218 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typed…...

智能体开发实战指南:提示词设计、开发框架与工作流详解

在大语言模型&#xff08;LLM&#xff09;驱动的智能体&#xff08;Agent&#xff09;快速发展的今天&#xff0c;构建一个实用、智能的Agent已不再遥不可及。无论你是开发法律助手、租房合同分析器&#xff0c;还是通用办公自动化助手&#xff0c;理解提示词工程&#xff08;P…...

jetson orin nano学习(torch+OpenCV+yolov5+)

一&#xff1a;入门第一件事&#xff1a;跟着商家教程配置哈哈 指令&#xff1a;nvidia-smi -h 帮助命令 sudo jtop --查看nvidia的gpu状态 Tip:教程下载的pytorth,cuda,cudnn版本不一定是你项目符合的&#xff0c;要提前想好 1.2 安装虚拟环境包&#xff08;要安…...

client-go如何监听自定义资源

如何使用 client-go 监听自定义资源 在 Kubernetes 中使用 client-go 监听自定义资源&#xff08;Custom Resource&#xff0c;简称 CR&#xff09;需要借助 Dynamic Client 或 Custom Informer&#xff0c;因为 client-go 的标准 Clientset 只支持内置资源&#xff08;如 Pod…...

【51单片机】3-3【定时器/计数器/中断】超声波测距模块测距

1.硬件 51最小系统超声波测距模块 2.软件 #include "reg52.h"//距离小于10cm,D5亮&#xff0c;D6灭&#xff0c;反之相反现象sbit D5 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit D6 P3^6;//根据原理图&…...

C语言求3到100之间的素数

一、代码展示 二、运行结果 三、感悟思考 注意: 这个题思路他是一个试除法的一个思路 先进入一个for循环 遍历3到100之间的数字 第二个for循环则是 判断他不是素数 那么就直接退出 这里用break 是素数就打印出来 在第一个for循环内 第二个for循环外...

金仓数据库KCM认证考试介绍【2025年4月更新】

KCM&#xff08;金仓认证大师&#xff09;认证是金仓KES数据库的顶级认证&#xff0c;学员需通过前置KCA、KCP认证才能考KCM认证。 KCM培训考试一般1-2个月一次&#xff0c;KCM报名费原价为1.8万&#xff0c;当前优惠价格是1万&#xff08;趋势是&#xff1a;费用越来越高&…...

leetcode每日一题:替换子串得到平衡字符串

引言 今天的每日一题原题是1863. 找出所有子集的异或总和再求和&#xff0c;比较水&#xff0c;直接对于集合中的每一个元素&#xff0c;都有取或者不取2种情况&#xff0c;直接递归进去求和即可。更换成前几天遇到的更有意思的一题来写这个每日一题。 题目 有一个只含有 Q,…...

2025年数字化社会与智能计算国际学术会议 (ICDSIC 2025)

基本信息 官网&#xff1a;www.icdsic.net 时间&#xff1a;2025年4月18-20日 地点&#xff1a;中国-深圳 主题 数字化社会 智能计算 数字化制造、经济 数字化政务、转型 数字化农业、水利、管理 数字化医疗、学习、社区 数字基建、通信、交通 数字…...

BN测试和训练时有什么不同, 在测试时怎么使用?

我们来彻底搞懂 Batch Normalization&#xff08;BN&#xff09; 在训练和测试阶段的区别&#xff0c;以及 测试时怎么用。 &#x1f9e0; 一句话总结&#xff1a; 训练时&#xff1a;使用 当前 mini-batch 的均值和方差 测试时&#xff1a;使用 整个训练集估计的“滑动平均均值…...

为什么卷积神经网络适用于图像和视频?

我们常听说“卷积神经网络&#xff08;CNN&#xff09;擅长图像和视频”&#xff0c;但其实 CNN 的核心本质远不止图像领域。我们先搞懂它为啥适合图像/视频。 &#x1f9e0;CNN 为什么适用于图像和视频&#xff1f; 主要因为 图像/视频具有空间局部性和结构平移性&#xff0c…...

python爬虫:DrissionPage实战教程

如果本文章看不懂可以看看上一篇文章&#xff0c;加强自己的基础&#xff1a;爬虫自动化工具&#xff1a;DrissionPage-CSDN博客 案例解析&#xff1a; 前提&#xff1a;我们以ChromiumPage为主&#xff0c;写代码工具使用Pycharm&#xff08;python环境3.9-3.10&#xff09; …...

【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!

大家好&#xff0c;我是唐叔&#xff01;上期我们聊了 BeautifulSoup的基础用法 &#xff0c;今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧&#xff0c;以及那些官方文档里不会告诉你的实战经验&#xff01; 文章目录 一、BeautifulSoup性能优化技巧1. 解析…...