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

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述

多目标粒子群优化(MOPSO) 是粒子群优化(PSO)的一种扩展,用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解(Pareto最优解),这些解在不同目标之间达到平衡。

主要步骤

  1. 初始化粒子群
    随机生成一组粒子,每个粒子有一个初始位置和速度。
  2. 评估适应度
    计算每个粒子在所有目标函数上的适应度值。
    更新粒子的个人最佳位置和个人最佳适应度。
  3. 非支配解选择
    使用支配关系判断粒子之间的优劣。
    找到一组非支配解,构成当前的Pareto前沿。
  4. 更新速度和位置
    根据认知项(粒子自身的最佳位置)和社会项(全局最佳位置)更新粒子的速度。
    根据更新后的速度调整粒子的位置。
  5. 迭代优化
    重复执行适应度评估、非支配解选择和速度位置更新,直到达到最大迭代次数或满足其他停止条件。

代码功能

该代码实现了一个多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法,并使用Python编写。MOPSO算法用于解决具有多个目标函数的优化问题。具体来说,该代码实现了以下功能:

  1. 粒子群初始化
    创建一组粒子,每个粒子有一个初始位置和速度。
    粒子的位置在给定的边界范围内随机生成,初始速度设为零。
  2. 适应度评估
    对每个粒子计算其适应度值,即每个目标函数在该粒子位置上的值。
    更新粒子的个人最佳位置和个人最佳适应度。
  3. 速度和位置更新
    根据认知项(粒子自身的最佳位置)和社会项(全局最佳位置)更新粒子的速度。
    根据新的速度更新粒子的位置,并确保位置在搜索空间内。
  4. 非支配解选择
    使用支配关系判断粒子之间的优劣,找到一组非支配解。
    随机选择一个非支配解作为全局最佳位置。
  5. 多目标优化
    在指定的迭代次数内重复执行适应度评估、速度和位置更新以及非支配解选择。
    最终返回找到的所有非支配解的位置。
  6. 结果可视化
    计算每个非支配解在两个目标函数上的值。
    使用Matplotlib库绘制这些解在两个目标函数值上的分布图,展示Pareto前沿。
    在这里插入图片描述

代码

import numpy as np
import random
import matplotlib.pyplot as pltclass Particle:def __init__(self, position, velocity):self.position = position  # 粒子的位置self.velocity = velocity  # 粒子的速度self.best_position = position.copy()  # 粒子的个人最佳位置self.best_fitness = None  # 粒子的个人最佳适应度self.fitness = None  # 粒子的当前适应度def initialize_population(dimensions, population_size, bounds):# 初始化粒子群particles = []for _ in range(population_size):position = [random.uniform(bounds[i][0], bounds[i][1]) for i in range(dimensions)]  # 随机生成初始位置velocity = [0.0 for _ in range(dimensions)]  # 初始速度为0particles.append(Particle(position, velocity))return particlesdef evaluate_fitness(particle, objectives):# 计算粒子的适应度particle.fitness = [objective(particle.position) for objective in objectives]  # 计算当前适应度if particle.best_fitness is None or dominates(particle.fitness, particle.best_fitness):# 如果当前适应度优于个人最佳适应度,则更新个人最佳位置和适应度particle.best_fitness = particle.fitness.copy()particle.best_position = particle.position.copy()def update_velocity(particle, global_best_positions, w=0.7, c1=1.5, c2=1.5):# 更新粒子的速度for i in range(len(particle.velocity)):r1 = random.random()r2 = random.random()cognitive = c1 * r1 * (particle.best_position[i] - particle.position[i])  # 认知项social = c2 * r2 * (global_best_positions[i] - particle.position[i])  # 社会项particle.velocity[i] = w * particle.velocity[i] + cognitive + social  # 更新速度def update_position(particle, bounds):# 更新粒子的位置for i in range(len(particle.position)):particle.position[i] += particle.velocity[i]# 确保粒子的位置在搜索空间内if particle.position[i] < bounds[i][0]:particle.position[i] = bounds[i][0]elif particle.position[i] > bounds[i][1]:particle.position[i] = bounds[i][1]def dominates(p1, p2):# 检查p1是否支配p2return all(f1 <= f2 for f1, f2 in zip(p1, p2)) and any(f1 < f2 for f1, f2 in zip(p1, p2))def find_global_best(particles):# 找到全局最佳位置non_dominated_sorting = []for particle in particles:is_dominated = Falsefor other in particles:if dominates(other.fitness, particle.fitness):is_dominated = Truebreakif not is_dominated:non_dominated_sorting.append(particle)if non_dominated_sorting:# 随机选择一个非支配解作为全局最佳位置return random.choice(non_dominated_sorting).positionelse:return particles[0].positiondef mopso(objectives, dimensions, bounds, population_size, iterations):# 多目标粒子群优化算法particles = initialize_population(dimensions, population_size, bounds)for particle in particles:evaluate_fitness(particle, objectives)for _ in range(iterations):global_best_positions = find_global_best(particles)for particle in particles:update_velocity(particle, global_best_positions)update_position(particle, bounds)evaluate_fitness(particle, objectives)# 返回找到的最佳位置return [p.position for p in particles]# 示例用法
def obj1(x):return sum(xi**2 for xi in x)  # 目标函数1def obj2(x):return sum((xi-2)**2 for xi in x)  # 目标函数2dimensions = 2  # 维度数
bounds = [(-5.12, 5.12)] * dimensions  # 每个维度的边界
population_size = 50  # 粒子群大小
iterations = 1000  # 迭代次数solutions = mopso([obj1, obj2], dimensions, bounds, population_size, iterations)# 计算最终解的适应度
final_fitness = [(obj1(sol), obj2(sol)) for sol in solutions]# 绘制结果
plt.scatter([f1 for f1, f2 in final_fitness], [f2 for f1, f2 in final_fitness])
plt.xlabel('Objective 1')
plt.ylabel('Objective 2')
plt.title('Pareto Front')
plt.grid(True)
plt.show()

相关文章:

多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)算法

概述 多目标粒子群优化&#xff08;MOPSO&#xff09; 是粒子群优化&#xff08;PSO&#xff09;的一种扩展&#xff0c;用于解决具有多个目标函数的优化问题。MOPSO的目标是找到一组非支配解&#xff08;Pareto最优解&#xff09;&#xff0c;这些解在不同目标之间达到平衡。…...

【网络系统管理】2023年全国职业院校技能大赛:组策略--10套题组合--1

1、限制访问C盘; (1)搜索《我的电脑》 (2)用户配置\策略\管理模板\Windows组件\文件资源管理器 2、禁止运行run.exe; (1)搜索《应用程序》 (2)用户配置\策略\管理模板\系统...

【Golang】——Gin 框架中的 API 请求处理与 JSON 数据绑定

在现代 Web 开发中&#xff0c;API&#xff08;特别是 RESTful API&#xff09;是前后端分离架构的核心。Gin 框架提供了丰富的功能来处理 API 请求和 JSON 数据&#xff0c;使得开发者可以快速构建高效的接口服务。本篇博客将从基础到深入&#xff0c;全面讲解如何使用 Gin 框…...

在Linux下配置gitee与Github的远程仓库

目录 前言 云服务器下载git 检测是否下载成功git Linux下配置gitee远程仓库 代码提交演示 git三板斧 Linux下配置Github远程仓库 最后的提醒 前言 那么本篇文章将是在&#xff0c;你已经创建了本地仓库的基础上&#xff0c;在Linux下配置gitee的远程仓库的步骤&#xff…...

自动化测试过程操作细节

一、软件与框架介绍 1. Postman 读音&#xff1a;[pəʊstmən]&#xff08;剖斯特曼&#xff09; 介绍&#xff1a;API开发与测试的得力助手&#xff0c;通过直观界面发送HTTP请求&#xff0c;查看响应数据。支持环境变量、集合、脚本等功能。 主要特点&#xff1a;易于使用…...

iic协议

IIC&#xff08;Inter-Integrated Circuit&#xff09;协议&#xff0c;也被称为I2C协议&#xff0c;是一种由荷兰的PHILIPS公司&#xff08;现为NXP半导体公司&#xff09;开发的简单、高效的通信协议。以下是关于IIC协议的详细介绍&#xff1a; 一、IIC协议概述 定义&#…...

uniapp、js判断输入的内容是整数

清奇的思路 通过取余运算符 % 来检查 输入的内容是否为整数 for (var i 0; i < this.list.length; i) {if (this.list[i].times % 1 ! 0) { // 使用取余运算符检查是否为整数uni.showToast({icon: none,title: 请输入整数的套餐次数,})return;}}...

《Qt Creator:人工智能时代的跨平台开发利器》

《Qt Creator&#xff1a;人工智能时代的跨平台开发利器》 一、Qt Creator 简介&#xff08;一&#xff09;功能和优势&#xff08;二&#xff09;快捷键与效率提升&#xff08;三&#xff09;跨平台支持&#xff08;四&#xff09;工具介绍与使用主要特性&#xff1a;使用步骤…...

The Yarn application application_xxx_xxx doesn‘t exist in RM

本文主要解决flink在standalone模式下&#xff0c;flink run却一直使用yarn-session模式的问题。 问题 有个客户找到笔者&#xff0c;问题是报错如下: 分析 笔者先从环境入手&#xff0c;首先要确定的是flink是使用了什么模式。确认过后是使用standalone模式。 那就很奇怪&a…...

爬虫实战:采集知乎XXX话题数据

目录 反爬虫的本意和其带来的挑战目标实战开发准备代码开发发现问题1. 发现问题[01]2. 发现问题[02] 解决问题1. 解决问题[01]2. 解决问题[02] 最终结果 结语 反爬虫的本意和其带来的挑战 在这个数字化时代社交媒体已经成为人们表达观点的重要渠道&#xff0c;对企业来说&…...

【C++篇】像解谜一样转换字符串:stoi 带你走向整数的世界

文章目录 前言 在现代 C 编程中&#xff0c;字符串与数字之间的转换是非常常见的需求。随着编程语言的发展&#xff0c;C 提供了多种方式来处理这种转换。stoi&#xff08;string to integer&#xff09;函数正是为了简化这一任务而被引入的。 在 C 的早期版本中&#xff0c;字…...

小U数数问题

问题描述 小U正在数偶数&#xff0c;从 0,2,4,6,8,10,12,…0,2,4,6,8,10,12,… 开始&#xff0c;依次将这些数连在一起&#xff0c;形成一个无穷长的字符串&#xff0c;例如&#xff1a;"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。 测试样例 …...

Rocky Linux 系统安装/部署 Docker

1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

程序语言语法上手题目合集

程序语言语法上手题目合集 1跑步2猜年龄3Vigenre 密码 1跑步 2.跑步 - 蓝桥云课 枚举日期&#xff0c;判断是否符合条件即可。 参考程序&#xff1a; #include<stdio.h> int y2022,m1,d1; int week6; int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int judg…...

MCU通过APB总线与FPGA 数据交互(实现JATG 模块的控制)

问题出发点: 通过MCU 的APB 将数据发送到fpga 端;fpga 端实现 jtag 模块功能,支持状态机TAP的移动主要是:从IDLE 移动到 shirft-IR 发送指令数据然后再回到 IDLE ,从 IDLE 移动到shirft-DR 发送用户数据再回到IDLE;从而可以 通过 mcu端实现jtag 协议控制。 为了实现 MC…...

Mysql的UPDATE(更新数据)详解

MySQL的UPDATE语句是用于修改数据库表中已存在的记录&#xff0c;本文将详细介绍UPDATE语句的基本语法、高级用法、性能优化策略以及注意事项&#xff0c;帮助您更好地理解和应用这一重要的SQL命令。 1. 基本语法 单表更新 单表更新的基本语法如下&#xff1a; UPDATE [LOW…...

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…...

如何使用AWS Lambda构建一个云端工具(超详细)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;如何使用AWS Lambda构建一个云端工具&#xff08;超详细&#xff09; 1 前言 1.1 无服务器架构 无服务器架构&#xff08;Serverless Computing&#xff09;是一种云计算服务模型&#xff0c;它允许开发者构建和运行…...

Scala—数组(数组定义、数组常用方法等)— 用法详解

Scala Scala-数组-用法详解 Scala一、数组的定义1. new 关键字2. Array 对象的 apply 方法3. 创建多维数组 二、数组常用方法1. length&#xff1a;获取数组的长度。2. apply&#xff1a;通过索引获取数组中的元素。3. update&#xff1a;通过索引更新数组中的元素。4. foreach…...

使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者&#xff1a;来自 Elastic Chema Martinez 在安全领域&#xff0c;能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点&#xff0c;Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 - 这是一种强大的 Windows 原生机…...

二分排序

二分问题之前遇到很多次了&#xff0c;不过一直是手写完整二分&#xff0c;现在转变一下想法&#xff0c;直接使用函数lower_bound和upper_bound更方便 lower_bound 有序数组中 查找第一个不小于指定值的位置。 本质二分代码&#xff1a; int lower_bound_custom(int* arr, i…...

数据库---HSQLDB使用教程详解

本学校期末的课程设计要求使用HSQLDB数据库&#xff0c;作为一个小众且轻量的数据库&#xff0c;很少人接触过&#xff0c;再加上同学们都问这个方面&#xff0c;所以就出教程&#xff0c;展示怎么使用HSQLDB。 第一步&#xff1a;启动HSQLDB 下载HSQLDB的jar包&#xff0c;因…...

Makefile基础应用

1 使用场景 在Linux环境下&#xff0c;我们通常需要通过命令行来编译代码。例如&#xff0c;在使用gcc编译C语言代码时&#xff0c;需要使用以下命令。 gcc -o main main.c 使用这种方式编译代码非常吃力&#xff0c;每次调试代码都需要重新在命令行下重新编译&#xff0c;重复…...

一个点绕任意点旋转后的点的坐标

在平面坐标上&#xff0c;任意点P(x1,y1)&#xff0c;绕一个坐标点Q(x2,y2)逆时针旋转θ角度后,新的坐标设为(x, y)的计算公式&#xff1a; x (x1 - x2)*cos(θ) - (y1 - y2)*sin(θ) x2 ; y (x1 - x2)*sin(θ) (y1 - y2)*cos(θ) y2 ; 另一个场景应用&#xff0c;坐标轴绕…...

嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)

引言&#xff1a;对于嵌入式硬件这个庞大的知识体系而言&#xff0c;太多离散的知识点很容易疏漏&#xff0c;因此对于这些容易忘记甚至不明白的知识点做成一个梳理&#xff0c;供大家参考以及学习&#xff0c;本文主要针对芯片输入接入0.1uf电容的本质的知识点的进行学习。 目…...

算力100问☞第16问:什么是TPU?

TPU全称是Tensor Processing Unit芯片&#xff0c;中文全称是张量处理单元芯片&#xff0c;是谷歌开发的一种特殊类型的芯片&#xff0c;用于加速人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;工作负载。TPU主要针对张量&#xff08;tensor&#xf…...

Level DB --- SkipList

class SkipList class SkipList 是Level DB中的重要数据结构&#xff0c;存储在memtable中的数据通过SkipList来存储和检索数据&#xff0c;它有优秀的读写性能&#xff0c;且和红黑树相比&#xff0c;更适合多线程的操作。 SkipList SkipList还是一个比较简单的数据结构&a…...

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中&#xff0c;Apache JMeter是一个非常流行的工具&#xff0c;它不仅能够模拟大量用户进行并发访问&#xff0c;还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器&#xff08;Post-Processor&#xff09;是JMeter中非常重要的组件之一&#xff0c;用于在…...

【视频】二维码识别:libzbar-dev、zbar-tools(zbarimg )

1、简介 ZBar可以使用多个方式识别各种条形码和二维码。 支持的格式有:EAN-13/UPC-A、UPC-E、EAN-8、Code 128、Code 93、Code 39、Codabar、Interleaved 2 of 5、QR Code和SQ Code 支持的来源有:视频流、图像文件等 libzbar-dev:二维码识别开发库 zbar-tools(zbarimg …...

EasyExcel: 结合springboot实现表格导出入(单/多sheet), 全字段校验,批次等操作(全)

全文目录,一步到位 1.前言简介1.1 链接传送门1.1.1 easyExcel传送门 2. Excel表格导入过程2.1 easyExcel的使用准备工作2.1.1 导入maven依赖2.1.2 建立一个util包2.1.3 ExcelUtils统一功能封装(单/多sheet导入)2.1.4 ExcelDataListener数据监听器2.1.5 ResponseHelper响应值处理…...

志愿者小程序源码社区网格志愿者服务小程序php

志愿者服务小程序源码开发方案&#xff1a;开发语言后端php&#xff0c;tp框架&#xff0c;前端是uniapp。 一 志愿者端-小程序&#xff1a; 申请成为志愿者&#xff0c;志愿者组织端进行审核。成为志愿者后&#xff0c;可以报名参加志愿者活动。 志愿者地图&#xff1a;可以…...

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…...

小白学多线程(持续更新中)

1.JDK中的线程池 JDK中创建线程池有一个最全的构造方法&#xff0c;里面七个参数如上所示。 执行流程分析&#xff1a; 模拟条件&#xff1a;10个核心线程数&#xff0c;200个最大线程数&#xff0c;阻塞队列大小为100。 当有小于十个任务要处理时&#xff0c;因为小于核心线…...

【uni-app多端】修复stmopjs下plus-websocket无心跳的问题

从这篇文章接着向下看&#xff1a; uniapp plus-websocket 和stompjs连接教程 安卓ios手机端有效 - 简书 按照文章的方式&#xff0c;能够实现APP下stmopjs长连接。但是有一个问题&#xff0c;就是会频繁输出 res-创建连接-1- 跟踪连接&#xff0c;会发现连接都会在大约40s后…...

【SLAM文献阅读】基于概率模型的视觉SLAM动态检测与数据关联方法

A dynamic detection and data association method based on probabilistic models for visual SLAM 《基于概率模型的视觉SLAM动态检测与数据关联方法》 2024 摘要&#xff1a; 通常&#xff0c;静态特征采用多视图几何来估计相机姿态和重建环境地图。因此&#xff0c;动态特…...

Linux系统使用valgrind分析C++程序内存资源使用情况

内存占用是我们开发的时候需要重点关注的一个问题&#xff0c;我们可以人工根据代码推理出一个消耗内存较大的函数&#xff0c;也可以推理出大概会消耗多少内存&#xff0c;但是这种方法不仅麻烦&#xff0c;而且得到的只是推理的数据&#xff0c;而不是实际的数据。 我们可以…...

Selenium+Java(19):使用IDEA的Selenium插件辅助超快速编写Pages

前言 或是惊叹于Selenium对于IDEA的支持已经达到了这样的地步,又或是由于这个好用的小工具的入口就在那里,它已经陪伴了我这么久,而我这么久的时间却都没有发现它。在突然发现这个功能的一瞬间,真的是喜悦感爆棚,于是赶快写下了这篇文章。希望可以帮助到其他同样在做UI自动…...

Unity 设计模式-单例模式(Singleton)详解

设计模式 设计模式 是指在软件开发中为解决常见问题而总结出的一套 可复用的解决方案。这些模式是经过长期实践证明有效的 编程经验总结&#xff0c;并可以在不同的项目中复用。设计模式并不是代码片段&#xff0c;而是对常见问题的 抽象解决方案&#xff0c;它提供了代码结构…...

OAuth协议详解

一、基本概念 OAuth&#xff08;Open Authorization&#xff09;是一种授权协议&#xff0c;用于允许第三方应用程序以受信任的方式访问用户的资源&#xff0c;而无需共享用户的身份验证凭据。OAuth协议的核心目标是在保持用户数据安全的前提下&#xff0c;简化用户在不同应用…...

2024收官之战:车展向下,智驾向上

作者 | 德新 编辑 | 王博 广州车展在上周拉开帷幕&#xff0c;在激烈的车市竞争中&#xff0c;可以说没有一届车展比本届更加「 冰火两重天」。 在本届车展前夕&#xff0c;已经传出不少车企集团面临业务整合的消息&#xff0c;一部分品牌缺席了本届车展&#xff0c;而势头强…...

开源项目-如何更好的参与开源项目开发

开源之谜-提升自我核心竞争力 一、寻找适合自己的开源项目二、像坐牢一样闭关修炼三、最后的实践 开源代码对所有人开放&#xff0c;开发者可以基于现有代码进行扩展和创新&#xff0c;而不是从零开始&#xff0c;参与开源项目可以提升自我的技术能力&#xff0c;丰富个人的经历…...

如何重命名 Conda 环境 - 详细教程

如何重命名 Conda 环境 - 详细教程 前言重命名步骤1. 克隆现有环境2. 验证新环境3. 删除旧环境 实例演示注意事项常见问题解答Q1: 为什么 Conda 没有直接的重命名命令&#xff1f;Q2: 重命名过程会影响环境中的包吗&#xff1f;Q3: 如果克隆过程中断&#xff0c;会怎么样&#…...

自动驾驶之激光雷达

这里写目录标题 1 什么是激光雷达2 激光雷达的关键参数3 激光雷达种类4 自动驾驶感知传感器5 激光雷达感知框架5.1 pointcloud_preprocess5.2 pointcloud_map_based_roi5.3 pointcloud_ground_detection5.4 lidar_detection5.5 lidar_detection_filter5.6 lidar_tracking 1 什么…...

Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 个人中心 管理员登录界面 管理员功能界面 电影管理 用户管理 系统管理 摘要…...

从 Mac 远程控制 Windows:一站式配置与实践指南20241123

引言&#xff1a;跨平台操作的需求与挑战 随着办公场景的多样化&#xff0c;跨平台操作成为现代开发者和 IT 人员的刚需。从 Mac 系统远程控制 Windows&#xff0c;尤其是在同一局域网下&#xff0c;是一种高效解决方案。不仅能够灵活管理资源&#xff0c;还可以通过命令行简化…...

k8s部署Nginx详细教程

Kubernetes&#xff08;简称k8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。本文将详细介绍如何使用k8s部署Nginx&#xff0c;包括创建部署配置、创建服务以及如何通过一个命令完成部署和删除。 环境准备 在开始之前&#x…...

PySpark3:pyspark.sql.functions常见的60个函数

目录 一、常见的60个函数 1、col 2、lit 3、sum 4、avg/mean 5、count 6、max 7、min 8、concat 9、substring 10、lower 11、upper 12、trim 13、ltrim 14、rtrim 15、split 16、explode 17、collect_list 18、collect_set 19、asc 20、desc 21、when 2…...

网络爬虫总结与未来方向

通过深入学习和实际操作&#xff0c;网络爬虫技术从基础到进阶得以系统掌握。本节将全面总结关键内容&#xff0c;并结合前沿技术趋势与最新资料&#xff0c;为开发者提供实用性强的深度思考和方案建议。 1. 网络爬虫技术发展趋势 1.1 趋势一&#xff1a;高性能分布式爬虫 随…...

【优先算法】专题——双指针

1.移动零 移动零 题目描述&#xff1a; 思路&#xff1a; 本题我们把数组分块&#xff0c;将非零元素移动到左边&#xff0c;为零元素移动右边。 我们使用双指针算法&#xff08;利用数组下标来充当指针&#xff09; 两个指针的作用&#xff1a; cur&#xff1a;从左往右…...

互联网时代的隐私保护

在这个数字化时代&#xff0c;我们的生活与互联网密不可分。打开手机刷刷朋友圈&#xff0c;浏览一下购物网站&#xff0c;约个网约车&#xff0c;点个外卖&#xff0c;这些看似平常的行为都在默默产生着数据足迹。可就在这不经意间&#xff0c;我们的个人信息正在被收集、分析…...