- 浏览: 279581 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (161)
- 【**计划】 (2)
- 【**Core Java**】 (30)
- 【**JAVA EE】 (6)
- JDBC (3)
- Hibernate专题系列 (0)
- 【**OS】 (14)
- 【**架构设计/设计模式】 (11)
- 【Hadoop】 (3)
- 【**分布式】 (9)
- 模板 (1)
- C (2)
- 常用工具 (1)
- Oracle (2)
- 【Tips】 (3)
- 【数据库】 (2)
- 玩转Ubuntu (0)
- 【计算机网络/网络编程】 (7)
- 【**Search Engine】 (21)
- 【**专题**】 (6)
- 【**Python】 (10)
- XML (1)
- 【**Open Source Framework】 (1)
- 【高级主题】 (1)
- 【存储】 (3)
- 【笔试面试】 (2)
- 【**数据结构与算法设计】 (20)
- 【其他】 (3)
- 【编程练习】 (2)
- 【待完成】 (12)
- 【工作】 (6)
- 【软件研发】 (4)
- 【**多线程多进程编程】 (5)
- 【Web Service】 (1)
- 【表达式解析/JavaCC系列】 (5)
- 【缓存系统:Memcached】 (1)
- 【Java IO/NIO】 (5)
- 【JVM运行机制及内存管理】 (7)
最新评论
-
107x:
...
python list排序 -
yuzhu223:
...
【Python基础】Python的lambda函数与排序 -
Tonyguxu:
分析查询结果的打分小于11.query=1065800715* ...
lucene打分机制的研究 -
Tonyguxu:
query=139320661963.013709 = (MA ...
lucene打分机制的研究 -
Tonyguxu:
query=10658007150.6772446 = (MA ...
lucene打分机制的研究
注:学习了《编程珠矶》第一章,将涉及的一些知识点整理如下
value-->index 将某个数转化为位图的索引,如要表示value=2,即将位图index=2上的value赋为1(00100000.。。)
位图数据结构
~位反
<< 位左移
>> 位右移
& 位与 : 同为1(真)为1
| 位或 :只要有一个为1(真)则为1
^ 位异或 :1 和 0为1
0,1 | 1 = 1,1 ==> 或1,都成1
0,1 | 0 = 0,1
0,1 & 1 = 0,1
0,1 & 0 = 0,0 ==> 与0,都成0
0,1 ^ 1 = 1,0 ==> 异或1,变反
0,1 ^ 0 = 0,1
掩码
掩码在计算机学科及数字逻辑中指的是一串二进制数字,通过与目标数字的按位操作,达到屏蔽指定位而实现需求。
示例:创造一个掩码msk把一个指令cmd的第0~3位(右边第一位为0位)清零:
指令 cmd = 0110011011
创造掩码 msk = 0000001111
用掩码的反码~msk和指令cmd做按位与运算 cmd & ~msk = 0110011011 & 1111110000 = 0110010000则指定的第0~3位已被清零。
示例:创造一个掩码msk把一个指令cmd的第0~3位(右边第一位为0位)清零:
指令 cmd = 0110011011
创造掩码 msk = 0000001111
用掩码的反码~msk和指令cmd做按位与运算 cmd & ~msk = 0110011011 & 1111110000 = 0110010000则指定的第0~3位已被清零。
#define BITS_PER_BYTE 8 #define BITS_PER_INT (BITS_PER_BYTE * 4) // set the bit of the int specified by index to 1. // the index is zero-based, counting from the left(the higher end) inline void pearl_int_set(int* data, int index) { int mask = 1 << (BITS_PER_INT - 1 - index); *data |= mask; } // test whether a bit of the int specified by index is 1. // the index is zero-based, counting from the left(the higher end) inline int pearl_int_test(int* data, int index) { int mask = 1 << (BITS_PER_INT - 1 - index); return (*data) & mask; } // set a bit of the int specified by bit_index to 0. // the index is zero-based, counting from the left(the higher end) inline void pearl_int_clear(int *data, int bit_index) { int mask = ~(1 << (BITS_PER_INT - 1 - bit_index)); *data &= mask; } // get the right(lower) part of the int. inline int pearl_int_right(int *data, int count) { int mask = 1; while(count > 0) { mask = mask << 1 + 1; } return *data & mask; } // get the left(upper) part of the int value inline int pearl_int_left(int *data, int count) { int mask = 1; count = BITS_PER_BYTE - count; while (count > 0) { mask = mask << 1 + 1; } mask = ~mask; return *data & mask; } // set a bit of the speicified memory area to 1. // @warning this function does NOT perform error checking. inline void pearl_set(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; pearl_int_set(bitplane + offset, pos); } // set a bit of the specified memory area to 0. // @warning this function does NOT perform error checking. inline void pearl_clear(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; pearl_int_clear(bitplane + offset, pos); } // test if a bit of the specified memory area is 1. // @warning this function does NOT perform error checking. inline int pearl_test(int *bitplane, int index) { int offset = index / BITS_PER_INT; int pos = index - offset * BITS_PER_INT; return pearl_int_test(bitplane + offset, pos); }
如果待排序数据都在内存中
发表评论
-
LRU算法介绍
2012-06-05 22:30 3757问题背景 在操作系统的内存管理里,如何节省有限的内存并为尽可 ... -
数据结构之位图bitmap
2012-05-10 23:12 0http://dongxicheng.org/structur ... -
常见数据结构与算法汇总
2012-05-10 23:01 11111、常见数据结构 线性:数组,链表,队列, ... -
数据结构之位图
2012-05-10 18:34 5667介绍 (20120511)位图就是通过将数组下标与应用中 ... -
CRC循环校验
2012-05-10 15:11 1373http://www.360doc.com/content/1 ... -
map3搜索与存储的一道面试题
2012-05-10 15:10 929假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些 ... -
字符串匹配算法——Edit distance
2012-05-09 11:20 2556如何比较两个字符串之间的相似程度(或者差异)? 想要比较 ... -
排序算法
2012-04-21 23:06 698插入排序 shell排序 ... -
WXXR LRUList的实现
2012-03-01 16:01 778LRUList -
【专题】分治递归+排序算法
2012-03-01 11:47 742123 -
【排序】merge排序
2012-02-28 09:59 905前言 主要学习 http://en.wikipedia.or ... -
【排序】快速排序
2012-02-27 18:40 943前言 快速排序(Quick Sort)算法是 “递归+分治” ... -
算法类博客推荐
2012-02-24 18:17 6571. http://blog.csdn.net/v_J ... -
递归与分治
2012-02-24 18:16 1010分治与递归基本思想 分治:分治强调“分 ... -
Apache LRUMap实现
2012-02-23 13:10 1126源码是 org.apache.commons.collect ... -
WXXR LRUMap的实现
2012-02-22 18:33 1890前言 实现LRU算法,注意观察者模式、并发(读写锁、线程池) ... -
【专题】LRU
2012-02-22 16:21 1533包含如下内容: 一. LRU算法 ht ... -
LRU理论
2012-02-21 18:46 10411.LRU算法介绍 LRU是Least Rec ... -
【排序算法】冒泡排序(bubble sort)
2012-02-19 12:16 0问题描述 将一组乱序的整形按照由小到大排序 算法思路 经 ... -
【Core Java】并发集合
2012-02-02 17:05 1142并发容器与同步容器 ...
相关推荐
《编程珠矶算法》系列电子书籍,如同一把钥匙,开启算法知识宝库的大门,使读者能深入探索并掌握各类算法,为编程技能的提升奠定坚实基础。 系列书籍的第一本,开篇即对算法的基础知识进行了全面的介绍。排序与搜索...
综上所述,文章《基于问题求解的C语言开篇教学研究》针对C语言开篇教学中常存在的问题,提出了一套以培养问题求解能力为核心的教学目标体系和教学方法,强调在教学过程中应注重问题的提出、分析、模型建立和编程实现...
- **思维陷阱**:本章首先提出了一个关于排序的具体问题,但通过这一问题引出了更深层次的概念——在解决问题之前,必须先明确问题本身。很多人往往急于寻找解决方案,而忽略了问题定义的重要性。 - **问题描述**:...
在计算机网络编程领域,Unix系统无疑占据着举足轻重的地位。...这套书为程序员打开了一扇通向网络编程世界的大门,让读者能够在实际开发中游刃有余地处理各种网络编程问题,构建出高效、可靠的网络应用程序。
【C#编程自学之开篇介绍】 C#是一种由微软公司开发的面向对象的编程语言,专门为.NET框架设计。它的诞生吸收了C++和Java的精髓,并结合了VB6的某些特性,使得C#成为了一种高效且易于管理的编程语言。C#的关键优势...
第1章 开篇 3 1.1 一次友好的对话 3 1.2 准确的问题描述 4 1.3 程序设计 4 1.4 实现概要 5 1.5 原理 6 1.6 习题 7 1.7 深入阅读 9 第2章 啊哈! 算法 11 2.1 三个问题 11 2.2 无处不在的二分搜索 12 2.3 ...
《C/C++高质量编程指南》的开篇“文件结构”部分,便着重于这个方面。作者指出,良好的文件结构不仅有助于单个开发者的项目维护,更能在团队协作中发挥重大作用。例如,源代码文件的命名、存放方式以及头文件与定义...
开篇题为“斐波那契数列与兔子繁殖问题”,这个经典的问题不仅考验了对递归和循环的理解,也是对数据结构掌握的初步检验。在编程实现时,我们往往会选择使用数组来存储中间结果,或是利用递归方法来简化问题。无论是...
最后,手册还可能提供了关于软件的常见问题解答、故障排除以及最佳实践的建议,帮助用户快速解决在编程或操作过程中可能遇到的问题,提高工作效率。 由于内容中提供的文本片段存在一些识别错误和不连贯之处,以上...
此外,作者还对UNIX标准以及64位架构下的网络编程问题进行了讨论,这不仅是对基础概念的深入,也为读者在未来面对不同架构下的编程挑战时提供了理论基础。 在网络编程的基础概念章节,作者精心梳理了协议独立性、...
《王大刚 C语言编程宝典》是一本全面而深入的编程教材,由IT领域内知名的作者王大刚所著,旨在为不同层次的读者提供C语言编程的知识和技能。作为一本学习指南,它不仅仅适合编程新手,同时也为经验丰富的程序员提供...
《编程珠玑(第2版·修订版)》是一本...这本书通过丰富的习题和深入阅读推荐,鼓励读者实践和探索,旨在提升程序员对复杂编程问题的理解和解决能力,无论对于初学者还是经验丰富的开发者,都是极有价值的参考资料。
文章开篇就强调了选择合适编程语言的重要性。对于初学者而言,C和C++无疑是游戏开发中的主流语言,但其复杂性可能会令新手望而却步。然而,这两种语言之所以被广泛推荐,不仅是因为它们在游戏开发中的重要地位,更是...
这些内容将帮助读者在面对编程难题时,能够有效地定位和解决问题。 为了让读者更好地理解和实践所学知识,《UNIX环境高级编程》中附带了大量实例代码。这些代码涉及书中的各个方面,不仅对理论知识进行了有效的补充...
针对上述问题描述,作者探讨了几种可能的排序方法,如基于磁盘的归并排序和多趟排序等。然而,这些方法在实际应用中面临内存不足的问题。作者最终认为,只有当所有整数都可以在可用的 1 MB 内存中表示时才能实现有效...
FAGOR数控系统内置PLCI编程手册是一份关于FAGOR数控系统中内置PLCI(可编程逻辑控制器集成)模块的编程指南。这份手册详细介绍了如何使用PLCI进行编程,包括基础知识、信号处理、程序编辑以及PLCI与数控系统CNC之间的...
本章不仅详细介绍了这些工具类的功能和用途,还提供了一系列实用的例子,帮助读者理解如何利用这些工具来解决常见的并发编程问题。这些工具类的应用范围广泛,从简单的计数器到复杂的协作模式都有涉及。 #### 九、...
接着,配置ATEQ设备的详细步骤被逐一展开,包括如何设定设备为从属模式、设置RS232通信模式、分配唯一的站号以及选择合适的通信速率和奇偶校验方式,都是确保设备能够与外部系统正确通讯的关键要素。 作为Modbus ...