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

高阶数据结构----布隆过滤器和位图

(一)位图

  位图是用来存放某种状态的,因为一个bit上只能存0和1所以一般只有两种状态的情况下适合用位图,所以非常适合判断数据在或者不在,而且位图十分节省空间,很适合于海量数据,且容易存储,数据无重复的场景(因为位图是天然去重的)

 那我们来看一下他是如何节省空间的

我们看这个例子,如果我们不使用位图,一共10个整型数据,需要消耗40个字节,但是如果使用位图,我们就只需要3个字节就可以判断这个数字是否存在

注:10亿字节1个g

(二)位图的实现及作用

public class bitmap {public byte[] elem;public int usedSize;public bitmap() {elem=new byte[1];}//初始化位图长度public bitmap(int n) {elem=new byte[(n/8)+1];}public void setElem(int val){//找到插入第几个byte中   val/8if (val<0)throw new IndexOutOfBoundsException();int arrIndex=val/8;//找到插入到byte的第几个bit中 val%8int bitIndex=val%8;elem[arrIndex] |= (1<<bitIndex); //这里用| 之前为1的就一直为1,当前我要插入的一定会修改为1usedSize++;  //这里其实不一定正确,因为如果本身就存在这个元素,那么我们不应该++}public boolean get(int val){//找到插入第几个byte中   val/8if (val<0)throw new IndexOutOfBoundsException();int arrIndex=val/8;//找到插入到byte的第几个bit中 val%8int bitIndex=val%8;if((elem[arrIndex] & 1<<bitIndex)!=0){   //这里是用& 把其余所有位都变成0,如果当前我要找的存在就不为0return true;}return false;}public void delete(int val){//找到删除第几个byte中   val/8if (val<0)throw new IndexOutOfBoundsException();int arrIndex=val/8;//找到删除到byte的第几个bit中 val%8int bitIndex=val%8;elem[arrIndex] &=~(1<<bitIndex);usedSize--;}
}

我们之后来看一下我们的set delete和get方法中的不同点

我们发现只有对bit位的处理是不同的,找位置的代码都是一样的,所以我们就来看对bit位的处理

首先是set方法,我们是用了 | 只要有1就为1 这样是为了确保在我们添加元素的时候不影响其他bit位上的元素,如果我们变成& 就会这样

我们发现下标为5的元素被修改为0了,这显然是不对的,如果是异或那就更不对了

然后我们来看get 我们用了 & 只有都为1的时候才为1,其他都是0,也就是说我们想找这个元素,且他存在的时候才为1,其他都为0,如果使用 | 我们就无法判断了

最后一个我们看delete 我们先取反然后再& ,这样能够保证只有这一位是0,其他位全为1,如果其他位本身不存在那么1&0还是0,如果存在1&1为1还是存在,而我们要删除的位,无论如何都为0,这里可能要问,为什么不能使用异或,异或有一个情况会发生错误,如果我们删除的位置本身不存在为0,那么就会导致0^1为1,反倒存在了,所以不可以用^

 我们可以使用我们的位图进行排序

 public static void main(String[] args) {int[] array = {1,3,2,13,10,3,14,18,3};final bitmap bitSet = new bitmap(18);for (int tmp:array) {bitSet.setElem(tmp);}for (int i = 0; i < bitSet.elem.length; i++) {for (int j = 0; j < 8; j++) {if((bitSet.elem[i] & (1 << j) ) != 0 ) {System.out.println(i*8+j);}}}}

其实位图我们Java也给我们实现过了

但是他的底层是long类型的数组 而我们是byte类型的

那我们来总结一下位图的应用

1.快速查找某个数据(适合处理整数)是否在集合中

2.排序+去重

3.求两个集合的交集,并集

(三)布隆过滤器

  我们上面说的位图,适合存储整数,如果是对象,那我们要存到那一个byte位?所以我们就出现了布隆过滤器

  布隆过滤器是哈希和位图思想的结合

之前我们有一篇博客讲了布隆过滤器解决缓存穿透的问题 我们说布隆过滤器用于一些可以存在误判率的场景下,因为布隆过滤器是通过多个哈希函数多次将数据给存放到位图上

像这样

但是因为我们在多次插入后可能会出现这种场景

我们发现不同数据hash后可能会落到同一个格子,但是还好这个还有一位不同,更极端点的例子

一个数据多次hash,都落到了1位置上,这样就会判断它存在,但是它实际上是不存在的,此时就会出现误判

 所以布隆过滤器对于结果来说,存在不一定存在,不存在一定不存在

布隆过滤器的优缺点:

优点:

1.增加和查询元素的时间复杂度为O(1)

2.布隆过滤器不存元素本身,所以适合要保密的场景

3.布隆过滤器由于使用了位图,很节省空间

4.数据量很大时,布隆过滤器可以表示全集(也就是能表示更多的元素)

5.适用相同hash函数的布隆过滤器可以进行交,并,差运算

缺点:

1.存在一定误判率

2.不能获取元素本身(hash不可逆)

3.一般不能删除元素(因为多个元素可能hash到一个位置上)

4.这样删除会存在计数回绕问题

总结下布隆过滤器:适合一些非整数的数据,通过hash+位图的思想,查找的时间复杂度和hash函数个数有关但都是常数,也不会太大,存储的不是信息本身只能判断数据是否存在,但是有误判率

(四)海量数据面试题

1.给定100亿个整数,设计找到值出现一次的整数

解法一:哈希切割

  我们把这100亿个整数哈希到不同小文件中,这样相同的数字是会在一起的,然后遍历每个小文件,记录只出现一次的整数到另一个文件中,这样就能判断那个数字只出现一次

解法二:位图

 我们把这100亿个整数放到两个位图中

我们适用二进制计数的方式,这样只出现一次的整数就是0 1,然后我们遍历整个位图就可以得到了。

 当然也可以只用一个位图,那就是两个bit位存一个数据

这样我们需要/4和%4找位置了

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

解法一:哈希切割

我们依然将两个文件分别hash成多个小文件,这样相同的数据大概率在同一个文件中,然后我们求这两个文件的交集放到另一个文件中

解法二:位图

我们将第一个文件的数据放到位图中,然后遍历第二个文件,如果在位图中存在了,那么就是两个文件的交集

3.给两个文件,分别有100亿个query,我们只有1g内存,如何找两个文件交集?给出精确算法和近似算法

 注意我们这题是query,那就说明不是整数,那就不适合用位图,但是我们可以适用布隆过滤器

解法一:哈希切割(精确算法)

我们依然将两个文件分别hash成多个小文件,这样相同的数据大概率在同一个文件中,然后我们求这两个文件的交集放到另一个文件中(跟上面一样)

解法二:近似算法

把第一个文件的query映射到布隆过滤器中,然后读第二个文件,把每个query都放到布隆过滤器查找(有误判率)所以是近似算法

那我们来总结一下:哈希切割是比较通用的方法,通过hash函数把相同的数据都放到一个文件中,然后进行判断和处理

位图适合整型数据的处理,而布隆过滤器是适合允许有一定误报率的处理

相关文章:

高阶数据结构----布隆过滤器和位图

&#xff08;一&#xff09;位图 位图是用来存放某种状态的&#xff0c;因为一个bit上只能存0和1所以一般只有两种状态的情况下适合用位图&#xff0c;所以非常适合判断数据在或者不在&#xff0c;而且位图十分节省空间&#xff0c;很适合于海量数据&#xff0c;且容易存储&…...

SpringCloud源码分析-nacos与eureka

一、高版本为什么优先用nacos 如果用alibaba springcloud&#xff0c;那么就是阿里的技术体系。nacos属于阿里的原生技术栈&#xff0c;所以阿里更偏向于用nacos作为服务发现注册。 二、对比分析 Spring Cloud Alibaba 推荐使用 Nacos 作为服务发现和配置管理的首选组件&…...

多台DHCP服务器时的问题讨论

有两台DHCP服务器为主机提供DHCP服务会发生什么 在一个网络中&#xff0c;如果有两台设备同时连接到主机&#xff0c;并且它们都可以提供 DHCP 服务&#xff0c;这可能会引发以下问题&#xff1a; 1. IP 地址冲突 当两台设备都扮演 DHCP 服务器时&#xff0c;它们会分别为主…...

Golang的缓存一致性策略

Golang的缓存一致性策略 一致性哈希算法 在Golang中&#xff0c;缓存一致性策略通常使用一致性哈希算法来实现。一致性哈希算法能够有效地解决缓存节点的动态扩容、缩容时数据重新分布的问题&#xff0c;同时能够保证数据访问的均衡性。 一致性哈希算法的核心思想是将节点的哈希…...

Java-创建一个结合CompletableFuture和自定义功能的工具类

1.重试机制:当异步任务失败时自动重试。 2.超时重试:在指定时间内未完成的任务进行重试。 3.批量处理:将多个任务批量执行并收集结果。 4.日志记录:为每个异步任务添加日志记录,便于调试和监控。 5.自定义线程池:允许用户传入自定义的线程池配置。 import java.util…...

微机——计算机中的数制

目录 数制转换&#xff1a; 十进制数转为非十进制数&#xff1a; 二、八、十六进制数之间的转换&#xff1a; 数及字符的表示&#xff1a; 二进制数的加减运算&#xff1a; 无符号数的运算&#xff1a; 带符号数运算中的溢出问题&#xff1a; 计算机中常用的编码&#…...

DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC Klocwork等SAST工具应用

DevSecOps自动化对于安全关键型软件开发至关重要。 那么&#xff0c;什么是DevSecOps自动化&#xff1f;具有哪些优势&#xff1f;为何助力安全关键型软件开发&#xff1f;让我们一起来深入了解~ 什么是DevSecOps自动化&#xff1f; DevSecOps自动化是指在软件开发生命周期的各…...

Linux下部署ElasticSearch集群

Elasticsearch7.17.8集群的搭建 节点host名称节点ip节点部署内容k8s-m192.168.40.142主节点 数据节点k8s-w1192.168.40.141主节点 数据节点k8s-w2192.168.40.140数据节点 一、准备安装环境 1.下载安装包 官网 www.elastic.co 下载所有版本地址 点击跳转 下载elasticsearch-7.…...

杰盛微 JSM4056 1000mA单节锂电池充电器芯片 ESOP8封装

JSM4056 1000mA单节锂电池充电器芯片 JSM4056是一款单节锂离子电池恒流/恒压线性充电器&#xff0c;简单的外部应用电路非常适合便携式设备应用&#xff0c;适合USB电源和适配器电源工作&#xff0c;内部采用防倒充电路&#xff0c;不需要外部隔离二极管。热反馈可对充电电流进…...

kubernetes学习-kubectl命令、探针(二)

一、在任意节点使用 kubectl # 在master节点获取节点信息 [rootk8s-master k8s]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 16h v1.23.6 k8s-node1 Ready <none> …...

多组学破解雪域雄鸡的高原缺氧适应机制

藏鸡‌是一种原产于中国青藏高原的鸡种&#xff0c;主要分布在海拔2200-4100米的河谷区和高山峡谷区。它们适应高海拔和寒冷的气候条件&#xff0c;能够在恶劣的环境中生存和繁殖‌。本研究主要关注高原藏鸡适应高原缺氧环境的机制&#xff0c;通过宏转录组测序和代谢组结果的联…...

Kubernetes Gateway API-3-TLS配置

1 简介 Gateway API 允许使用多种方式配置 TLS。本文档列出了各种TLS设置,并给出了如何有效使用它们的一般指南。 尽管本文档涵盖了 Gateway API 最常见的TLS配置形式,但某些实现也可能提供特定于实现的扩展,允许不同或更高级形式的TLS配置。除此文档外,值得阅读你所使用…...

C++ 中如何优雅地返回一个递归闭包函数?

在刷Leetcode时&#xff0c;我遇到了一道题目&#xff08;详见Leetcode 第426场周赛分析总结Q3&#xff09;&#xff0c;需要对两棵树建图&#xff0c;然后以每个节点作为根节点进行DFS遍历。一般的实现方法是将重复的逻辑封装起来&#xff0c;写两个函数&#xff0c;一个负责建…...

dockerignore文件怎么写

.dockerignore 文件是一个文本文件&#xff0c;告诉 Docker 在构建镜像时应该忽略哪些文件或目录。这个文件的作用类似于 .gitignore&#xff0c;用于排除不需要包含在 Docker 镜像中的文件或目录&#xff0c;以减少镜像的大小和提高构建速度。 .dockerignore 文件的格式 每行…...

利用 AI 高效生成思维导图的简单实用方法

#工作记录 适用于不支持直接生成思维导图的AI工具&#xff1b;适用于AI生成后不能再次编辑的思维导图。 在日常的学习、工作以及知识整理过程中&#xff0c;思维导图是一种非常实用的工具&#xff0c;能够帮助我们清晰地梳理思路、归纳要点。而借助 AI 的强大能力&#xff0c…...

SpringMVC(一)配置

目录 引入 第一章&#xff1a;Java web的发展历史 一、Model I和Model II 1.Model I开发模式 2.Model II开发模式 二. MVC模式 第二章&#xff1a;SpringMVC的入门案例 搭建SpringMVC的入门程序 1.创建新项目 2.等待加载导入坐标 3.处理xml文件和其他 导入tomcat 运…...

Vue3苦逼的学习之路

从一名测试转战到全栈是否可以自学做到&#xff0c;很多朋友肯定会说不可能&#xff0c;或就算转了也是个一般水平&#xff0c;我很认同&#xff0c;毕竟没有经过各种项目的摧残&#xff0c;但是还是得踏足一下这个领域。所以今天和大家分享vue3中的相关内容&#xff0c;大佬勿…...

github提交不上去,网络超时问题解决

问题出现的原因&#xff1a; DNS服务器数据不同步&#xff0c;github的服务器发送迁移&#xff0c;在本地缓存的ip地址现在无效了。 解决方案&#xff1a; 1&#xff09;点击这里&#xff0c;查询github.com最新的ip地址 2.0&#xff09;编辑linux系统地址缓存文件&#x…...

SAP物料主数据界面增加客制化字段、客制化页签的方式

文章目录 前言一、不增加页签&#xff0c;只增加客制化字段二、增加物料主数据页签 前言 【SAP系统MM模块研究】 #SAP #MM #物料 #客制化 #物料主数据 项目上难免会遇到客户要在物料主数据的界面上&#xff0c;增加新字段的需求。 实现方式有&#xff1a; &#xff08;1&…...

56.在 Vue 3 中使用 OpenLayers 通过 moveend 事件获取地图左上和右下的坐标信息

前言 在现代 Web 开发中&#xff0c;地图应用越来越成为重要的组成部分。OpenLayers 是一个功能强大的 JavaScript 地图库&#xff0c;它提供了丰富的地图交互和操作功能&#xff0c;而 Vue 3 是当前流行的前端框架之一。在本篇文章中&#xff0c;我们将介绍如何在 Vue 3 中集…...

DDoS攻击防御方案大全

1. 引言 随着互联网的迅猛发展&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击成为了网络安全领域中最常见且危害严重的攻击方式之一。DDoS攻击通过向目标网络或服务发送大量流量&#xff0c;导致服务器过载&#xff0c;最终使其无法响应合法用户的请求。本文将深…...

OLED的显示

一、I2C I2C时序&#xff1a;时钟线SCL高电平下&#xff1a;SDA由高变低代表启动信号&#xff0c;开始发送数据&#xff1b;SCL高电平时&#xff0c;数据稳定&#xff0c;数据可以被读走&#xff0c;开始进行读操作&#xff0c;SCL低电平时&#xff0c;数据发生改变&#xff1…...

BP神经网络的反向传播算法

BP神经网络&#xff08;Backpropagation Neural Network&#xff09;是一种常用的多层前馈神经网络&#xff0c;通过反向传播算法进行训练。反向传播算法的核心思想是通过计算损失函数对每个权重的偏导数&#xff0c;从而调整权重&#xff0c;使得网络的预测输出与真实输出之间…...

CS·GO搬砖流程详细版

说简单点&#xff0c;就是Steam买了然后BUFF上卖&#xff0c;或许大家都知道这点&#xff0c;但就是一些操作和细节问题没那么明白。我相信&#xff0c;你看完这篇文章以后&#xff0c;至少会有新的认知。 好吧&#xff0c;废话少说&#xff0c;直接上实操&#xff01; 首先准…...

ElasticSearch系列(一)

一.了解ES、倒排索引、es的一些概念、安装es、kibana 二.DSL&#xff1b;索引库操作 三.Java RestClient&#xff1a;索引库操作 一、了解ES、倒排索引、es的一些概念、安装es、kibana kibana、logstash、beats Elasticserach 存储&#xff0c;计算 &#xff0c;搜索数据 –…...

vue字符串的数字比较大小有问题

问题代码 this.money 9999 //支付金额this.balance 678 //余额if (this.money > this.balance) {this.$message(余额不足&#xff0c;请更换支付方式);}问题原因 this.money和 this.balance不是数值类型而是字符串类型 解决方案 使用parseFloat将变量转换成统一的类…...

Java:缓存:LinkedHashMap实现Lru

文章目录 Lru源码分析 ​​​​​​​​​​​​​​LinkedHashMap维护一个LinkedHashMapEntry<K,V>的双向链表对LinkedHashMap的增删查操作,也会对链表进行相同的操作并改变链表的链接顺序小结使用方法​​​​​​​​​​​​​​应用总结Lru Least Recently Used,…...

Jetpack Compose 学习笔记(一)—— 快速上手

本篇主要是对 Jetpack Compose 有一个宏观上的了解。 1、Jetpack Compose 是什么与优势 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 Compose 的优势&am…...

【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 2 今天是 7 天AI 大模型学习的第二天 &#x1f604;&#xff0c;今天我将会学习 Transformer 、Encoder-based and Decoder-Based LLMs 等 。如果有感兴趣的&#xff0c;就和我一起开始吧 &#xff5e; 课程链接 &#xff1a;2025年快速吃透AI大模型&am…...

JVM对象创建过程

1 类加载检查 jvm通过new指令开始创建对象jvm执行new指令时&#xff0c;首先通过指令参数从常量池中取到需要创建的类名检查该类是否被加载&#xff0c;解析&#xff0c;和初始化过如果没有&#xff0c;则执行类的加载过程new指令对应到java语言具体的操作为 new 关键字创建对象…...

OSPF - SPF算法简述

SPF全称最短路径树算法&#xff0c;相信学过数据结构朋友应该看起来很熟悉  在一个区域内的路由器都会产生描述自己网络连接信息的LSA&#xff0c;包括两种信息&#xff0c;有路由信息和拓扑信息&#xff0c;简单的来说拓扑信息就是我连着谁&#xff0c;路由信息就是链路的地址…...

[实用指南]如何将视频从iPhone传输到iPad

概括 将视频从 iPhone 传输到 iPad 时遇到问题&#xff1f;您可能知道一种方法&#xff0c;但不知道如何操作。此外&#xff0c;您要传输的视频越大&#xff0c;完成任务就越困难。那么如何将视频从 iPhone 传输到 iPad&#xff0c;特别是当您需要发送大视频文件时&#xff1f…...

如何二次封装组件(vue3版本)

在开发 Vue 项目中我们一般使用第三方组件库进行开发&#xff0c;如 Element-Plus, 但是这些组件库提供的组件并不一定满足我们的需求&#xff0c;这时我们可以通过对组件库的组件进行二次封装&#xff0c;来满足我们特殊的需求。 对于封装组件有一个大原则就是我们应该尽量保…...

基于XGBoost算法的集成学习

目录 一、XGBoost原理1.1 提升方法&#xff08;Boosting&#xff09;1.2 提升决策树 &#xff08;BDT&#xff09;1.3 梯度提升决策树 &#xff08;GBDT&#xff09;1.4 极限梯度提升&#xff08;XGBoost&#xff09;1.4.1 XGBoost改进1.4.2 XGBoostcsklearn实现1.4.3 XGBoost回…...

数据库系列之分布式数据库下误删表怎么恢复?

数据的完整性是数据库可用性的基本功能&#xff0c;在实际应用数据库变更操作过程中可能因为误操作导致误删表或者truncate操作影响业务的正常访问。本文介绍了分布式数据库中在误删表场景下的数据恢复方案&#xff0c;并进行了对比。 1、数据库误删表恢复方案 应用数据的完整…...

Beamer-LaTeX学习(教程批注版)【1】

该文档总体由beamer-latex的教程而来&#xff0c;由耳东小白以自身学习路径整理。因其中要点基本按照教程的顺序和结构整理&#xff0c;故而不能称之为完全原创&#xff0c;但也不是翻译&#xff0c;更不是抄袭&#xff0c;是个人自学笔记和批注&#xff0c;其中添加了小白个人…...

数据挖掘——关联规则挖掘

数据挖掘——关联数据挖掘 关联数据挖掘关联规则关联规则挖掘问题&#xff1a;具体挖掘过程Apriori 产生关联规则 关联数据挖掘 关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系&#xff0c;所发现的模式通常用关联规则或频繁项集的形式表示。 关联规则反映一个事物与…...

六种主流服务器的选择与使用

网络的运行离不开各种服务器&#xff0c;它们各司其职&#xff0c;为我们提供稳定的网络服务。本文带大家了解6种常见服务器类型。 服务器的六大种类 第一种&#xff1a;Web服务器 Web服务器是互联网的核心。当你打开一个网站&#xff0c;比如百度或淘宝&#xff0c;浏览器会…...

springboot3 redis 常用操作工具类

在 Spring Boot 3 中&#xff0c;操作 Redis 通常使用 Spring Data Redis 提供的工具类&#xff0c;如 RedisTemplate 和 StringRedisTemplate。以下是一个详细的 Redis 操作工具类的实现&#xff0c;涵盖了常用功能。 完整的 Redis 工具类 以下工具类可以实现基本的 Redis 操…...

OJ随机链表的复制题目分析

题目内容&#xff1a; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 分析&#xff1a; 这道题目&#xff0c;第一眼感觉非常乱&#xff0c;这是正常的&#xff0c;但是我们经过仔细分析示例明白后&#xff0c;其实也并不是那么难。现在让我们一起来分析分析…...

如何不修改模型参数来强化大语言模型 (LLM) 能力?

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 大语言模型 (Large Language Model, LLM, e.g. ChatGPT) 的参数量少则几十亿&#xff0c;多则上千亿&#xff0c;对其的训…...

Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)

参考文章 penHarmony南向开发笔记&#xff08;一&#xff09;开发环境搭建 OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——标准系统移植指南&#xff08;一&#xff09; OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——小型系统芯片移植指南&#xff08;二&…...

Qemu配置QXL显卡支持分辨率

默认情况下&#xff0c;创建的vm的视频RAM限制为16MB。在win操作系统中分辨率最高就只能调到1024x768。 <video><model typecirrus vram16384 heads1 primaryyes/><address typepci domain0x0000 bus0x00 slot0x02 function0x0/> </video>单单修改ram…...

Hack The Box-Starting Point系列Three

答案 How many TCP ports are open?&#xff08;靶机开了几个TCP端口&#xff09; 2What is the domain of the email address provided in the “Contact” section of the website?&#xff08;网站的“CONTACT”部分提供的电子邮件地址的域是什么&#xff1f;&#xff09…...

人工智能-Python多任务编程-进程、线程

多任务的实现方式 多进程 多线程 1 多任务的两种表现形式 并发: 在一段时间内交替去执行多个任务&#xff08;任务数大于CPU核心数&#xff09;并行: 在一段时间内真正的同时一起执行多个任务&#xff08;任务数小于等于CPU核心数&#xff09; 2 进程 进程&#xff08;Proc…...

智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之9 重新开始 之2

本文要点 对程序设计而言&#xff1a;前者基于一个自上而下的 分类体系--&#xff08;生物遗传基因&#xff09;&#xff0c;后者者需要一个收集差异的自下而上的差异继承路径--&#xff08;系统继承源流&#xff09; 就是 广义和狭义 分类学。 共性对齐 和 差异收集 正是两者…...

Postman[7] 内置动态参数及自定义的动态参数

postman 内置动态参数和自定义的动态参数 1.内置动态参数 格式&#xff1a;{{$参数名}} 1.1时间戳 {{$timestamp}} //生成当前时间的时间戳 1.2随机整数 {{$randomint}} //生成0-1000之间的随机数 1.3GUID字符串 {{$guid}} //生成随机GUID字符串 2.自定义动态参数 格式…...

04-c++类和对象(下)

一、友元 前面学习的类中&#xff0c;只能通过该类的公共方法访问私有数据。而如果将某个函数设置为类的友元&#xff0c;那么这个函数就可以直接访问该类的私有数据&#xff0c;破坏了类的封装性&#xff0c;只在某些特定的情况下使用。 友元的分类&#xff1a;普通全局函数…...

《解密奖励函数:引导智能体走向最优策略》

在强化学习领域&#xff0c;奖励函数是核心要素&#xff0c;它决定了智能体如何学习和决策。设计一个恰当的奖励函数&#xff0c;能让智能体在复杂环境中不断探索、优化&#xff0c;最终实现最优策略。 奖励函数的重要性 奖励函数就像是一个引导者&#xff0c;它告诉智能体什…...

AF3 AtomAttentionEncoder类的init_pair_repr方法解读

AlphaFold3 的 AtomAttentionEncoder 类中,init_pair_repr 方法方法负责为原子之间的关系计算成对表示(pair representation),这是原子转变器(atom transformer)模型的关键组成部分,直接影响对蛋白质/分子相互作用的建模。 init_pair_repr源代码: def init_pair_repr(…...