摘要: 声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合中去 <2. 集合中放置的都是Object类型,因此取出来的也是Object类型,那么必 阅读全文
posted @ 2017-02-14 17:31 星火燎原智勇 阅读(2709) 评论(0) 推荐(0) 编辑
摘要: 浮点数会有精度损失这个在上大学的时候就已经被告知,但是至今完全没有想明白其中的原由,老师讲的时候也是一笔带过的,自己也没有好好琢磨。终于在工作的时候碰到了,于是google了一番。 问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题。比如: 输出: 39.989999999999 阅读全文
posted @ 2017-02-12 23:16 星火燎原智勇 阅读(2473) 评论(0) 推荐(0) 编辑
摘要: 1. org.apache.commons.lang中StringUtils判空使用经验之谈 StringUtils.isEmpty(String str) StringUtils.isEmpty(String str) 判断字符串str是否为空串且是否长度为0,即: str == null && 阅读全文
posted @ 2017-02-09 17:48 星火燎原智勇 阅读(612) 评论(0) 推荐(1) 编辑
摘要: Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient,transient是Java语言 阅读全文
posted @ 2017-02-09 16:32 星火燎原智勇 阅读(6078) 评论(2) 推荐(0) 编辑
摘要: 方法一: Integer.parseInt(); 返回的是一个 int 的值。 方法二: new Integer.valueof(); 返回的是 Integer 的对象。 new Integer.valueof().intValue(); 返回的也是一个 int 的值。 笔试应用例题: 设有下面两个 阅读全文
posted @ 2017-02-09 14:33 星火燎原智勇 阅读(2224) 评论(0) 推荐(0) 编辑
摘要: 执行以下代码: 以上提供1.6、1.7和1.8三个版本的比较 1.6版本执行结果为: 1.7版本执行结果为: 1.8版本执行结果为: 从两方面去查证结果的原因,分别是:查看API文档 和 查看对应的源代码 【查看API文档】 1.6版本对应的API文档: 1.7版本对应的API文档: 1.8版本对应 阅读全文
posted @ 2017-02-08 23:19 星火燎原智勇 阅读(1648) 评论(0) 推荐(1) 编辑
摘要: 悲观并发控制(PCC) 这一点在关系数据库中被广泛使用。假设这种情况很容易发生,我们就可以阻止对这一资源的访问。典型的例子就是当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据。 乐观并发控制(OCC) Elasticsearch所使用的。假设这种情况并不会经常发 阅读全文
posted @ 2017-02-08 22:43 星火燎原智勇 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 不仅是ElasticStack有以下这样的问题,包括solr或者说分布式系统在一定程度上都会存在以下的问题 脑裂 也叫网络分区,当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能。当脑裂出现 阅读全文
posted @ 2017-02-08 18:29 星火燎原智勇 阅读(590) 评论(0) 推荐(0) 编辑
摘要: segment归并的影响 归并线程配置与策略 optimize ES数据写入流程 1. segment归并的影响 影响原因: 由之前的讲解我们已经知道数据怎么进入ElasticSearch并且如何才能让数据更快的被检索使用。其中用一句话概括了Lucene的设计思路就是“开新文件”,但另一个方面看,开 阅读全文
posted @ 2017-02-08 18:19 星火燎原智勇 阅读(637) 评论(4) 推荐(0) 编辑
摘要: 索引分片 数据路由 mapping解析 倒排索引 写入存储 1. 索引分片 上图所示,一共有3个分片(shard),每个shard上有一个副本(replica),看到的蓝色图片为一个一个不同的datanode,目的是为了高可用。其中3个shard将所有的数据进行分割到不同的片上。如果使用es默认配置 阅读全文
posted @ 2017-02-08 18:08 星火燎原智勇 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 1. ElasticSearch的几个基本概念 <1. Index 类似于mysql数据库中的database <2. Type 类似于mysql数据库中的table表,es中可以在Index(database)中建立多个type(table),其中每个type结构可以使不同的,通过mapping进 阅读全文
posted @ 2017-02-08 17:16 星火燎原智勇 阅读(1851) 评论(0) 推荐(0) 编辑
摘要: ElasticSearch 用于构建高可用和可扩展的系统。扩展的方式可以是 购买更好的服务器(纵向扩展--vertical scale or scaling up) 或者购买更多的服务器(横向扩展--horizontal scale or scaling out)。 ElasticSearch 虽然 阅读全文
posted @ 2017-02-08 16:38 星火燎原智勇 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 题目:终端随机输入一串字符串,输出该字符串的所有排列。 例如,输入:“abc”,输出:abc、acb、bac、bca、cab、cba 【解决思想与办法】 正常人的思维是,固定第一个字符,然后依次将后面的字符串与前面的交换,那么排列的个数就是除了第一个字符以外,其他字符的排列个数+1。也就是固定一个字 阅读全文
posted @ 2017-02-07 22:51 星火燎原智勇 阅读(8045) 评论(0) 推荐(1) 编辑
摘要: 面试中有一道笔试题,大概意思如下: 输入一个集合,输出这个集合的所有子集。例如输入:1,2,4 输出结果如下所示: [1][2][4][1, 2][1, 4][2, 4][1, 2, 4] 需要认识的:空集是任何集合的子集;真子集为不包含子集的集合;非空真子集即不包含子集与空集合 解题思路:这道题可 阅读全文
posted @ 2017-02-06 23:04 星火燎原智勇 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 1. 随机函数 Math.random() Math.random(); 取值范围是 [ 0.0,1.0 ) 的左闭右开区间。具体源代码如下所示: Math.random()是生成0~1之间的小数(double类型的),类似生成的结果如下图所示: 最上面的两个图贴出来的是Math.random()的 阅读全文
posted @ 2017-01-12 15:12 星火燎原智勇 阅读(7227) 评论(0) 推荐(0) 编辑