02-18.python入门基础一基础算法
(一)排序算法
简述:
在 Python 中,有多种常用的排序算法,下面为你详细介绍几种常见的排序算法及其原理、实现代码、时间复杂度以及稳定性等特点,并对比它们适用的场景。
冒泡排序(Bubble Sort)
- 原理:它重复地遍历要排序的数列,一次比较两个相邻元素,如果它们的顺序错误(比如在升序排序中,前面的元素比后面的大)就把它们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢 “浮” 到数列的顶端,就如同水底的气泡逐渐向上冒一样。例如,第一轮排序从第一个元素开始,比较相邻的两个元素,如果第一个比第二个大(升序排序),则交换它们两个;对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,这步做完后,最后的元素会是最大的数。然后进行第二轮排序,对所有的元素(除了最后一个)重复以上的步骤,持续每轮次的操作,每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
- 实现代码:
def bubble_sort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): # Last i elements are already in place for j in range(0, n - i - 1): # 遍历数组从0到n-i-1 # 交换如果元素找到的元素比下一个大 if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr |
- 时间复杂度:平均和最坏情况都是,其中是数组的长度,最好情况(数组本身已经有序)时间复杂度为。不过通常我们关注的是平均和最坏情况,这使得它在处理大数据量排序时效率相对较低。
- 稳定性:冒泡排序是稳定的排序算法,即相等的元素在排序后仍然保持原有的顺序。
- 适用场景:适用于小规模数据集,因为其简单性和易于实现;也适合在教学和学习中使用,帮助初学者掌握排序的基本概念;当排序算法需要是稳定的(即相等元素的相对顺序在排序前后不变)时,冒泡排序是一个很好的选择。
插入排序(Insertion Sort)
- 原理:以列表的第一个数为基数,随机抽取剩余数中一个作为随机数,与基数进行比较排序,再随机抽取剩余数中的一个作为随机数,与前面的小列表进行插入排序,依次类推。简单来说,就是将未排序数据项中选择一个数据项插入到已排序数据项中合适的位置,不断重复这个过程直到所有数据被排好序。比如,在一个已经有部分元素有序的列表中,要插入一个新元素,就从后往前依次比较已排序的元素,找到合适的位置插入新元素,使得插入后这部分仍然有序。
- 实现代码:
def insert_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and key < arr[j]: arr[j + 1] = arr[j] j -= 1 arr[j + 1] = key return arr |
- 时间复杂度:最坏情况下(数组完全逆序),时间复杂度为;最好情况下(数组已经是有序的),时间复杂度为。
- 稳定性:插入排序是稳定的排序算法。
- 适用场景:对于基本有序的数据集合,插入排序的效率相对较高,因为它每次只需要比较和移动较少的数据;同样也适用于小规模数据排序的情况。
选择排序(Selection Sort):
- 原理:以列表的第一个位置的数为基数,与剩余的数中最小的数进行比较,如果基数比最小的数要大,那么交换两个数的位置,否则位置不变。然后再以第二个位置的数为基数,与无序区中的最小数进行比较,如果基数比最小的数要大,那么交换两个数的位置,否则位置不变,以此类推。也就是从个未排序的数据项中选出最小数(这里假设按照升序排列),再从剩下的个未排序的数据项中选出最小数,不断重复此过程,直到所有数被排好序为止。
- 实现代码:
def selection_sort(arr): for i in range(len(arr) - 1): min_id = i for j in range(i + 1, len(arr)): if arr[j] < arr[min_id]: min_id = j arr[i], arr[min_id] = arr[min_id], arr[i] return arr |
- 时间复杂度:无论最好、平均还是最坏情况,时间复杂度均为。
- 稳定性:选择排序是不稳定的排序算法,例如在排序过程中相等元素的相对顺序可能会改变。
- 适用场景:虽然其时间复杂度较高,但实现相对简单,在对数据规模较小且对稳定性要求不高的情况下可以使用。
快速排序(Quick Sort)
- 原理:是一种分治的排序算法。它将一个数组分成两个子数组,先随意地取数组中的一个元素(通常取第一个或最后一个元素等作为基准元素,这里以第一个元素为例)作为切分元素(即那个将会被排定的元素),然后从数组的左端开始向右扫描直到找到一个大于等于它的元素,再从数组的右端开始向左扫描直到找到一个小于等于它的元素,这两个元素是没有排定的,因此交换它们的位置,如此继续,当两个指针相遇时,将切分元素和左子元素最右侧的元素交换然后返回这个位置索引,这样就把数组分成了两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素,然后递归地对这两部分进行排序,最终合并得到有序数组。
- 实现代码:
def quick_sort(arr, left, right): if left < right: pivot = arr[left] i = left j = right while i < j: while i < j and arr[j] >= pivot: j -= 1 arr[i] = arr[j] while i < j and arr[i] <= pivot: i += 1 arr[j] = arr[i] arr[i] = pivot quick_sort(arr, left, i - 1) quick_sort(arr, i + 1, right) return arr |
- 时间复杂度:平均时间复杂度为,但在最坏情况下(例如数组已经有序,每次选取的基准元素导致划分极度不平衡),时间复杂度会退化为。
- 稳定性:快速排序是不稳定的排序算法。
- 适用场景:适用于处理大型数据集,其分治思想和原地排序特性使得在实践中通常比较快速,是实际应用中较为常用的高效排序算法之一。
归并排序(Merge Sort):
- 原理:体现的是一种分治思想(Divide and conquer)。将数组一分为二,对每部分进行递归式地排序,然后合并两个部分。具体来说,先把原数组不断二分直至单个元素,再进行合并排序。在合并过程中,给出原数组,比较划分后的两部分子数组(这两部分子数组各自是有序的)的首元素,将较小值赋到新的合并数组对应位置,然后对相应的下标进行递增,重复这个过程,直到比较完全部元素,最终得到有序数组。
- 实现代码:
def merge_sort(arr): if len(arr) > 1: mid = len(arr) // 2 left_half = arr[:mid] right_half = arr[mid:] merge_sort(left_half) merge_sort(right_half) i = j = k = 0 while i < len(left_half) and j < len(right_half): if left_half[i] < right_half[j]: arr[k] = left_half[i] i += 1 else: arr[k] = right_half[j] j += 1 k += 1 while i < len(left_half): arr[k] = left_half[i] i += 1 k += 1 while j < len(right_half): arr[k] = right_half[j] j += 1 k += 1 return arr |
- 时间复杂度:时间复杂度稳定为。
- 稳定性:归并排序是稳定的排序算法。
- 适用场景:适合对稳定性要求较高的情况,因为它能保持相同元素在排序前后的相对位置不变;虽然时间复杂度稳定,但需要额外的内存空间来存储子数组,所以更适用于对内存占用有限制要求不是特别苛刻的场景下对数据进行排序。
堆排序(Heap Sort)
- 原理:利用了二叉堆这种数据结构的特性来进行排序。首先将数组构建成一个最大堆(对于升序排序而言,最大堆就是每个节点的值都大于或等于其子节点的值;如果是降序排序则构建最小堆),然后把堆顶元素(最大值)与堆的最后一个元素交换,此时最大元素就到了数组的末尾,接着对剩下的元素重新调整为最大堆,重复这个过程,直到整个数组有序。
- 实现代码:
def heapify(arr, n, i): largest = i l = 2 * i + 1 r = 2 * i + 2 if l < n and arr[i] < arr[l]: largest = l if r < n and arr[largest] < arr[r]: largest = r if largest!= i: arr[i], arr[largest] = arr[largest], arr[i] heapify(arr, n, largest) def heap_sort(arr): n = len(arr) for i in range(n // 2 - 1, -1, -1): heapify(arr, n, i) for i in range(n - 1, 0, -1): arr[0], arr[i] = arr[i], arr[0] heapify(arr, i, 0) return arr |
- 时间复杂度:时间复杂度为,无论是最好、平均还是最坏情况,时间复杂度都比较稳定。
- 稳定性:堆排序是不稳定的排序算法。
- 适用场景:它是一种高效的原地排序算法,不需要额外的大量空间来辅助排序,适用于对空间复杂度有一定要求,同时希望能有较稳定时间复杂度表现的数据排序场景。
对比不同排序算法适用的场景:
- 对于小规模数据集,像冒泡排序、插入排序、选择排序这类简单的排序算法都可以胜任,它们实现简单,易于理解和调试。其中如果需要稳定排序,冒泡排序和插入排序更合适;若对稳定性没有要求,选择排序也可考虑。
- 当处理大规模数据集时,如果对稳定性有要求,归并排序是不错的选择;若更注重平均时间复杂度,希望排序速度较快且对稳定性要求不高,快速排序通常表现良好;而堆排序则在对空间复杂度有一定限制,同时又希望有稳定时间复杂度保障的情况下可以优先使用。
(二)搜索算法
简述:
在 Python 中,常见的搜索算法有线性搜索、二分搜索、深度优先搜索、广度优先搜索等,下面将为你讲解各算法的思路、实现代码、复杂度分析,以及它们在不同数据结构及应用场景中的使用情况。
线性搜索(Linear Search):
- 思路:也叫顺序搜索,是一种最简单的搜索算法。它从数据结构(比如数组、列表等)的第一个元素开始,逐个比较元素与要查找的目标元素是否相等,直到找到目标元素或者遍历完整个数据结构为止。例如,在一个包含多个整数的列表中查找特定的整数,就按顺序依次查看每个元素是否是要找的那个数。
- 实现代码:
def linear_search(arr, target): for index, element in enumerate(arr): if element == target: return index return -1 |
- 复杂度分析:时间复杂度在最好情况下(要查找的元素恰好在第一个位置)为,但平均和最坏情况下(要查找的元素在最后一个位置或者不存在于数据结构中)时间复杂度为,其中是数据结构中元素的个数。空间复杂度为,因为它只需要有限的额外空间来进行操作。
- 使用情况:适用于数据结构没有特定顺序,或者数据规模较小的情况。比如在一个无序的小型列表中查找元素时可以使用线性搜索。
二分搜索(Binary Search):
- 思路:又称折半查找,这种算法适用于有序数组中的查找操作。首先确定整个查找区间的中间位置,然后将待查找的值与数组中中间位置的值进行比较,如果目标值小于中间位置的值,则在数组的左半部分继续查找,即新的查找区间是左半区间;如果目标值大于中间位置的值,则在数组的右半部分继续查找,即新的查找区间是右半区间;如果目标值等于中间位置的值,则查找成功,返回该位置的下标;如果查找区间为空,则说明查找失败,返回 -1。例如,在一个已经从小到大排好序的整数数组中查找特定整数,通过不断缩小查找范围来定位目标元素。
- 实现代码:
def binary_search(arr, left, right, target): if left > right: return -1 mid = (left + right) // 2 if arr[mid] == target: return mid elif target < arr[mid]: return binary_search(arr, left, mid - 1, target) else: return binary_search(arr, mid + 1, right, target) |
- 复杂度分析:时间复杂度为,因为每次比较都能将查找区间缩小一半,效率相对较高。空间复杂度为(递归实现时,递归栈的深度取决于树的高度,即),如果采用非递归实现,空间复杂度可以优化到。
- 使用情况:要求数据结构(通常是数组)必须是有序的,常用于查找有序数据集中的元素,比如在有序的数据库索引或者排好序的列表中查找特定值时非常高效。
深度优先搜索(Depth First Search, DFS):
- 思路:是一种递归的图遍历算法(当然也可以用于树等其他类似的数据结构遍历),其基本思想是从起始节点开始,沿着一条路径访问图中的节点,直到无法继续访问为止(比如遇到没有未访问过的邻接点了),然后回溯到上一个节点,继续访问其他的路径,直到遍历完所有节点。例如在一个表示地图的图结构中,从某个地点出发,一直沿着一条路走,走到头了再返回上一个岔路口去走其他没走过的路,以此类推,直到走过所有能到达的地点。
- 实现代码:
def dfs(graph, node, visited): if node not in visited: visited.append(node) for neighbor in graph[node]: dfs(graph, neighbor, visited) return visited |
这里的 graph 通常用字典来表示,键表示节点,值表示该节点的邻接点列表;node 是起始节点,visited 是一个列表用来记录已经访问过的节点。
- 复杂度分析:时间复杂度取决于图的节点数 V 和边数 E,对于邻接表表示的图,时间复杂度为;对于邻接矩阵表示的图,时间复杂度为。空间复杂度为,因为在最坏情况下需要记录所有的节点(递归栈的深度最多为节点个数)。
- 使用情况:常用于查找图中两个节点之间是否存在路径、查找图中的连通分量、判断图中是否存在环等场景。比如在分析网络拓扑结构中节点的连通性,或者在游戏地图中寻找从一个地点到另一个地点的可行路径(不要求是最短路径)等情况。
广度优先搜索(Breadth First Search, BFS):
- 思路:是一种非递归的图遍历算法,其基本思想是从起始节点开始,依次访问其所有邻居节点,然后再访问邻居节点的邻居节点,也就是一层一层地向外扩展访问,直到遍历完所有节点为止。形象地说,就好比在一个迷宫中,从起点开始,先把起点周围一圈的通道都探索一遍,再去探索这些通道对应的下一圈通道,以此类推,直到走遍整个迷宫。
- 实现代码:
from collections import deque def bfs(graph, start): visited = [] queue = deque([start]) while queue: node = queue.popleft() if node not in visited: visited.append |
python 基础的介绍就到这里,下一张进入python爬虫基础 实践
相关文章:
02-18.python入门基础一基础算法
(一)排序算法 简述: 在 Python 中,有多种常用的排序算法,下面为你详细介绍几种常见的排序算法及其原理、实现代码、时间复杂度以及稳定性等特点,并对比它们适用的场景。 冒泡排序(Bubble Sor…...
条款19 对共享资源使用std::shared_ptr
目录 一、std::shared_ptr 二、std::shared_ptr性能问题 三、control block的生成时机 四、std::shared_ptr可能存在的问题 五、使用this指针作为std::shared_ptr构造函数实参 六、std::shared_ptr不支持数组 一、std::shared_ptr<T> shared_ptr的内存模型如下图&…...
TCP-UDP调试工具推荐:Socket通信测试教程(附详细图解)
前言 在网络编程与应用开发中,调试始终是一项不可忽视的重要环节。尤其是在涉及TCP/IP、UDP等底层网络通信协议时,如何确保数据能够准确无误地在不同节点间传输,是许多开发者关注的核心问题。 调试的难点不仅在于定位连接建立、数据流控制及…...
算法练习——模拟题
前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…...
Windows下播放文件作为麦克风声源的一种方式
近期测试一种外语的ASR识别成功率,样本素材是懂这门语言的同事录制的mp3文件。测试client端原本是从麦克风拾音生成媒体流的。 这样,就需要想办法把mp3文件转换为测试client的输入声音。物理方式上,可以用一根音频线,把电…...
微信流量主挑战:用户数30!新增文档转化功能,解决docker运行jar包报错SimSun找不到的问题(新纪元5)
哎呀,今天忙到飞起,文章晚点更新啦!不过好消息是,我们的小程序用户终于突破30啦,感谢大家的支持!而且,大家期待已久的文档转化功能明天就要上线啦,目前支持word转pdf,pdf…...
BUU LFI COURSE 1
BUU LFI COURSE 1 启动环境 isset函数检查输入是否为空,使用GET传参file,然后赋值给$str 在调用传参内容 我们是找flag那我们输入?file/flag试试 输入后就得到了flag flag{8c108da2-a579-4ec4-b447-92d9265b8dd4}...
Spark SQL DML语句
【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 Spark本地模式安装_spark3.2.2本地模式安装-CSDN博客 DML(Data Manipulation Language,数据操作语言)操作主要用来对…...
逻辑控制语句
一、逻辑控制语句 条件判断 if循环 for、while 二、条件判断 if 1、语法 if 条件:条件为真的操作条件为真的操作 else:条件为假的操作条件为假的操作 data_01 int(input("数字: "))if data_01 > 10:print("ok!!!")print("正确!!!")prin…...
PlasmidFinder:质粒复制子的鉴定和分型
质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性…...
OSCP打靶大冒险之Solidstate:多端口获取信息,shell逃逸,计划任务提权
声明! 学习资源来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
【Java-tesseract】OCR图片文本识别
文章目录 一、需求二、概述三、部署安装四、技术细节五、总结 一、需求 场景需求:是对识别常见的PNG,JPEG,TIFF,GIF图片识别,环境为离线内网。组件要求开源免费,并且可以集成Java生成接口服务。 二、概述 我不做选型对比了,我筛选测试了下Tesseract(v…...
sqlserver 数据库误删-用mdf和ldf文件恢复
1.准备好需要恢复的文件 2.安装sqlserver数据库,安装设置的实例目录要记清 3.将需要恢复的文件拷到实例所在目录下的DATA文件夹下 D:\安装时的实例目录\MSSQL10_50.MSSQLSERVER\MSSQL\DATA 4.打开 SQL Server Management Stadio执行以下命令 CREATE DATABASE 数…...
机器学习算法基础知识1:决策树
机器学习算法基础知识1:决策树 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、场景描述三、决策树的训练1. 决策树训练方式(1)分类原则-Gini(2)分类原则-entropy(3)加权系数-样本量&am…...
使用EasyExcel来动态生成表头
本文记录下使用EasyExcel来动态生成表头 文章目录 概述 概述...
梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架03
目录 1、认识Android框架的实践技术 4个嫡系基类 誰來創建子類的對象呢? 2、Intent-based Programming 技术 嫡系应用子类之间如何互相沟通呢? 1、认识Android框架的实践技术 4个嫡系基类 • Android框架里提供了4个嫡系的基类,包括:…...
Html——10 关键字和描述
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…...
汇编学习笔记
汇编 1. debug指令 -R命令(register) 查看、改变CPU寄存器的内容 r ax 修改AX中的内容 -D命令(display) 查看内存中的内容 -E命令(enter) 改写内存中的内容 -U命令(unassenble反汇编) 将内存中的机器指令翻译成汇编指令 -T命令(trace跟踪) 执行一条机器指令 -A命令…...
【C++】统计正整数的位数:题目解析与代码优化
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述**题目要求:统计正整数的位数** 💯我的代码实现**核心逻辑解析** 💯老师的代码实现**老师代码逻辑解析** 💯我的代码…...
CF2043b-B. Digits
题目链接 题意:给定两个整数n、d,要求找出排列成n!个d之后的数可以被1-9中奇数整除的数 题解: 主要是考察分类讨论: 被3整除,当d能被3整除时一定成立或者n > 3,当n > 3时n!一定包含因数3 被5整除&a…...
[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models
文章目录 摘要Abstract:思考与行为协同化Reason(Chain of thought)ReAct ReAct如何协同推理 响应Action(动作空间)协同推理 结果总结 摘要 ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning an…...
React 高阶组件(HOC)
文章目录 一. 高阶组件(HOC)的定义二. HOC 的作用和优势三. HOC 的使用方式四. HOC 的注意事项和潜在问题五. 应用场景1. 权限控制与认证2. 数据获取与预加载3. 样式和主题管理4. 性能优化 - 缓存数据或组件渲染结果5. 日志记录与调试辅助 六. 总结 一. …...
module ‘django.db.models‘ has no attribute ‘FieldDoesNotExist‘
module ‘django.db.models’ has no attribute ‘FieldDoesNotExist’ xadmin报错 原因 django与xadmin版本不匹配。 django==3.2.7 xadmin-django==3.0.2解决方案 在xadmin/view/edit.py的388行改为 from django.core import exceptions if self.request_method ==...
仓颉语言实战——1. 类型
仓颉语言实战——1. 类型 仓颉语言(Cangjie Language)是一个现代化的、简洁而强大的编程语言,它的类型系统为高效开发提供了极大的支持。本篇文章将围绕仓颉语言中的类型系统展开,结合实战代码,帮助开发者快速掌握这一…...
大数据平台开发学习路线及技能
背景 最近项目涉及这方面,特地整理学习路线方便后续学习。 必备技能 一、编程语言 Java:大数据开发的基础语言,具有跨平台能力,可用于编写各种应用。 Python:机器学习和数据分析领域广泛使用的语言,易于…...
python报错ModuleNotFoundError: No module named ‘visdom‘
在用虚拟环境跑深度学习代码时,新建的环境一般会缺少一些库,而一般解决的方法就是直接conda install,但是我在conda install visdom之后,安装是没有任何报错的,conda list里面也有visdom的信息,但是再运行代…...
python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作
出现了这个问题,就好像是我要去找在南方的人,然后我刚好不分南北,我认为的方向错了,实则方向对了。 在我针对复盘解决:sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候,又出现…...
阿里云人工智能ACA(七)——计算机视觉基础
一、自然语言处理基本介绍 1. 自然语言处理的定义 1-1 自然语言 人类使用的在社会生活中自然形成的语言 1-2 自然语言处理 目标是让计算机能够理解、解析、生成和处理人类的自然语言 包含自然语言理解和自然语言生成两部分组成 2. 自然语言处理的发展趋势 3.自然语言处理…...
计算机组成(1)——CPU与存储器的连接
目录 CPU与存储器的连接 1.内存条的设计思路 如何读取存储元上是0还是1 存储数据1010 系统的将这些存储元连接起来 2.译码器的原理 3.加入控制电路 4.位扩展 5.字扩展 CPU与存储器的连接 1.内存条的设计思路 内存条:存储体、MAR(地址寄存器&am…...
MySQL学习之表查询操作
MySQL学习之表查询操作 准备数据 创建数据表和导入数据 CREATE TABLE user (id INT COMMENT 编号,name VARCHAR (10) COMMENT 姓名,gender CHAR(1) COMMENT 性别,age TINYINT UNSIGNED COMMENT 年龄,phone VARCHAR(11) COMMENT 手机号,idcard CHAR(18) COMMENT 身份证号,addre…...
GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】
🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 桌面版安装包下载clone 仓库操作如下GitLab 配置不再重复输入账户和密码的两个方…...
六十:HTTP/2与gRPC框架
随着互联网技术的发展,应用程序之间的通信需求日益复杂和多样化。传统的HTTP/1.x协议虽然广泛应用,但在性能和功能方面已经难以满足现代应用的需求。为了解决这些问题,HTTP/2协议和基于其之上的gRPC框架应运而生。本文将介绍HTTP/2协议的特点…...
普通的树形数据primevue的treetable组件的treetable[ ]
1,核心思想就是缺什么属性加什么属性 1.原始数据 原始数据本身就是树状,只是不是TreeNode类型的数组,这样的数据,primevue的treetable组件是展示不出来的,自己把这个数组转成node类型的,会有一个难解决的…...
数据库设计问题记录
唯一性约束和逻辑删除的冲突 问题描述 如果一张表中,存在唯一性约束,比如一些数据中的code,且数据表使用逻辑删除。当删除某行数据的时候,以后再次插入相同code的数据,数据库会报错。 问题分析 在逻辑删除中&#…...
基于springboot的汽车租赁系统丨源码+数据库+万字文档+PPT
作者简介: 作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 技术框架 开发语言:Java 框架:spring…...
计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价格 预测 机器学习 深度学习 Python爬虫 HDFS集群
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】
1. 常用资料以及官方网站 无人机飞控PX4用户使用手册(无人机基本设置、地面站使用教程、软硬件搭建等):https://docs.px4.io/main/en/ PX4固件开源地址:https://github.com/PX4/PX4-Autopilot 飞控硬件、数传模块、GPS、分电板等…...
渗透测试常用术语总结
一、攻击篇 1.攻击工具 肉鸡 所谓“肉鸡”是一种很形象的比喻,比喻那些可以被攻击者控制的电脑、手机、服务器或者其他摄像头、路由器等智能设备,用于发动网络攻击。 例如在2016年美国东海岸断网事件中,黑客组织控制了大…...
Spring Boot 介绍与应用
什么是 Spring Boot? Spring Boot 是一个用于简化 Spring 应用程序开发和部署的框架,它建立在 Spring 框架的基础之上,但去除了繁琐的配置。Spring Boot 采用“约定优于配置”的原则,默认启用了大量自动配置,使得开发…...
前端:改变鼠标点击物体的颜色
需求: 需要改变图片中某一物体的颜色,该物体是纯色; 鼠标点击哪个物体,哪个物体的颜色变为指定的颜色,利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…...
基于Android的校园导航系统
基于Android的校园导航系统是一种专为校园环境设计的移动应用程序,旨在帮助学生、教职工及访客快速、准确地找到校园内的目的地。以下是对基于Android的校园导航系统的详细介绍: 一、系统概述 基于Android的校园导航系统通常包括客户端(移动…...
ipad如何做副屏(Windows/Mac Moonlight Sunshine)
Windows 被连接主机(Windows) 要使用的话需要固定ip,不然ip会换来换去,固定ip方法本人博客有记载Github下载Sunshine Sunshine下载地址除了安装路径需要改一下,其他一路点安装完成后会打开Sunshine的Web UIÿ…...
微信小程序页面传参长度问题
需求:a页面传递参数到b页面,传递的参数是一个对象,需要进行json转换,但在小程序中传递的参数长度是有限制的,因此我们传递的时候可以,但是接收的时候,往往会被自动截取掉超出的部分,…...
Redis 安装部署[主从、哨兵、集群](windows版)
说明:该方式建议仅用于自己研究,不建议用于生产 linux 版本见:Redis 安装部署[主从、哨兵、集群](linux版) 一、Redis 下载安装 下载 下载地址:https://github.com/zkteco-home/redis-windows/releases?…...
反应力场的生成物、反应路径分析方法
关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...
安卓音频之dumpsys audio
目录 概述 详述 dumpsys audio 1、音频服务生命周期的事件日志 2、音频焦点事件日志 3、音频流音量信息 4、音量组和设备的相关信息 5、铃声模式 6、音频路由 7、其他状态信息 8、播放活动监控信息 9、录音活动记录 10、AudioDeviceBroker 的记录 11、音效&#…...
StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成
文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…...
蓝桥杯真题 - 异或和 - 题解
题目链接:https://www.lanqiao.cn/problems/3549/learning/ 个人评价:难度 3 星(满星:5) 前置知识:树状数组,dfs 序 整体思路 查询以节点 x x x 为根的子树下所有节点异或和,用 …...
【ES6复习笔记】let 和 const 命令(1)
ES6 中的 let 和 const 关键字 1. let 关键字 let 关键字用于声明一个变量,它具有块级作用域,这意味着变量只在声明它的块内有效。与 var 不同,let 不允许在同一作用域内重复声明同一个变量。 2. const 关键字 const 关键字用于声明一个常…...
ReconFusion: 3D Reconstruction with Diffusion Priors 论文解读
目录 一、概述 二、相关工作 1、稀疏视角NeRF 2、用于视角合成的回归模型 3、用于视角合成的生成模型 4、2D扩散用于3D生成 三、ReconFusion 四、实验 一、概述 提出可以利用三张图片生成实景三维重建的方法ReconFusion。并且在合成数据集和多视图数据集上进行训练&…...