了解位图

几周前,我和Alistair一起研究了用于对Neo4j数据库中节点已附加到其上的标签进行建模的代码。

这种工作方式是将32个节点ID的块表示为每个标签的32位位图 ,其中位1表示节点具有标签,而0表示没有标签。

例如,假设我们有节点ID 0-31,其中0是最高位,而31是最低位。 如果只有节点0具有标签,则将其表示为以下值:

java> int bitmap = 1 << 31;
int bitmap = -2147483648

如果我们想象32位彼此相邻放置,它将看起来像这样 :

2014-01-12_15-45-16

java> 0X80000000;
Integer res16 = -2147483648

我们要做的下一件事是确定节点是否应用了标签。 我们可以通过按位与来实现。

例如,要检查是否设置了最高位,我们将编写以下代码:

java> bitmap & (1 << 31);
Integer res10 = -2147483648

正如我们所想象的那样。 现在让我们检查一下一些我们尚未设置的位:

java> bitmap & (1 << 0);
Integer res11 = 0java> bitmap & (1 << 1);
Integer res12 = 0java> bitmap & (1 << 30);
Integer res13 = 0

我们可能要执行的另一项操作是在现有位图上设置另一位,我们可以对其使用按位“或”运算。

按位“或”或“或”表示如果一个值设置了该位或两个值都设置了,则将置位。

让我们设置第二高的位。 并可视化该计算:

2014-01-12_15-45-161

如果我们评估,我们期望设置两个最高位:

java> bitmap |= (1 << 30);
Integer res14 = -1073741824

现在,如果我们可视化位图,我们将看到确实如此:

2014-01-12_17-16-21

java> 0XC0000000;
Integer res15 = -1073741824

我们要执行的下一个操作是取消设置已经设置的位,可以使用按位异或。

异或表示只有在计算中包含(0和1)或(1和0)的组合时,该位才保持设置。 如果有两个1或2 0,那么它将被取消设置。

让我们取消设置第二高的位,以便仅设置最高位。

如果我们直观地看到,我们将进行以下计算:

2014-01-12_17-33-21

并且如果我们评估返回到原始位图:

java> bitmap ^= (1 << 30);
Integer res2 = -2147483648

我使用Java REPL评估了本文中的代码示例,并且本文非常清楚地解释了移位运算符 。

这篇文章中描述的Neo4j版本的位图位于github上的BitmapFormat类中。

参考:在Mark Needham博客博客中,从我们的JCG合作伙伴 Mark Needham 了解位图 。

翻译自: https://www.javacodegeeks.com/2014/01/learning-about-bitmaps.html

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

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

相关文章

centos7输入法,非root用户无法使用

背景&#xff1a; 1. centos7安装完了输入法之后&#xff0c;root账号能正常使用&#xff0c;但是非root账号始终无法使用中文 解决方案&#xff1a;   1. 登录非root账号&#xff0c;编译家目录的隐藏文件.bash_profile  export GTK_IM_MODULEibus  export XMODIFIERSim…

服务器旧图片维护,图片服务器

注意&#xff1a;AKCMS已于2019年12月27日宣布停止更新&#xff0c;此文档仅供老用户参考&#xff0c;不建议新用户选择AKCMS建站。注意&#xff1a;AKCMS6.1.2已取消授权机制&#xff0c;文档中关于授权、服务、技术支持等的内容均已失效。3.9.4版本起&#xff0c;增加了图床功…

各种说明方法的答题格式_语文万能答题公式,给孩子收藏吧!

1、某句话在文中的作用1、文首&#xff1a;开篇点题&#xff1b;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c;设置悬念(小说)&#xff0c;为下文作辅垫&#xff1b;总领下文&#xff1b;2、文中&#xff1a;承上启下&#xff1b;总领下文&#xff1b;总结上文&…

pr文字转语音有插件吗_文字转语音软件深度解析

网络时代的迅猛发展&#xff0c;丰富了我们的眼见&#xff0c;便利了我们的生活&#xff0c;升华了我们的素养。那你知道近年来配音行业的迅速崛起吗&#xff1f;视频配音&#xff0c;广告配音&#xff0c;小视频配音等等&#xff0c;其实配音处处都陪伴在我们身边&#xff0c;…

装饰图案

装饰图案 我不经常使用的一种设计模式是Decorator 。 我不确定为什么这种模式不受欢迎&#xff0c;因为它很方便。 装饰器模式允许以受控方式向对象添加功能。 即使在使用静态类型的语言时&#xff0c;也可以在运行时运行&#xff01; 装饰器模式是子类的替代方法。 子类化在编…

Webpack - 自学笔记

webpack 4第1课 概念1 模块化工具 构建工具 打包工具2 webpack把所有的东西打包成js文件&#xff0c;压缩图片&#xff0c;把sass生成css,3 热加载4 自己有服务器第2课 安装1 先安装NodeJS node --version2 换成淘宝镜像 npm install -g cnpm --registryhttps://registry.np…

Neural Networks

神经网络能够使用torch.nn包构建神经网络。 现在你已经对autogard有了初步的了解&#xff0c;nn基于autograd来定义模型并进行微分。一个nn.Module包含层&#xff0c;和一个forward(input)方法并返回output。 以如下分类数字图片的网络所示&#xff1a; 这是一个简单的前馈网络…

文件服务器磁盘配额管理,Windows2008 (FSRM)文件服务器资源管理器网站文件夹磁盘配额管理...

在windows server里提供了一个功能强大的管理工具&#xff0c;就是文件服务器资源管理器。简称FSRM(File Server Resource Manager)通过此工具&#xff0c;可能对网站进去配额以及相关服务。我们通过使用FSRM&#xff0c;可以为文件夹和卷设置配额&#xff0c;主动屏蔽文件&…

python读取hdf5文件_Python处理HDF5文件

笔记地址&#xff1a;有道云笔记 h5py 的安装 pip install h5py 读取 H5 文件 import h5py import numpy as np # 打开文件 f h5py.File(test-dev.h5, r) H5 中的group可以类比为字典&#xff0c;因此我们可以用keys()来获取键值。 >>> f.keys() [umy_xmax, umy_xmin…

数据分析sql面试必会6题经典_面试数据分析会遇到的SQL题

「1」说在前面数据存放在数据库里&#xff0c;以表的形式分门别类。宜家的商品(数据)放在宜家的仓库(数据库)里&#xff0c;以货位的形式分门别类。在宜家&#xff0c;可以通过商品上的编号&#xff0c;查到商品在仓库的排号和位号&#xff0c;取到商品。SQL 语言是一种通用的数…

Hibernate 4.3 ORM工具

Hibernate最近发布了Hibernate ORM 4.3的最终版本&#xff0c;它是一个基于Java的ORM框架&#xff0c;它还支持存储过程和实体图。 发行了ORM Tool Hibernate 4.3&#xff0c;实现了JPA 2.1规范&#xff0c;引入了该发行版的主要功能&#xff0c;简而言之&#xff1a; 支持在提…

301、404、200、304、500HTTP状态

一些常见的状态码为&#xff1a; 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表。点击链接可了解详情。您也可以访问 HTTP 状态码上的 W3C 页获取更多信息。 一、临时响应  1xx(临时响应) 表示临时响应并需要请求者继续…

SpringBoot项目中,获取配置文件信息

1.在配置文件中设置信息&#xff0c;格式如下 wechat:mpAppId: wxdf2b09f280e6e6e2mpAppSecret: f924b2e9f140ac98f9cb5317a8951c71 如果是多级目录&#xff0c;则 project:url:sell: http://localhost:8080 2.获取配置文件信息&#xff08;三种方法&#xff09; 2.1Configurat…

ajax环境配置tomcat,jcreator+tomcat环境配置

有的时候因为机器硬件原因&#xff0c;在使用eclipse的时候明显表现不足&#xff0c;其实&#xff0c;仔细想想&#xff0c;我们做web开发的时候&#xff0c;java方面也就是一些非gui类的开发&#xff0c;比如&#xff1a;action&#xff0c;service&#xff0c;dao等等。这样的…

oppo 手机侧滑快捷菜单_OPPO刚秀出卷轴屏手机,就被打了一记响亮的“耳光”

在刚刚过去的未来科技大会上&#xff0c;我国国产手机厂商 oppo可谓是出尽了风头&#xff0c;因为他们推出一款名叫“OPPO X 2021”的卷轴屏概念手机&#xff0c;并且展出了可操作的概念机实物&#xff0c;着实让所有人都惊艳了一把。因此我国的一些自媒体又嗨了&#xff0c;用…

python爬取会议论文pdf_【python2.7】爬取知网论文

# -*- coding: utf-8 -*-import timeimport urllibimport urllib2import cookielibfrom lxml import etreeimport random爬取第一页&#xff0c;获取共页数爬取第二页至最后一页# 下载当前页所有文章的pdf或cajdef download_paper(treedata, opener, localdir):传入参数&#x…

活性卡桑德拉

或是冒险从Cassandra被动地读取数据。 总览 让我们首先尝试从编程的角度定义什么是反应性。 功能反应式编程是使用功能性编程的构建块进行反应式编程的编程范例。 函数式编程是一种编程范例&#xff0c;是一种构建计算机程序的结构和元素的样式&#xff0c;这种处理将计算视…

UVA1602 Lattice Animals 搜索+剪枝

题目大意 给出一个$w\times h$的网格&#xff0c;定义一个连通块为一个元素个数为$n$的方格的集合$A,\forall x\in A, \exists y\in A$&#xff0c;使得$x,y$有一条公共边。现要求一个元素个数极多的连通块的集合$K_N$&#xff0c;使得$\forall A,B\in K_n$&#xff0c;不存在一…

js 停止事件冒泡 阻止浏览器的默认行为

在前端开发工作中&#xff0c;由于浏览器兼容性等问题&#xff0c;我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。 浏览器默认行为&#xff1a; 在form中按回车键就会提交表单&#xff1b;单击鼠标右键就会弹出context menu. a标签 1..停止事件冒泡 JavaScrip…

魔域传说显示与服务器断开连接,《魔域传说》合服公告

8月2日合服公告亲爱的勇士&#xff0c;为了给大家提供更加优质的游戏体验&#xff0c;《魔域传说》将于2021年8月2日14:00对部分服务器进行合服维护&#xff0c;维护时长预计3小时&#xff0c;维护完成时间视维护情况可能提前或延后&#xff0c;在维护期间将不能登陆服务器&…