C++菜鸟教程 - 从入门到精通 第五节
一.各种排序
接下来,让我们开始学习排序!
1.选择排序
a.原理简介
选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾,直到所有元素排序完成。
选择排序的步骤:
1. 初始化:假设数组的第一个元素是最小的。
2. 查找最小值:遍历未排序部分,找到最小的元素。
3. 交换:将找到的最小元素与未排序部分的第一个元素交换。
4. 重复:重复上述步骤,每次从未排序部分选择最小元素,直到所有元素排序完成。
b.时间\空间复杂度
时间复杂度:
最好情况:O(n²)
最坏情况:O(n²)
平均情况:O(n²)选择排序的时间复杂度为O(n²),因为它需要进行n次遍历,每次遍历需要比较n-i次(i为当前遍历的次数)。
空间复杂度:
O(1),因为它是原地排序,不需要额外的存储空间。
c.优缺点
优点:简单易实现,适合小规模数据。
缺点:效率低,不适合大规模数据。选择排序虽然简单,但在处理大规模数据时效率较低,通常用于教学或小规模数据的排序场景。
d.代码示范
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=1e5+1;
int n,a[N],in;
void PrintArray(int a[],int n){for(int i=1;i<=n;i++){cout<<a[i]<<" "; }
}
int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%d",&a[i]); }for(int i=1;i<=n-1;i++){in=i;for(int j=i+1;j<=n;j++){if(a[j]<a[in]){in=j; } } swap(a[in],a[i]);} PrintArray(a,n);return 0;
}
2.桶排序
a.原理简介
桶排序(Bucket Sort)是一种分布式排序算法,它将一个数组分到有限数量的桶里。每个桶再分别进行排序,最后将各个桶中的数据合并,得到排序后的结果。
桶排序的基本思想是将数据分配到有限数量的桶中,每个桶再分别进行排序。具体步骤如下:
- 分配:将数据均匀地分配到各个桶中。
- 排序:对每个桶中的数据进行排序。
- 合并:将各个桶中的数据合并成一个有序序列。
b.时间\空间复杂度
时间复杂度:在平均情况下,桶排序的时间复杂度为O(n),其中n是待排序数据的数量。这是因为每个桶内的数据量相对较少,可以快速排序。然而,在最坏情况下,时间复杂度可能接近O(n^2),这取决于桶内排序算法的选择和数据的分布情况。
空间复杂度:桶排序的空间复杂度主要取决于桶的数量。如果使用额外的存储空间来存储桶中的数据,则空间复杂度为O(n+k),其中k是桶的数量。如果使用原地算法,则空间复杂度为O(1)。
c.优缺点
- 优点:
- 效率高:在数据分布均匀的情况下,桶排序的效率非常高,接近线性时间复杂度。
- 适合大数据量:对于大数据量的排序问题,桶排序可以显著提高效率。
- 缺点:
- 依赖数据分布:如果数据分布不均匀,某些桶可能会包含大量数据,导致某些桶内的排序时间变长,影响整体效率。
- 需要额外空间:如果使用额外的存储空间来存储桶中的数据,则需要额外的内存开销。
d.代码示范
#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e5+1;
int n,a[N],t,Max;
int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%d",&t);a[t]=1;Max=max(Max,t); } for(int i=1;i<=Max;i++){if(a[i]) cout<<i<<" "; } return 0;
}
3.sort排序
在C++中,sort是一个标准库函数,用于对容器中的元素进行排序。sort函数使用快速排序算法,其时间复杂度为O(n log n)。sort函数通常用于对数组和STL容器(如vector、deque、list等)进行排序。下面是一个简单的示例,使用sort函数对一个整数数组进行升序排序:
#include <iostream>
#include <algorithm>int main() {int arr[] = {3, 1, 4, 1, 5, 9, 2, 6};int n = sizeof(arr) / sizeof(arr[0]);std::sort(arr, arr + n);std::cout << "Sorted array: ";for (int i = 0; i < n; i++) {std::cout << arr[i] << " ";}return 0;
}
在上面的示例中,std::sort(arr, arr + n)将整数数组arr进行升序排序。排序后的结果将被打印出来。
除了默认的升序排序,sort函数还支持自定义排序规则。可以通过传递自定义的比较函数来实现按照特定的顺序进行排序,比如逆序排序或者按照某个成员变量进行排序。
好的,我们在这里就不做赘述,还想看更多排序?
点击链接!
https://blog.csdn.net/C_User1024/article/details/139566339?sharetype=blogdetail&sharerId=139566339&sharerefer=PC&sharesource=C_User1024&spm=1011.2480.3001.8118https://blog.csdn.net/C_User1024/article/details/139566339?sharetype=blogdetail&sharerId=139566339&sharerefer=PC&sharesource=C_User1024&spm=1011.2480.3001.8118
二.struct结构体
1.struct简介
在C++中,struct(结构体)是一种用户定义的数据类型,用于将不同类型的数据组合在一起。它类似于class,但默认的访问权限是public,而class的默认访问权限是private。
2.struct如何定义
你可以使用`struct`关键字来定义一个结构体,并在其中声明多个成员变量。例如:
struct Person {std::string name; //字符串值int age; //整形值double height; //高精度浮点值
}; //不要忘记加分号,它和函数不一样
Person结构体包含了三个成员变量:name(字符串类型)、age(整数类型)和 height(双精度浮点数类型)
3.调用struct
仍以上面的Person结构体为例.
Person person1;
person1.name="Steve";
person1.age=30;
person1.height=1.65;
cout<<"Name: " << person1.name << ", Age: " << person1.age << ", Height: " << person1.height<<endl;
使用:
结构体名称 . 参数
即可调用结构体
创建了一个复合数据变量,
将参数name设为"Steve"
将参数age设为30
将参数height设为1.65
struct是C++中用于组合不同类型数据的工具,适合简单的数据封装。它与`class`非常相似,但在默认访问权限和继承方式上有所不同。
三.高精度加法
1.高精度算法简介
高精度算法是一种用于进行大数运算的算法,通过使用特定的数据结构和计算方法来实现对高精度数字的精确计算。在传统的计算机中,通常对固定范围的数值进行运算,而高精度算法则允许处理更大范围的数字,甚至可以处理超过计算机标准数据类型所能表示的整数或小数。高精度算法通常用于解决需要极高计算精度的问题,如大整数运算、高精度小数运算、密码学算法等。
高精度算法通常基于大数运算的原理,其中常用的数据结构包括大整数(BigInteger)和大浮点数(BigDecimal)。
在进行高精度计算时,算法通常采用分治法、动态规划等高效算法来提高计算效率。此外,高精度算法还需要考虑处理数据的进位、借位、溢出等问题,以保证计算结果的准确性。
2.高精度加法的原理
高精度加法是指在进行数值计算时,对于较大的数字或小数精确度要求较高的情况下,采用特定的算法进行加法运算,以保证计算结果的准确性。其原理主要涉及以下几个方面:
1. 数据存储
对于较大数字或小数,可能会超出计算机内置数据类型的表示范围,因此需要采用特定的数据结构(如数组或链表)来存储数字,以保证精度和长度的可扩展性。
2. 对齐位数
在进行高精度加法时,需要将参与运算的数字对齐到同一位数,通常是保证小数点对齐,或者在整数部分前补零,以便逐位相加。
3. 逐位相加
从最低位(个位或小数点后第一位)开始逐位相加,将进位考虑在内,直到最高位得到最终结果。
4. 进位处理
在逐位相加的过程中,需要考虑进位的情况。如果某一位相加后值大于等于基数(10或2,取决于进制),则需要将进位加到高一位。这样可以确保每一位的运算都是在同一基数下进行的。
5. 结果展示
最终得到的结果需要根据实际情况进行格式化展示,包括去除前导零、确定小数点位置等。
3.编写高精度加法的步骤
1.变量的定义
需要如下变量(变量名可自行修改)
const int N=1e5+10; char s1[N],s2[N]; int a[N],b[N],c[N],lena,lenb,MAX,x;
N : 数组大小,可进行调整
s1,s2 : 进行高精度加法的两个数
a,b : s1,s2的倒序
c : 计算结果的倒序
lena,lenb : 进行高精度加法的两个数的长度
MAX : 最大位数
x : 进位
2.输入,倒序
cin>>s1>>s2; lena=strlen(s1); lenb=strlen(s2); MAX=max(lena,lenb); for(int i=0;i<lena;i++) a[i]=s1[lena-1-i]-'0'; for(int i=0;i<lenb;i++) b[i]=s2[lenb-1-i]-'0';
3.计算
for(int i=0;i<MAX;i++){ //遍历c[i]=a[i]+b[i]+x; //计算x=c[i]/10; //进位处理c[i]%=10; } if(x) c[MAX++]=x; //最后进位处理
4.倒序输出
for(int i=MAX-1;i>=0;i--){cout<<c[i]; }
完整代码
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=1e5+10;
char s1[N],s2[N];
int a[N],b[N],c[N],lena,lenb,MAX,x;
int main(){cin>>s1>>s2;lena=strlen(s1);lenb=strlen(s2);MAX=max(lena,lenb);for(int i=0;i<lena;i++) a[i]=s1[lena-1-i]-'0'; for(int i=0;i<lenb;i++) b[i]=s2[lenb-1-i]-'0';for(int i=0;i<MAX;i++){c[i]=a[i]+b[i]+x;x=c[i]/10;c[i]%=10;} if(x) c[MAX++]=x; for(int i=MAX-1;i>=0;i--){cout<<c[i]; } return 0;
}
四.题目测试
救援争先
内存限制: 256 Mb
时间限制: 1000 ms
题目描述
某地出现了灾害,各地派出了 n 只救援队。这些救援队是在同一天出发的,但出发时间不一样,路程也有长有短,所以达到时间有先有后。
给定每个队伍的出发时间,以及每只队伍的路程,请按照到达时间为这些队伍排序,如果多只队伍的到达时间正好相等,则出发时间靠前的队伍排在前列,如果出发时间仍然相等,则编号较小的队伍排在前列。
输入格式
第一行:单个整数 n,表示救援队数量。
第二行到第 n+1 行:在第 i+1 行,有两个时间,表示第 i 只救援队的出发时间和到达时间,数据格式均为hh:mm
hh
表示小时,在00
到23
之间;mm
表示分钟,在00
到59
之间。输出格式
共 n 行,每行一个整数,按救援队到达的先后顺序输出它们的编号。
数据范围
1≤n≤1000
题目分析
1.首先,要存储救援队的出发时间,路程,编号 ( 用结构体最合适 )
需含有出发,结束时间,编号
2.要先看到达时间是否相等,若相等,看出发时间,若依然相等,就按编号比较
使用sort方便一些
代码
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int n,sh,sm,lh,lm; struct Boat{int begin,end,index; }; Boat boats[1001]; bool cmp(Boat b1,Boat b2){if(b1.end==b2.end){if(b1.begin==b2.begin){return b1.index<b2.index;} return b1.begin<b2.begin;} return b1.end<b2.end; } int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%d:%d %d:%d",&sh,&sm,&lh,&lm); boats[i].begin=sh*60+sm;boats[i].end=boats[i].begin+lh*60+lm;boats[i].index=i; } sort(boats+1,boats+1+n,cmp); for(int i=1;i<=n;i++){cout<<boats[i].index<<endl; } return 0; }
其中的cmp是一个排序函数,返回的是排序的升\倒序
好了,今天的教学就到这里了 ,把你想学的打在评论区,我们不见不散!
相关文章:
C++菜鸟教程 - 从入门到精通 第五节
一.各种排序 接下来,让我们开始学习排序! 1.选择排序 a.原理简介 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思想是每次从未排序的部分中选择最小(或最大)的元素,将其放到已排序部分的末尾ÿ…...
同一个局域网的话 如何访问另一台电脑的ip
在局域网内访问另一台电脑,可以通过以下几种常见的方法来实现: 直接通过IP地址访问: 首先,确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址,这可以通过在目标电脑上打开命令提示符(Windows系…...
[学习笔记]攻防世界-bug
打开场景,提示我们需要登陆 我们先注册一下 注册成功 我们登陆进去 我们点击Manage他提示我们admin才能进入 我们刷新抓包一下试试 Cookie里面除了PHPSESSID,多出来了一个user,看上去是md5加密的,我们尝试解密 这里尝试了好几个网…...
[250324] Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!| Wine 10.4 发布!
目录 Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!Wine 10.4 发布! Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft! 近日,Apache Kafka 4.0.0 正式发布!这是一个…...
【赵渝强老师】达梦数据库MPP集群的架构
为了支持海量数据存储和处理等方面的需求,为高端数据仓库提供解决方案,达梦数据库提供了大规模并行处理MPP架构,以极低的成本代价,提供高性能的并行计算。通过使用MPP可以解决以下问题: 需要较高的系统性能支持以支持…...
JWT 鉴权常见知识点及参考答案
JWT 鉴权常见知识点及参考答案 最近在 Go Web 项目当中使用到了 JWT 进行鉴权,因此通过这篇文章对 JWT 的原理及相关的知识点进行总结。 文章目录 JWT 鉴权常见知识点及参考答案JWT 签名算法的详细工作流程一. 签名的生成过程二. 签名的验证过程 1. 什么是 JWT&am…...
洛谷题单入门4-P5729 【深基5.例7】工艺品制作-python
输入格式 第一行三个正整数 w,x,h。 第二行一个正整数 q。 接下来 q 行,每行六个整数 输出格式 输出一个整数表示答案。 三维数组直接标记 class Solution:staticmethoddef oi_input():"""从标准输入读取数据"""w, x, h map(…...
【C语言】内存函数详解
个人主页 文章目录 🏠一、memcpy函数1.函数形式以及功能介绍2.函数的使用3.模拟实现 🚀二、memmove函数1.函数形式以及功能介绍2.函数的使用3.模拟实现 🎡三、memset函数1.函数形式以及功能介绍2.函数的使用 🎉四、memcmp1.函数形…...
使用Python开发自动驾驶技术:车道线检测模型
友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…...
HTTP代理的全面解读:什么是HTTP代理?HTTP代理的工作原理
在互联网大潮中,每一个请求和返回数据的背后,都离不开传输协议的支持,而HTTP协议无疑是最熟悉的网络通信基础之一。当我们谈到HTTP代理时,它不仅让浏览网络变得更高效,也为数据采集以及全球性远程任务提供了解决方案。…...
DeepSeek底层揭秘——deepEP
1. 什么是 deepEP? (1) 定义 deepEP (DeepSeek EndPoint) 是 DeepSeek 开源的一款高性能、低延迟的分布式通信库,专为大规模深度学习训练和推理场景设计。它旨在优化分布式计算环境中的通信效率,特别是在节点间数据交换、梯度同步、模型分发…...
内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析
目录 1. Cobalt Strike 在什么情况下会构建内网代理? 2. Cobalt Strike 构建内网代理的主要作用和目的是什么? 3. Cobalt Strike 如何构建内网代理?需要什么条件和参数? 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…...
【redis】哨兵:人工恢复主节点故障和哨兵自动恢复主节点故障
文章目录 基本概念人工恢复主节点故障操作流程 哨兵自动恢复主节点故障哨兵集 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应…...
【Go 】异常处理
1. Go 语言错误处理基础 Go 语言尽量避免使用异常,推荐使用 返回错误 让调用者处理。Go 语言标准库提供 error 接口:type error interface {Error() string }errors.New("错误信息") 创建错误对象。 package mainimport ("errors"…...
微软纳德拉最新一期访谈
萨提亚纳德拉: 微软的AGI计划与量子突破| 2025.2.20 【文章核心预览:】 1、纳德拉回应AI价格战:效率提升将重塑需求,但关键是能否带动GDP增长至10% 2、微软AI收入130亿美元,4年后目标1300亿,但提醒"…...
WebSocket接入SSL证书
目录 碎碎念解决方法创建 HTTPS WebSocket 服务器创建系统服务启动服务 碎碎念 在访问网站时,使用 HTTPS 非常重要。HTTPS 协议不仅可以确保数据传输的安全性,还可以防止中间人攻击和数据篡改等安全问题。任何没有 SSL 证书的内容都可能会被拒绝访问。因…...
蓝桥杯——嵌入式学习日记
因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突 修改点: main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式&…...
第七课:Python基础排序算法与比较排序原理深度解析
比较排序算法是算法领域中的经典内容,其核心思想通过元素间的比较操作确定相对顺序。本文将深入探讨冒泡排序的优化策略、选择排序的变种实现、插入排序的典型应用场景,并通过统计比较次数直观展示算法效率差异。 一、冒泡排序的优化策略 传统冒泡排序存…...
项目流程中关键节点的测试类型
一、全流程测试框架图 #mermaid-svg-LmUdhLObstSpThwP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LmUdhLObstSpThwP .error-icon{fill:#552222;}#mermaid-svg-LmUdhLObstSpThwP .error-text{fill:#552222;strok…...
EasyRTC嵌入式音视频通信SDK:WebRTC技术下的硬件与软件协同演进,开启通信新时代
在当今数字化时代,智能设备的普及和人们对实时通信需求的不断增长,推动了嵌入式音视频通信技术的快速发。EasyRTC嵌入式音视频通信SDK凭借其独特的技术特点和应用优势,在嵌入式设备和多平台实时通信领域脱颖而出。 1、轻量级设计与高性能 Ea…...
机器视觉工程师如何看机器视觉展会,有些机器视觉兄弟参加机器视觉展会,真的是参加了?重在参与?
作为机器视觉工程师,参加机器视觉展会不仅是了解行业前沿技术的窗口,也是拓展专业网络、寻找解决方案的重要机会。以下是结合展会信息和工程师视角的综合建议: 一、聚焦技术趋势与创新应用 参与技术论坛与研讨会 展会同期的技术论坛是获取行业洞见的核心渠道。例如: 上海展…...
重温Ubuntu 24.04 LTS
用户调整 # 创建新用户 sudo adduser newusername # 设置新用户的密码 sudo passwd newusername # 将新用户添加到 sudo 组 sudo usermod -aG sudo newusername # 修改ssh访问权限 sudo nano /etc/ssh/sshd_config # 将新用户加入,此时root将无法访问 AllowUsers n…...
新版 eslintrc 文件弃用 .eslintignore已弃用 替代方案
1.进入eslint.config.mjs文件 2.import { defineConfig, globalIgnores } from "eslint/config"; 引入globalIgnores 3.配置 defineConfig([ ... globalIgnores([ "config/*", ".husky", ".local", "public/*", ".…...
优化 SQL 语句方向和提升性能技巧
优化 SQL 语句是提升 MySQL 性能的关键步骤之一。通过优化 SQL 语句,可以减少查询时间、降低服务器负载、提高系统吞吐量。以下是优化 SQL 语句的方法、策略和技巧: 一、优化 SQL 语句的方法 1. 使用 EXPLAIN 分析查询 作用:查看 SQL 语句的执行计划,了解查询是如何执行的…...
数据可视化革命!「图表狐」五大行业新范式:从科研论文到商业决策的AI进化论
图表狐 - AI图表生成工具,在线数据可视化 一、学术研究:突破传统制图范式 案例1 基因测序热图 用户输入: "绘制差异表达基因热图,行标签为GeneA/B/C,列包含正常组5例、癌症组7例,红色标记上调基因(f…...
Jenkins集成Trivy安全漏洞检查指南
要将Jenkins与Trivy集成以实现制品的安全漏洞检查,可以按照以下步骤操作: 安装Trivy 在Jenkins服务器或构建节点上安装Trivy # 使用包管理器(如Debian/Ubuntu) sudo apt-get install -y wget apt-transport-https gnupg lsb-rel…...
git使用钩子文件出现错误
git的钩子文件出现错误 问题打印:解决办法1.删除本地钩子文件2. 恢复commit-msg钩子3.重新提交工程 问题打印: 无法commit 1 个文件: .git/hooks/commit-msg: 行 1: 未预期的符号 < 附近有语法错误 .git/hooks/commit-msg: 行 1: Your browse does …...
SpringBoot 第二课(Ⅱ)配置嵌入式服务器
目录 一、封装类解读 二、注册Servlet三大组件(Servlet、Filter、Listener) 自定义这三个组件 WebConfig MyFilter MyListener HelloController hello1.html hello2.html 三、使用外置的Servlet容器 1.一定要确保打包方式是war包 2.将…...
Python学习笔记(6)
Python学习笔记(6) 第13节课 函数基础1.函数定义与调用2.函数的返回值3.局部变量与全局变量 第13节课 函数基础 对于任何一个知识点,必须讨论的三个问题: (1)它是啥 (2)为啥有它 …...
HarmonyOS Next应用架构设计与模块化开发详解
引言 在HarmonyOS Next开发中,合理的应用架构设计和模块化开发是构建高效、可维护应用的关键。本文将深入探讨HarmonyOS Next应用的架构设计思路,并通过实际代码示例展示如何实现模块化开发。 应用架构设计 HarmonyOS Next应用通常采用分层架构设计&…...
batman-adv 优化:基于信号强度(RSSI)选择链路
batman-adv 优化:基于信号强度(RSSI)选择链路 1. 背景介绍 batman-adv(Better Approach To Mobile Ad-hoc Networking Advanced) 是一种用于无线 Mesh 网络的路由协议。它主要基于 ETX(Expected Transmis…...
计算机二级:函数基础题
函数基础题 第一题 rinput("请输入半径:") c3.1415926*r*2 print("{:.0f}".format(c))输出: Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…...
系统思考与心智模式
“问题不是出在我们做了多少,而是出在我们做了什么。” — 赫尔曼凯恩 “一分耕耘一分收获”,这似乎是我们脑海中根深蒂固的心智模式。今天,我在一家餐厅用餐,店员告诉我,打卡收藏可以获得一份小食。没过多久…...
高考志愿填报管理系统基于Spring Boot SSM
目录 摘要 一、系统需求分析: 1.1用户主体分析 1.2 功能需求分析 1.3、非功能需求分析 二、技术实现: 三、结论: 摘要 该系统主要实现了:学生信息管理、院校信息查询、专业信息展示、志愿填报模拟、智能推荐管…...
[深度学习]图像分类项目-食物分类
图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…...
Qt在ARM中,如何使用drmModeObjectSetProperty 设置 Plane 的 zpos 值
在 Qt 中直接使用 drmModeObjectSetProperty 设置 Plane 的 zpos 值需要结合 Linux DRM/KMS API 和 Qt 的底层窗口系统(如 eglfs 平台插件)。以下是详细步骤和代码示例: 1. 原理说明 DRM/KMS 基础: Plane:负责图层合成…...
springboot milvus search向量相似度查询 踩坑使用经验
1.前提提要:java的pom 版本为:2.4.9 milvus 版本是:2.4.13-hotfix 2.先来工具类方法 /*** 向量搜索* param client* param query* return*/public SearchResp search(NonNull MilvusClientV2 client, NonNull VectorCondition query) {final …...
BFS解决FloodFill算法
1.图像渲染 733. 图像渲染 - 力扣(LeetCode) 1.题目解析 有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行…...
计算机组成原理
计算机组成原理是计算机科学与技术领域的一门基础课程,它主要研究计算机硬件系统的结构、设计和工作原理。通过学习计算机组成原理,可以深入理解计算机是如何执行程序的,从最底层的角度了解计算机的工作机制。以下是计算机组成原理的一些核心…...
Spring Boot整合SSE实现消息推送:跨域问题解决与前后端联调实战
摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events(SSE)实现实时消息推送的开发过程,重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例,帮助开发者快速定位和解决类似问题。 一、项…...
硅基流动:推理加速,告别“服务器繁忙,请稍后再试”
DeepSeek虽然一直热度高涨,但存在一个很直接的问题——“服务器繁忙,请稍后再试”。 一、介绍概况 硅基流动(SiliconFlow)是北京硅基流动科技有限公司推出的AI基础设施(AI Infra)平台,成立于202…...
腾讯云DNS和Lego工具结合使用,可以方便地为你的域名自动申请和续期SSL证书。
腾讯云DNS和Lego工具结合使用,可以方便地为你的域名自动申请和续期SSL证书。以下是具体步骤: 1. 准备工作 腾讯云账号:确保你有一个腾讯云账号,并且已经开通了DNS服务。域名:确保你拥有一个域名,并且已经…...
微服务 - 高级篇
微服务 - 高级篇 一、服务治理(一)服务注册与发现(二)负载均衡(三)服务熔断与降级 二、分布式事务(一)解决方案(二)最终一致性 三、性能优化(一&a…...
【Linux】线程基础
🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.背景知识02.线程概念简单使用线程线程调度成本更低 01.背景知识 OS进行内存管理,不是以字节为单位的,而是以内存块为单位的,默认大小为4kb&…...
WHAM 人体3d重建部署笔记 vitpose
目录 视频结果: docker安装说明: conda环境安装说明: 依赖项: 依赖库: 安装 mmpose,mmcv 下载模型权重: 算法原理, demo脚本 报错inference_top_down_pose_model: 测试命令: 视频结果: wham_smpl预测结果 git地址: GitHub - yohanshin/WHAM WHAM: Recons…...
netplan是如何操控systemd-networkd的? 笔记250324
netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd: 工作原理:netplan读取位于/etc/netplan/目录下的YAML格式的配置文件,这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...
[学成在线]06-视频分片上传
上传视频 需求分析 教学机构人员进入媒资管理列表查询自己上传的媒资文件。 点击“媒资管理” 进入媒资管理列表页面查询本机构上传的媒资文件。 教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。 点击“上传视频”打开上传页面 选择要上传的文件…...
机器视觉场景应用中,有没有超景深的工业镜头
在机器视觉领域,确实存在具有超景深特性的工业镜头,这类镜头通过特殊的光学设计或技术手段,能够显著扩大清晰成像的纵向范围,从而满足复杂检测场景中对多平面物体清晰成像的需求。以下是相关技术要点及典型镜头类型: 1. 远心镜头 远心镜头是超景深镜头的典型代表,其特点包…...
初探 Dubbo Rust SDK打造现代微服务的新可能
一、背景故事:为什么要在微服务中用 Rust? 微服务世界曾是 Java 的天下,后来 Go 异军突起,如今,Rust 凭借其“高性能 安全 零成本抽象”的特性,正在逐步走入服务端核心舞台。 问题随之而来:…...
如何理解响应式编程
思考: 分析Netty与Reactor背压协调策略 用户的问题是关于如何在 Netty 和 Project Reactor 联合使用时处理背压问题,特别是当 Reactor 的处理速度跟不上 Netty 的事件产生速度时该怎么办。这是一个技术性很强的问题,涉及到 Netty 的非阻塞特…...