月子会所网站源码扬州seo

bicheng/2026/1/20 0:14:05/文章来源:
月子会所网站源码,扬州seo,深圳宝安区好不好,ie的常用网站文章目录 布隆过滤器1. 原理2. 结构和操作3. 特点和应用场景4. 缺点和注意事项 应用-redis插件布隆过滤器使用详细过程安装以及配置springboot项目使用redis布隆过滤器下面是布隆过滤器的一些基础命令 扩展 布隆过滤器 Bloom 过滤器是一种概率型数据结构#xff0c;用于快速判… 文章目录 布隆过滤器1. 原理2. 结构和操作3. 特点和应用场景4. 缺点和注意事项 应用-redis插件布隆过滤器使用详细过程安装以及配置springboot项目使用redis布隆过滤器下面是布隆过滤器的一些基础命令 扩展 布隆过滤器 Bloom 过滤器是一种概率型数据结构用于快速判断一个元素是否属于一个集合。它以较小的空间占用和高效的查询时间著称。下面将对 Bloom 过滤器进行详细阐述。 1. 原理 Bloom 过滤器基于哈希函数和位数组实现。它的核心思想是使用多个哈希函数将元素映射到位数组中并将对应的位设置为1。当查询一个元素时通过对该元素进行相同的哈希计算检查对应的位是否都为1。如果其中有任何一位为0则可以确定该元素不在集合中如果所有位都为1则该元素可能在集合中但并不确定存在一定的概率误判。 2. 结构和操作 位数组Bit ArrayBloom 过滤器使用一个固定长度的位数组来表示集合并初始化为全0。每个元素通过多个哈希函数映射到位数组上的多个位置。哈希函数Hash FunctionBloom 过滤器使用多个独立的哈希函数每个哈希函数可以将一个元素映射到位数组的不同位置。常用的哈希函数包括 MurmurHash、FnvHash、SHA 等。添加元素Add Element当向 Bloom 过滤器中添加一个元素时将该元素经过多个哈希函数的计算得到的位置对应的位设置为1。查询元素Query Element当查询一个元素时通过多个哈希函数计算出对应的位置并检查这些位置上的位是否都为1。如果有任何一位为0则可以确定该元素不在集合中如果所有位都为1则该元素可能在集合中。 3. 特点和应用场景 空间效率高Bloom 过滤器使用位数组表示集合所需的内存空间相对较小与集合大小无关。查询效率高由于只需计算多个哈希函数并检查位数组上的位查询时间较短通常为常数时间复杂度。概率误判Bloom 过滤器在判断一个元素不在集合中时永远是准确的但在判断一个元素在集合中时存在一定的概率误判。误判率取决于哈希函数的个数和位数组的大小。应用场景Bloom 过滤器适用于需要快速判断元素是否属于一个大规模集合的场景如网页爬虫中的 URL 去重、缓存穿透的防护、垃圾邮件过滤等。 4. 缺点和注意事项 无法删除元素Bloom 过滤器的位数组一旦被置为1就无法撤销。因此无法从 Bloom 过滤器中删除元素。哈希函数选择选择合适的哈希函数和哈希函数的数量非常重要。哈希函数应具有较低的冲突率并且应该尽量使用独立性较强的哈希函数。误判率误判率取决于哈希函数的个数和位数组的大小。通过调整这些参数可以降低误判率但也会增加空间占用和查询时间。适用范围Bloom 过滤器适用于对查询时间和空间占用有较高要求而对概率误判可以接受的场景。在对精确性要求较高的情况下Bloom 过滤器可能不适用。 总而言之Bloom 过滤器是一种高效的概率型数据结构通过位数组和多个哈希函数实现快速的集合元素判断。它在一些特定的应用场景中具有很大的优势但需要注意选择合适的哈希函数和参数设置以及理解概率误判的特性。 应用-redis插件布隆过滤器使用详细过程 安装以及配置 布隆过滤器有很多我这里用的redis提供的布隆过滤器这次使用的是用docker安装的redis以及配置布隆过滤器 1. 首先下载布隆过滤器这个插件 wget https://github.com/RedisLabsModules/rebloom/archive/v2.2.6.tar.gz下载以后解压备用一会等着放到redis中 2.docker安装redis 首先创建文件夹以及配置文件用于挂在redis启动的后容器中的文件方便我们在容器外部操作redis的配置 创建文件夹 mkdir data ##创建文件 touch redis.conf ## 创建文件在创建完文件夹以后将我们第一步中下载并解压好的布隆过滤器的文件夹放到我们创建的data文件夹下 在我们创建的redis.conf文件中添加一行配置loadmodule /data/RedisBloom-2.2.6/redisbloom.so 随后直接使用dokcer run命令进行启动如果没有安装redis则进行下载 docker run -p 6379:6379 --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/etc/redis/redis.conf --restartalways --network host -d redis:5.0.7 redis-server /etc/redis/redis.conf 这个命令是用于在 Docker 中运行 Redis 容器并进行一些配置。下面是对每个参数的解释 -p 6379:6379: 将 Docker 容器的端口 6379 映射到主机的端口 6379以便可以从主机访问 Redis 服务。--name redis: 指定容器的名称为 “redis”。-v /root/redis/data:/data: 将主机的 /root/redis/data 目录挂载到容器的 /data 目录用于持久化保存 Redis 数据。-v /root/redis/redis.conf:/etc/redis/redis.conf: 将主机的 /root/redis/redis.conf 配置文件挂载到容器的 /etc/redis/redis.conf使用该配置文件作为 Redis 的配置。--restartalways: 设置容器在退出时自动重新启动。--network host: 使用主机网络模式容器将共享主机的网络栈。-d: 在后台运行容器。redis:5.0.7: 指定使用的 Redis 镜像及其版本号。redis-server /etc/redis/redis.conf: 在容器中执行的命令即启动 Redis 服务器并使用指定的配置文件。 执行上述操作redis容器如果启动没有问题那么我们的布隆过滤器的插件和redis都安装并启动成功了如果没有启动成功可以通过docker logs 查看一下redis的启动过程中出现什么问题 下面连接redis执行下面的代码查看否布隆过滤器安装成功 bf.add user test解释一下bf.add 是安装布隆过滤器后才可以使用的命令这是添加一个key的命令user是过滤器的名字而tese就是我们要去添加的key 这是添加成功的标识。 springboot项目使用redis布隆过滤器 上面我们把布隆过滤器安装成功了那么下面介绍一下在项目中如何应用这个过滤器如何通过代码来去和过滤器交互 我这里使用的redis的过滤器所以用到的依赖直接使用的spring-data-redis这个就可以了 !--redis的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency引入依赖以后我们配置封装一个用于调用过滤器的工具类 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional;import java.util.Collections; import java.util.List; import java.util.stream.Collectors;Component public class RedisBloomUtil {Autowiredprivate RedisTemplate redisTemplate;// 初始化一个布隆过滤器public Boolean tryInitBloomFilter(String key, long expectedInsertions, double falseProbability) {Boolean keyExist redisTemplate.hasKey(key);if(keyExist) {return false;}RedisScriptBoolean script new DefaultRedisScript(bloomInitLua(), Boolean.class);RedisSerializer stringSerializer redisTemplate.getStringSerializer();redisTemplate.execute(script, stringSerializer, stringSerializer, Collections.singletonList(key), falseProbability, expectedInsertions);return true;}// 添加元素public Boolean addInBloomFilter(String key, Object arg) {RedisScriptBoolean script new DefaultRedisScript(addInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), arg);}Transactional// 批量添加元素public Boolean batchAddInBloomFilter(String key, Object... args) {RedisScriptBoolean script new DefaultRedisScript(batchAddInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), args);}// 查看某个元素是否是存在public Boolean existInBloomFilter(String key, Object arg) {RedisScriptBoolean script new DefaultRedisScript(existInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), arg);}// 批量查看元素是否存在public List batchExistInBloomFilter(String key, Object... args) {RedisScriptList script new DefaultRedisScript(batchExistInBloomLua(), List.class);ListLong results (List) redisTemplate.execute(script, Collections.singletonList(key), args);ListBoolean booleanList results.stream().map(res - res 1 ? true : false).collect(Collectors.toList());return booleanList;}private String bloomInitLua() {return redis.call(bf.reserve, KEYS[1], ARGV[1], ARGV[2]);}private String addInBloomLua() {return return redis.call(bf.add, KEYS[1], ARGV[1]);}private String batchAddInBloomLua() {StringBuilder sb new StringBuilder();sb.append(for index, arg in pairs(ARGV)).append(\r\n);sb.append(do).append(\r\n);sb.append(redis.call(bf.add, KEYS[1], arg)).append(\r\n);sb.append(end).append(\r\n);sb.append(return true);return sb.toString();}private String existInBloomLua() {return return redis.call(bf.exists, KEYS[1], ARGV[1]);}private String batchExistInBloomLua() {StringBuilder sb new StringBuilder();sb.append(local results {}).append(\r\n);sb.append(for index, arg in pairs(ARGV)).append(\r\n);sb.append(do).append(\r\n);sb.append(local exist redis.call(bf.exists, KEYS[1], arg)).append(\r\n);sb.append(table.insert(results, exist)).append(\r\n);sb.append(end).append(\r\n);sb.append(return results;);return sb.toString();} }下面是布隆过滤器的一些基础命令 在 Redis 中可以使用 RedisBloom 模块来实现布隆过滤器。RedisBloom 是一个开源模块提供了一系列命令来操作布隆过滤器。下面是 RedisBloom 模块中常用的命令集合 BF.ADD向布隆过滤器中添加一个元素。 BF.ADD key itemBF.EXISTS检查一个元素是否存在于布隆过滤器中。 BF.EXISTS key itemBF.MADD向布隆过滤器中批量添加多个元素。 BF.MADD key item [item ...]BF.MEXISTS批量检查多个元素是否存在于布隆过滤器中。 BF.MEXISTS key item [item ...]BF.INFO获取布隆过滤器的信息包括容量、误判率等。 BF.INFO keyBF.RESERVE创建一个新的布隆过滤器并指定容量和误判率。 BF.RESERVE key error_rate capacityBF.COUNT统计布隆过滤器中已添加的元素数量。 BF.COUNT keyBF.DEBUG调试命令用于打印布隆过滤器内部的一些调试信息。 BF.DEBUG subcommand [arguments ...]我上面提供的工具类就是封装的这些命令。 扩展 关于布隆过滤器我们在使用的是注意点就是在我上面说到的测试一下是否安装成功时使用的添加数据的命令bf.add 过滤器名称 key但是我并没有创建那个名字为user的过滤器是因为这是程序帮我创建了一个叫做user的过滤器这个过滤器的配置都是一些基础的配置比如初始容量是100 错误率是0.01也就是百分之一的错误率这个过滤明显不能满足我们的需要因为过滤器的工作原理就是通过多个哈希函数对key进行计算然后记录下来那么容量就决定了在计算的过程中发生碰撞的概率大小了所以我们在使用的时候一定要去手动创建过滤器以确保满足自己的需要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

营销网站类型网站开发过程会遇到的问题

1.反转链表 1.1反转链表 如果我们想要反转链表,那应该有head的next指针指向空,其余结点的next指针反过来,指向它的上一个结点,那我们在执行该操作的时候就需要定义变量cur(current)表示我们当前遍历到的结点,变量pre(…

中国建设银行官网站贺岁产品南京工大建设工程技术有限公司网站

今日比较摆烂, 但是把自写管道的原理搞懂了, 主要是把 exp 完完全全看懂了, 还不错. 然后就没干啥了. 明日计划: 学校的作业. AFL 源码. 我真是服了我自己了, AFL 源码搁多久了, 操操操 然后把 seccomp 重新学习下

郑州制作企业网站中国建设银行官网站安装k宝

1. ALTER DATABASE dbname COLLATE CHINESE_PRC_CS_AI 2. 使用nvarchar, ntext.转载于:https://www.cnblogs.com/cnblogsfans/archive/2010/01/29/1659264.html

做网站编程语言互联网开发是什么意思

小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从 1 到 n。 小苞是小 Y的好朋友,每天她都会从中拿走一些苹果。 每天在拿的时候,小苞都是从左侧第 1个苹果开始、每隔 2 个苹果拿走 1个苹果。 随后小苞会将剩下的苹果按原先的顺序重新…

车辆租赁的网站建设物流公司名称起名大全

话不多说直接开干 先是vue的 1,首先按照一下依赖 npm install --save qrcode 2,在需要使用的页面引入 import QRCode from qrcode; 3,使用 const codeDetail (item) > {//这个item.code是要生成的数据,我的是一串数字QRCode.toDataURL(item.co…

网站开发语言排行wordpress 小工具制作

Python 实现读取pdf文件简单示例。 安装命令 需要安装操作pdf的三方类库,命令如下: pip install pdfminer3K 安装过程如下: 引入类库 需要引入很多的类库。 示例如下: import sys import importlib importlib.reload(sys)fr…

临夏网站建设网站建设要注意哪些事情

1. 概述 PCM = Pulse Code Modulation 是通过等时间隔(即采样率时钟周期)采样将模拟信号数字化的方法。图为4 bit 采样深度的PCM数据量化示意图: PCM数字音频接口,说明接口传输的音频数据是通过PCM方式采样得到的,区别于PDM形式;IIS传输的也是PCM类型数据,属于其一个特…

网站建设颜色搭配东莞网络推广服务平台

1、算法思路 题目要求必须设计一个时间复杂度为 O(log n) 的算法解决此问题,所以我们可以采用二分法。 Step1. 先把 nums[0] 作为目标值,通过二分法找到旋转点索引; Step2. 如果旋转点索引为0,则数组本身就是升序的&#xff0c…

档案网站建设书管理网站怎么做的

文章目录 场景现象问题处理 场景现象 kafka作为消息队列,作为前端设备数据到后端消费的渠道,也被多个不同微服务消费一个服务与前端边缘计算设备建立socket消息,接收实时交通事件推送,再将事件发送到kafka里面。此处使用的是Spri…

企业网站的设计思路php网站开发技术课程

适配器模式之桥梁模式设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435风.fox桥梁模式 Bridge Pattern将抽象和实现解耦,使得两者可以独立地变化通用类图组成抽象化角色 Abstraction...文章风来了2016-10-06972浏览量expOracle数据导入导出i…

网站模板 茶叶响应式wamp做的网站外网怎么访问不了

想要让你的API服务像五星级餐厅一样令人难忘吗?今天阿佑将为你揭晓!从基础的RESTful原则到Django REST framework的高级特性,我们一步步带你走进API开发的后厨,展示如何准备食材(数据模型)、调制酱料&#…

网站自己做服务器上海公司拍沪牌需要什么条件

vscode用着习惯了,也不想再装别的ide 1.安装vscode 这一步默认已完成 2.安装插件 搜索插件安装 3.选择调试器 Ctrl Shift P(或F1),在打开的输入框中输入 Python: Select Interpreter 搜索,选择 Python 解析器 选择自己安…

旅游类网站建设定制官网

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Large Language Models Struggle to Learn Long-Tail Knowledge ArXiv网址:https://arxiv.org/abs/2211.08411 官方GitHub项目(代码和实体)&#xf…

建立网站主页注意那些方面附近做app的公司

随着智能交通和自动驾驶技术的快速发展,车载摄像头作为车辆感知外界环境的重要部件,其画面质量对于行车安全和用户体验至关重要。然而,由于光线变化、设备差异以及拍摄环境复杂多变,车载摄像头拍摄的画面往往会出现颜色失真、对比…

学校网站注重服务平台建设泰州东方医院有限公司

理想情况下,生成式 AI 的落地应用需要提供真实且高质量的响应。SELF-RAG 正是为解决此问题而被创建的。 背景介绍 有趣的是,RAG的发展轨迹与提示工程(prompt engineering)非常相似。RAG 最初是一个简单而有效的概念,其…

顺德大良网站建设百度网站大全首页

经过前几篇博客的学习 Spring 系列的基本操作已经实现的差不多了,接下来,我们来学习更重要的知识,将前端传递的数据存储起来,或者查询数据库里面的数据。 一、MyBatis 是什么? MyBatis 是一款优秀的持久层框架&…

苏宁易购网页布局设计搜索引擎优化岗位

文章目录 1 桥接模式(Bridge Pattern)1.1 介绍1.2 概述1.3 桥接模式的结构 2 案例一2.1 需求2.2 代码实现 3 案例二2.1 需求2.1 代码实现 🙊 前言:本文章为瑞_系列专栏之《23种设计模式》的桥接模式篇。本文中的部分图和概念等资料…

做网站盐城哈尔滨高端模板建站

文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…

网站建设问题及对策新手做网站应该注意什么

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。这套黄河风景线旅游网站是根据当前的现实需要&#xf…

学术会议网站建设百色建设厅网站

实验配置 eNSP 什么是二层交换 二层交换是指在同一个ip网段内,数据通过二层交换机进行转发。 什么是mac地址 mac地址也叫做硬件地址,是以太网协议的链路层地址。简单的来说,mac地址就是我们硬件的身份证,独一无二。它是由48个bi…