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

贪心算法概述

贪心算法总是作出当前看来最好的选择,是局部最优

可以使用贪心算法的问题一般具有两个重要的性质

  • 贪心选择性质
  • 最优子结构性质

贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来达到

其与动态规划的问题区别在于,动态规划算法通常以自底向上的方式解决子问题,贪心为自顶向下的方式进行。

最优子结构性质

一个问题的最优解包含其子问题的最优解

1.活动安排问题

设有n个活动的集合E={1,2,…,n},其中每个活动都 要求使用同一资源,如演讲会场等,而在同一时间内只有 一个活动能使用这一资源。每个活动i都有一个要求使用 该资源的起始时间si和一个结束时间fi,且si<fi。如果选 择了活动i,则它在半开时间区间[si, fi)内占用资源。若 区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是 相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相 容。

template<class Type>//s为每个活动的开始时间,f为结束时间(按结束时间的非减
序排列),集合A中存放执行的活动
void GreedySelector(int n,Type s[],Type f[],bool A[])
{A[1] = true;int j = 1;for(int i = 2;i<=n;i++){if(s[i]>=f[j]) {A[i] = true;j = i;}else A[i] = false;}
}

每次总是选择具有最早完成时间的 相容活动加入集合A中。

该算法的贪心选择的意义是使剩余的可安排时间段极大 化,以便安排尽可能多的相容活动。

当输入的活动已 按结束时间的非减序排列,算法只需O(n)的时间安排n个 活动,使最多的活动能相容地使用公共资源。如果所给 出的活动未按非减序排列,可以用O(nlogn)的时间重排。

2.背包问题

0-1背包问题

给定n种物品和一个背包。物品i的重量是Wi,其价值 为Vi,背包的容量为C。应如何选择装入背包的物品, 使得装入背包中物品的总价值最大?

note:0-1背包问题不能将物品i装入背包多次,也不能只装入 部分的物品i。

背包问题

与0-1背包问题类似,所不同的是在选择物品i装入 背包时,可以选择物品i的一部分,而不一定要全部装 入背包,1≤i≤n。

背包问题可以用贪心算法求解,而0-1背包问题却不可以用贪心算法求解

基本步骤为计算每种物品单位重量的价值,然后依照贪心选择策略,将尽可能多的单位重量价值最高的物品放到背包中,直到背包装满为止

void Knapsack(int n,float M,float v[],float w[],float x[])
{//v价值,w质量,n为物品数量Sort(n,v,w);//这时的w已经按照单位价值排序完成int i;for (i=1;i<=n;i++) x[i]=0;float c=M;//c表示当前剩余背包容量for (i=1;i<=n;i++) {if (w[i]>c) break;x[i]=1;c-=w[i];}if (i<=n) x[i]=c/w[i];//剩余容量除以w[i],得到使用w[i]多少    
}

3.最优装载问题

有一批集装箱要装上一艘载重量为c的轮船。其中 集装箱i的重量为Wi。最优装载问题要求确定在装载体 积不受限制的情况下,将尽可能多的集装箱装上轮船,且要输出所选集装箱编号。

采用重量最轻者先 装的贪心选择策略

template<class Type>
void Loading(int x[], Type w[], float c, int n)
{int *t = new int [n+1]; //按照集装箱重量从轻到重的顺序SelectSort(w, t, n);//不使用质量直接排序,要确定每个集装箱对应序号//w[t[i]]代表序号为t[i]的质量,而t[i]是按照集装箱重量从轻到重的顺序for (int i = 1; i <= n; i++) x[i] = 0;//x表示时候被选择for (int i = 1; i <= n && w[t[i]] <= c; i++){x[t[i]] = 1; c -= w[t[i]];}
}template<class Type>
void SelectSort(Type w[],int *t,int n)
{Type tempArray[n+1],temp;//将w拷贝到临时数组tempArray中memcpy(tempArray,w,(n+1)*sizeof(Type));int min;for(int i=1;i<=n;i++) t[i] = i;//下面为选择排序for(int i=1;i<n;i++){min=i;for(int j=i+1;j<=n;j++){if(tempArray[min]>tempArray[j])min=j;           }Swap(tempArray[i],tempArray[min]);Swap(t[i],t[min]);}
}

note:由于需要进行排序,故算法所需时间复杂度为O(nlogn),这里不明白的可参考我的文章算法分析与设计(研)

4.哈夫曼编码

哈夫曼编码是广泛地用于数据文件压缩的 十分有效的编码方法。

其思想: 给出现频率高的字符较短的编码,出现频率较 低的字符以较长的编码,可以大大缩短总码长

例子:给出如下字符与出现频率

对于定长码,给每个字符分配固定长度的编码,而变长码则是根据出现频率构造一棵树,小的频率放在左边,用0代表,大的频率放在右面,用1代表 

对每一个字符规定一个0,1串作为其代码,并要求任一 字符的代码都不是其它字符代码的前缀。这种编码称 为前缀码。

表示最优前缀码的二叉树总是一棵完全二叉树,即树中任一结点都有2个儿子结点。

 哈夫曼提出构造最优前缀码的贪心算法,由此产 生的编码方案称为哈夫曼编码。

算法以|C|个叶结点开始,执行|C|-1次的“合并” 运算后产生最终所要求的树T。

在算法huffmanTree中,编码字符集中每一字符c 的频率是f(c)。以f为键值的优先队列Q用在贪心选择时 有效地确定算法当前要合并的2棵具有最小频率的树。 一旦2棵具有最小频率的树合并后,产生一棵新的树, 其频率为合并的2棵树的频率之和,并将新树插入优先 队列Q。经过n-1次的合并后,优先队列中只剩下一 棵树,即所要求的树T。

关于n个字 符的哈夫曼算法的计算时间为O(nlogn) 。

5.单源最短路径

给定带权有向图G =(V,E),其中每条边的权是非负 实数。另外,还给定V中的一个顶点,称为源。现在要 计算从源到所有其它各顶点的最短路径长度。这里路 的长度是指路上各边权之和。这个问题通常称为单源 最短路径问题。

Dijkstra算法是解单源最短路径问题的贪心算法。

其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集 合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。

步骤:

  1. 初始时,S中仅含有源。
  2. 设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为 从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短 特殊路径长度。
  3. Dijkstra算法:每次从V-S中取出具有最短特殊路长度的顶点u,将 u添加到S中,同时对数组dist作必要的修改。 当S添加u之后,可能出现一条到顶点的新的特殊路,如果这条新特 殊路是先经过老的S到达顶点u,然后从u经过一条边直接到达顶点i, 则这种路的最短长度是dist[u]+c[u][i]。如果 dist[u]+c[u][i] < dist[i] 则需要更新dist[i]的值,并且将u赋值给prev[i]。
  4. 当S包含了所有V中顶点,dist就记录了从源到所有其它顶点之 间的最短路径长度。

直观来说,每次选择未被加入的距离最短的点加入S,加入后重新调整S到各点的距离

dist[u]+c[u][i] < dist[i],这个公式的意思是,从源到u的距离加上u到i的距离小于源到i的距离

prev数组代表到达该点的前一个点是什么

证明:

最优子结构性质

贪心性质

从V-S中选择具有最短特殊路径的顶点u,从而确定从源 到u的最短路径长度dist[u]。为什么从源到u没有更短 的其他路径?

只管看来就是如果有更短的路径d(v,x)+d(v,u)  = d(v,u),那么很明显dist[x]更短,我们没有选择,那么就是与贪心选择矛盾 

时间复杂度为O(n^2),原因在于每次选择为O(n),然后需要选择n-1次

6.最小生成树

设G =(V,E)是无向连通带权图,即一个网络。E中 每条边(v,w)的权为c[v][w]。如果G的子图G’是一棵包 含G的所有顶点的树,则称G’为G的生成树。生成树上 各边权的总和称为该生成树的耗费。在G的所有生成树 中,耗费最小的生成树称为G的最小生成树。

概况来说就是找一个权值和最小的子树

设G=(V,E)是连通带权图,U是V的真子集。如果 (u,v)∈E,且u∈U,v∈V-U,且在所有这样的边中, (u,v)的权c[u][v]最小,那么一定存在G的一棵最小生成 树,它以(u,v)为其中一条边。这个性质有时也称为 MST性质。

解释一下就是最小生成树就是不断选择最小权值的边构成的,这里不可以选择已经包含点之间的连接,需要在未包含的点中和以包含的点中选择

note:E为边集合,V为点集合

Prim算法

构造G的最小生成树的Prim算法的基本思想是: 首先置S={1},然后,只要S是V的真子集,就作如下 的贪心选择:选取满足条件i∈S,j∈V-S,且c[i][j]最小 的边,将顶点j添加到S中。这个过程一直进行到S=V 时为止。

例子

 不断选择权值最小的边来连接新的顶点

 计算时间为O(n^2),找到最小的边需要O(n),而需要进行n-1次

Kruskal算法

首先将G的n个顶点看成n个孤立的连通分支。将所有 的边按权从小到大排序。然后从第一条边开始,依边 权递增的顺序查看每一条边,并按下述方法连接2个不 同的连通分支:

(1)当查看到第k条边(v,w)时,如果端点v和w分别是 当前2个不同的连通分支T1和T2中的顶点时,就用边 (v,w)将T1和T2连接成一个连通分支,然后继续查看第 k+1条边;

(2)如果端点v和w在当前的同一个连通分支中,就直 接再查看第k+1条边。这个过程一直进行到只剩下一 个连通分支时为止。

这个解释来说就是将所有边那权值排序,然后不断加入权值最小的边,这个加入的边要求两边的点至少有一个没有加入S中

当边数为e的时候,时间复杂度为O(eloge)就是排序的时间

7.多机调度问题

多机调度问题要求给出一种作业调度方案,使所 给的n个作业在尽可能短的时间内由m台机器加工处理 完成。

采用最长处理时间作业优先的贪心选择策略可以 设计出解多机调度问题的较好的近似算法。

8.贪心算法的理论基础

借助于拟阵工具,建立关于贪心算法的较为一般的理论,这一理论用于确定什么时候使用贪心算法可以得到整体最优解

拟阵M定义为满足下面3个条件的有序对(S,I):

  1. S是非空有限集。
  2. I是S的一类具有遗传性质的独立子集族,即若B∈I, 则B是S的独立子集,且B的任意子集也都是S的独立子集。空集必为I的成员。
  3. I满足交换性质,即若A∈I,B∈I且|A|<|B|,则存在某 一元素x∈B-A,使得A∪{x}∈I。此时的x称为可扩展元素

在图论中,独立子集(或独立集,Independent Set)是指一个图中这样一组顶点:

  • 这些顶点之间没有边相连
  • 换句话说,图中任意两个属于独立子集的顶点之间都不是邻居。

当拟阵M中的独立子集A没有可扩展元素时,称A 为极大独立子集。

定理1:拟阵中的所有极大独立子集大小相同

许多用贪心算法求解的问题可以表示为求带权拟阵的最大权独立子集问题

给定带权拟阵M=(S,I),确定S的独立子集A∈I使得 W(A)达到最大。这种使W(A)最大的独立子集A称为拟 阵M的最优子集。由于S中任一元素x的权W(x)是正的, 因此,最优子集也一定是极大独立子集。

带权拟阵最优子集算法

每次选择当前能加入到最大权值点加入到A中,时间复杂度为

引理1:设M=(S,I)是拟阵。若S中元素x不是空集 的可扩展元素,则x也不可能是S中任一独立子集A的 可扩展元素。

引理2:拟阵的最优子结构性质

任务时间表问题

给定一个单位时间任务的有限集S。关于S的一 个时间表用于描述S中单位时间任务的执行次序。 时间表中第1个任务从时间0开始执行直至时间1结 束,第2个任务从时间1开始执行至时间2结束,…, 第n个任务从时间n-1开始执行直至时间n结束。

这个问题借助于拟阵可以很好的求解

对于一个给定的S的时间表,在截止时间之前完成 的任务称为及时任务,在截止时间之后完成的任务称 为误时任务。

S的任一时间表可以调整成及时优先形式,即其中 所有及时任务先于误时任务,而不影响原时间表中各 任务的及时或误时性质。还可将S的任一时间表调整成为规范形式, 其中及时任务先于误时任务,且及时任务依其截止时 间的非减序排列。

首先可将时间表调整为及时优先形式,然后再进 一步调整及时任务的次序。

任务时间表问题等价于确定最优时间表中及时任 务子集A的问题。一旦确定了及时任务子集A,将A中 各任务依其截止时间的非减序列出,然后再以任意次 序列出误时任务,即S-A中各任务,由此产生S的一个 规范的最优时间表。

对时间t=1,2,…,n,设Nt (A)是任务子集A中所有 截止时间是t或更早的任务数。考察任务子集A的独立 性。

对于S的任一任务子集A,下面的各命题是 等价的。

任务时间表问题要求使总误时惩罚达到最小,这 等价于使任务时间表中的及时任务的惩罚值之和达到 最大。下面的定理表明可用带权拟阵的贪心算法解任 务时间表问题。

定理2:设S是带有截止时间的单位时间任务集,I 是S的所有独立任务子集构成的集合。则有序对(S,I)是拟 阵。

用带权拟阵的贪心算法可以求得最 大权(惩罚)独立任务子集A,以A作为最优时间表中的及 时任务子集,容易构造最优时间表。

相关文章:

贪心算法概述

贪心算法总是作出当前看来最好的选择&#xff0c;是局部最优 可以使用贪心算法的问题一般具有两个重要的性质 贪心选择性质最优子结构性质 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来达到 其与动态规划的问题区别在于&#xff0c;动态规划算法通…...

自从学会Git,感觉打开了一扇新大门

“同事让我用 Git 提交代码&#xff0c;我居然直接把项目文件压缩发过去了……”相信很多初学者都经历过类似的窘境。而当你真正掌握 Git 时&#xff0c;才会发现它就像一本魔法书&#xff0c;轻松解决代码管理的种种难题。 为什么 Git 能成为程序员的标配工具&#xff1f;它究…...

jrc水体分类对水体二值掩码修正

使用deepwatermap生成的水体二值掩码中有部分区域由于被云挡住无法识别&#xff0c;造成水体不连续是使用jrc离线数据进行修正&#xff0c;jrc数据下载连接如下&#xff1a;https://global-surface-water.appspot.com/download 选择指定区域的数据集合下载如图&#xff1a; 使…...

Scala Collection(集合)

Scala的集合框架非常丰富和灵活&#xff0c;主要包括三大类&#xff1a;序列&#xff08;Seq&#xff09;、集&#xff08;Set&#xff09;和映射&#xff08;Map&#xff09;。这些集合类都扩展自Iterable特质&#xff0c;并且Scala为几乎所有集合类提供了可变和不可变的版本。…...

121.【C语言】数据结构之快速排序(未优化的Hoare排序存在的问题)以及时间复杂度的分析

目录 1.未优化的Hoare排序存在的问题 测试代码 "量身定制"的测试代码1 运行结果 "量身定制"的测试代码2 运行结果 "量身定制"的测试代码3 运行结果 分析代码1、2和3栈溢出的原因 排有序数组的分析 分析测试代码1:给一个升序数组,要求排…...

js 文档注释

在 JavaScript 中&#xff0c;文档注释&#xff08;也叫 JSDoc 注释&#xff09;是一种用于为代码提供结构化说明的注释方式。JSDoc 注释通常用于生成 API 文档、提高代码可读性&#xff0c;并为 IDE 提供智能提示。下面是如何在 JavaScript 中编写文档注释的基本指南。 基本语…...

chatgpt model spec 2024

概述 这是模型规范的初稿&#xff0c;该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标&#xff0c;以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南&#xff0c;这是一种称为从人类反馈中进…...

路由技术在网络中的作用及特点

作用&#xff1a;路径选择&#xff1a;在复杂的网络拓扑结构中&#xff0c;路由技术能够根据网络的当前状态和目标地址&#xff0c;为数据报文选择一条最佳的传输路径&#xff0c;确保数据能够快速、准确地到达目的地。例如&#xff0c;在互联网中&#xff0c;当用户访问一个网…...

No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…...

vim 按下esc后取消高亮

配置 ideavimrc文件 " 按下 Esc 键时自动取消高亮 " 在普通模式下按下 Esc 键取消高亮 nnoremap <Esc> :nohlsearch<CR> " 在插入模式下按下 Esc 键取消高亮 inoremap <Esc> <Esc>:nohlsearch<CR>" 额外&#xff1a;当退出…...

JS-判断字段值是否为空

1.js方法 /*** Description: 判断给定值是否为空* param {any} value 需要检查的值* return {boolean} 如果值为空&#xff0c;返回 true&#xff1b;否则返回 false */ export function isEmpty(value) {// 检查是否为 null 或 undefinedif (value null || value undefined…...

STM32-笔记22-sg90舵机

一、接线 二、实验实现 动手让 SG90 每秒转动一下&#xff0c;0 -> 20 -> 40 -> 100 -> 180 如此循环。 舵机接A6 复制18-呼吸灯&#xff0c;重命名24-sg90舵机 把PWM重命名sg90 打开项目文件 在魔术棒和品上把PWM都去掉&#xff0c;加载sg90文件夹 加载之后…...

智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探之1:特定于领域的模板 之1 随想交流

前面的项目再次不能继续。不得已再一次重新建了这个项目&#xff0c;并以当前修改版本的项目文件为附件开始了今天的沟通。所以 标明是“方案再探” 在新建这个项目的同时&#xff0c;就将项目文件作为附件添加进去&#xff0c;然后开始。 文件链接&#xff1a;智能工厂的设计…...

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题&#xff0c;以及解决方案&#xff0c;原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览&#xff1a; …...

速盾:服务器CDN加速解析的好处有哪些呢?

随着互联网应用的普及&#xff0c;越来越多的企业开始关注如何提升网站的访问速度和用户体验。为了实现这一目标&#xff0c;许多企业选择使用CDN&#xff08;内容分发网络&#xff09;来加速网站的内容分发。CDN通过在全球范围内分布多个节点&#xff0c;将内容缓存到离用户最…...

【sql】CAST(GROUP_CONCAT())实现一对多对象json输出

数据库&#xff1a;mysql 5.7版本以上 问题&#xff1a;一对多数据&#xff0c;实现输出一条数据&#xff0c;并将多条数据转换成json对象输出&#xff0c;可以实现一对多个字段。 项目中关系较为复杂&#xff0c;以下简化数据关系如下&#xff1a; t1是数据表&#xff0c;t…...

[创业之路-221]:企业的责任中心:收入中心、利润中心、成本中心、费用中心、投资中心

目录 一、大部分企业责任中心定义 投资中心&#xff1a;战略决策部 利润中心&#xff1a;事业部 收入中心&#xff1a;进账 成本中心&#xff1a;成本 费用中心&#xff1a;消耗 二、华为对责任中心定义 投资中心 利润中心&#xff08;事业部&#xff1a;BU&#xff0…...

人工智能之基于阿里云图像人脸融合部署

人工智能之基于阿里云图像人脸融合部署 需求描述 基于阿里云搭建图像人脸融合模型&#xff0c;模型名称&#xff1a;iic/cv_unet-image-face-fusion_damo使用上述模型输出人脸融合照片 模型路径&#xff1a;人脸融合 业务实现 阿里云配置 阿里云配置如下&#xff1a; SD…...

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习

2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…...

Redisson 分布式锁获取tryLock和lock的区别

问题 boolean isLock lock.tryLock(10, 30, TimeUnit.SECONDS); boolean isLock lock.lock(30, TimeUnit.SECONDS); boolean isLock lock.lock(); 三者的区别&#xff1f;&#xff1f; 这三个方法都是用于获取 Redisson 分布式锁的&#xff0c;但它们在获取锁的方式和行为…...

mysql及其兼容语法数据库对于注释的特殊要求

我司大部分数据库使用MS-SQL&#xff0c;其中使用大量–开头的行注释&#xff0c;由于业务需要&#xff0c;切换到了Starrocks数据库&#xff08;兼容mysql语法&#xff09;后发现使用with开头子查询的时候&#xff0c;大量报错&#xff0c;单独执行内部的子查询又正常&#xf…...

开源模型应用落地-工具使用篇-Spring AI(七)

一、前言 在AI大模型百花齐放的时代&#xff0c;很多人都对新兴技术充满了热情&#xff0c;都想尝试一下。但是&#xff0c;实际上要入门AI技术的门槛非常高。除了需要高端设备&#xff0c;还需要面临复杂的部署和安装过程&#xff0c;这让很多人望而却步。不过&#xff0c;随…...

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入…...

【golang学习之旅】使用VScode安装配置Go开发环境

1. 下载并安装Go 1.1 下载地址1.2 选择版本并下载1.3 安装目录1.4 验证是否安装成功 2. 配置环境变量 2.1 配置步骤2.2 GO部分环境变量说明 3. 下载或更新 Vscode 3.1 下载地址3.2 安装步骤 4. 为Go开发配置VScode 1. 下载并安装Go 1.1 下载地址 https://studygolang.com/dl…...

HarmonyOS Next“说书人”项目 单机版 实践案例

前段时间开发了一个软件&#xff0c;取名为“说书人”&#xff0c;后由于备案暂时没有通过&#xff0c;于是删除了联网功能&#xff0c;重新做了一个单机版&#xff0c;这里对于单机版的开发实践案例进行一个发出&#xff0c;希望能帮助到大家 文章最后给出了AtomGit仓库地址 p…...

Vue3 + ElementPlus动态合并数据相同的单元格(超级详细版)

最近的新项目有个需求需要合并单元列表。ElementPlus 的 Table 提供了合并行或列的方法&#xff0c;可以参考一下https://element-plus.org/zh-CN/component/table.html 但项目中&#xff0c;后台数据返回格式和指定合并是动态且没有规律的&#xff0c;Element 的示例过于简单&…...

前端开发中依赖包有问题怎么办

在前端开发中&#xff0c;如果你发现某个依赖包存在问题&#xff0c;可以考虑以下步骤来解决&#xff1a; 一、简单方案 1. 检查问题来源&#xff1a; 确认问题是否由依赖包引起&#xff0c;而不是你的代码或其他配置问题。查看错误信息、文档和相关的 GitHub issue&#xf…...

Oracle exp和imp命令导出导入dmp文件

目录 一. 安装 instantclient-tools 工具包二. exp 命令导出数据三. imp 命令导入数据四. expdp 和 impdp 命令 一. 安装 instantclient-tools 工具包 ⏹官方网站 https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html ⏹因为我们在…...

阿里云人工智能工程师ACA认证免费课程学习笔记

阿里云人工智能工程师ACA认证免费课程学习笔记 0. 引言第1章&#xff1a;人工智能基础课时1&#xff1a;人工智能概述课时2&#xff1a;人工智能产业结构课时3&#xff1a;人工智能项目开发的基本流程 第2章&#xff1a;机器学习PAI平台基础第3章&#xff1a;数据处理基础课时8…...

单片机库函数-io输出操作

1、需要使用模块 使用库函数做跑马灯&#xff0c;要用到: misc.h misc.c 时钟模块&#xff1a; stm32f10x_rcc.h stm32f10x_rcc.c gpio模块&#xff1a; 头文件:stm32f10x_gpio.h 源文件:stm32f10x_gpio.c 2、库函数 2.1、初始化GPIO void GPIO_Init(GPIO_TypeDef* …...

SpringAI从入门到熟练

学习SpringAI的记录情况 文章目录 前言 因公司需要故而学习SpringAI文档&#xff0c;故将自己所见所想写成文章&#xff0c;供大佬们参考 主要是为什么这么写呢&#xff0c;为何不抽出来呢&#xff0c;还是希望可以用的时候更加方便一点&#xff0c;如果大家有需求可以自行去…...

Javascript-web API-day04

文章目录 01-实例化日期对象02-常见的日期对象方法03-年月日案例04-年月日简化05-得到时间戳06-倒计时07-关闭节点08-子节点09-增加节点10-克隆节点11-删除节点12-m端时间13-(swiper插件的使用)移动端轮播图游乐园项目 学成在线重构 01-实例化日期对象 <!DOCTYPE html> …...

等待事件 ‘latch: row cache objects‘ 说明及解决方法

早上刚来的时候&#xff0c;收到zabbix 数据库连接数增长的告警&#xff0c;同时应用负责人也说查询很慢、很卡 查看该时间段 最多的等待事件 SELECT event,COUNT(1) num FROM V$ACTIVE_SESSION_HISTORY A WHERE A.SAMPLE_TIME BETWEEN TO_DATE(2025-01-02 09:00:00, YYYY-M…...

Mac电脑python多版本环境安装与切换

我当前是python3.9.6环境&#xff0c;需要使用3.9.8环境&#xff0c;通过brew安装3.9.8版本&#xff0c;然后通过pyenv切换环境 步骤 1: 安装 pyenv brew install pyenv brew install pyenv-virtualenv 步骤 2: 安装 Python 3.9.8&#xff08;使用 pyenv 安装指定版本的 Pyth…...

MySQL 锁那些事

Q1 : MySQL有哪些锁,功能是什么,如何项目中使用?Q2 : 行锁是如何实现的?什么情况下会使用行锁?Q3 : 四种事务隔离形式的行锁有什么不一样?读未提交读提交可重复读串行 Q4 : MySQL 的读写都是怎样加锁的?Q5 : 需要注意什么? Q1 : MySQL有哪些锁,功能是什么,如何项目中使用…...

面试手撕笔记ML/DL

数据集 数据集的批处理迭代器 Deep-ML | Batch Iterator for Dataset 实现一个批量可迭代函数&#xff0c;该函数在numpy数组X和可选numpy数组y中进行采样。该函数应该生成指定大小的批量。如果提供了y&#xff0c;则该函数应生成&#xff08;X, y&#xff09;对的批次&#…...

WPF使用ContentControl控件实现区域导航,并使用Prism依赖注入优化

背景&#xff1a;使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的&#xff0c;不限于Prism 主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件 下面是MainViewModel&#xff1a; private object body;public object Body {get { retu…...

NineData 荣获年度“创新解决方案奖”

近日&#xff0c;国内知名 IT 垂直媒体 & 技术社区 IT168 再次启动“技术卓越奖”评选&#xff0c;由行业 CIO/CTO 大咖、技术专家及 IT 媒体多方联合评审&#xff0c;NineData 凭借技术性能和产品创新等方面表现出色&#xff0c;在数据库工具领域荣获“2024 年度创新解决方…...

Windows 11 系统中npm-cache优化

在 Windows 11 系统中&#xff0c;C:\Users\K\AppData\Local\npm-cache 文件夹是 npm&#xff08;Node Package Manager&#xff09; 用于缓存已下载的包的目录。缓存的存在可以加快包的安装速度&#xff0c;因为当再次安装相同的包时&#xff0c;npm 可以直接从缓存中获取&…...

【运维工具】Ansible一款好用的自动化工具

Ansible一款好用的自动化工具 概述一、基本概念与特点二、核心组件三、主要功能与应用场景四、优缺点 如何使用一、安装Ansible二、配置Ansible三、使用Ansible四、注意事项 Playbook语法详解一、YAML文件的基本结构二、Playbook的主要组成部分三、Playbook示例四、注意事项 概…...

4.Web安全——JavaScript基础

一、JavaScript是什么&#xff1f; JavaScript 是一种高级的、解释型的编程语言&#xff0c;广泛应用于网页开发和各种软件应用程序中。 二、为什么要学习JavaScript XSS&#xff08;跨站脚本攻击&#xff09;防范 XSS 是一种常见的 Web 安全漏洞&#xff0c;攻击者将恶意脚…...

mysql删除无用用户

1、删除不用的账户 (1) 查看当前已存在账户 mysql> select user,host,password from mysql.user; 或下面的命令 #mysql> sELECT DISTINCT CONCAT(User: ,user,,host,;) AS query FROM mysql.user; --------------------------------------- | query …...

2025元旦源码免费送

我们常常在当下感到时间慢&#xff0c;觉得未来遥远&#xff0c;但一旦回头看&#xff0c;时间已经悄然流逝。对于未来&#xff0c;尽管如此&#xff0c;也应该保持一种从容的态度&#xff0c;相信未来仍有许多可能性等待着我们。 免费获取源码。 更多内容敬请期待。如有需要可…...

静态库封装之ComFile类

ComFile.h /* author:EricsT data:20241024 version:V1.0 history:author data version contentEricsT 20241024 V1.0 新增ComFile类[common、FILE以及stream部分] */#pragma once#include <string> #include <fstream> using namespace std;class ComFile { publi…...

概率论与数理统计

概率论占比更多&#xff0c;三分之二左右 数理统计会少一些 事件之间的概率 ab互斥&#xff0c;不是ab独立 古典概型吃高中基础&#xff0c;考的不会很多 条件概率公式&#xff0c;要记 公式不要全记&#xff0c;很多有名称的公式是通过基础公式转换而来的 目的在于解决一…...

鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能

文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上&#xff0c;经常可以见到多图片合集。它的特点是&#xff1a;由多张…...

django --递归查询评论

表数据 树状结构 action(methods(GET, ), detailFalse) def get_info_pinglun(self, request, *args, **kwargs) -> Response:根据评论id查所有回复params wenxian_pinglun_id --> 评论id;wenxian_pinglun_id self.request.GET.get(wenxian_pinglun_id)results se…...

kafka怎么保证顺序消费?

kafka怎么保证顺序消费&#xff1f; 1. 分区内的顺序保证2. 并发消费3. 实现顺序消费的策略4. 注意事项 kafka创建 topic 的时候没有指定分区数量&#xff0c;那么默认只会有一个分区。如果你想要创建一个具有多个分区的 topic&#xff0c;你可以在创建 topic 的命令中指定 --p…...

springboot原生socket通讯教程

需求背景 最近需要对接一些硬件设备,他们选择了socket通讯,并且使用的是私有化协议加密通讯。这种情况下适合原生的socket加解密解析,不适合NettySocket,这在开发中增加了难度。所有的代码都要手动去敲。如果你的只想通过socket传输一些数据,而且都是json的数据,例如聊天…...

革新排版机产线:一体式IO模块引领自动化高效控制新时代

在瞬息万变的制造业浪潮中&#xff0c;自动化与智能化已成为推动产业升级的关键力量。特别是在印刷行业&#xff0c;排版机的效率与精度直接关系到产品的质量与市场竞争力。近年来&#xff0c;随着技术的不断革新&#xff0c;明达技术MR20一体式IO模块凭借其高度集成、灵活配置…...