排序:
默认
按更新时间
按访问量

Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)

我们来看最复杂的部分,就是Term Dictionary和Term Index文件,Term Dictionary文件的后缀名为tim,Term Index文件的后缀名是tip,格式如图所示。 Term Dictionary文件首先是一个Header,接下来是PostingsHeader,这两个的...

2018-06-30 17:37:23

阅读数:56

评论数:0

Lucene 4.X 倒排索引原理与实现: (2) 倒排表的格式设计

1. 定长编码最容易想到的方式就是常用的普通二进制编码,每个数值占用的长度相同,都占用最大的数值所占用的位数,如图所示。 这里有一个文档ID列表,254,507,756,1007,如果按照二进制定长编码,需要按照最大值1007所占用的位数10位进行编码,每个数字都占用10位。和词典的格式设计中顺序...

2018-06-30 17:36:23

阅读数:27

评论数:0

Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

词典的格式设计词典中所保存的信息主要是三部分:Term字符串Term的统计信息,比如文档频率(Document Frequency)倒排表的位置信息其中Term字符串如何保存是一个很大的问题,根据上一章基本原理的表述中,我们知道,写入文件的Term是按照字典顺序排好序的,那么如何将这些排好序的Te...

2018-06-30 17:35:09

阅读数:34

评论数:0

垃圾收集器的种类及原理

1、Serial收集器:古老的单线程收集器,作用于新生代。单线程的意义并非仅仅是只使用一条线程进行垃圾回收,更重要的是,在进行垃圾回收的时候,必须暂停其他所有的工作线程,因此,用户体验很不好。单实际上,Serial并不是一个一无是处的垃圾收集器,当虚拟机运行在Client模式下,Serial仍然是...

2018-06-30 16:43:21

阅读数:25

评论数:0

为什么redis 是单线程的?

以前一直有个误区,以为:高性能服务器 一定是 多线程来实现的原因很简单因为误区二导致的: 多线程 一定比 单线程 效率高。其实不然。在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了,这样可能理解得更深刻一点,不了解的朋友点:CPU到底比内存跟硬盘快多少redis 核心就是 如...

2018-06-30 16:25:20

阅读数:41

评论数:0

应对缓存击穿的解决方法

一.什么样的数据适合缓存?分析一个数据是否适合缓存,我们要从访问频率、读写比例、数据一致性等要求去分析. 二.什么是缓存击穿在高并发下,多线程同时查询同一个资源,如果缓存中没有这个资源,那么这些线程都会去数据库查找,对数据库造成极大压力,缓存失去存在的意义.打个比方,数据库是人,缓存是防弹衣,子弹...

2018-06-30 16:21:26

阅读数:39

评论数:0

ConcurrentHashMap详解以及get方法保持同步的解释

ConcurrentHashMap是Java5中新增加的一个线程安全的Map集合,可以用来替代HashTable。对于ConcurrentHashMap是如何提高其效率的,可能大多人只是知道它使用了多个锁代替HashTable中的单个锁,也就是锁分离技术(Lock Stripping)。实际上,C...

2018-06-30 15:39:47

阅读数:229

评论数:0

zookeeper选举机制

    FastLeaderElection算法通过异步的通信方式来收集其它节点的选票,同时在分析选票时又根据投票者的当前状态来作不同的处理,以加快Leader的选举进程。        每个在zookeeper服务器启动先读取当前保存在磁盘的数据,zookeeper中的每份数据都有一个对应的id...

2018-06-30 14:49:07

阅读数:36

评论数:0

Java并发——Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

一、Synchronized实现原理1、Synchronized锁的3中形式:Synchronized修饰普通同步方法:锁对象当前实例对象;Synchronized修饰静态同步方法:锁对象是当前的类Class对象;Synchronized修饰同步代码块:锁对象是Synchronized后面括号里配...

2018-06-30 14:39:51

阅读数:72

评论数:0

JAVA和C# 3DES加密解密

最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题, 下面分享一下, 这里的KEY采用Base64编码,便用分发,因为Java的Byte范围为-128至127,c#的Byte范围是0-255 核心是确定Mode和Padding,...

2018-06-30 14:14:32

阅读数:20

评论数:0

Spring全局异常处理的三种方式

在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既...

2018-04-17 16:22:34

阅读数:39

评论数:0

SpringMVC 指定404、500错误页面

1、在web.xml中追加 <error-page> <error-code>404</error-code> &amp...

2018-04-17 16:10:34

阅读数:308

评论数:0

[spring]启动时报错:NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I

Spring V4.1.0+的版本在不支持Servlet3.0的应用服务器上跑时会报以下错误:NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I 比如说:tomcat 7以下的版本、jboss 4.2.3以下...

2018-04-17 16:06:36

阅读数:25

评论数:0

收集了一些distinct性能相关的文章 希望有用

原文出处:https://blog.csdn.net/u010745238/article/details/42846897http://blog.sina.com.cn/s/blog_5017ea6c0101e3c4.htmlhttps://www.cnblogs.com/zox2011/arc...

2018-04-17 16:05:11

阅读数:41

评论数:0

使用Nginx实现灰度发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度...

2018-04-17 15:43:32

阅读数:48

评论数:0

ORACLE-017:SQL优化-is not null和nvl

今天在优化一段sql,原脚本大致如下:[sql] view plain copyselect  a.字段n from tab_a a    where    a.字段2 is not null;  a.字段2增加了索引的,但是查询速度非常慢,于是做了如下修改:[sql] view plain co...

2018-04-17 11:02:05

阅读数:21

评论数:0

基于Spring cloud ribbon实现多版本控制

在我们使用spring mvc单体架构时, 我们可以通过uri,或者请求头做多版本路由,虽然同一个功能需要维护多个版本的接口,但是对于系统而言,不会因为新增一个接口版本而影响到老用户。当我们使用spring cloud构建微服务平台时,也希望能做到这一点,然而spring cloud并没有提供这个...

2018-04-17 10:55:41

阅读数:21

评论数:0

springboot使用feign访问api

本文主要介绍如何在springboot项目中使用feign来访问cnode中文公共api接口一、fein简介Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit、JAXRS-2.0和WebSocket。Feign最初是为了降低统一绑定Denominator到...

2018-04-17 10:04:07

阅读数:33

评论数:0

spring boot应用启动原理分析

spring boot quick start 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server。 如果之前没有使用过spring boot可以通过下面的demo来感...

2018-01-18 22:23:01

阅读数:87

评论数:0

Arrays.asList()是个坑

在java语言中,把数组转换成List集合,有个很方便的方法就是 List list = Arrays.asList("a","b","c"); 但你可能不知道这样得到的List它的长度是不能改变的。当你向这个List添加或删除一个...

2018-01-18 22:20:19

阅读数:52

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭