- 博客(24)
- 资源 (14)
- 收藏
- 关注
转载 lucene 简单 对象查询用法解析
/***************************************/0.概要 生成查询对象的方式有两种,一种是通过具有语法分析作用的 org.apache.lucene.queryParser.QueryParser.java 对象的parse(String queryString);方法分析具有符合Lucene 查询语法的查询语句字符窜相
2013-01-29 18:42:49 1962
转载 Lucene query使用总结
Lucene 功能众多:拥有强大、准确、有效的搜索算法。计算每个文档匹配给定查询的分数,并根据分数返回最相关的文档。支持许多强大的查询类型,比如 PhraseQuery、WildcardQuery、RangeQuery、FuzzyQuery、BooleanQuery 等。支持解析人们输入的丰富查询表达式。允许用户使用定制排序、过滤和查询表达式解析扩展搜索行为。使用基于文件的锁定机制保护并发
2013-01-29 15:53:24 12580
转载 lucene 区分大小写问题和解决方案
本文介绍lucene区分大小的原因,和解决方案.关于lucene大小写敏感问题我总结一下:1.对于分词的Field且使用了StandardAnalyzer等分析器进行索引,同时利用StandardAnalyzer进行搜索时,lucene不区分大小写.2.对于不分词的Field是区分大小写的. 一.分词和不分词 为了能使Field字段参与搜索,那么该Field就必须被
2013-01-25 19:06:25 6907
转载 Redis 命令手册
Redis 命令手册Redis提供了丰富的 command对数据库和各种数据类型进行操作,这些command可以在Linux终端使用。在编程时,比如使用Redis的Java语言包,这些命令都有对应的方法,比如上面例子中使用的sadd方法,就是对集合操作中的SADD命令。下面将Redis提供的命令做一总结。连接操作相关的命令•quit:关闭连接(connection)•auth:简单
2013-01-24 12:40:32 1268
转载 Redis学习手册
一、概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。 在该篇
2013-01-24 12:29:32 767
转载 Redis复制与可扩展集群搭建
Redis复制流程概述Redis的复制功能是完全建立在之前我们讨论过的基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你的系统内存容量规划,原因可以参考我上一篇文章中提到的Redis磁盘IO问题。Redis复制流程在Slave和Master端各自是一套状态机流转,涉及的状态信息是:
2013-01-21 12:32:58 574
转载 Redis内存使用优化与存储
Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:ty
2013-01-21 12:06:34 465
转载 Redis 或弃用当前 VM 机制,采用新的 diskstore 模型
Redis 的作者 Salvatore Sanfilippo(@antirez)今天在 Redis 的 Google Group 上发表了一篇文章,表明他对当前Redis 的VM机制并不满意,并称正在着手修改成一种新的实现逻辑。下面是主要内容的翻译。原文请看:http://goo.gl/uMKQN 要将数据持久化存储,大概考虑有这样三种方式:使用虚拟内存,即将冷数据放磁盘热并
2013-01-21 12:01:56 1005
转载 Redis配置文件参数说明
配置文件参数说明: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid3. 指定Redi
2013-01-21 11:44:56 423
转载 Linux 下 Redis 安装详解
redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大
2013-01-21 11:35:15 463
转载 Java 理论与实践: 正确使用 Volatile 变量
简介: Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,vol
2013-01-17 14:45:06 386
转载 深入分析Volatile的实现原理
引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通
2013-01-17 14:40:29 500
转载 ConcurrentLinkedQueue的实现原理分析
1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concu
2013-01-17 12:51:12 1045 1
转载 深入分析ConcurrentHashMap
线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap,如以下代码final HashMap map = new HashMap(2);Thread t = new Thread(new Runnable() { @Override public void run(
2013-01-17 12:50:01 494
转载 驯服 Tiger: 并发集合
在 Java 编程的早期阶段,位于 Oswego 市的纽约州立大学(SUNY) 的一位教授决定创建一个简单的库,以帮助开发人员构建可以更好地处理多线程情况的应用程序。这并不是说用现有的库就不能实现,但是就像有了标准网络库一样,用经过调试的、可信任的库更容易自己处理多线程。在 Addision-Wesley 的一本相关书籍的帮助下,这个库变得越来越流行了。最终,作者 Doug Lea 决定设法让它成
2013-01-17 12:15:32 434
原创 Java容器总结
按数据结构主要有以下几类:内置容器:数组 list容器:Vetor,Stack,ArrayList,LinkedList,CopyOnWriteArrayList,AttributeList,RoleList,RoleUnresolvedList,ConcurrentLinkedQueue,ArrayBlockingQueue,LinkedBlockingQueue,Priority...
2013-01-17 11:37:25 618
转载 Java多线程-工具篇-BlockingQueue
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而
2013-01-17 11:02:16 856
转载 Java多线程之线程池深入分析 (下)
一、数据结构与线程构造方法由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构。图1描述了这种数据结构。图1 ThreadPoolExecutor 数据结构其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要求也很能够猜测出其数据结构出
2013-01-16 19:17:00 1981
转载 Java多线程之线程池深入分析
线程池是并发包里面很重要的一部分,在实际情况中也是使用很多的一个重要组件。下图描述的是线程池API的一部分。广义上的完整线程池可能还包括Thread/Runnable、Timer/TimerTask等部分。这里只介绍主要的和高级的API以及架构和原理。大多数并发应用程序是围绕执行任务(Task)进行管理的。所谓任务就是抽象、离散的工作单元(unit of work)。把
2013-01-16 19:10:09 1080
转载 CountDownLatch 简介和例子
public class CountDownLatchTest { public static int numberOfPeople = 10;//等车的学生数 public static boolean isGone = false;//车开的标志 public static int carWaitTime = 3;//车等的时间 public
2013-01-16 18:26:02 407
转载 HBase系统架构及数据结构
HBase中的表一般有这样的特点:1 大:一个表可以有上亿行,上百万列2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。下面一幅图是Hbase在Hadoop Ecosystem中的位置。二、逻辑视图HBase以表的形式存储数
2013-01-16 16:27:01 969
转载 MapReduce数据流
Hadoop的核心组件在一起工作时如下图所示:图4.4高层MapReduce工作流水线 MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至所有节点上运行mapping任务,每一个mapping任务都是平等的:mappers没有特定“标识物”与其关联。因此,任意的mapper都可以
2013-01-08 17:41:14 434
转载 HBase技术介绍
HBase简介HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行M
2013-01-08 17:34:56 426
转载 MongoDB与CouchDB全方位对比
本文见于MongoDB官方网站,MongoDB与CouchDB很相似,他们都是文档型存储,数据存储格式都是JSON型的,都使用Javascript进行操作,都支持Map/Reduce。但是其实二者有着很多本质的区别,本文透过现象追寻本质,让你更好的理解MongoDB与CouchDB。1.MVCC(Multiversion concurrency control)MongoDB与Co
2013-01-05 15:58:10 843
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人