【Python】Django 中的算法应用与实现

Django 中的算法应用与实现

在 Django 开发中,算法的应用可以极大地扩展 Web 应用的功能和性能。从简单的数据处理到复杂的机器学习模型,Django 都可以作为一个强大的后端框架来支持这些算法的实现。本文将介绍几种常见的算法及其在 Django 中的使用方法。

1\.协同过滤算法

1.1 算法简介

协同过滤是一种常用的推荐系统算法,通过分析用户的行为数据(如评分、浏览历史等),为用户推荐他们可能感兴趣的内容。常见的协同过滤算法包括基于用户的协同过滤(User-based CF)和基于物品的协同过滤(Item-based CF)。

1.2 Django 中的实现

以下是一个简单的基于用户的协同过滤算法实现:

数据库模型

from django.db import modelsclass User(models.Model):name = models.CharField(max_length=100)class Item(models.Model):name = models.CharField(max_length=100)class Rating(models.Model):user = models.ForeignKey(User, on_delete=models.CASCADE)item = models.ForeignKey(Item, on_delete=models.CASCADE)rating = models.FloatField()

协同过滤算法

import numpy as npfrom django.db.models import Avgdef user_based_cf(user_id, num_recommendations=5):# 获取所有用户的评分数据ratings = Rating.objects.all().values('user_id', 'item_id', 'rating')ratings = list(ratings)# 构建用户-物品评分矩阵user_item_matrix = {}for rating in ratings:user_id = rating['user_id']item_id = rating['item_id']score = rating['rating']if user_id not in user_item_matrix:user_item_matrix[user_id] = {}user_item_matrix[user_id][item_id] = score# 计算用户相似度def cosine_similarity(user1, user2):common_items = set(user_item_matrix[user1].keys()) & set(user_item_matrix[user2].keys())if not common_items:return 0vec1 = [user_item_matrix[user1][item] for item in common_items]vec2 = [user_item_matrix[user2][item] for item in common_items]return np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))# 找到与目标用户最相似的用户target_user_ratings = user_item_matrix[user_id]similarities = []for other_user in user_item_matrix:if other_user != user_id:similarity = cosine_similarity(user_id, other_user)similarities.append((other_user, similarity))similarities.sort(key=lambda x: x[1], reverse=True)similar_users = [user for user, sim in similarities[:num_recommendations]]# 生成推荐recommendations = {}for user in similar_users:for item, rating in user_item_matrix[user].items():if item not in target_user_ratings:if item not in recommendations:recommendations[item] = []recommendations[item].append(rating)final_recommendations = []for item, ratings in recommendations.items():avg_rating = sum(ratings) / len(ratings)final_recommendations.append((item, avg_rating))final_recommendations.sort(key=lambda x: x[1], reverse=True)return final_recommendations[:num_recommendations]

1.3 使用方法

在视图中调用`user_based_cf`函数,传入用户 ID 和推荐数量,即可获取推荐结果:
 

from django.shortcuts import renderfrom .models import Itemdef recommend_items(request, user_id):recommendations = user_based_cf(user_id)recommended_items = [Item.objects.get(id=item_id) for item_id, _ in recommendations]return render(request, 'recommendations.html', {'items': recommended_items})

2\.KNN 算法

2.1 算法简介

KNN(K-Nearest Neighbors)是一种简单而有效的分类和回归算法。它通过计算数据点之间的距离,找到最近的 K 个邻居,并根据这些邻居的标签来预测目标点的标签。

2.2 Django 中的实现

以下是一个基于 KNN 的分类器实现:

数据库模型
 

from django.db import modelsclass DataPoint(models.Model):feature1 = models.FloatField()feature2 = models.FloatField()label = models.CharField(max_length=50)

KNN 分类器

import numpy as npfrom django.db.models import Qdef knn_classifier(new_point, k=3):# 获取所有数据点data_points = DataPoint.objects.all().values('feature1', 'feature2', 'label')data_points = list(data_points)# 计算欧几里得距离distances = []for point in data_points:distance = np.sqrt((point['feature1'] - new_point[0])**2 + (point['feature2'] - new_point[1])**2)distances.append((point, distance))# 找到最近的 K 个邻居distances.sort(key=lambda x: x[1])neighbors = distances[:k]# 统计邻居的标签labels = [neighbor[0]['label'] for neighbor in neighbors]most_common_label = max(set(labels), key=labels.count)return most_common_label

2.3 使用方法

在视图中调用`knn_classifier`函数,传入新的数据点和邻居数量,即可获取分类结果:

from django.http import JsonResponsedef classify_point(request):feature1 = float(request.GET.get('feature1'))feature2 = float(request.GET.get('feature2'))label = knn_classifier((feature1, feature2))return JsonResponse({'label': label})

3\.机器学习模型集成

3.1 算法简介

Django 可以与机器学习库(如 scikit-learn、TensorFlow 等)结合,实现复杂的机器学习模型。这些模型可以用于分类、回归、预测等多种任务。

3.2 Django 中的实现

以下是一个使用 scikit-learn 预测房价的示例:

数据库模型
 

from django.db import modelsclass House(models.Model):area = models.FloatField()bedrooms = models.IntegerField()price = models.FloatField()

加载和使用模型

import pickleimport osfrom django.conf import settingsfrom sklearn.linear_model import LinearRegression# 加载模型def load_model():model_path = os.path.join(settings.BASE_DIR, 'models', 'house_price_model.pkl')with open(model_path, 'rb') as file:model = pickle.load(file)return model# 预测房价def predict_price(area, bedrooms):model = load_model()features = [[area, bedrooms]]predicted_price = model.predict(features)[0]return predicted_price

3.3 使用方法

在视图中调用`predict_price`函数,传入房屋特征,即可获取预测结果:

from django.http import JsonResponsedef predict_house_price(request):area = float(request.GET.get('area'))bedrooms = int(request.GET.get('bedrooms'))price = predict_price(area, bedrooms)return JsonResponse({'predicted_price': price})

4\.数据处理与分析

4.1 算法简介

Django 可以结合 Pandas 等数据分析库,实现数据的导入、处理和可视化。

4.2 Django 中的实现

以下是一个从 Excel 文件中导入数据并进行处理的示例:

数据库模型

from django.db import modelsclass SalesData(models.Model):category = models.CharField(max_length=100)value = models.FloatField()

数据导入与处理

import pandas as pdfrom django.http import JsonResponsefrom django.views.decorators.csrf import csrf_exempt@csrf_exemptdef import_excel(request):if request.method == 'POST':excel_file = request.FILES['file']df = pd.read_excel(excel_file, engine='openpyxl')data = df.to_dict(orient='records')for item in data:SalesData.objects.create(category=item['Category'], value=item['Value'])return JsonResponse({'status': 'success'})return JsonResponse({'status': 'error'})

5\.排序算法

5.1 算法简介

排序算法是计算机科学中最基础的算法之一,用于将一组数据按照特定的顺序排列。常见的排序算法包括冒泡排序、快速排序、归并排序等。虽然 Python 内置了高效的排序方法(如`sorted()`和`.sort()`),但在某些场景下,我们可能需要自定义排序逻辑。

5.2 Django 中的实现

以下是一个在 Django 中实现快速排序算法的示例,用于对数据库查询结果进行排序。

数据库模型

from django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100)price = models.FloatField()

快速排序算法

def quick_sort(arr, key):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if key(x) < key(pivot)]middle = [x for x in arr if key(x) == key(pivot)]right = [x for x in arr if key(x) > key(pivot)]return quick_sort(left, key) + middle + quick_sort(right, key)

使用方法

在视图中调用`quick_sort`函数,对查询结果进行排序:
 

from django.shortcuts import renderdef sorted_products(request):products = Product.objects.all()sorted_products = quick_sort(list(products), key=lambda x: x.price)return render(request, 'products.html', {'products': sorted_products})

6\.搜索算法

6.1 算法简介

搜索算法用于在数据集中查找特定的目标值。常见的搜索算法包括线性搜索和二分搜索。在 Django 中,我们通常使用数据库查询来实现搜索功能,但在某些情况下,手动实现搜索算法可以提供更灵活的解决方案。

6.2 Django 中的实现

以下是一个在 Django 中实现二分搜索算法的示例,用于在有序数据中查找目标值。

数据库模型

from django.db import modelsclass Item(models.Model):name = models.CharField(max_length=100)value = models.IntegerField()

二分搜索算法

def binary_search(arr, target, key):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if key(arr[mid]) == target:return midelif key(arr[mid]) < target:low = mid + 1else:high = mid - 1return -1

使用方法

在视图中调用`binary_search`函数,对查询结果进行搜索:

from django.shortcuts import renderdef search_item(request, target_value):items = Item.objects.all().order_by('value')  # 确保数据有序index = binary_search(list(items), target_value, key=lambda x: x.value)if index != -1:found_item = items[index]return render(request, 'item_found.html', {'item': found_item})else:return render(request, 'item_not_found.html')

7\.缓存优化算法

7.1 算法简介

缓存优化算法用于提高系统的性能,通过将频繁访问的数据存储在内存中,减少对数据库的查询次数。常见的缓存策略包括最近最少使用(LRU)和最不经常使用(LFU)。

7.2 Django 中的实现

Django 提供了强大的缓存框架,支持多种缓存后端(如内存缓存、Redis 等)。以下是一个简单的 LRU 缓存实现示例。

缓存工具类

from collections import OrderedDictclass LRUCache:def __init__(self, capacity: int):self.cache = OrderedDict()self.capacity = capacitydef get(self, key: int) -> int:if key not in self.cache:return -1self.cache.move_to_end(key)return self.cache[key]def put(self, key: int, value: int) -> None:if key in self.cache:self.cache.move_to_end(key)self.cache[key] = valueif len(self.cache) > self.capacity:self.cache.popitem(last=False)

使用方法

在视图中使用 LRU 缓存来存储频繁访问的数据:from django.shortcuts import renderfrom .cache import LRUCache# 初始化缓存cache = LRUCache(capacity=10)def get_expensive_data(request, key):if cache.get(key) == -1:# 模拟从数据库中获取数据data = expensive_query(key)cache.put(key, data)else:data = cache.get(key)return render(request, 'data.html', {'data': data})def expensive_query(key):# 模拟耗时查询import timetime.sleep(2)return f"Data for key {key}"

8\.图算法

8.1 算法简介

图算法用于处理图结构数据,常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)和最短路径算法(如 Dijkstra 算法)。在 Django 中,图算法可以用于社交网络分析、路径规划等场景。

8.2 Django 中的实现

以下是一个使用广度优先搜索(BFS)算法实现的社交网络好友推荐系统。

数据库模型

from django.db import modelsclass User(models.Model):name = models.CharField(max_length=100)class Friendship(models.Model):user1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='friendships1')user2 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='friendships2')

BFS 算法

from collections import dequedef bfs_recommendations(start_user, depth=2):visited = set()queue = deque([(start_user, 0)])recommendations = []while queue:current_user, current_depth = queue.popleft()if current_depth >= depth:breakvisited.add(current_user.id)friends = Friendship.objects.filter(user1=current_user).values_list('user2', flat=True)friends |= Friendship.objects.filter(user2=current_user).values_list('user1', flat=True)for friend_id in friends:friend = User.objects.get(id=friend_id)if friend.id not in visited:recommendations.append(friend)queue.append((friend, current_depth + 1))return recommendations

使用方法

在视图中调用`bfs_recommendations`函数,为用户推荐好友:

from django.shortcuts import renderdef recommend_friends(request, user_id):user = User.objects.get(id=user_id)recommendations = bfs_recommendations(user)return render(request, 'recommendations.html', {'recommendations': recommendations})

9\.动态规划算法

9.1 算法简介

动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为更简单的子问题来求解的算法。它通常用于优化问题,如背包问题、最短路径问题等。

9.2 Django 中的实现

以下是一个经典的动态规划问题——背包问题的实现。假设我们需要根据用户的需求动态计算最优解。

数据库模型

from django.db import modelsclass Item(models.Model):name = models.CharField(max_length=100)weight = models.IntegerField()value = models.IntegerField()

动态规划算法
 

def knapsack(max_weight, items):n = len(items)dp = [[0 for _ in range(max_weight + 1)] for _ in range(n + 1)]for i in range(1, n + 1):for w in range(max_weight + 1):if items[i - 1].weight <= w:dp[i][w] = max(dp[i - 1][w], dp[i - 1][w - items[i - 1].weight] + items[i - 1].value)else:dp[i][w] = dp[i - 1][w]return dp[n][max_weight]

使用方法

在视图中调用`knapsack`函数,传入最大重量和物品列表:

from django.shortcuts import renderfrom .models import Itemdef calculate_knapsack(request, max_weight):items = Item.objects.all()max_value = knapsack(max_weight, list(items))return render(request, 'knapsack_result.html', {'max_value': max_value})

10\.分治算法

10.1 算法简介

分治算法是一种将复杂问题分解为多个小问题分别求解,然后将结果合并的算法。常见的分治算法包括归并排序、快速幂等。

10.2 Django 中的实现

以下是一个使用分治思想实现的快速幂算法,用于高效计算幂运算。

快速幂算法
 

def fast_power(base, exponent):if exponent == 0:return 1if exponent % 2 == 0:half_power = fast_power(base, exponent // 2)return half_power * half_powerelse:return base * fast_power(base, exponent - 1)

使用方法

在视图中调用`fast_power`函数,传入底数和指数:

from django.http import JsonResponsedef calculate_power(request, base, exponent):result = fast_power(base, exponent)return JsonResponse({'result': result})

11\.字符串处理算法

11.1 算法简介

字符串处理算法用于高效处理字符串数据,常见的算法包括 KMP 算法(用于字符串匹配)、最长公共子序列(LCS)等。

11.2 Django 中的实现

以下是一个实现最长公共子序列(LCS)算法的示例,用于比较两个字符串的相似性。

LCS 算法

def lcs(str1, str2):m, n = len(str1), len(str2)dp = [[0] * (n + 1) for _ in range(m + 1)]for i in range(1, m + 1):for j in range(1, n + 1):if str1[i - 1] == str2[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1else:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])return dp[m][n]

使用方法

在视图中调用`lcs`函数,传入两个字符串:

from django.http import JsonResponsedef compare_strings(request, str1, str2):length = lcs(str1, str2)return JsonResponse({'lcs_length': length})

12\.图像处理算法

12.1 算法简介

图像处理算法用于对图像数据进行分析和处理,常见的算法包括边缘检测、图像分割、特征提取等。Django 可以结合 Python 的图像处理库(如 OpenCV、Pillow)实现这些功能。

12.2 Django 中的实现

以下是一个使用 OpenCV 实现的边缘检测算法的示例。

安装依赖

pip install opencv-python

边缘检测算法

import cv2import numpy as npfrom django.core.files.base import ContentFilefrom django.core.files.storage import default_storagedef detect_edges(image_path):image = cv2.imread(image_path)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)edges = cv2.Canny(gray, 100, 200)# 保存处理后的图像_, buffer = cv2.imencode('.png', edges)processed_image = ContentFile(buffer.tobytes())file_name = default_storage.save("processed_image.png", processed_image)return default_storage.url(file_name)

使用方法

在视图中调用`detect_edges`函数,传入图像路径:

from django.http import JsonResponsefrom .utils import detect_edgesdef process_image(request):if request.method == 'POST':image_file = request.FILES['image']image_path = default_storage.save("original_image.png", image_file)image_url = default_storage.url(image_path)processed_image_url = detect_edges(image_url)return JsonResponse({'processed_image_url': processed_image_url})return JsonResponse({'error': 'Invalid request'}, status=400)

13\.机器学习模型的实时预测

13.1 算法简介

Django 可以与机器学习库(如 scikit-learn、TensorFlow、PyTorch)结合,实现模型的加载和实时预测。这在推荐系统、分类器、预测器等场景中非常有用。

13.2 Django 中的实现

以下是一个使用 scikit-learn 加载预训练模型并进行实时预测的示例。

加载模型

import osimport picklefrom django.conf import settingsdef load_model():model_path = os.path.join(settings.BASE_DIR, 'models', 'classifier.pkl')with open(model_path, 'rb') as file:model = pickle.load(file)return model

实时预测

def predict(request):model = load_model()feature1 = float(request.GET.get('feature1'))feature2 = float(request.GET.get('feature2'))features = [[feature1, feature2]]prediction = model.predict(features)[0]return JsonResponse({'prediction': prediction})

14\.分布式任务处理

14.1 算法简介

在大型系统中,某些任务可能需要分布式处理以提高效率。Django 可以结合 Celery 和 RabbitMQ 等工具实现异步任务处理。

14.2 Django 中的实现

以下是一个使用 Celery 实现异步任务的示例。

安装依赖

pip install celery redis

Celery 配置

# settings.py

CELERY_BROKER_URL = 'redis://localhost:6379/0'CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

定义任务

# tasks.py

from celery import shared_task@shared_taskdef long_running_task(data):# 模拟耗时任务import timetime.sleep(10)return f"Processed {data}"

调用任务

from django.http import JsonResponsefrom .tasks import long_running_taskdef trigger_task(request):task = long_running_task.delay("Sample Data")return JsonResponse({'task_id': task.id})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31319.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot使用Nacos进行application.yml配置管理

Nacos是阿里巴巴开源的一个微服务配置管理和服务发现的解决方案。它提供了动态服务发现、配置管理和 服务管理平台。Nacos的核心功能包括服务发现、配置管理和动态服务管理&#xff0c;使得微服务架构下的服务治理 变得简单高效。 Nacos的设计基于服务注册与发现、配置管理、动…

深度学习分类回归(衣帽数据集)

一、步骤 1 加载数据集fashion_minst 2 搭建class NeuralNetwork模型 3 设置损失函数&#xff0c;优化器 4 编写评估函数 5 编写训练函数 6 开始训练 7 绘制损失&#xff0c;准确率曲线 二、代码 导包&#xff0c;打印版本号&#xff1a; import matplotlib as mpl im…

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站&#xff08;学习资料为主&#xff09;&#xff1a; link3.cc/sbook123 所有资料都保存在网盘了&#xff0c;直接转存即可&#xff0c;非常的便利&#xff01; 包括了少儿&#xff0c;小学&#xff0c;初中&#xff0c;中职&am…

解锁 AI 量化新境界:Qbot 携手 iTick

在量化投资的汹涌浪潮中&#xff0c;你是否渴望拥有一个强大且便捷的工具&#xff0c;助你乘风破浪&#xff0c;驶向财富的彼岸&#xff1f;如今&#xff0c;Qbot 与 iTick 强强联合&#xff0c;为广大投资者和开发者打造出一个前所未有的 AI 量化生态系统。 Qbot&#xff1a;量…

前端性能优化

在当今快节奏的互联网环境中&#xff0c;前端性能优化不仅能提升用户体验&#xff0c;还能直接影响网站的SEO排名和用户留存率。那么&#xff0c;如何做好前端性能优化呢&#xff1f; 前端性能优化成为提升用户体验和业务成果的关键。研究显示&#xff0c;优化网页加载速度和运…

谷歌AI最新发布的可微分逻辑元胞自动机(DiffLogic CA)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

忘记dedecms后台超级管理员账号和密码的解决方案

解决方案&#xff1a; 方案一、数据库修改&#xff1a; 1、前提是您能登录到数据库后台&#xff0c;登录MySQL数据库管理工具&#xff08;如phpMyAdmin&#xff09; 2、打开数据库中的 dede_admin 表&#xff0c;找到管理员记录&#xff0c;将 pwd 字段的值改成 f297a57a5a7…

numpy广播性质

一、核心规则 一维数组本质 shape (n,)的数组是无方向向量&#xff0c;既非严格行向量也非列向量 自动广播机制 在矩阵乘法(或np.dot())中&#xff0c;一维数组会自动调整维度&#xff1a; 前乘时视为行向量 shape (1,n)后乘时视为列向量 shape (n,1) 二、运算类型对比 假…

对Docker的一些基本认识

一、Docker简介 首先Docker 是一个用于开发、交付和运行应用程序的开放平台。它 是一个开源的应用容器化平台&#xff0c;通过轻量级容器技术实现软件的标准化打包、分发与运行。Docker基于 Go语言 &#xff0c;完全使用沙箱机制&#xff0c;相互之间不会有任何接口&#xff0…

数据安全基石:备份文件的重要性与自动化实践

在数字化时代&#xff0c;数据已成为企业和个人不可或缺的重要资产。无论是企业的运营数据、客户资料&#xff0c;还是个人的学习资料、家庭照片&#xff0c;这些数据都承载着巨大的价值。然而&#xff0c;数据的安全问题也日益凸显&#xff0c;硬件故障、软件错误、人为失误以…

Linux:多线程(三.POSIX信号量、生产消费模型、线程池)

目录 1. 生产者消费者模型 1.1 阻塞队列(BlockingQueue) 1.2 一个实际应用的例子 2. POSIX信号量 2.1 引入 2.2 回顾加深理解信号量 2.3 信号量的操作接口 3. 基于循环队列的生产消费模型 3.1 循环队列 3.2 整个项目 4. 线程池 4.1 概念 4.2 线程池实现 1. 生产者…

静态路由实验

一、实验拓扑图&#xff1a; 我们的实验目的是使得全网实现互通。 &#xff08;1)首先我们根据路由器的编号&#xff0c;配置好接口IP地址和 相应的环回地址&#xff1a; R1上的配置&#xff1a; [R1]Int e0/0/0 [R1]ip ad 12.1.1.1 24 [R1]int loopback 0 [R1]ip ad 1.1…

从零搭建微服务项目Pro(第3-1章——本地/OSS图片文件存取)

前言&#xff1a; 在小型demo项目中&#xff0c;一般将图片音频等字节流文件存放本地数据库&#xff0c;但企业级项目中&#xff0c;由于数据量容量有限&#xff0c;需要借助OSS来管理大规模文件。 OSS&#xff08;对象存储服务&#xff0c;Object Storage Service&#xff0…

Spring Boot 日志

目录 一、为什么要学习日志 二、认识日志格式 三、日志使用 打印日志 步骤 日志框架介绍 门面模式(外观模式) 门面模式的实现 门面模式的优点 四、日志级别 日志级别分类 日志级别的使用 日志配置 配置日志级别 日志持久化 配置日志文件分割 五、更简单的日志…

linux内存页块划分及位图存储机制

page_alloc.c - mm/page_alloc.c - Linux source code v5.4.285 - Bootlin Elixir Cross Referencer 一. 什么是页块&#xff08;Pageblock&#xff09;&#xff1f; 定义&#xff1a;页块是物理内存中的一个连续区域&#xff0c;由 2^pageblock_order 个物理页&#xff08;Pag…

chebykan与代码3

目录 参考文献有 ‘’ 中文 各自讲了什么 切比雪夫多项式有两类吗&#xff1f;这里存疑 KAN变体 期刊 切比雪夫と爱因斯坦の约定 维度标签的含义 爱因斯坦求和约定 参考文献有 ‘’ 中文 [1] 神经网络&#xff1a;全面基础 [2] 通过sigmoid函数的超层叠近似 [3] 多层前…

DETR详解

1.概述 DETR&#xff0c;全称为Detection Transformer&#xff0c;是Facebook在ECCV2020上提出的基于Transformer的端到端目标检测网络最大的特点就是&#xff1a;不需要预定义的先验anchor&#xff0c;也不需要NMS的后处理策略&#xff0c;就可以实现端到端的目标检测。但是&…

南昌长空STONE 60A-M 无人机电调深度测评:轻量化设计与工业级安全的融合典范

引言 在无人机技术不断革新的今天&#xff0c;电调作为动力系统的核心组件&#xff0c;其性能直接影响飞行稳定性与操控体验。STONE 系列凭借 “轻量化设计” 理念&#xff0c;在竞争激烈的市场中独树一帜。本文将深度解析 STONE 60A-M 电调的技术亮点与实际表现&#xff0c;探…

初阶数据结构(C语言实现)——4.2队列

目录 2.队列2.1队列的概念及结构2.2队列的实现2.2.1 初始化队列2.2.2 销毁队列2.2.3 队尾入队列2.2.4 队头出队列2.2.5获取队列头部元素2.2.6 获取队列队尾元素2.2.7获取队列中有效元素个数2.2.8 检测队列是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果非空返回0 3…

C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 父子物体的坐标转换 1、本节要实现的内容 前面章节我们了解了父物体与子物体的结构,它不仅能够表示物体之间的层次关系,更重要的一个作用就是展示物…