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

【C++】哈希扩展海量数据处理

目录

位图

位图面试题

C++库中的位图bitset

位图优缺点

位图相关题目

布隆过滤器

布隆过滤器的介绍

布隆过滤器的应用

海量数据处理


位图

位图面试题

1.给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个整数是否在这40亿个数中。

解题思路1:暴力遍历,时间复杂度O(N),太慢。

解题思路2:排序+二分查找。时间复杂度消耗O(N*logN)+O(logN)。虽然排序消耗大一点,但是只排序1次,后续查找都是O(logN)。

但是,我们再来深入分析一下思路2是否可行,我们先算算40亿个数据大概需要多少内存。1G=1024MB=1024*1024KB=1024*1024*1024Byte约10亿多Byte。那40亿个整数需要160亿字节,160/10=16,所以,需要16G的内存来保存这些数据。这显然是不现实的,只能放到硬盘文件中。

解题思路3:其实我们并不需要记录这些数字,只需要记录这个数字在不在就行。数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,因此,最少可以通过一个bit就可以表示一个数字在不在, 如果比特位为1,表示存在,为0表示不存在。因此,就只需要40亿个比特位=5亿个字节=500多M,设计了一个用位表示数据是否存在的数据结构,即位图。 

接下来我们可以模拟实现一下,C++中没有位这种类型,只有int、char这样的整形,通过位运算找到对应的比特位。比如我们将数据存到vector<int>中,每一个int映射对应的32个值,比如第一个int映射0-31位,第二个映射32-63对应的位,依次类推。

假设要查x,i=x/32,j=x%32,映射的位是第i个整形数据的第j位。

我们使用vector<int> _bs来当做位图结构,_bs开成N/32+1个大小,

namespace ghs
{template<size_t N>class bit_set{bit_set(){_bs.resize(N / 32 + 1);  //需要N个位,那么N/32+1就是需要多少个int}private:std::vector<int> _bs;};
}

在这个类中,我们需要实现set这个接口,将某一个值x映射的位标记成1,先使用i=x/32计算出在哪个int,然后就j=x%32计算出在哪个bit, 然后将_bs[i] |= (1<<j)。

//将x映射的位标记成1
void set(size_t x)
{int i = x / 32;int j = x % 32;_bs[i] |= (1 << j);
}

然后,使用同样的思路,对于reset接口,将一个值x映射的位标记成0,_bs[i] &= ~(1 << j);

//将x映射的位标记成0
void reset(size_t x)
{int i = x / 32;int j = x % 32;_bs[i] &= ~(1 << j);
}

然后,可以使用return _bs[i] & (1 << j);来判断某一个值是不是存在。 

//x映射的位是1返回真
//x映射的位是0返回假
void test(size_t x)
{int i = x / 32;int j = x % 32;return _bs[i] & (1 << j);
}

因此,为了保存42亿个数是否存在,只需要将非类型模版参数取为0xffffffff(或-1)。

C++库中的位图bitset

库中的位图核心接口仍然是set、reset、test等接口。

使用库里的bitset时会有一个bug,就是如果开很大,比如N=-1,就会崩溃报错,原因就是这是在栈上开的,栈的空间有限,因此,可以在堆上来开辟,

位图优缺点

优点:增删查改快,节省空间。

缺点:只适用于整形。

位图相关题目

给定100亿个整数,设计算法找到只出现一次的整数?

虽然是100亿个整数,但是还是按范围开(如果是int,就开42亿个位),使用两个位图结构a、b,那这个数在这两个位图对应的可能是00、01、10,用00表示这个数没有出现过,用01表示这个整数出现了1次,用10表示这个数出现了2次及以上,这样哪个数的位图是01,就代表这个数出现了一次,这样就可以复用位图。

一个文件有100亿个整数,1G内存,设计算法找到出现次数不超过2次的所有整数。

同样的,使用两个位图结构a、b,那这个数在这两个位图对应的可能是00、01、10、11,用00表示这个数没有出现过,用01表示这个整数出现了1次,用10表示这个数出现了2次,用11表示这个数出现了3次及以上,所以,求出01和10出现的次数即可。一个位图是是0.5G,两个位图就用了1G。

给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件的交集?

把数据读出来,分别放到两个位图,依次遍历,同时在两个位图的值就是交集。

布隆过滤器

布隆过滤器的介绍

在一些场景下面,有大量数据需要判断是否存在,但是这些数据不是整形,那么就不能使用位图了,这些场景就需要使用布隆过滤器来解决。

布隆过滤器的思路就是,把key先映射转成哈希整形值,再映射一个位置,如果只映射一个位置的话,冲突率会比较多,所以可以通过多个哈希函数映射多个位置,降低冲突率。

然而,布隆过滤器这里和哈希表不一样,它无法解决哈希冲突,因为它根本不存储这个值,只标记映射的位。它的思路是尽可能降低哈希冲突。判断一个值key在是不准确的,判断一个值不在是准确的!布隆过滤器的推导非常复杂,这里我们只需要记住结论:

假设m是布隆过滤器的bit长度,n是插入过滤器的元素个数,k是哈希函数的个数,那么:

1.在k一定的情况下,当n增加时,误判率增加,m增加时,误判率减少。

2.在m和n一定时,当哈希函数个数k=m/n*ln2时误判率最低。

布隆过滤器的应用

优点:效率高,节省空间,相比位图,可以适用于各种类型的标记过滤。

缺点:存在误判(在是不准确的,不在是准确的),不好支持删除。

  • 爬虫系统URL去重

在爬虫系统中,为了避免重复爬取相同的URL,可以使用布隆过滤器来进行URL去重。爬取到的URL可以通过布隆过滤器进行判断,已经存在的URL可以直接忽略,避免重复的网络请求和数据处理。

  • 垃圾邮件过滤

在垃圾邮件过滤系统中,布隆过滤器可以判断邮件是否是垃圾邮件。系统可以将已知的垃圾邮件的特征信息存储在布隆过滤器中,当收到新的邮件中,可以通过布隆过滤器快速判断是否为垃圾邮件。

  • 预防缓存穿透

缓存穿透是指恶意用户请求一个不存在的数据,导致请求直接访问数据库,造成数据库压力过大。布隆过滤器可以先判断请求的数据是否存在于布隆过滤器,如果不存在,直接返回不存在,避免对数据库的无效查询。

  • 对数据库查询提效

在数据库中,布隆过滤器可以用来加速查询操作。例如:一个app要快速判断某一个电话号码是否注册过,可以使用布隆过滤器来判断一个用户电话号码是否存在于表中,如果不存在,则可以直接返回不存在,避免对数据块进行无用的查询操作;如果在,再去数据库查询进行二次确认。(数据库的数据在磁盘上,查询效率比较低。)

海量数据处理

1.10亿个整数里面求最大的前100个。

这是经典的topK问题,用堆解决。

2.给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?

分析:假设每个query字符串50byte,100亿个query就是5000亿个byte,约500G(1G约10byte)。

解决方案1:可以使用布隆过滤器解决,一个文件的query放进布隆过滤器,另一个文件依次查找,在的就是交集,但是有可能误判,导致找的交集不够准确,但是交集一定被找到了。

解决方案2

  • 使用哈希切分。首先内存的访问速度远大于硬盘,大文件放到内存中搞不定,那么我们可以考虑切分成小文件,再放进内存处理。但是不要平均切分,因为平均切分以后,每个小文件都需要依次暴力处理,效率还是太低了。
  • 可以使用哈希切分,依次读取文件中query,i=HashFunc(query)%N,N为准备切分多少份小文件,N取决于切成多少份,内存能放下,query放进第i号小文件,这样A和B中相同的query算出的hash值是一样的,相同的query就进入到了编号相同的小文件,就可以直接去编号相同的小文件中找交集,不用交叉找,效率提升了。
  • 本质是相同的query在哈希切分的过程中,一定进入了相同编号的Ai和Bi,不可能出现A中的query进入Ai,但是B中相同的query进入了编号不同的Bi这种情况。因此不需要对Ai和Bj求交集。
  • 哈希切分的问题就是每个小文件不是均匀切分的,可能会导致某个小文件很大内存放不下。细分一下,某一个小文件很大有2中情况:1.这个小文件中大部分是同一个query。2.这个小文件是由很多不同的query构成,本质是这些query冲突了。针对情况,其实放到内存中的set是可以放下的,set可以去重。针对情况2,需要换一个哈希函数继续二次哈希切分。所以我们遇到大于1G小文件,继续读到set中找交集,如果set在insert时抛异常(set在插入时,只有申请内存失败时才会抛异常,不会有其他情况),那么就说明内存放不下,就是情况2,这样我们只需要换一个哈希函数进行二次哈希切分再找对应交集。

3. 给一个超过100G大小的log file,log中存在着IP地址,设计算法找到出现次数最多的IP地址?查找出现次数前10的ip地址。

本题思路和上题很相似。依次读取文件A中的query,i=HashFunc(query)%500,query放进Ai号小文件,然后依次用map<string,int>对每个Ai小文件进行ip计数,同时求出出现次数最多的ip(topK)。本质是相同的ip在哈希切分的过程中,一定进入同一个小文件Ai,不可能同一个ip进入Ai和Aj的情况,所以对Ai进行统计计数就是准确的ip次数。

但是也可能出现某一个小文件过大的问题,出现这个问题的原因只能是不同的ip映射到同一个值的数量过多,所以当map插入异常时捕获异常,然后对这个小文件进行二次切分。

相关文章:

【C++】哈希扩展海量数据处理

目录 位图 位图面试题 C库中的位图bitset 位图优缺点 位图相关题目 布隆过滤器 布隆过滤器的介绍 布隆过滤器的应用 海量数据处理 位图 位图面试题 1.给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个整数是否在这40亿…...

考研数据结构精讲:数组与特殊矩阵的压缩存储技巧(包含真题及解析)

考研数据结构精讲&#xff1a;数组与特殊矩阵的压缩存储技巧 一、数组基础概念 1.1 数组的定义 数组是由相同数据类型的元素构成的有限序列&#xff0c;具有以下核心特性&#xff1a; 维度特性&#xff1a;支持一维到多维结构&#xff08;常见二维数组&#xff09;随机访问…...

【Android】ContentResolver的使用

在 Android 中&#xff0c;ContentResolver 是一个非常重要的类&#xff0c;它提供了与 ContentProvider 进行交互的方法。ContentProvider 是用于在不同应用程序之间共享数据的标准接口&#xff0c;而 ContentResolver 则是从客户端&#xff08;如 Activity 或 Service&#x…...

Python 的 collections 模块

1. deque (双端队列) 定义 deque&#xff08;读作 “deck”&#xff0c;即双端队列&#xff09;是一个支持从两端高效添加和删除元素的数据结构。相比列表&#xff08;list&#xff09;在头部操作的 O(n) 时间复杂度&#xff0c;deque 的两端操作都是 O(1)。 用途 队列和栈…...

浏览器发起调用到服务器的全过程解析

在 Web 应用的交互过程中&#xff0c;从用户在浏览器输入 URL 发起请求&#xff0c;到最终获取服务器返回的内容&#xff0c;背后涉及多个复杂而有序的步骤。理解这一过程&#xff0c;对于深入掌握 Web 开发、优化应用性能以及排查网络问题都具有重要意义。下面将详细阐述浏览器…...

塑料瓶识别分割数据集labelme格式976张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;976 标注数量(json文件个数)&#xff1a;976 标注类别数&#xff1a;1 标注类别名称:["Trash plastic"] 每个类别标注的框数…...

RuoYi-Vue升级为https访问-后端安装SSL证书(单台Linux服务器部署)

一、前言 当Nginx已经作为反向代理并成功配置了SSL证书时,前端客户端与Nginx的通信已经是加密的。但Nginx和后端服务之间的连接可能仍然存在明文传输的风险。 如果Nginx和后端服务位于同一台物理机器或者通过安全的内部网络(如私有VLAN或防火墙保护的内网)进行通信,则可以…...

【学习笔记】文件上传漏洞--中间件解析漏洞、编辑器安全

目录 一、IIS 二、Apache HTTP Server 三、Apache HTTPD 未知后缀解析漏洞 四、Apache HTTPD 换行解析漏洞 五、黑、白名单 六、nginx解析漏洞 七、编辑器漏洞 一、IIS 文件夹 正常&#xff1a;image/qq.jpg 执行&#xff1a;image.asp/qq.jpg qq.jpg就会被当做asp解…...

【论文阅读】UniAD: Planning-oriented Autonomous Driving

一、Introduction 传统的无人驾驶采用了区分子模块的设计&#xff0c;即将无人驾驶拆分为感知规划控制三个模块&#xff0c;这虽然能够让无人驾驶以一个很清晰的结构实现&#xff0c;但是感知的结果在传达到规划部分的时候&#xff0c;会导致部分信息丢失&#xff0c;这势必会…...

【第16届蓝桥杯C++C组】--- 数位倍数

Hello呀&#xff0c;小伙伴们&#xff0c;第16届蓝桥杯也完美结束了&#xff0c;无论大家考的如何&#xff0c;都要放平心态&#xff0c;今年我刚上大一&#xff0c;也第一次参加蓝桥杯&#xff0c;刷的算法题也只有200来道&#xff0c;但是还是考的不咋滴&#xff0c;但是拿不…...

【腾讯云智】20250329笔试算法题

文章目录 第一题1. 题目描述2. 思路解析3. AC代码 第二题1. 题目描述2. 思路解析3. AC代码 第三题1. 题目描述2. 思路解析3. AC代码 第一题 1. 题目描述 题目链接&#xff1a;牛牛的水果店 2. 思路解析 这题比较简单&#xff0c;按数学思维把题目的意思翻译过来就是给你一…...

【2025最新】windows本地部署LightRAG,完成neo4j知识图谱保存

之前在服务器部署neo4j失败&#xff0c;无奈只能在本地部署&#xff0c;导致后期所有使用的知识图谱数据都存在本地&#xff0c;这里为了节省时间&#xff0c;先在本地安装LigthRAG完成整个实验流程&#xff0c;后续在学习各种服务器部署和端口调用。从基础和简单的部分先做起来…...

思考力提升的黄金标准:广度、深度与速度的深度剖析

文章目录 引言一、广度的拓展&#xff1a;构建多元知识网络1.1 定义与重要性1.2 IT技术实例与提升策略小结&#xff1a;构建多元知识网络&#xff0c;提升IT领域思考力广度 二、深度的挖掘&#xff1a;追求知识的精髓2.1 定义与重要性2.2 IT技术实例与提升策略小结&#xff1a;…...

7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant

7个向量数据库对比&#xff1a;Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 本文简要总结了当今市场上正在积极开发的7个向量数据库&#xff0c;Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 的详细比较。 我们已经接近在搜索引擎体验的基础层面上涉…...

计算机组成原理笔记(十五)——3.5指令系统的发展

不同类型的计算机有各具特色的指令系统&#xff0c;由于计算机的性能、机器结构和使用环境不同&#xff0c;指令系统的差异也是很大的。 3.5.1 x86架构的扩展指令集 x86架构的扩展指令集是为了增强处理器在多媒体、三维图形、并行计算等领域的性能而设计的。这些扩展指令集通…...

Rust 中的Relaxed 内存指令重排演示:X=0 Y=0 是怎么出现的?

&#x1f525; Rust 中的内存重排演示&#xff1a;X0 && Y0 是怎么出现的&#xff1f; 在并发编程中&#xff0c;我们经常会听说“内存重排&#xff08;Memory Reordering&#xff09;”这个术语&#xff0c;但它似乎总是只出现在理论或者别人口中的幻觉里。本文将通过…...

vp 2023 icpc 合肥 解题补题记录 [F E J G]

gym 链接: https://codeforces.com/gym/104857 F. Colorful Balloons 血签, 用 map 存一下每个颜色气球出现的次数, 找出出现次数大于一半的颜色. #include<bits/stdc.h> using namespace std;#define int long long #define endl \nsigned main() {int n;cin >> …...

学习SqlSugar的跨库查询基本用法

使用SqlSugar操作数据库通常都是单库操作&#xff0c;跨库查询的情况要么是单个系统数据不完整&#xff0c;需要其它系统的关联业务数据支撑&#xff0c;要么就是需要整合汇总多个系统的数据进行数据数据分析、处理、展示。遇到上述情况&#xff0c;可以要求另外的系统提供查询…...

智慧工厂可视化系统,赋能工业生产智能化升级

借助图扑软件 HT 搭建智慧工厂可视化系统。利用先进 3D 建模&#xff0c;对工厂布局、设备运行、生产流程进行逼真复刻。实时展示设备状态、生产进度、质量检测数据等&#xff0c;助力管理者精准洞察生产&#xff0c;高效决策&#xff0c;推动工厂智能化转型。...

案例驱动的 IT 团队管理:创新与突破之路: 第四章 危机应对:从风险预见到创新破局-4.1.2债务评估模型与优先级排序

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 4.1.2 技术债务评估模型与优先级排序&#xff1a;构建智能决策体系一、技术债务的"冰山效应"与量化困境二、三维评估模型&#xff1a;穿透债务迷雾的探照灯2.1 评…...

nfs共享目录主配置文件权限参数

/etc/exports 文件默认为空文件&#xff0c;需要输入nfs共享命令 格式&#xff1a;共享目录的路径 允许访问的NFS客户端(共享权限参数) #编辑共享目录配置文件&#xff08;即/etc/exports&#xff09; [rootserver ~]# mkdir /nfs_share &#xff08;创建共享的目录&#xf…...

C++ 编程指南35 - 为保持ABI稳定,应避免模板接口

一&#xff1a;概述 模板在 C 中是编译期展开的&#xff0c;不同模板参数会生成不同的代码&#xff0c;这使得模板类/函数天然不具备 ABI 稳定性。为了保持ABI稳定&#xff0c;接口不要直接用模板&#xff0c;先用普通类打个底&#xff0c;模板只是“外壳”&#xff0c;这样 AB…...

探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的

以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解&#xff0c;重点探讨了它们为何基于 HTTP 协议、HTTP 的优势&#xff0c;以及数据传输的本质。文章面向技术社区&#xff0c;结构清晰&#xff0c;适合分享。 探索 MCP 和 A2A 协议&#xff1a;为何新协议…...

Linux网络http与https

应用层协议HTTP 提示 因为现在大多数都是https&#xff0c;所以就用https来介绍http&#xff0c;https比http多了一个加密功能&#xff0c;不影响介绍http。 什么是http 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的…...

C++ 算法(2):STL list 完全解析,从入门到高效使用

1. list概述 std::list是C标准模板库(STL)中的一个双向链表容器。与vector和deque不同&#xff0c;list不支持随机访问&#xff0c;但它在任何位置插入和删除元素都非常高效&#xff0c;时间复杂度为O(1)。 2. list的基本特性 双向链表结构&#xff1a;每个元素都包含指向前驱…...

【Linux实践系列】:匿名管道收尾+完善shell外壳程序

&#x1f525; 本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 人生总会有自己能力所不及的范围&#xff0c;但是如果你在你能力所及的范围尽了全部的努力&#xff0c;那你还有什么遗…...

Linux基本指令2

1.head 查看文件的前面内容 head 路径 &#xff1a;查看路径开头部分内容&#xff0c;如下图&#xff1a;head /var/log/messages查看/var/log/messages这个日志中前面内容 head -数字 路径 &#xff1a;查看路径开头指定数字行部分内容&#xff0c;如下图&#xff1a;he…...

Tkinter使用Canvas绘制图形

在Tkinter中,Canvas是一个非常强大的控件,用于绘制图形、显示图片和实现自定义图形界面。通过Canvas,您可以绘制各种形状、线条、文本等,并且能够进行灵活的动画和交互。掌握Canvas的使用将使您能够创建丰富的图形界面。 8.1 创建Canvas控件 Canvas控件是一个区域,用于绘…...

CF985G Team Players

我敢赌&#xff0c;就算你知道怎么做&#xff0c;也必然得调试半天才能 AC。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 图片来自洛谷。 [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 显然不可能正面计算。所以…...

ngx_conf_read_token - events

file_size ngx_file_size(&cf->conf_file->file.info); 获取 配置文件的大小 此时 file_size364 for ( ;; ) {if (b->pos > b->last) { 此时 b->pos 0x5cd4701487e4 b->last 0x5cd47014893c b->start0x5cd4701487d0 条件不成立 ch *b->pos;…...

L2范数与权重衰退

权重衰退 定义损失函数 $ \ell(\mathbf{w}, b) $ 来衡量模型的预测值与真实值的差距 使用L2范数作为硬性限制 通过限制参数值的选择范围来控制模型容量 min ⁡ ℓ ( w , b ) s u b j e c t t o ∥ w ∥ 2 ≤ θ \min \ell(\mathbf{w}, b) \quad \\ subject \ to \|\mathbf{w…...

计算机组成原理笔记(十四)——3.4指令类型

一台计算机的指令系统可以有上百条指令&#xff0c;这些指令按其功能可以分成几种类型&#xff0c;下面分别介绍。 3.4.1数据传送类指令 一、核心概念与功能定位 数据传送类指令是计算机指令系统中最基础的指令类型&#xff0c;负责在 寄存器、主存、I/O设备 之间高效复制数…...

GM DC Monitor v2.0 数据中心监控预警平台-CMDB使用教程(第九篇)

SNMP配置管理功能使用手册 本模块主要用于导入设备厂家的mib库文件&#xff0c;也可以手工创建对应的oid信息&#xff0c;用以实现设备的被动监控功能。 另&#xff1a;系统部署完毕后&#xff0c;已经集成了个别厂家的MIB库数据。 设计思路及使用教程 设计思路&#xff1a;通…...

try-with-resources 详解

try-with-resources 详解 一、基本概念 try-with-resources 是 Java 7 引入的语法结构&#xff0c;用于自动管理资源&#xff08;如文件流、数据库连接等需要关闭的对象&#xff09;。 核心特点 自动资源释放&#xff1a;无需手动调用 close() 简洁代码&#xff1a;减少 tr…...

第二十四:查看当前 端口号是否被占用

查看当前 端口号是否被占用&#xff1a; mac 情况下&#xff1a; lsof -i :端口号 netstat -an | grep 端口号 系统将显示监听该端口的进程信息&#xff0c;包括进程名称、进程ID、用户和协议等。如果需要更多信息&#xff0c;可以添加-P和-n参数&#xff0c;例如&#xf…...

【数据结构与算法】——堆(补充)

前言 上一篇文章讲解了堆的概念和堆排序&#xff0c;本文是对堆的内容补充 主要包括&#xff1a;堆排序的时间复杂度、TOP 这里写目录标题 前言正文堆排序的时间复杂度TOP-K 正文 堆排序的时间复杂度 前文提到&#xff0c;利用堆的思想完成的堆排序的代码如下&#xff08;包…...

【Web功能测试】Web商城搜索模块测试用例设计深度解析

Web商城的搜索模块功能测试用例设计 1.搜索功能设计 1.1 搜索框设计 位置显眼&#xff1a;通常置于页面顶部中央&#xff0c;符合用户习惯。 智能提示&#xff08;Autocomplete&#xff09;&#xff1a;输入时实时推荐关键词、商品或分类&#xff08;如“手机 苹果”&#x…...

ubuntu 18.04安装tomcat,zookeeper,kafka,hadoop,MySQL,maxwell

事情是这样的&#xff0c;因为昨天发现我用的ubuntu16.04官方不维护了&#xff0c;以及之前就觉得不是很好用&#xff0c;于是升级到了18.04。如图&#xff1a; 但是&#xff01;由于为备份升级前忘记关闭服务&#xff0c;上面装好的东西所剩无几。 于是我重装了。。。 如何启…...

设计模式(结构型)-享元模式

摘要 在软件开发的广阔领域中&#xff0c;随着系统规模的不断膨胀&#xff0c;资源的有效利用逐渐成为了一个至关重要的议题。当一个系统中存在大量相似的对象时&#xff0c;如何优化这些对象的管理&#xff0c;减少内存的占用&#xff0c;提升系统的整体性能&#xff0c;成为了…...

1.1显存

显存是显卡&#xff08;GPU&#xff09;专用的高性能内存&#xff0c;负责存储渲染所需的纹理、帧缓冲、几何数据等。其设计直接影响图形性能、分辨率和复杂场景处理能力 苹果统一内存&#xff08;Unified Memory&#xff09;、集成显卡共享内存&#xff08;Integrated Graphi…...

C# 选择文件的路径、导出文件储存路径

1、选择导入文件&#xff0c;获取其路径 C#通过这段代码将弹出一个文件选择对话框&#xff0c;允许用户选择一个文件&#xff0c;并返回所选文件的完整路径。如果用户取消了选择&#xff0c;则直接返回结束函数。 string OpenFilePath;//存储选择到的文件的完整路径OpenFileDia…...

【最后203篇系列】027 基于消息队列的处理架构

起因 之所以写这篇文章&#xff0c;主要是梳理一下进展。因为同时研究好几块内容&#xff0c;切换起来要点时间。这次也是因为协作的同事们把各自的分工都搞定了&#xff0c;瓶颈反而在我自己这里&#xff0c;哈哈。 除了帮自己思路恢复过来&#xff0c;我觉得这方法可能也有…...

多线程与Tkinter界面交互

在现代图形用户界面(GUI)应用程序中,可能会遇到需要长时间运行的任务,例如网络请求、数据处理或文件读取等。如果这些任务直接在主线程中运行,会导致GUI界面“卡顿”或“不响应”。为了保持界面流畅和响应用户操作,我们可以通过使用多线程来将这些任务移到后台运行。然而…...

【工程开发】LLMC准确高效的LLM压缩工具(一)

​【文献阅读】LLMC: Benchmarking Large Language Model Quantization with a Versatile Compression Toolkit 北航 2024年10月 摘要 大语言模型&#xff08;LLMs&#xff09;的最新进展凭借其卓越的涌现能力和推理能力&#xff0c;正推动我们迈向通用人工智能。然而&#…...

回顾CSA,CSA复习

RHCSA redhat certificate system Administrator RHCE redhat certificate engineer 回顾CSA 文件管理 创建文件&#xff1a;touch 、重定向、vim 阅读文件&#xff1a;cat看短小的文件、vim、head看文件前面部分、tail看文件的尾部内容、more、less看文档使用more和less…...

基于电子等排体的3D分子生成模型 ShEPhERD - 评测

一、背景介绍 ShEPhERD 是一个由 MIT 开发的一个 3D 相互作用感知的 ligand-based的分子生成模型&#xff0c;以 arXiv 预印本的形式发表于 2024 年&#xff0c;被ICLR2025 会议接收。文章链接&#xff1a;https://openreview.net/pdf?idKSLkFYHlYg ShEPhERD 是一种基于去噪扩…...

平凡日子里的挣扎

2025年4月13日&#xff0c;9~23℃&#xff0c;好 待办&#xff1a; 融智云考平台《物理》《物理2》~~《地理》《地理1》~~重修试卷 卫健委统考监考&#xff08;2025年4月12日早上7点半&#xff09; 冶金《物理》课程标准 冶金《物理》教案 期中教学检查——自查表材料&#xff…...

智能制造方案精读:117页MES制造执行系统解决方案【附全文阅读】

本方案围绕制造执行系统(MES)展开,阐述了智能制造相关概念及发展趋势,指出 MES 是连接 ERP 与生产现场的关键系统。介绍其在加工、装配及其他场景的应用,通过实例展示各场景下的功能、特点和实施效果,如实现生产信息可视化、产品追溯、设备监控等。还提及实施 MES 面临的…...

[推荐]AI驱动的知识图谱生成器(AI Powered Knowledge Graph Generator)

网址&#xff1a;https://github.com/robert-mcdermott/ai-knowledge-graph# 一、介绍 简介&#xff1a;以非结构化文本文档为输入&#xff0c;使用您选择的LLM以主语-谓语-宾语 (SPO) 三元组的形式提取知识&#xff0c;并将这些关系可视化为交互式知识图谱 特点&#xff1a…...

波束形成(BF)从算法仿真到工程源码实现-第七节-关于波束10个基本概念

一、波束10个基本概念 1.作用&#xff1a; 对多路麦克风信号进行合并处理&#xff0c;抑制非目标方向的干扰信号&#xff0c;增强目标方向的声音信号。 2.原理&#xff1a; 调整相位阵列的基本单元参数&#xff0c;使得某些角度的信号获得相长干涉&#xff0c;而另一些角度的…...