布隆过滤器是一个精巧而且经典的数据结构。
你可能没想到:RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksD B 这些知名 项目中都有布隆过滤器的身影。
对于后端程序员 来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。
1 缓存穿透
我们先来看一个商品 服务查询详情的接口 :
public Product queryProductById (Long id){
// 查询缓存
Product product = queryFromCac he(id);
if(product != null) {
return product ;
}
// 从数据库查询
product = queryFromDataBase(id);
if(product != null) {
saveCache(id , product);
}
return product;
}
假设此商品既不存储在缓存中,也不存在数据库中,则没有办法回写缓存 ,当有类似这样大量的请求访问服务时,数据库的压力就会极大。
这是一个典型的缓存穿透的场景。
为了解决这个问题呢,通常我们可以向分布式缓存中写入一个过期时间较短的空值占位,但这样会占用较多的存储空间,性价比不足。
问题的本质是:"如何以极小的代价检索一个元素是否在一个集合中 ?"
我们的主角布隆过滤器 出场了,它就能游刃有余的平衡好时间和空间两种维度 。
2 原理解析
布隆过滤器 (英语:Bloom Filte r)是1970年由布隆提出的。它实际上是一个很长的二进制向量 和一系列随机映射函数 。
布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率 和查询时间 都远远超过一般的算法 ,缺点是有一定的误识别率和删除困难。
布隆过滤器的原理:当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数组中的 K 个点,把它们置为 1。检索时,我们只要看看这些点是不是都是 1 就(大约)知道集合中有没有它了:如果这些点有任何一个 0 ,则被检元素一定不在 ;如果都是 1 ,则被检元素很可能在 。
简单来说就是准备一个长度为 m 的位数组并初始化所有元素为 0,用 k 个散列函数对元素进行 k 次散列运算跟 len (m) 取余得到 k 个位置并将 m 中对应位置设置为 1。
如上图,位数组的长度是8,散列函数个数是 3,先后保持两个元素x,y。这两个元素都经过三次哈希函数生成三个哈希值,并映射到位数组的不同的位置,并置为1。元素 x 映射到位数组的第0位,第4位,第7位,元素y映射到数组的位数组的第1位,第4位,第6位。
保存元素 x 后,位数组的第4位被设置为1之后,在处理元素 y 时第4位会被覆盖,同样也会设置为 1。
当布隆过滤器保存的元素越多 ,被置为 1 的 bit 位也会越来越多 ,元素 x 即便没有存储过,假设哈希函数映射到位数组的三个位都被其他值设置为 1 了,对于布隆过滤器的机制来讲,元素 x 这个值也是存在的,也就是说布隆过滤器存在一定的误判率 。
▍ 误判率
布隆过滤器包含如下四个属性:
k : 哈希函数个数
m : 位数组长度
n : 插入的元素个数
p : 误判率
若位数组长度太小则会导致所有 bit 位很快都会被置为 1 ,那么检索任意值都会返回”可能存在“ , 起不到过滤的效果。位数组长度越大,则误判率越小。
同时,哈希函数的个数也需要考量,哈希函数的个数越大,检索的速度会越慢,误判率也越小,反之,则误判率越高。
从张图我们可以观察到相同位数组长度的情况下,随着哈希函数的个人的增长,误判率显著的下降。
误判率 p 的公式是
k 次哈希函数某一 bit 位未被置为 1 的概率为
插入 n 个元素后某一 bit 位依旧为 0 的概率为
那么插入 n 个元素后某一 bit 位置为1的概率为
整体误判率为 当 m 足够大时,误判率会越小,该公式约等于
我们会预估布隆过滤器的误判率 p 以及待插入的元素个数 n 分别推导出最合适的位数组长度 m 和 哈希函数个数 k。
▍ 布隆过滤器支持删除吗
布隆过滤器其实并不支持删除元素,因为多个元素可能哈希到一个布隆过滤器的同一个位置,如果直接删除该位置的元素,则会影响其他元素的判断。
▍ 时间和空间效率
布隆过滤器的空间复杂度为 O(m) ,插入和查询时间复杂度都是 O(k) 。存储空间和插入、查询时间都不会随元素增加而增大。空间、时间效率都很高。
▍哈希函数类型
Murmur3,FNV 系列和 Jenkins 等非密码学哈希函数适合,因为 Murmur3 算法简单,能够平衡好速度和随机分布,很多开源产品 经常选用它作为哈希函数。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城 等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程 :https://doc.iocoder.cn/video/
3 Guava实现
Google Guava是 Google 开发和维护的开源 Java 开发库,它包含许多基本的工具类,例如字符串处理、集合、并发工具、I/O和数学函数等等。
1、添加Maven依赖
com.google.guava
guava
31.0.1-jre<
2、创建布隆过滤器
BloomFilter filter = BloomFilter.create(
//Funnel 是一个接口,用于将任意类型的对象转换为字节流,
//以便用于布隆过滤器的哈希计算。
Funnels.integerF unnel(),
10000, // 插入数据条目数量
0.001 // 误判率
);
3、添加数据
@PostConstruct
public void ad dProduct() {
logger.info("初始化布隆过滤器数据开始");
//插入4个元素
filter.put(1L);
filter.put(2L);
filter.put(3L);
filter.put(4L);
logger.info("初始化布隆过滤器数据结束");
}
4、判断数据是否存在
public boolean maycontai n(Long id) {
return filter.mightContain(id);
}
接下来,我们查看 Guava 源码中布隆过滤器是如何实现的 ?
static BloomFilter create(Funnel funnel, long expectedInserti ons, double fpp, BloomFilter.Strategy strategy) {
// 省略部分前置验证代码
// 位数组长度
long numBits = optimalNumOfBits(expectedInsertions, fpp);
// 哈希函数次数
int numHashFunctions = optimalNumOfHashFunctions(expectedInsertions, numBits);
try {
return new BloomFilter(
new LockFreeBitArray(numBits),
numHashFunctions,
funnel,
strategy
);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Could not create BloomFilter of " + numBits + " bits", e);
}
}
//计算位数组长度
//n:插入的数据条目数量
//p:期望误判率
@VisibleFor Testing
static long optimalNumOfBits(long n, double p) {
if (p == 0) {
p = Double.MIN_VALUE;
}
return (long) (-n * Math.log(p) / (Math.log(2) * Math.log(2)));
}
// 计算哈希次数
@VisibleForTesting
static int optimalNumOfHashFunctions(long n, long m) {
// (m / n) * log(2), but avoid truncation due to division!
return Math.max(1, (int) Math.round((double) m / n * Math.log(2)));
}
Guava 的计算位数组长度和哈希次数和原理解析这一节展示的公式保持一致。
重点来了,Bloom filter 是如何判断元素存在的 ?
方法名就非常有 google 特色 , ”mightContain “ 的中文表意是:”可能存在“ 。方法的返回值为 true ,元素可能存在,但若返回值为 false ,元素必定不存在。
public boolean mightContain(
@Param etricNullness T object,
//Funnel 是一个接口,用于将任意类型的对象转换为字节流,
//以便用于布隆过滤器的哈希计算。
Funnel funnel,
//用于计算哈希值的哈希函数的数量
int numHashFunctions,
//位数组实例,用于存储布隆过滤器的位集
LockFreeBitArray bits) {
long bitSize = bits.bitSize();
//使用 MurmurHash3 哈希函数计算对象 object 的哈希值,
//并将其转换为一个 byte 数组。
byte[] bytes = Hashing.murmur3_128().hashObject(object, funnel).getBytesInternal();
long hash1 = lowerEight(bytes);
long hash2 = upperEight(bytes);
long combinedHash = hash1;
for (int i = 0; i < numHashFunctions; i++) {
// Make the combined hash positive and indexable
// 计算哈希值的索引,并从位数组中查找索引处的位。
// 如果索引处的位为 0,表示对象不在布隆过滤器中,返回 false。
if (!bits.get((combinedHash & Long.MAX_VALUE) % bitSize)) {
return false;
}
// 将 hash2 加到 combinedHash 上,用于计算下一个哈希值的索引。
combinedHash += hash2;
}
return true;
}
3 Redisson实现
Redisson 是一个用 Java 编写的 Redis 客户端,它实现了分布式对象和服务,包括集合、映射、锁、队列等。Redisson的API 简单易用,使得在分布式环境下使用Redis 更加容易和高效。
1、添加Maven依赖
org.redisson
redisson
3.16.1
2、配置 Redisson 客户端
@Configuration
public class RedissonConfig {
Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer().setAddress("redis://localhost:6379");
return Redisson.create(config);
}
}3、初始化
RBloomFilter bloomFilter = redissonClient.
getBloomFilter("myBloomFilter");
//10000表示插入元素的个数,0.001表示误判率
bloomFilter.tryInit(10000, 0.001);
//插入4个元素
bloomFilter.add(1L);
bloomFilter.add(2L);
bloomFilter.add(3L);
bloomFilter.add(4L);
4、判断数据是否存在
public boolean mightcontain(Long id) {
return bloomFilter.contains(id);
}
好,我们来从源码分析 Redisson 布隆过滤器是如何实现的 ?
public boolean tryInit(long expectedInsertions, double falseProbability) {
// 位数组大小
size = optimalNumOfBits(expectedInsertions, falseProbability);
// 哈希函数次数
hashIterations = optimalNumOfHashFunctions(expectedInsertions, size);
CommandBatchService executorService = new CommandBatchService(commandExecutor);
// 执行 Lua脚本,生成配置
executorService.evalReadAsync(configName, codec, RedisCommands.EVAL_VOID,
"local size = redis.call('hget', KEYS[1], 'size');" +
"local hashIterations = redis.call('hget', KEYS[1], 'hashIterations');" +
"assert(size == false and hashIterations == false, 'Bloom filter config has been changed')",
Arrays.asList(configName), size, hashIterations);
executorService.writeAsync(configName, StringCodec.INSTANCE,
new RedisCommand("HMSET", new VoidReplayConvertor()), configName,
"size", size, "hashIterations", hashIterations,
"expectedInsertions", expectedInsertions, "falseProbability", BigDecimal.valueOf(falseProbability).toPlainString());
try {
executorService.execute();
} catch (RedisException e) {
}
return true;
}
Bf配置信息
Redisson 布隆过滤器初始化的时候,会创建一个 Hash 数据结构的 key ,存储布隆过滤器的4个核心属性。
那么 Redisson 布隆过滤器如何保存元素呢 ?
public boolean add(T object) {
long[] hashes = hash(object);
while (true) {
int hashIterations = this.hashIterations;
long size = this.size;
long[] indexes = hash(hashes[0], hashes[1], hashIterations, size);
CommandBatchService executorService = new CommandBatchService(commandExecutor);
addC onfigCheck(hashIterations, size, executorService);
//创建 bitset 对象, 然后调用setAsync方法,该方法的参数 是索引 。
RBitSetAsync bs = createBitSet(executorService);
for (int i = 0; i < indexes.length; i++) {
bs.setAsync(indexes[i]);
}
try {
List result = (List) executorService.execute().getResponses();
for (Boolean val : result.sub List(1, result.size()-1)) {
if (!val) {
return true;
}
}
return false;
} catch (RedisException e) {
}
}
}
从源码中,我们发现 Redisson 布隆过滤器操作的对象是 位图(bitMap) 。
在 Redis 中,位图本质上是 string 数据类型,Redis 中一个字符串类型的值最多能存储 512 MB 的内容,每个字符串由多个字节组成,每个字节又由 8 个 Bit 位组成。位图结构正是使用“位”来实现存储的,它通过将比特位设置为 0 或 1来达到数据存取的目的,它存储上限为 2^32 ,我们可以使用getbit/setbit命令来处理这个位数组。
为了方便大家理解,我做了一个简单的测试。
通过 Redisson API 创建 key 为 mybitset 的 位图 ,设置索引 3 ,5,6,8 位为 1 ,右侧的二进制值 也完全匹配。
4 实战要点
通过 Guava 和 Redisson 创建和使用布隆过滤器比较简单,我们下面讨论实战层面的注意事项。
1、缓存穿透场景
首先我们需要初始化 布隆过滤器,然后当用户请求时,判断过滤器中是否包含该元素,若不包含该元素,则直接返回不存在。
若包含则从缓存中查询数据,若缓存中也没有,则查询数据库并回写到缓存里,最后给前端返回。
2、元素删除场景
现实场景,元素不仅仅是只有增加,还存在删除元素的场景,比如说商品的删除。
原理解析这一节,我们已经知晓:布隆过滤器其实并不支持删除元素,因为多个元素可能哈希到一个布隆过滤器的同一个位置,如果直接删除该位置的元素,则会影响其他元素的判断 。
我们有两种方案:
▍计数布隆过滤器
计数过滤器(Counting Bloom Filter)是布隆过滤器的扩展,标准 Bloom Filter 位数组的每一位扩展为一个小的计数器(Counter),在插入元素时给对应的 k (k 为哈希函数个数)个 Counter 的值分别加 1,删除元素时给对应的 k 个 Counter 的值分别减 1。
虽然计数布隆过滤器可以解决布隆过滤器无法删除元素的问题,但是又引入了另一个问题:“更多的资源占用,而且在很多时候会造成极大的空间浪费 ”。
▍ 定时重新构建布隆过滤器
从工程角度来看,定时重新构建布隆过滤器 这个方案可行也可靠,同时也相对简单。
定时任务触发全量商品查询 ;
将商品编号添加到新的布隆过滤器 ;
任务完成,修改商品布隆过滤器的映射(从旧 A 修改成 新 B );
商品服务根据布隆过滤器的映射,选择新的布隆过滤器 B进行相关的查询操作 ;
选择合适的时间点,删除旧的布隆过滤器 A。
5 总结
布隆过滤器 是一个很长的二进制向量 和一系列随机映射函数 ,用于检索一个元素是否在一个集合中 。
它的空间效率 和查询时间 都远远超过一般的算法 ,但是有一定的误判率 (函数返回 true , 意味着元素可能存在,函数返回 false ,元素必定不存在)。
布隆过滤器的四个核心属性:
k : 哈希函数个数
m : 位数组长度
n : 插入的元素个数
p : 误判率
Java 世界里 ,通过 Guava 和 Redisson 创建和使用布隆过滤器非常简单。
布隆过滤器无法删除元素,但我们可以通过计数布隆过滤器 和定时重新构建布隆过滤器 两种方案实现删除元素的效果。
为什么这么多的开源项目中使用布隆过滤器 ?
因为它的设计精巧且简洁,工程上实现非常容易,效能高,虽然有一定的误判率,但软件设计不就是要 trade off 吗 ?
编辑:黄飞
算法 (90504)
算法 (90504)
函数 (61194)
函数 (61194)
过滤器 (18817)
过滤器 (18817)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
相关推荐
一 、过滤 组、过滤器 编号介绍 在STM32互联型产品中,CAN1和CAN2分享28个过滤器 组,其它STM32F103xx系列产品中有14个过滤器 组,用以对接收到的帧进行过滤 。1、过滤器 组 每组过滤器 包括了2个可配置的32位寄存器:CAN_FxR0...
2021-08-20 06:13:09
之上。它看起来像一 个倾斜的通道,过滤器 裙边必须通过该通道。如何使用Genesys在优化块中设置这样的目标条件? // RF 以上来自于谷歌翻译 以下为原文Hi Experts, I am
2018-09-25 16:59:48
?模拟滤波器向导是一 种用于实际运算放大器的动手设计工具。它结束了对过滤器 建议的追捕,有助于设计具有所需规格的低通,高通或带通滤波器,并具有更短的交货期(图1)。图1.过滤器 类型。此外,它可以让您对过滤器
2018-10-26 11:19:40
大家好,我们如何着手使用新的过滤器 组件?我想尝试新的过滤器 组件如下:1)12位数据输入2)基本汉明窗FIR低通滤波器12位样本数据概念代码:/全局变量It16数据[128 ]={…};/ /我将从
2019-04-16 15:14:49
玩增益,并用过滤器 的系数,但没有成功。附加- ExMPALE:输入-正弦波800赫兹。输出-不响应过滤器 请你的建议…IMG-2015011-WA002.ZIP172.5 K
2019-08-19 06:35:51
AT32F系列 CAN过滤器 使用演示AT32F系列CAN过滤器 的使用方法。
2023-10-27 06:44:36
CAN过滤器 的配置(f103 hal1.8 系列)can的过滤器 的配置是对can接收到的报文进行过滤 的配置,在STM32芯片中,可以对can的报文进行过滤 ,从而省略cpu的处理过程。can的过滤 模式
2021-08-19 06:11:28
CAN过滤器 配置以及常见问题总结过滤器 组在具有两个CAN的产品中,CAN1和CAN2分享28个过滤器 组,只有一 个CAN的系列产品中有14个过滤器 组,用以对接收到的帧进行过滤 。• 设置为掩码模式主要
2023-03-08 10:23:46
,不是采用一 个标识符加一 个屏蔽位的方式,而是采用两个标识符寄存器。接收报文的每一 位都必须跟过滤器 标识符相同。STM32普通型芯片的 CAN 有14组过滤器 组(互联型有28组过滤器 组) ,用以对
2021-08-19 07:30:29
1.前言元旦嗨了几天,今天回来补一 下CAN的过滤器 。就使用而言,实际上CAN的过滤器 非常简单,只需要几个简单的参数配置,不需要学习什么邮箱FIFO、还回什么静默什么的。我一 直认为,所有的东西想要入门
2021-08-19 07:19:06
PADS Filter(过滤器 )的妙用
2013-09-15 10:41:49
你好,我读过过滤器 组件的数据表,它说每个设计只需要使用一 个过滤器 。我尝试的是过滤 FTK上的3轴加速度计的数据。我知道我必须使用一 个MUX和Delsig ADC。在所有的3轴中,如何在这种情况下
2019-04-08 15:30:47
一 、过滤 组、过滤器 编号介绍 在STM32互联型产品中,CAN1和CAN2分享28个过滤器 组,其它STM32F103xx系列产品中有14个过滤器 组,用以对接收到的帧进行过滤 。1、过滤器 组 每组过滤器 包括了2个可配置的32位寄存器:CAN_FxR0...
2021-08-23 06:51:31
下面内容为转载:一 、在STM32互联型产品中,CAN1和CAN2分享28个过滤器 组,其它STM32F103xx系列产品中有14个过滤器 组,用以对接收到的帧进行过滤 。1、过滤器 组 每组过滤器 包括了2个
2021-08-23 07:29:40
推荐一 篇博客STM32之CAN ---CAN ID过滤器 分析:http://blog.csdn.net/flydream0/article/details/8148791
2015-10-22 22:23:29
文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一 需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器 组(13~0),以便只接收那些软件需要的报文。硬件
2018-03-16 14:14:19
系列文章目录文章目录系列文章目录前言一 、过滤器 的作用二、可变的位宽三、屏蔽位模式四、标识符列表模式五、过滤器 组位宽和模式的设置六、过滤器 优先级规则七、邮箱1.发送邮箱2.接收邮箱前言STM32提供
2021-08-19 07:13:10
STM32普通型芯片的 CAN 有14组过滤器 组(互联型有28组过滤器 组) ,用以对接收到的帧进行过滤 。每组过滤器 包括了2个可配置的32位寄存器:CAN_FxR0和 CAN_FxR1。对于过滤器 组
2021-08-20 08:27:38
bxCAN过滤器 有哪几种工作模式?怎样去使用bxCAN过滤器 呢?
2021-11-02 08:45:14
bxCAN是什么?bxCAN过滤器 的工作模式有哪几种?如何去设计一 种bxCAN过滤器 呢?
2021-11-01 07:05:05
bxCAN是什么?为什么要bxCAN过滤器 呢?bxCAN过滤器 该如何去设计呢?
2021-11-02 08:50:14
需要一 个容量为100 Nm 3 / h的空气在15°C的过滤器 ,入口压力p 1 = 2 bar。考虑到压降Δpmax= 10 mbar,我们得到:Kvs>(1,2×21,3)= 25,5m 3
2018-07-12 17:50:48
2411315092入口处和出口处两侧 设有压力插口,可连接恒压器,用来监测压力损失。当过滤器 不再对灰尘起存诸作用时就需要更换了。FGS1-2 型过滤器 的过滤 卡拥有一 个可以清洗的网。材料/连接AlSi Rp1/2
2018-07-12 18:06:29
stm8s208 的 can 过滤器 怎么设置?
2023-10-26 08:13:17
空气过滤器 滤网在很多行业发挥着一 定的作用,但是该设备在使用一 段时间之后就需要进行清洗,要不然不利于提高设备的工作效率。那么,如何进行清洗呢?大家是否知道?下面由天宇净化为大家讲解空气过滤器 滤网设备
2020-05-14 15:57:06
购买耐高湿高效过滤器 设备之后,我们需要面临的就是设备安装问题,但是很多人对于这一 方面的知识都是不了解的,所以无法很好的进行设备安装,这也是许多用户都会面临的一 个麻烦。下面由天宇净化为大家讲解耐高湿
2020-05-14 15:55:22
bxCAN过滤器 的工作模式有哪几种?如何使用bxCAN过滤器 的这几种工作模式呢?对应的代码示例是怎样的?
2021-11-01 07:07:47
嗨,我有一 个可合成的vhdl代码用于fir过滤器 。我想找到设计过滤器 的功率和效率而不实际将其倾倒到fpga上请帮助我可以使用xilinx ise工具得到这个吗?
2019-10-28 09:20:49
作者:GWD 时间:2019.7.4一 、课程内容:1、问:如何增加过滤器 文件类型?答:2、问:如何新建工程:答:1)、ADD文件,过滤 后的文件;2)、编译程序(实质上是关联加入的文件)3)、双击这个
2021-12-17 06:02:51
如何实现一 个称重过滤器 ?我使用PIC32 MZ2048,并与MPLAB和谐编程。我读过,我必须用IIR滤波器来做,但是我不知道要使用什么系数。 以上来自于百度翻译 以下为原文 How can
2019-03-25 08:13:43
一 天中的好时光。我有Virtex 4 sx -10,需要制作512 lengthFIR过滤器 。它是一 个mached滤波器,因此系数为0和1。我使用转置形式,我不能提高系统频率(160 MHz
2020-05-28 15:54:00
我目前正在使用 iMXRT1176 的 FlexCAN 模块,并试图了解如何为消息缓冲区设置 id 过滤器 位。 我的理解是,例如,我可以向寄存器 RXMGMASK 写入一 个掩码,以确定我想将哪些位
2023-03-29 08:39:00
总结一 些最近做项目对CAN通信的过滤器 配置的理解;这里我使用STM32F105系列的芯片,有2路CAN,我使用的是CAN2,过滤器 可以设置从15开始,当然,从1开始也是没有问题的;当设置了CAN
2021-08-20 07:14:33
用Dave Van Ess的这个视频刷新关于过滤器 的理论,它解释了不同类型的过滤器 和使用PSoC设计器的实况实现。对于如何在PSoC 1中使用过滤器 可以有进一 步的简化吗?留下你的评论。 以上
2019-05-14 12:07:38
微信小程序-模块化与过滤器
2020-05-27 13:10:42
是我公司专为油墨印刷行业及其他如精细化工、电子、玻璃深加工等需要过滤 油墨的行业设计生产的过滤 装置。该过滤器 具有结构新颖,外观精美,操作简便等特点。采用气泵调压的方式推动物料过滤 ,出口配有滤网,出口
2015-04-30 14:15:36
滤芯的自清洗过滤器 和全自动自清洗过滤器 自清洗过滤器 分几种,有手动自清洗过滤器 ,自动自清洗过滤器 (带电机)盘式全自动过滤器 也叫自清洗过滤器 新乡市平原滤器 液压有限公司是一 家专业从事于工业过滤器
2011-03-13 20:45:52
一 :直通式反冲洗过滤器 简介 直通式反冲洗排污过滤器 是一 种集通用的过滤 功能和在系统运行不停机的前提下对滤筒进行清洗并排污的多功能使用产品,它设计了全新的结构形式,在滤筒的前段设置阀板,通过
2021-06-30 08:06:52
除尘效率不同。在衡量过滤器 的除尘能力时,必须指明粒径的大小。在同一 粒径的前提下进行比较,这就是分级效率。阻力是指气体通过过滤器 的压降,在保证过滤 精度的前提下越小越好。随着过滤器 阻力的逐渐上升,会
2009-09-09 16:24:45
(1) 吸油过滤器 :该过滤器 设在泵的吸入管路上,管路过滤器 滤除油箱内的残留污染物质的经过空气孔进入的污染物,有维护泵的效果。可是为了避免泵发生空穴表象,有必要充沛注意压力丢失,通常运用100
2020-12-07 17:27:43
过滤器 驱动程序具有什么功能?过滤器 驱动程序有什么应用价值?怎样去设计一种过滤器 驱动程序?
2021-04-26 06:41:39
转鼓过滤器 是利用一 个可以转动的不锈钢滚筒来进行过滤 的。滚筒的外部有一 层致密的316L不锈钢筛网。滚筒可以通过齿轮由一 台电机驱动。在转鼓过滤器 箱体的外部,有一 台塑料泵壳组成的加压水泵。加压水泵连接
2021-09-10 06:19:29
一 般人可能认为高效纤维过滤器 过滤 精度高,对于一 般的微生物和细菌应该都能过滤 掉,其实不然,高效过滤器 主要是以过滤 尘埃为主要目的,对于一 般的比小的微生物却不一 定能去除,需要借助其他特殊的去菌装置
2019-11-15 11:25:33
人员一 定要戴上防毒面具和橡胶手套。取出的过滤器 要立即密封放入趁料袋内,再放入纸箱内,使用过的面具、手套也同样处理,然后一 起烧毁。在安装新过滤器 时,不要随便将头和身体伸到装置内,同样要高度谨慎操作。排风
2019-12-13 15:40:02
真空除菌过滤器 真空泵过滤器 真空泵除菌过滤器 【1】杭州佳洁机电设备有限公司供应;真空除菌过滤器 真空泵过滤器 真空泵除菌过滤器 产品简介:真空过滤器
2022-03-03 12:06:53
医院负压站除菌过滤器 医院负压吸引灭菌过滤器 【1】杭州佳洁机电设备有限公司供应;医院负压站除菌过滤器 医院负压吸引灭菌过滤器 ;产品型号规格 压缩空气过滤器
2022-03-03 12:11:40
汉克森过滤器 【1】国产品牌滤芯均为我司生产的替代原厂品牌滤芯,其过滤 滤材采用德国原装进口HV公司产品,注册商标为“佳洁”牌。本公司涉及的其它品牌均无品牌意义,只是作为产品型号参照和客户
2022-04-11 14:26:36
日盛过滤器 滤芯RSGA-0017G滤芯日盛过滤器 滤芯RSGA-0030G滤芯日盛过滤器 滤芯RSGA-0058G滤芯 日盛过滤器 滤芯RSGA-0125G滤芯日盛过滤器 滤芯RSGA-0145G
2022-04-12 08:35:10
多明尼克 汉德过滤器 英国DOMNICK HUNTER过滤器 DH过滤器 英国多明尼克 汉德过滤器 英国DH过滤器 【1】国产品牌滤芯均为我司生产的替代原厂品牌滤芯,其过滤 滤材采用德国原装进口HV公司产品
2022-04-12 09:13:07
介绍了国内外挤出机用熔体过滤器 的种类、特性和应用。双通道双柱塞不停机换网过滤器 适合于PE、PP的挤出加工,旋转圆盘式不停机换网过滤器 适合于化纤拉丝,网带式全自动过滤器
2009-07-09 13:19:33 11 介绍了国内外挤出机用高分子熔体过滤器 的种类、特性和应用。
2009-07-18 08:56:34 14 分析了网络驱动程序接口规范(NDIS)的体系结构和标准开发接口。介绍了设计实现局域网数据包过滤器 的关键技术和包过滤 的基本过程。最后完成了实验验证,结果表明,基于NDI
2009-09-24 16:36:05 9 CN过滤器 原理
CN过滤器 采用整体玻璃钢,耐酸耐碱,一般耐温65℃。内部装有约半米高的悬浮介质层。悬浮过滤 介质为1-2mm小球,采用高分子材料加工,密度大约
2010-02-25 15:00:51 26
本文针对扩展式布鲁姆过滤器 (EBF)内存消耗过大,提出一种基于值域哈希二次过滤 的布鲁姆过滤器 数据结构(VHBF)和相关算法,VHBF通过在布鲁姆过滤器 中对集合中的每个特征进行k次哈希,
2010-02-26 13:45:03 12 三菱PLC(可编程逻辑控制器)编程实例项目例程——污水过滤器
2016-12-09 12:13:37 14 基于单片机的自洁式空气过滤器 反吹控制系统设计_石蕾
2017-02-07 18:11:35 0
布鲁姆过滤器 具有空间节俭的特点,它通常被用于无线传感器网络中。为了支持传感网络中Sink节点的展示操作,需要布鲁姆过滤器 可以展示所有的元素。现有工作中仅可逆布鲁姆过滤器 可实现元素的展示。为了保护传感
2017-11-20 14:43:32 6 针对基于混淆布鲁姆过滤器 的隐私集合比较( PSI)协议中存在参与方信息获取不对等及协议不能有效应用于云环境等问题,将混淆布鲁姆过滤器 算法与代理不经意传输协议相结合,提出了一种基于混淆布鲁姆过滤器
2017-12-11 14:39:01 0 延迟焦化工艺是炼油工业中最常用的一种方式。在炼油过程中产生大量焦粉,焦粉的积累会对后续工艺过程以及设备产生很大的影响。目前焦化油中的焦粉一般用自动反冲洗过滤器 去除,其过滤 精度在20 -25 ym
2018-03-05 10:21:41 0 在给冰箱的制冷系统内充灌制冷剂时,为了防止脏污和水分进入制冷系统,通常的做法是在加液管上串接一干燥过滤器 。有时,会因不知道它已经失去干燥作用,使注入的制冷剂含水分过多,导致冰箱产生冰堵故障。为了防止这一现象的发生,我用加液管自制了一个干燥过滤器 ,经使用证实效果非常好。
2019-02-07 12:33:00 7712
本视频主要详细介绍了过滤器 的作用,分别是滤速高、过滤 效果好;强度高、耐腐蚀;静电作用;过滤 物质;拦截;其次介绍了水龙头过滤器 的作用,最后介绍了活性炭过滤器 的作用。
2018-12-12 16:23:23 40930 YZ-GL100系列刮刀过滤器 ,全自动运行,过滤 精度高,性能稳定可靠,是取代传统手动过滤器 或使用弃置型滤材过滤器 的效益之选,在许多领域可以替代传统的芯式过滤器 ,袋式过滤器 ,篮式过滤器 ,振动筛过滤器 等。
2019-01-09 14:06:47 5693 干燥过滤器 (DrierFilter)主要是起到杂质过滤 的作用。一般来说,这要根据冰箱,空调的制冷系统来确定干燥器的规格,如直径,内径,外径的规格,和内部件,如过滤 碗,网布,和分子筛。
2019-12-05 14:29:12 18410 高效过滤器 生产厂商 三河市科丰电气有限公司高效过滤器 。三河市科丰电气有限公司致力于为通信行业、暖通行业、节能行业,过滤 行业等行业并提供专业配套产品和服务。高效过滤器 产品具有过滤 效率高、阻力
2020-03-19 14:56:00 1611
在实验室中,我们会使用生物安全柜来保护样品和操作人员,作为其核心部件之一,高效空气过滤器 的品质至关重要。在高效空气过滤器 的安装和使用过程中,可能会出现过滤器 破损的情况,会对人员和样品造成潜在的污染
2020-04-30 16:33:25 4751 创新陶瓷过滤器 解决方案
2021-10-27 14:56:00 16 情况:工程目录下中不显示某些文件,但是实际上这些文件存在的。那么您可能需要了解一下 RT-Thread Studio 中的过滤器 ,以免刷新刷新再刷新,重启再重启,还是不显示这些文件。 过滤器 入口
2021-11-16 14:37:37 1893 DH除菌滤芯ZHFT-AZ 除菌过滤器 滤芯ZHFT-BZ
2021-12-21 14:26:05 1317
压缩空气除菌过滤器 ZHFT-DW DH除菌滤芯ZHFT-CW
2021-12-21 14:28:32 2947 在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器 了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器 (Filter)进行设置。
2022-02-10 10:00:10 3 无隔板高效过滤器 是净化工程中主要的高效过滤器 品种,因为他相比较传统的有隔板高效过滤器 更具有明显的优势。所以在生产中也需要更加严格,而普通人工的检测已经满足不了无隔板高效过滤器 的检测需求,所以通过引入
2022-03-01 16:57:20 515 真空吸引系统过滤器 真空吸引系统不锈钢除菌过滤器
2022-04-16 13:54:05 1138
带排污阀Y型过滤器 是Y字型的,一端是使水等流质经过,一端是沉淀废弃物、杂质,通常它是装置在减压阀、泄压阀、定水位阀或其它设备的进口端,它的作用是肃清水中的杂质,到达维护阀门及设备正常运转的作用
2022-08-13 17:22:47 2251 丝扣Y过滤器 是Y过滤器 的一种,普通滤材是不锈钢或者碳钢,滤芯普通带有不锈钢骨架。 丝扣Y形过滤器 有时也叫做·不锈钢内螺纹Y过滤器 。 特性: 1.丝扣Y形过滤器 装置于进水管路中各配套阀门
2022-08-13 17:24:47 3687 丝扣Y过滤器 是Y过滤器 的一种,普通滤材是不锈钢或者碳钢,滤芯普通带有不锈钢骨架。 丝扣Y形过滤器 有时也叫做·不锈钢内螺纹Y过滤器 。 特性: 1.丝扣Y形过滤器 装置于进水管路中各配套阀门的前端
2022-09-05 09:27:08 2021 铸铁法兰Y型过滤器 ,铸铁Y型过滤器 阀体资料为灰铸铁,适用于水、蒸汽、油品,公称尺寸 DN32~DN500,用于工作压力1.0MPa 的管路上,可过滤 介质中的污垢,锈等杂物。铸铁过滤器 当需求清洗
2022-10-19 10:29:26 1779
带排污阀过滤器 是保送介质的管道系统不可短少的一种过滤 安装,带排污阀过滤器 通常装置在减压阀、泄压阀、定水位阀或其它设备的进口端,用来肃清介质中的杂质,以维护阀门及设备的正常运用。带排污阀过滤 用具有构造
2022-10-19 10:31:49 898 丝扣Y形过滤器 是保送介质管道上不可短少的一种安装,通常装置在减压阀、泄压阀、定水位阀或其它设备的进口端,用来消弭介质中的杂质,以维护阀门及设备的正常运用。 丝扣Y形过滤器 有时也叫做·不锈钢内螺纹
2022-10-24 15:03:32 3407 法兰Y型过滤器 是除去液体中少量固体颗粒的小型设备,可维护设备的正常工作,当流体进入置有 规格滤网的滤筒后,其杂质被阻挠,而清洁的滤液则由过滤器 出口排出,当需求清洗时,只需将可拆卸的滤筒取出,处置
2022-10-24 15:04:19 1604 Y型过滤器 是保送介质的管道系统不可短少的一种过滤 安装,Y型过滤器 通常装置在减压阀、泄压阀、定水位阀或其它设备的进口端,用来 介质中的杂质,以维护阀门及设备的正常运用。Y型过滤 用具有构造*,阻力
2022-10-25 15:32:39 1707
Y型过滤器 属于管道粗过滤器 ,可用于液体、气体或其他介质大颗粒物过滤
2023-01-12 09:57:10 4681 汉克森过滤器 【1】国产品牌滤芯均为我司生产的替代原厂品牌滤芯,其过滤 滤材采用德国原装进口HV公司产品,注册商标为“佳洁”牌。本公司涉及的其它品牌均无品牌意义,只是作为产品型号参照和客户选型对照
2023-03-01 08:53:14 850 过滤器 药液过滤器 滤除率测试仪
2023-03-09 14:53:13 483 过滤器 模式是指通过构造一系列不同的标准实现类,通过这些标准实现类把目标对象(通常是多个)按照对应的标准进行过滤 ,从而得到想要的对象(或对象组)。
2023-06-01 14:32:18 854
贝腾过滤器 滤芯
2022-04-11 15:09:56 439 杀菌过滤器 灭菌过滤器 除菌过滤器
2022-03-03 14:03:50 1042 布隆过滤器 是一个精巧而且经典的数据结构。
2023-06-30 10:03:28 315 TSMaster的4种过滤器 ://硬件过滤器 :可以在硬件端针对数据位进行筛选过滤 ,硬件过滤 。在硬件端阻止接收一部分不需要的报文,留更多带宽对其他报文进行接收。//数据流过滤器 :过滤 总线数据流,软件
2023-10-21 08:21:47 1177
Spring Boot是一个用于构建Java应用程序的开发框架,它提供了许多功能和工具来简化开发和部署过程。其中两个重要的功能是过滤器 和拦截器。本文将详细介绍Spring Boot过滤器 和拦截器
2023-12-03 15:00:12 597 前置过滤器 的使用寿命有多长? 前置过滤器 的使用寿命有多长,这是一个相对而言的概念,因为它的使用寿命取决于多个因素。下面将详细介绍前置过滤器 的使用寿命以及影响因素。 一、什么是前置过滤器 ? 前置过滤器
2023-12-11 11:38:01 409
正在加载...