【初阶数据结构】——算法复杂度
一、前言
1、数据结构是什么?
数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构, 如:线性表、树、图、哈希等
下面我们就要踏上学习数据结构的旅程了,我们这部分主要是通过C语言来学习初阶数据结构,后续我们学习C++的时候,就会继续高阶数据结构和算法。
2、算法是什么?
算法(Algorithm):就是定义良好的计算过程,他取⼀个或⼀组的值为输⼊,并产⽣出⼀个或⼀组值作为 输出。简单来说算法就是⼀系列的计算步骤,⽤来将输⼊数据转化成输出结果。
简单来说,算法就是我们在程序中,为了解决一些问题,使用某些方法,然后让其可以的得到正确的值,那么这个方法就是算法。
比如,我们要求一个数的几次放,那么我们使用一个函数实现,然后调用这个函数,输入一个n就是求n次方,那么其也是一种算法,我们求某些问题,其合适的算法不是唯一的。
那么可以解决问题的算法不是唯一的,那么我们遇到问题的时候,该如何选择合适的算法呢?如何去衡量一个算法的好坏呢?有没有啥标准衡量一个算法呢?
我们今天要学习的内容就是去衡量一个算法的好坏的。
我们通过对这个算法的时间复杂度、空间复杂度来衡量他的好坏。
3、数据结构和算法的重要性
我们前面学习C语言的时候,就经常听到数据结构和算法,还有我们看的这么多的竞赛基本都是对于数据结构和算法的竞赛,我们去看招聘网站看到的相关的工作也都基本上对于算法的熟练程度都是有要求的,然后再招聘的笔试和面试中也都是必考的项目,可想而知其的重要性。
如下:
那么我们要学好数据结构和算法有没有什么秘诀呢?要学好数据结构和算法的秘诀就是:1、死磕代码 2、画图+思考,做到这两点想不学会都难,前面我们学习C语言的时候,画图的好处其实已经显现出来了。
二、算法效率
如何衡量一个算法的好坏呢?
1、复杂度的概念
法在编写成可执⾏程序后,运⾏时需要耗费时间资源和空间(内存)资源。因此衡量⼀个算法的好坏,⼀般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。
时间复杂度主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要衡量⼀个算法运⾏所需要的额外空间。在计算机发展的早期,计算机的存储容量很⼩。所以对空间复杂度很是在乎。但是经过计算机⾏业的迅速发展,计算机的存储容量已经达到了很⾼的程度。所以我们如今已经不需要再特别关注⼀个算法的空间复杂度。
三、时间复杂度
在计算机科学中,算法的时间复杂度是一个函数式T(N),它定量的描述了这个算法的运算时间,时间复杂度是衡量一个算法的时间效率,那么有同学就会问了,那么我们为啥不直接去算一个程序的运行时间呢?
1、程序的运行时间运行机器的配置都是有关系的,比如一个硬件好的机器和一个硬件一般的机器,其机器的算力就不一样了,那么其运行时间肯定就不一样的。
2、程序的运行时间和编译的环境也有关系,对于同一个算法程序,用一个老版本的编译器和一个新的编译器在同一台机器下的运行时间也是可能不同的。
3、程序的运行时间只能在程序写好后运行才好测试,没办法咋事前就通过理论进行计算。
4、同一个程序在同一台机器上的每一次的运行时间都会有差异。
所以我们算法的时间复杂度都是通过一个函数式T(N)来衡量的。
那么这个函数式T(N)到底是什么呢?
那么算法的时间这个T(N)函数式计算了程序的执⾏次数。通过c语⾔编译链接章节学习,我们知道算法程序被编译后⽣成⼆进制指令,程序运⾏,就是cpu执⾏这些编译好的指令。那么我们通过程序代码或者理论思想计算出程序的执⾏次数的函数式T(N),假设每句指令执⾏时间基本⼀样(实际中有差别,但是微乎其微),那么执⾏次数和运⾏时间就是等⽐正相关,这样也脱离了具体的编译运⾏环境。执⾏次数就可以代表程序时间效率的优劣。⽐如解决⼀个问题的算法a程序T(N)=N,算法b程序T(N)=N^2,那么算法a的效率⼀定优于算法b。
下面我们通过一个例子来学习:
我们不需要知道这个函数是实现啥功能的,我们只需要求++count语句执行了多少次:
首先是第一个二层循环,其执行的次数为N^2。然后就是第二个for循环,其执行的次数为2*N。第三个循环就执行了10次,那么总的执行次数为:T(N)=N^2+2*N+10
那么通过我们之前的数学的学习,当N达到很大的时候,只有N^2对于执行次数的影响是最大的,实际我们在计算时间复杂度的时候,计算的也不是程序的执行次数。
我们想知道的是输入N对于程序的执行次数的增长趋势的变化的影响,也就是当N变化的时候T(N)的变化咋样。
我们在对复杂度的表示通常使用大O渐进表示法。
四、大O渐进表示法
大O符合:是用于描述函数渐进行为的数学符号,使用大O渐进表示法后,我们不需要再将程序的执行次数很精确的计算出来,主要是推算出其影响最大的即可。
下面为大O渐进表示法的规则:
1、时间复杂度函数式T(N)中,其只保留高阶项,去掉那些低阶项,这是因为当N不断变大的时候,低阶项对于结果的影响基本可以忽略不计的了。
如上面的那个案例,其时间复杂度为T(N)=N^2+2*N+10,那么我们使用大O渐进表示法,那么就为:O(N^2)。
2、如果最高阶项存在而且不是1,那么则除去这个项目的常数系数,这是因为当N不断增大的时候,这个系数对于结果的影响也是微乎其微的了,那么也就可以忽略不记了。
3、T(N)中如果只含有常数项,那么我们用常数1取代其所有的加法项,不过要注意的是1并不是代表其次数为1,而是表示其输入N对于时间复杂度的影响趋势是1,也就是一条平行于X轴的直线,即没有影响。
4、如果这个程序的算法的时间复杂度其会有多种情况,即其有最好的情况,平均情况,最坏的情况,那么我们就以最坏的情况为最后的结果。
五、空间复杂度
上面我们已经学习了时间复杂度,那么我们再学习另外一个衡量算法效率的东西:空间复杂度
空间复杂度也是一个函数表达式,其是对一个算法再运行过程中需要临时开辟的空间。
有的同学可能会以为其是开辟的空间的字节数,其实不是,这是以为每个变量的大小差异不是很大,我们所学的数据类型,就是1个字节,2个字节,4 个字节,8个字节等,其差异不是很大。所以空间复杂度算的是我们需要创建的变量个数。
空间复杂度的表达方式也是使用大O表示法,那么其使用规则也是一样的。
不过要注意的是:
函数运行时需要的栈空间(存储参数,局部变量,一些寄存器信息等)在编译的时候已经确定了的,所以空间复杂度主要通过函数在运行时申请的额外空间来确定。
六、练习
1、时间复杂度的练习
练习1:
上面的时间复杂度就很好计算了,我们首先求出其函数表达式T(N),然后再使用大O表示法。
那么我们现在开始计算吧:首先第一个循环,其执行的次数是2*N,然后是第二个循环其执行次数为10,那么其函数表达式T(N)=2*N+10,然后我们使用大O表达法,先保留最高阶次项,那么此时为2N,然后最高次的系数改为1,那么最终其大O表示法为O(N)。
练习2:
那么我们还是一样先求其函数表达式,上面的函数表达式很明显为:T(N)=1000。那么其和N 没有关系,那么其很明显使用大O表示法的话就需要使用到第三条规则,将其变成1表示:O(1)。
练习3:
可以看到这个时间复杂度和我们上面的计算有点不一样了,我们对N进行取值看看其规律:
当为2的时候,代码的执行次数为1,当N为4的时候,那么代码的执行次数为2,当N为8的时候,代码执行3次......那么我们假设代码的执行次数为x,然后我们可以得到2^x=N。那么我们可以得到x=log N 其中这个对数的底为2,那么我们这个程序的时间复杂度就是O(log N)了。
当我们遇到对数的时间复杂度的时候我们会发现,底数对于复杂度的变化趋势影响不大,那么我们可以不写这个底数,不同的教材间的写法也会有差异,但是区别不大,我们的话建议使用log N的形式。
练习4:
上面的代码是我们前面学习C语言的时候学习的冒泡排序,那么我们来分析其时间复杂度看看:
首先我们看看其两个循环,外层循环:end从n递减到1,那么一个n次迭代。
然后是内层循环遍历整个数组,比较相邻的两个元素,如果前面的大于后面的元素,那么就进行交换。
那么其时间复杂度会受到数组的排序受到影响:
1、最坏情况:完全倒置。
那么外层循环:还是一样要执行n次。
内层循环:
第一轮:n-1次比较,第二轮:n-2次比较.....第n-1轮:1次比较。
那么总的操作次数为:
(n-1)+(n-2)+(n-3)+(n-4)......+1=n(n-1)/2
那么此时的时间复杂度为O(n^2)。
最好的情况:(已经是降序)
那么外层循环执行1次。
然后内层循环遍历那么就执行n-1次比较。
那么就直接终止了所以其时间复杂度为O(n)。
平均情况:(顺序是随机的)
那么平均需要n(n-1)/4次,那么其时间复杂度为O(n^2)。
2、空间复杂度的练习
这里的的Fac函数很明显使用了递归,而且其每运行一次就要创建一个函数栈帧,然后其不继续递归的条件就是函数的参数变成0,那么就是当N减到0的时候,那么这个函数的空间复杂度为N。大O表达式为O(N)。
七、常见的复杂度的对比
相关文章:
【初阶数据结构】——算法复杂度
一、前言 1、数据结构是什么? 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构, 如&…...
Oracle数据库数据编程SQL<00. 课外关注:rownum、rowid、level、row_number 对比详解与实战>
更多Oracle学习内容请查看:Oracle保姆级超详细系列教程_Tyler先森的博客-CSDN博客 目录 一、基本概念与区别 二、ROWNUM 详解与实战 1. 基本特性 2. 典型应用 2.1 分页查询(Oracle传统方式) 2.2 限制返回行数 2.3 随机抽样 3. 注意事…...
凸优化基础
文章目录 目录**第1讲:凸优化基础****第2讲:凸优化建模****第3讲:对偶理论****第4讲:梯度下降法****第5讲:牛顿法与内点法****第6讲:次梯度与近端方法****第7讲:分布式凸优化****第8讲ÿ…...
LeetCode面试热题150中12-18题学习笔记(用Java语言描述)
Day 03 12、 O ( 1 ) O(1) O(1)时间插入、删除元素和获取元素 需求:实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否…...
开源模型集成接口
一、OpenRouter 概述 OpenRouter是一个开源的大模型API路由器,旨在将各种AI模型和服务集成到一个统一的接口中,使用户能够通过简单的配置调用不同大模型的能力。其主要功能包括智能路由用户请求到不同的AI模型,并提供统一的访问接…...
python成功解决AttributeError: can‘t set attribute ‘lines‘
文章目录 报错信息与原因分析解决方法示例代码代码解释总结 报错信息与原因分析 在使用 matplotlib绘图时,若尝试使用 ax.lines []来清除图表中的线条,会遇到AttributeError: can’t set attribute错误。这是因为 ax.lines是一个只读属性,不…...
宿舍管理系统(servlet+jsp)
宿舍管理系统(servletjsp) 宿舍管理系统是一个用于管理学生宿舍信息的平台,支持超级管理员、教师端和学生端三种用户角色登录。系统功能包括宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录、添加宿舍房间、心理咨询留言板、修改密码和退出系统等模块。宿舍管理员…...
Unity UI 从零到精通 (第30天): Canvas、布局与C#交互实战
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
vue项目打包部署到maven仓库
需要的资源文件,都放在根目录下: 1. versionInfo.js const fs require(fs) const path require(path) const mkdirp require(mkdirp) const spawn require(child_process).spawnconst packageObj require(./package.json) const versionNo packa…...
【力扣】day1
文章目录 27.移除元素26. 删除有序数组的重复项 27.移除元素 26. 删除有序数组的重复项 我们仔细看一下这两道题的最后的返回值,为什么第一题返回slow 而第二题返回slow1 最后的返回值该如何返回绝对不是凭感觉,我们自己分析一下第一个slow,从0位置开始, 遇到val值就开始和fas…...
MySQL:B+树索引
InnoDB索引方案 为了使用二分法快速定位具体的目录项,假设所有目录项都可以在物理存储器上连续存储,有以下问题: InnoDB使用页为管理存储空间的基本单位,最多只能保证16KB的连续存储空间,记录数据量多可能需要非常大…...
如何建立可复用的项目管理模板
建立可复用的项目管理模板能够显著提高项目执行效率、减少重复劳动、确保项目管理标准化。在企业中,项目管理往往涉及多个步骤和多个团队,然而每次开始一个新项目时,如果都从头开始设计流程和文档,势必浪费大量的时间和精力。通过…...
Go:goroutine 和通道
goroutine f() // 等待 f() 返回 go f() // 新建一个调用 f() 的 goroutine,不用等待在 Go 语言里,goroutine 是并发执行的活动单元。与顺序执行程序不同,在有多个 goroutine 的并发程序中,不同函数可同时执行。程序启动时&…...
盛水最多的容器问题详解:双指针法与暴力法的对比与实现
文章目录 问题描述方法探讨方法一:暴力法(Brute Force)思路代码实现复杂度分析 方法二:双指针法(Two Pointers)思路正确性证明代码实现复杂度分析 方法对比总结 摘要 盛水最多的容器(Container …...
VMWare 16 PRO 安装 Rocky8 并部署 MySQL8
VMWare 16 PRO 安装 Rocky8 并部署 MySQL8 一.Rocky OS 下载1.官网 二.配置 Rocky1.创建新的虚拟机2.稍后安装系统3.选择系统模板4.设置名字和位置5.设置大小6.自定义硬件设置核心、运存和系统镜像7.完成 三.启动安装1.上下键直接选择安装2.回车安装3.设置分区(默认…...
日常学习开发记录-slider组件
日常学习开发记录-slider组件 从零开始实现一个优雅的Slider滑块组件前言一、基础实现1. 组件结构设计2. 基础样式实现3. 基础交互实现 二、功能增强1. 添加拖动功能2. 支持范围选择3. 添加垂直模式 三、高级特性1. 键盘操作支持2. 禁用状态 五、使用示例六、总结 从零开始实现…...
AIDL 中如何传递 Parcelable 对象
目录 1. 直接在 AIDL 中定义 Parcelable 对象2. 自定义 Parcelable 对象的传递3. 以 Rect 类为例的 Parcelable 实现4. 注意安全性5. 小结1. 直接在 AIDL 中定义 Parcelable 对象 背景说明 从 Android 10(API 级别 29)开始,AIDL 允许直接在 .aidl 文件中定义 Parcelable 对…...
LVGL实战训练——计算器实现
目录 一、简介 二、部件知识 2.1 按钮矩阵部件(lv_btnmatrix) 2.1.1 按钮矩阵部件的组成 2.1.2 按钮文本设置 2.1.3 按钮索引 2.1.4 按钮宽度 2.1.5 按钮属性 2.1.6 按钮互斥 2.1.7 按钮文本重着色 2.1.8 按钮矩阵部件的事件 2.1.9 按钮矩阵部件的 API 函数 2.2…...
代码随想录算法训练营Day30
力扣452.用最少数量的箭引爆气球【medium】 力扣435.无重叠区间【medium】 力扣763.划分字母区间【medium】 力扣56.合并区间【medium】 一、力扣452.用最少数量的箭引爆气球【medium】 题目链接:力扣452.用最少数量的箭引爆气球 视频链接:代码随想录 题…...
AIDL 语言简介
目录 软件包类型注释导入AIDL 的后端AIDL 语言大致上基于 Java 语言。AIDL 文件不仅定义了接口本身,还会定义这个接口中用到的数据类型和常量。 软件包 每个 AIDL 文件都以一个可选软件包开头,该软件包与各个后端中的软件包名称相对应。软件包声明如下所示: package my.pac…...
经典算法 判断一个图中是否有环
判断一个图中是否有环 问题描述 给一个以0 0结尾的整数对列表,除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图中是否存在环。存在输出YES,不存在输出NO。 输入样例1 6 8 5 3 …...
Transformer-PyTorch实战项目——文本分类
Transformer-PyTorch实战项目——文本分类 ———————————————————————————————————————————— 【前言】 这篇文章将带领大家使用Hugging Face里的模型进行微调,并运用在我们自己的新项目——文本分类中。需要大家提前下…...
Linux-服务器负载评估方法
在 Linux 服务器中,top 命令显示的 load average(平均负载)反映了系统在特定时间段内的负载情况。它通常显示为三个数值,分别代表过去 1 分钟、5 分钟和 15 分钟的平均负载。 1. 什么是 Load Average? Load average …...
Transformer编程题目,结合RTX 3060显卡性能和市场主流技术
以下是10道针对4年经验开发者的Transformer编程题目,结合RTX 3060显卡性能和市场主流技术,每题包含模型选择和实现逻辑描述: 题目1:医疗报告结构化提取 模型选择:BioBERT-base 要求: 开发从PDF医疗报告中提…...
Web三漏洞学习(其二:sql注入)
靶场:NSSCTF 、云曦历年考核题 二、sql注入 NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过,但为了学习sql,整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判…...
VLAN的知识
1.什么是VLAN? VLAN是虚拟局域网,逻辑隔离广播域和网络区域 是一种通过将局域网内的设备逻辑地划分为一个个网络的技术 2.对比逻辑网络分割和物理网络分割? 逻辑网络分割是VLAN,隔离广播域和网络区域 物理网络分割是路由&…...
RFID 赋能部队智能物联网仓储建设:打造信息化高效解决方案
在当今军事现代化进程的宏大背景下,部队后勤保障工作无疑占据着举足轻重的地位,而仓储管理作为其中的核心环节,更是至关重要。传统的仓储管理模式在面对当下物资种类繁杂、数量庞大的现状时,已显得力不从心,效率低下、…...
结构型屏蔽在高频电子设备中的应用与优化
在当今高度电子化的时代,随着电子产品工作频率不断提高,设备内部温度上升,电磁环境日趋复杂,电磁兼容(EMC)问题成为设计和制造过程中必须重点解决的问题。EMC不仅关系到设备自身的稳定运行,更涉…...
【教程】Ubuntu修改ulimit -l为unlimited
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 问题描述 解决方法一 解决方法二 解决方法三 (终极) 问题描述 查系统资源限制 ulimit -l如果返回的是 64 或其他较小值,那么RDM…...
【HDFS】BlockPlacementPolicyRackFaultTolerant#getMaxNode方法的功能及具体实例
方法参数说明: numOfChosen:已经选择的节点数numOfReplicas:还需要选择的副本数方法的返回值是一个长度为2的数组:[调整后的要选出多少个节点(不包括已经选择的), 每个机架最大能选择的节点数] @Overrideprotected int[] getMaxNodesPerRack(int numOfChosen, int numOfR…...
水污染治理(生物膜+机器学习)
文章目录 **1. 水质监测与污染预测****2. 植物-微生物群落优化****3. 系统设计与运行调控****4. 维护与风险预警****5. 社区参与与政策模拟****挑战与解决思路****未来趋势** 前言: 将机器学习(ML)等人工智能技术融入植树生物膜系统ÿ…...
数模小白变大神的日记2025.4.15日
分工 1.论文:mathtype (Latex) 2.建模;相应的建模知识与撰写方法,写摘要 3.编程:matlab、SPSs、(Python) 评价模型 1. 层次分析法 ①层次分析法是一种多目标、多准则的决策问题 ②层次分析法是一种主观加权法 ③层次分析法通过以下步骤实现: 1.构…...
STM32提高篇: 以太网通讯
STM32提高篇: 以太网通讯 一.以太网通讯介绍二.W5500芯片介绍1.W5500芯片特点2.W5500应用目标3.接入框图 三.驱动移植四.tcp通讯五.udp通讯六.http_server 一.以太网通讯介绍 以太网(Ethernet)是一种计算机局域网技术。IEEE组织的IEEE 802.3标准制定了以…...
4-15记录(冒泡排序,快速选择排序)
算法稳定 简单选择排序的实质就是最后一个和第一个比较,小,就换位置,然后继续用最后一个数字和第二个比较,以此类推。 但是算法不稳定,本来下划线的2在后面,但是经过算法后去了前面 快速排序 实现过程&am…...
Ubuntu系统18.04更新驱动解决方法
原始是:ubuntu18.04里面的驱动是470,对应cuda11.4 现在需要更新为525,对应cuda为12.0 实现: 1、打开终端 Ctrl Alt T2、使用 lspci 命令(快速查看显卡型号) lspci | grep -i vga3、终端输入 ubuntu-d…...
Rocky Linux 9.x 基于 kubeadm部署k8s
搭建集群使用docker下载K8s,使用一主两从模式 主机名IP地址k8s- master192.168.1.141k8s- node-1192.168.1.142k8s- node-2192.168.1.143 一:准备工作 VMware Workstation Pro新建三台虚拟机Rocky Linux 9(系统推荐最小化安装) …...
MATLAB程序实现了一个物流配送优化系统,主要功能是通过遗传算法结合四种不同的配送策略,优化快递订单的配送方案
%% 主函数部分 % function main()clear; clc; close all;% 生成或加载算例 filename = D:\快递优化\LogisticsInstance.mat; if ~exist(filename, file)instance = generate_instance();save(filename, -struct, instance); elseinstance = load(filename); end% 遗传算法参数配…...
利用宝塔面板搭建RustDesk服务
一、介绍 1.1官网 https://rustdesk.com/ 1.2github仓库 https://github.com/rustdesk/rustdesk 1.3特点 RustDesk 支持多种操作系统,包括 Windows、macOS、Linux、Android 和 iOS。它甚至提供网页版客户端,可以在浏览器中直接使用。 用户可以通过…...
前端与Java后端交互出现跨域问题的14种解决方案
跨域问题是前端与后端分离开发中的常见挑战,以下是14种完整的解决方案: 1 前端解决方案( 开发环境代理) 1.1 Webpack开发服务器代理 // vue.config.js 或 webpack.config.js module.exports {devServer: {proxy: {/api: {target: http://localhost:8…...
PBKDF2全面指南(SpringBoot实现版)
文章目录 第一部分:PBKDF2基础概念1. 什么是PBKDF2?2. 为什么需要PBKDF2?3. PBKDF2的工作原理4. PBKDF2与其他密码散列函数的比较第二部分:在Java和SpringBoot中使用PBKDF21. Java内置的PBKDF2支持2. SpringBoot中集成PBKDF22.1 添加依赖2.2 配置PBKDF2密码编码器2.3 自定义…...
基于RV1126开发板的rknn-toolkit-lite使用方法
1. rknn-toolkit-lite介绍 rknn-toolkit-lite是用于python算法的推理的组件,当前已经在EASY-EAI-Nano完成适配,用户可以用它进行深度学习算法的纯python开发。而且同时支持已经进行了预编译的模型,短短几行代码即可完成算法的推理,…...
一款轻量级的PHP地址发布页面源码
源码介绍 一款轻量级的PHP链接发布页面源码,适合快速搭建个性化的链接导航网站,支持动态链接管理和多种风格模板切换 1:后台登录地址为/admin/login.php,提供便捷的配置入口。 2:默认用户名是admin,密码为…...
分布式计算领域的前沿工具:Ray、Kubeflow与Spark的对比与协同
在当今机器学习和大数据领域,分布式计算已成为解决大规模计算问题的关键技术。本文将深入探讨三种主流分布式计算框架——Ray、Kubeflow和Spark,分析它们各自的特点、应用场景以及如何结合它们的优势创建更强大的计算平台。 Spark批量清洗快,…...
【专题刷题】双指针(一)
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:1,本人解法 本人屎山代码;2,优质解法 优质代码;3,精益求精,…...
火山引擎旗下防御有哪些
首先,我需要确认用户是不是打错了,比如把“引擎”当成了“云”,或者他们真的想了解火山引擎的防御机制。火山引擎是字节跳动旗下的云服务平台,类似于阿里云或腾讯云,所以用户可能想了解的是其安全防护措施。 接下来&am…...
python程序打包——nuitka使用
目前python打包成exe的工具主要有:PyInstaller Briefcase py2exe py2app Nuitka CX_Freeze等。 不同于C代码,可以直接编译成可执行的exe文件,或者js代码在浏览器中就能执行,python代码必须通过python解释器来运行,…...
编写了一个专门供强化学习玩的贪吃蛇小游戏,可以作为后续学习的playgraound
文章目录 **试玩效果****项目背景****核心设计思路****代码亮点解析****与强化学习算法的对接示例****扩展方向****总结****完整代码**把训练一个会玩小游戏的智能体,作为学习强化学习的一个目标,真的是很有乐趣的一件事。我已经不知为此花费了多少日夜了。如今已是着魔了一般…...
chain_type=“stuff 是什么 ? 其他方式有什么?
chain_type="stuff 是什么 ? 其他方式有什么? 目录 chain_type="stuff 是什么 ? 其他方式有什么?1. `chain_type="stuff"`2. `chain_type="map_reduce"`3. `chain_type="refine"`4. `chain_type="map_rerank"`在 LangCh…...
在IDEA里面建立maven项目(便于java web使用)
具体步骤: 第一次有的电脑你再创建项目的时候右下角会提醒你弹窗:让你下载没有的东西 一定要下载!!可能会很慢 运行结果: 因为他是默认的8080端口所以在运行的时候输入的url如下图: 新建了一个controller代…...
MyBatis 详解
1. 什么是 MyBatis? MyBatis 是一款优秀的 持久层框架,它通过 XML 或注解配置,将 Java 对象(POJO)与数据库操作(SQL)进行灵活映射,简化了 JDBC 的复杂操作。 核心思想:S…...