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

位图布隆过滤器

1.位图

所谓位图,就是用每一位来存放某种状态,适用于海量数据,整数,数据无重复的场景。通常是用来判 断某个数据存不存在的。

 如上例子,10个整数本应该存放需要40个字节,此时用位图只需要3个字节。

下面代码:储存结果并不是将结果本身存储起来,

1.先找到位于所定范围的对应的bit位

2.将对应的bit为置为1,即可

package bitset;import java.util.Arrays;public class MyBitset {public int usedsize;//记录有效数字的个数public byte[] arr;//自己赋值确定数组的大小public MyBitset(int n) {this.arr=new byte[n/8+1];}//没有赋值默认数组长度大小public MyBitset() {this.arr=new byte[1];}/**** @param val  可以等价于 将数据的对应位置置为1*/public void set(int val){if(val<0){throw new IndexOutOfBoundsException();}//确定数字存储的位置int arrayindex=val/8;//扩容if(arrayindex>arr.length-1){arr= Arrays.copyOf(arr,arrayindex+1);}int bitindex=val%8;//将对应的二进制位置为1arr[arrayindex]=(byte)(arr[arrayindex]| (1<<bitindex));usedsize++;}/**** @param val 测试该数字是否存在* @return*/public boolean get(int val){if(val<0){throw new IndexOutOfBoundsException();}//确定数字存储的位置int arrayindex=val/8;int bitindex=val%8;if((arr[arrayindex]&(1<<bitindex))!=0){return true;}return false;}/**** @param val  可以等价于 将数据的对应位置置为0*/public void reset(int val){if(val<0){throw new IndexOutOfBoundsException();}//确定数字存储的位置int arrayindex=val/8;int bitindex=val%8;int cur=arrayindex;arr[arrayindex]=(byte) (arr[arrayindex]& ~(1<<bitindex));if(cur!=arr[arrayindex]){usedsize--;}}public int getUsedsize(){return usedsize;}
}

完成好自己建造的位图后在测试类运行,可以发现下面代码对数组进行了一个去重和排序的操作

位图可以的操作

1. 快速查找某个数据是否在一个集合中

2. 排序 + 去重

3. 求两个集合的交集、并集等

4. 操作系统中磁盘块标记

2.布隆过滤器

2.1布隆过滤器的原理

一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空 间。当集合比较小时,这个问题不显著,但是当集合巨大时,哈希表存储效率低的问题就显现出来了。

1. 用哈希表存储用户记录,缺点:浪费空间

2. 用位图存储用户记录,缺点:位图一般只能处理整形,如果内容编号是字符串,就无法处理了。 3. 将哈希与位图结合,即布隆过滤器

布隆过滤器比较巧妙的概率型数据结 构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”,它是用多个哈希函 数,将一个数据映射到位图结构中。此种方式不仅可以提升查询效率,也可以节省大量的内存空间。

布隆过滤器的思想是将一个元素用多个哈希函数映射到一个位图中,因此被映射到的位置的比特位一定为1。 所以可以按照以下方式进行查找:分别计算每个哈希值对应的比特位置存储的是否为零,只要有一个为零, 代表该元素一定不在哈希表中,否则可能在哈希表中。

注意:布隆过滤器如果说某个元素不存在时,该元素一定不存在,如果该元素存在时,该元素可能存在,因 为有些哈希函数存在一定的误判。

比如:在布隆过滤器中查找"alibaba"时,假设3个哈希函数计算的哈希值为:1、3、7,刚好和其他元素的比 特位重叠,此时布隆过滤器告诉该元素存在,但实该元素是不存在的。

布隆过滤器的插入

比如下面就是给出三个hash函数,对X,Y,Z,分别进行hash在储存在位图中分别储存三个位置

2.2布隆过滤器的实现

package BurtonowardBloom;import java.util.BitSet;//构建哈希函数
class SimpleHash{//容量//cap在下面hash函数中有作用,cap就是保证hash·计算出来的值保证在在0~cap-1之间private  int cap;//随机种子//用于生成多样化的hash函数,减少冲突private int seed;public SimpleHash(int cap, int seed) {this.cap = cap;this.seed = seed;}/*** 把当前字符串转换成一个哈希值* (cap-1)&result:保证了返回的hash值在0~cap-1之间* seed:不同的seed会导致不同的权重分配,从而生成不同的hash值* value.charAt(i):导致最后的hash值是一个字符串中每一个字母都影响的结果* @param value* @return*/public int hash(String value){int result=0;int len =value.length();for(int i=0;i<len;i++){result=seed*result+value.charAt(i);}return (cap-1)&result;}
}public class BloomFilter {private  static  final int DEFAULT_SIZE =1<<24;//都是质数,提高了hash函数之间的独立性private  static final int [] seeds=new int[]{5,7,11,13,31,37,61};public BitSet bits;//位图用于存储元素private  SimpleHash [] func ;//哈希函数所对应的类private  int size=0;//初始化bits和funcpublic BloomFilter() {this.bits = new BitSet(DEFAULT_SIZE);this.func = new SimpleHash[seeds.length];//把所有的哈希对象进行初始化for(int i=0;i<seeds.length;i++){func[i]=new SimpleHash(DEFAULT_SIZE,seeds[i]);}}public void set(String value){if(value==null){return;}for(SimpleHash f:func){bits.set(f.hash(value));}size++;}public boolean contains(String value){if(value==null){return false;}for(SimpleHash f:func){if (!bits.get(f.hash(value))){return false;}}return true;//会有误判}
}

布隆过滤器的直接运用

先要导入依赖

 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>19.0</version></dependency>

测试中再导入其对应的包即可

2.3布隆过滤器的优缺点

1.布隆过滤器的优点

1. 增加和查询元素的时间复杂度为:O(K), (K为哈希函数的个数,一般比较小),与数据量大小无关 2. 哈希函数相互之间没有关系,方便硬件并行运算

3. 布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势

4. 在能够承受一定的误判时,布隆过滤器比其他数据结构有这很大的空间优势

5. 数据量很大时,布隆过滤器可以表示全集,其他数据结构不能

6. 使用同一组散列函数的布隆过滤器可以进行交、并、差运算

2.布隆过滤器的缺点

1. 有误判率,即存在假阳性(False Position),即不能准确判断元素是否在集合中(补救方法:再建立一个白 名单,存储可能会误判的数据)

2. 不能获取元素本身

3. 一般情况下不能从布隆过滤器中删除元素

4. 如果采用计数方式删除,可能会存在计数回绕问题

布隆过滤器不能直接支持删除工作,因为在删除一个元素时,可能会影响其他元素。

比如:删除"tencent"元素,如果直接将该元素所对应的二进制比特位置0,“baidu”元素也被删除了, 因为这两个元素在多个哈希函数计算出的比特位上刚好有重叠。

一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器,插入元素时给k个计数器(k个哈 希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍存储空间的代价来增加删 除操作。

缺陷:

1. 无法确认元素是否真正在布隆过滤器中【会有误判】

2. 存在计数回绕【回绕意思为:溢出】

1.哈希切割

给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 与上题条件相同, 如何找到top K的IP?

解法:哈希切割

上面问题:就是100G在运行的时候存不下

将上面100G分成200份

步骤

1.IP本身就是一个字符串,先把IP变成一个整数,hash(IP)

2.文件的下标index=hash(IP)%200

3.读取每个文件的内容,统计每个文件的IP出现的次数即可。可以用Map

2.位图运用

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

解法一:哈希切割

这里出现的次数可能是1次,2次,3次

把数字哈希到对用的小文件中,一样的数字一定在一起,遍历一边小文件统计数字,此时即可知道那些数字出现了一次

解法二:两个位图

使用两个位图来做

再对两个位图对应的数字来判断

0 0:表示一次都没出现

0 1:表示出现过一次

1 0:表示出现过两次

1 1:表示出现过两个以上

解法三:一个位图

01两个bit位表示0的个数,23两个bit位表示1的个数,45两个bit位表示2的个数,67两个bit位表示3的个数,依次类推

公式:
int arrayindex=val/4;

int bitindex=val%4*2;

1%4=1*2=2;

2%4=2*2=4;

3%4=3*2=6;

 

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

解法1:哈希切割

1.先将一个两个大文件各自分成若干掉小文件

2.再将A的第一个小文件和B第一个小文件进行遍历看是否有相同元素,依次类推

解法二:位图

1.遍历第一个文件,将第一个文件的数据存入到bitSet1中

2.遍历第二个文件,将第二个文件的数据存入到bitSet中

交集

并集

差集

相关文章:

位图布隆过滤器

1.位图 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;整数&#xff0c;数据无重复的场景。通常是用来判 断某个数据存不存在的。 如上例子&#xff0c;10个整数本应该存放需要40个字节&#xff0c;此时用位图只需要3个字节。 下面代…...

【Web】使用Vue3开发鸿蒙的HelloWorld!

文章目录 1、简介2、效果3、环境3.1、开发环境3.2、运行环境 4、实现4.1、在VSCode上使用Vue开发HelloWorld4.1.1、通过 Vite 快速创建项目4.1.2、修改 src/App.vue4.1.3、模拟Web浏览器运行 4.2、使用DevEco完成手机App端移植4.2.1、构建Vue 3项目为静态文件4.2.2、创建Harmon…...

cv_area_center()

主题 用opencv实现了halcon中area_center算子的功能&#xff0c; 返回region的面积&#xff0c;中心的行坐标和中心的列坐标 代码很简单 def cv_area_center(region):area[]row []col []for re in region:retval cv2.moments(re)area.append(retval[m00])row.append(int(r…...

Python+OpenCV实现手势识别与动作捕捉:技术解析与应用探索

引言&#xff1a;人机交互的新维度 在人工智能与计算机视觉技术飞速发展的今天&#xff0c;手势识别与动作捕捉技术正逐步从实验室走向大众生活。通过Python的OpenCV库及MediaPipe等工具&#xff0c;开发者能够以较低门槛实现精准的手部动作识别&#xff0c;为虚拟现实、智能家…...

【llama-factory】Lora微调和DPO训练

微调参考 DPO参考 llama-factory官网 LoRA微调 数据集处理 数据集格式和注册 Alpaca数据集格式&#xff1a; [{"instruction": "人类指令&#xff08;必填&#xff09;","input": "人类输入&#xff08;选填&#xff09;","…...

JS较底层的用法,几类简单介绍

JS较底层的用法 在 JavaScript 中&#xff0c;“偏底层”的用法通常是指更接近语言核心、规范、底层机制的特性。这些用法不是日常开发中最常见的&#xff0c;但对理解语言原理、优化性能或构建框架、库非常重要。下面是一些常见的“偏底层”用法或特性 1. 对象属性底层操作&am…...

当可视化遇上 CesiumJS:突破传统,打造前沿生产配套方案

CesiumJS 技术基础介绍 CesiumJS 是一款基于 JavaScript 的开源库&#xff0c;专门用于创建动态、交互式的地理空间可视化。它利用 WebGL 技术&#xff0c;能够在网页浏览器中流畅地渲染高分辨率的三维地球和地图场景。CesiumJS 支持多种地理空间数据格式&#xff0c;包括但不…...

使用python脚本连接SQL Server数据库导出表结构

一. 准备工作 Mac 系统安装freetds brew install freetds 安装pymssql pip3 install pymssql 二.导出指定表的结构&#xff1a; import pymssql# 配置数据库连接参数&#xff08;根据实际情况修改&#xff09; server # 内网服务器地址或IP database # 数据库名称…...

Docker基础入门

Docker核心概念 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口&#xff08;类似 iPhone 的 app&#…...

day011-权限管理专题

文章目录 1. 对比文件内容1.1 diff1.2 vimdiff 2. /etc/skel目录3. 权限基础4. 修改权限4.1 用数字权限修改4.2 用字母修改权限&#xff08;ugo&#xff09;4.3 修改文件所有者和用户组 5. 文件与目录权限6. permission denied 权限拒绝7. 特殊权限8. 特殊属性9. 思维导图 1. 对…...

ragflow报错:KeyError: ‘\n “序号“‘

环境&#xff1a; ragflowv 0.17.2 问题描述&#xff1a; ragflow报错&#xff1a;KeyError: ‘\n “序号”’ **1. 推荐表&#xff08;输出json格式&#xff09;** [{"},{},{"},{} ]raceback (most recent call last): May 08 20:06:09 VM-0-2-ubuntu ragflow-s…...

基于FPGA的PID控制器verilog实现,包含simulink对比模型

目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 根据PID控制器的原理&#xff0c;设计FPGA的总体架构。通常包括误差计算模块、比例运算模块、积分运算模块、微分运算模块、加法器模块以及控制信号输出模块等。同时通过simul…...

互联网大厂Java面试实录:Spring Boot与微服务架构在电商场景中的应用解析

&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通 &#x1f601; 2. 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

前端开发实战:用React Hooks优化你的组件性能

问题背景 在前端开发中&#xff0c;React组件的性能优化是一个常见挑战。尤其是当组件逻辑复杂或数据频繁更新时&#xff0c;性能问题尤为突出。本文将介绍如何利用React Hooks&#xff08;如useMemo和useCallback&#xff09;来优化组件性能。 解决方案 useMemo&#xff1a;用…...

Kotlin 内联函数深度解析:从源码到实践优化

一、内联函数核心概念 1. 什么是内联函数&#xff1f; 内联函数通过 inline 关键字修饰&#xff0c;其核心思想是&#xff1a;在编译时将函数体直接插入到调用处&#xff0c;而非进行传统的函数调用。这意味着&#xff1a; 消除了函数调用的栈帧创建、参数传递等开销。对 La…...

模拟太阳系(C#编写的maui跨平台项目源码)

源码下载地址&#xff1a;https://download.csdn.net/download/wgxds/90789056 本资源为用C#编写的maui跨平台项目源码&#xff0c;使用Visual Studio 2022开发环境&#xff0c;基于.net8.0框架&#xff0c;生成的程序为“模拟太阳系运行”。经测试&#xff0c;生成的程序可运行…...

python中的继承和多态

Python中的继承 继承中的一些基础的定义 继承是面向对象编程的三大特性之一&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法&#xff0c;从而实现代码的复用&#xff08;继承的主要目的&#xff09;和扩展。父类…...

【计算机视觉】3DDFA_V2中表情与姿态解耦及多任务平衡机制深度解析

3DDFA_V2中表情与姿态解耦及多任务平衡机制深度解析 1. 表情与姿态解耦的技术实现1.1 参数化建模基础1.2 解耦的核心机制1.2.1 基向量正交化设计1.2.2 网络架构设计1.2.3 损失函数设计 1.3 实现代码解析 2. 多任务联合学习的权重平衡2.1 任务定义与损失函数2.2 动态权重平衡策略…...

vue访问后端接口,实现用户注册

文章目录 一、后端接口文档二、前端代码请求响应工具调用后端API接口页面函数绑定单击事件&#xff0c;调用/api/user.js中的函数 三、参考视频 一、后端接口文档 二、前端代码 请求响应工具 /src/utils/request.js //定制请求的实例//导入axios npm install axios import …...

MySQL 从入门到精通(五):索引深度解析 —— 性能优化的核心武器

目录 一、索引概述&#xff1a;数据库的 “目录” 1.1 什么是索引&#xff1f; 1.2 索引的性能验证&#xff1a;用事实说话 实验环境准备 无索引查询耗时 有索引查询耗时 索引的 “空间换时间” 特性 二、索引的创建&#xff1a;三种核心方式 2.1 方式 1&#xff1a;C…...

湖北理元理律师事务所:债务优化如何实现还款与生活的平衡?

债务压力往往让债务人陷入“还款还是生存”的两难选择。湖北理元理律师事务所通过案例实践发现&#xff0c;科学规划的核心在于平衡法律义务与基本生活保障&#xff0c;而非单纯追求债务缩减。本文结合实务经验&#xff0c;解析债务优化的可行路径。 刚性需求优先&#xff1a;…...

Day21 奇异值分解(SVD)全面解析

一、奇异值分解概述 奇异值分解是线性代数中一个重要的矩阵分解方法&#xff0c;对于任何矩阵&#xff0c;无论是结构化数据转化成的“样本 * 特征”矩阵&#xff0c;还是天然以矩阵形式存在的图像数据&#xff0c;都能进行等价的奇异值分解&#xff08;SVD&#xff09;。 二…...

【vue】vuex实现组件间数据共享 vuex模块化编码 网络请求

目录 一、vuex实现组件间数据共享 二、 vuex模块化编码 三、网络请求 模块化命名空间小结: 总结不易~ 本章节对我有很大的收获&#xff0c; 希望对你也是&#xff01;&#xff01;&#xff01; 本节素材已上传Gitee&#xff1a;yihaohhh/我爱Vue - Gitee.comhttps://gitee.…...

红黑树删除的实现与四种情况的证明

&#x1f9ed; 学习重点 删除节点的三种情况红黑树如何恢复性质四种修复情况完整可运行的 C 实现 一、红黑树删除的基础理解 红黑树删除比插入复杂得多&#xff0c;因为&#xff1a; 删除的是黑节点可能会破坏“从根到叶子黑节点数相等”的性质。删除红节点无需修复&#xf…...

FHE与后量子密码学

1. 引言 近年来&#xff0c;关于 后量子密码学&#xff08;PQC, Post-Quantum Cryptography&#xff09; 的讨论愈发热烈。这是因为安全专家担心&#xff0c;一旦有人成功研发出量子计算机&#xff0c;会发生什么可怕的事情。由于 Shor 算法的存在&#xff0c;量子计算机将能够…...

使用FastAPI和React以及MongoDB构建全栈Web应用04 MongoDB快速入门

一、NoSQL 概述 1.1 了解关系数据库的局限性 Before diving into NoSQL, it’s essential to understand the challenges posed by traditional Relational Database Management Systems (RDBMS). While RDBMS have been the cornerstone of data management for decades, th…...

C++:this指针

class date { public:void f(int i){} } 以上是我们定义的一个简单的类&#xff0c;这个类里面含有一个简单的成员函数&#xff0c;成员函数看似只有一个参数&#xff0c;实际上是两个参数&#xff0c;除了参数i以外&#xff0c;还有一个指向调用该函数的对象的指针——this指…...

如何在postman使用时间戳

1. 使用 Pre-request Script 动态转换​ 在发送请求前&#xff0c;将日期字符串转为时间戳并存储为环境变量/全局变量。 ​示例代码​ // 将日期字符串&#xff08;如 "2023-10-01"&#xff09;转为时间戳&#xff08;毫秒&#xff09; const dateString "2…...

OCP开闭原则

OCP&#xff0c;software entities(modules,classes,functions,etc.)should be openfor extension, but closed for modification. 软件实体&#xff08;模块、类和方法等&#xff09;应该对扩展开发&#xff0c;对修改关闭。 OCP特点 提高可扩展性&#xff1a;新功能通过添…...

计算机网络:什么是Mesh组网以及都有哪些设备支持Mesh组网?

Mesh组网技术详解与实现工具推荐 Mesh组网是一种通过多个节点路由器协同工作,形成覆盖全屋的无线网络的技术。它通过动态路径调整、无缝漫游和自愈能力,解决传统单一路由器覆盖不足的问题,尤其适合大户型、多层住宅或复杂户型环境。以下是Mesh组网的核心原理、实现方式及推…...

STM32f103 标准库 零基础学习之点灯

前提&#xff1a;你已经下好了标准外设库&#xff0c;如果没有可以去找找教程 ST官网上可以下载 目录 前提&#xff1a;你已经下好了标准外设库&#xff0c;如果没有可以去找找教程 ST官网上可以下载 点灯逻辑 1. 定义 GPIO 初始化结构体 2. 开启GPIOA的时钟…...

uniapp使用ui.request 请求流式输出

正文&#xff1a; 在现代Web开发中&#xff0c;实时数据流和长时间运行的请求变得越来越常见&#xff0c;尤其是在处理大量数据或进行实时通信时。在这种情况下&#xff0c;uniapp 提供的 ui.request 请求方法可以帮助我们轻松实现流式输出请求。本文将介绍如何使用 uni.reques…...

MATLAB安装常见问题及解决方案详解(含代码示例)

MATLAB作为科学计算和工程分析的核心工具&#xff0c;其安装过程可能因操作系统版本、硬件配置或网络环境等因素而出现各种问题。本文基于MATLAB官方文档和社区经验&#xff0c;系统总结了安装过程中常见的问题&#xff0c;并提供详细的解决方案和代码示例&#xff0c;帮助用户…...

【Java ee初阶】网络编程 UDP socket

网络编程 socket api 是传输层提供的api。 UDP 无连接&#xff0c;不可靠传输&#xff0c;面向数据报&#xff0c;全双工。 TCP 有链接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工。 UDP socket api 数据报 DatagrammSocket 代表了操作系统中的socket文…...

BeanPostProcessor和AOP

BeanPostProcessor Spring中有一个接口Oredr的getOrder()方法&#xff0c;这个方法返回值是一个int类型&#xff0c;Spring容器会根据这个方法的返回值 对容器的多个Processor对象从小到大排序&#xff0c;创建Bean时候依次执行他们的方法&#xff0c;也就是说getOrder()方法的…...

django的权限角色管理(RBAC)

在 Django 中&#xff0c;User、Group 和 Permission 是权限系统的核心组件。下面通过代码示例演示它们的 CRUD&#xff08;创建、读取、更新、删除&#xff09; 操作&#xff1a; 一、User 模型 CRUD from django.contrib.auth.models import User# 创建用户 user User.obje…...

vue vite 无法热更新问题

一、在vue页面引入组件CustomEmployeesDialog&#xff0c;修改组件CustomEmployeesDialog无法热更新 引入方式&#xff1a; import CustomEmployeesDialog from ../dialog/customEmployeesDialog.vue 目录结构&#xff1a; 最后发现是引入import时&#xff0c;路径大小写与目…...

IBM BAW(原BPM升级版)使用教程第八讲

续前篇&#xff01; 一、流程开发功能模块使用逻辑和顺序 前面我们已经对 流程、用户界面、公开的自动化服务、服务、事件、团队、数据、性能、文件各个模块进行了详细讲解&#xff0c;现在统一进行全面统一讲解。 在 IBM Business Automation Workflow (BAW) 中&#xff0c;…...

202534 | KafKa简介+应用场景+集群搭建+快速入门

Apache Kafka 简介 一、什么是 Kafka&#xff1f; Apache Kafka 是一个高吞吐量、分布式、可扩展的流处理平台&#xff0c;用于构建实时数据管道和流应用程序。它最初由 LinkedIn 开发&#xff0c;并于 2011 年开源&#xff0c;目前由 Apache 软件基金会进行维护。 Kafka 具备…...

[思维模式-25]:《本质思考力》-6- 马克思主义哲学的五对基本哲学范畴,以及在计算机领域的体现

一、马克思主义哲学的五对基本哲学范畴&#xff0c; 马克思主义哲学的五对基本哲学范畴是内容与形式、现象与本质、原因与结果、必然性与偶然性、可能性与现实性&#xff0c;以下为具体分析&#xff1a; 内容与形式&#xff1a;组成元素 VS 组成结构 内容指构成事物内在要素的…...

6. 存储池配置与CephFS创建 ceph version 14.2.22

6. 存储池配置与CephFS创建 6.1 CRUSH规则管理6.2 纠删码配置6.3 为SSD和HDD创建专用CRUSH规则6.4 创建CephFS存储池6.5 验证存储池配置记录OSD盘符 所有节点都执行 7. 客户端挂载CephFS7.1 Ubuntu客户端配置7.2 使用内核驱动挂载7.3 设置开机自动挂载 说明&#xff1a;配置Cep…...

RocketMQ Kafka区别

架构 ZooKeeper&#xff1a;管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker&#xff1a;存储 Partition数据&#xff0c;每个 Partition 为独立日志文件。Producer/Consumer&#xff1a;通过 ZooKeeper获取路由信息&#xff0c;实现消息分发与消费。 NameServer&am…...

linux和linux 、linux和windows实现文件复制笔记

前提&#xff1a;两设备得在同一局域网下,且启用了ssh 一、linux和linux实现文件复制 从 Ubuntu B 复制文件夹到 Ubuntu A 在 Ubuntu A 上打开终端&#xff0c;执行&#xff1a; scp -r userBubuntuB_IP:/home/userB/folder_to_copy /home/userA/destination/ 二、linux和…...

Flink 运维监控与指标采集实战

一、引言:实时任务为什么必须监控? 在实时任务中,任务失败、数据延迟、资源瓶颈往往并非由明显的代码异常引发,而是隐蔽地潜藏在: Kafka 积压无告警 Flink Checkpoint 卡顿却无人知晓 反压、TaskManager 内存 OOM 未实时感知 为了保障业务 SLA、高可用与可观测性,构建完…...

linux 开发小技巧之git增加指令别名

众所周知&#xff0c;git的指令执行时都得敲好几个字符才能补充上来&#xff0c;比如常用的git status&#xff0c;是不是要将全部的字符一个个地在键盘敲上来&#xff0c;有没有更懒惰点办法&#xff0c;可以将经常用到的git命令通过其他的别名的方式填充&#xff0c;比如刚刚…...

【八股消消乐】项目中如何优化JVM内存分配?

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本专栏《八股消消乐》旨在记录个人所背的八股文&#xff0c;包括Java/Go开发、Vue开发、系统架构、大模型开发、机器学习、深度学习、力扣算法等相关知识点&#xff0c;期待与你…...

操作系统实验习题解析 上篇

孤村落日残霞&#xff0c;轻烟老树寒鸦&#xff0c;一点飞鸿影下。 青山绿水&#xff0c;白草红叶黄花。 ————《天净沙秋》 白朴 【元】 目录 实验一&#xff1a; 代码&#xff1a; 解析&#xff1a; 运行结果&#xff1a; 实验二&#xff1a; 代码解析 1. 类设计 …...

Yocto中`${B}`变量的作用

在Yocto项目中,${B}是一个关键路径变量,用于指定构建目录(Build Directory),其作用是存放编译过程中生成的中间文件(如Makefile、目标文件、日志等),从而将构建产物与源码目录分离,保持源码环境的独立性^1。 具体解析: 定义与默认路径 默认情况下,${B}的路径为${TM…...

JDBC执行sql过程

1. 加载数据库驱动​ JDBC 通过 ​​驱动&#xff08;Driver&#xff09;​​ 实现与不同数据库的通信。驱动需提前加载到 JVM&#xff1a; 手动加载&#xff08;JDBC 4.0 前&#xff09;​​&#xff1a; Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...

python如何提取Chrome中的保存的网站登录用户名密码?

很多浏览器都贴心地提供了保存用户密码功能&#xff0c;用户一旦开启&#xff0c;就不需要每次都输入用户名、密码&#xff0c;非常方便。作为python脚本&#xff0c;能否拿到用户提前保存在浏览器中的用户名密码&#xff0c;用以自动登录呢&#xff1f;必须有&#xff0c;小爬…...