java se
1黄鹰
这个作者很懒,什么都没留下…
展开
-
Elasticsearch系列---结构化搜索
概要结构化搜索针对日期、时间、数字等结构化数据的搜索,它们有自己的格式,我们可以对它们进行范围,比较大小等逻辑操作,这些逻辑操作得到的结果非黑即白,要么符合条件在结果集里,要么不符合条件在结果集之外,没有那种相似的概念。前言结构化搜索将会有大量的搜索实例,我们将"音乐APP"作为主要的案例背景,去开发一些跟音乐APP相关的搜索或数据分析,有助力于我们理解实战的目标,顺带巩固一下学习的知识。...原创 2020-01-23 08:13:25 · 1247 阅读 · 0 评论 -
Elasticsearch系列---shard内部原理
概要本篇我们来看看shard内部的一些操作原理,了解一下人家是怎么玩的。倒排索引倒排索引的结构,是非常适合用来做搜索的,Elasticsearch会为索引的每个index为analyzed的字段建立倒排索引。基本结构倒排索引包含以下几个部分:某个关键词的doc list某个关键词的所有doc的数量IDF(inverse document frequency)某个关键词在每个doc...原创 2020-01-23 08:10:25 · 1535 阅读 · 0 评论 -
Elasticsearch系列---实战零停机重建索引
前言我们使用Elasticsearch索引文档时,最理想的情况是文档JSON结构是确定的,数据源源不断地灌进来即可,但实际情况中,没人能够阻拦需求的变更,在项目的某个版本,可能会对原有的文档结构造成冲击,增加新的字段还好,如果要修改原有的字段,只能重建索引了。概要本篇以实战方式讲解如何零停机完成索引重建的三种方案。外部数据导入方案整体介绍系统架构设计中,有关系型数据库用来存储数据,E...原创 2020-01-18 10:01:13 · 1399 阅读 · 0 评论 -
Elasticsearch系列---索引管理
概要Elasticsearch让索引创建变得非常简单,只要索引一条新的数据,索引会自动创建出来,但随着数据量的增加,我们开始有了索引优化和搜索优化的需求之后,就会发现自动创建的索引在某些方面不能非常完美的适应我们的需求,我们开始考虑手动创建适合我们业务需求的索引。索引的CRUD为了更好地贴切我们的业务数据需求,我们开始更精细的管理我们的索引。创建索引创建索引的语法示例如下:PUT /m...转载 2020-01-18 09:33:57 · 1065 阅读 · 0 评论 -
Elasticsearch系列---搜索执行过程及scroll游标查询
概要本篇主要介绍一下分布式环境中搜索的两阶段执行过程。两阶段搜索过程回顾我们之前的CRUD操作,因为只对单个文档进行处理,文档的唯一性很容易确定,并且很容易知道是此文档在哪个node,哪个shard中。但搜索比CRUD复杂,符合搜索条件的文档,可能散落在各个node、各个shard中,我们需要找到匹配的文档,并且把从各个node,各个shard返回的结果进行汇总、排序,组成一个最终的结果排...原创 2020-01-18 09:24:24 · 1497 阅读 · 0 评论 -
Elasticsearch系列---相关性评分算法及正排索引
概要上一篇中多次提到了按相关性评分,本篇我们就来简单了解一下相关性评分的算法,以及正排索引排序的优势。评分算法Elasticsearch进行全文搜索时,Boolean Model是匹配的基础,先用boolean model将匹配的文档挑选出来,然后再运用评分函数计算相关度,参与的函数如我们提到的TF/IDF、Length Norm等,再加上一些控制权重的参数设置,得到最后的评分。Boole...原创 2020-01-05 08:12:04 · 1544 阅读 · 0 评论 -
我与《Java异步编程实战》的故事
我是一名程序员,过着996的生活。但我创造了一个世界,这个世界很忙碌,每天不停地运转,在这个世界里,我是它们的造物者,掌管着所有人的生杀大权。这个世界由多个部门组成,为了使这个世界有条不紊地运转,我费了很多功夫,还需要定时地检查运转情况,比如谁偷懒了,谁累趴了等等。这个世界都是同步执行的,看似平静,但随着外面世界的变化,这种平静慢慢地被打破了。首当其冲的是我们的网络驿站,主管部门是...原创 2019-12-30 17:47:18 · 1291 阅读 · 0 评论 -
一篇文章彻底搞懂snowflake算法及百度美团的最佳实践
写在前面的话一提到分布式ID自动生成方案,大家肯定都非常熟悉,并且立即能说出自家拿手的几种方案,确实,ID作为系统数据的重要标识,重要性不言而喻,而各种方案也是历经多代优化,请允许我用这个视角对分布式ID自动生成方案进行分类:实现方式完全依赖数据源方式ID的生成规则,读取控制完全由数据源控制,常见的如数据库的自增长ID,序列号等,或Redis的INCR/INCRBY原子操作产生顺序...原创 2019-10-25 07:11:56 · 4237 阅读 · 4 评论 -
Java volatile关键字内存原语
一、简述 volatile特性:实现最轻量级的同步。 volatile关键字的内存原语主要包含2个:1、保证volatile修饰的变量对所有线程的可见性。2、禁止指令重排序优化。二、案例代码 先给一个经典的错误案例:package com.hy.current;public class VolatileTest {privat...原创 2019-06-23 07:57:46 · 1913 阅读 · 0 评论 -
深入学习JDK 线程池(之七)
一、Submit流程 前面原创 2014-04-12 16:46:02 · 1014 阅读 · 0 评论 -
深入学习JDK 线程池(之六)
一、ScheduledThreadPoolExecutor类 此类承载了SchedulerThreadPool,SingleThreadScheduledExecutor两种线程池的创建和功能实现的任务。 1、内部类 ScheduledFutureTask,实现RunnableScheduledFuture接口,该内部类再上一层的接口有Dela原创 2014-04-02 22:23:09 · 1207 阅读 · 0 评论 -
深入学习JDK 线程池(之五)
三、FixedThreadPool线程池流程分析 1、看上文可知,FixedThreadPool与CachedThreadPool只是参数不同,其他的都类似,现在我们就来看看不同的参数是怎么样造成不同结果的。 先回顾一下该线程池的参数:corePoolSize为nThreads,maximumPoolSize为nThreads,BlockingQueue为LinkedB原创 2014-04-01 23:35:58 · 1243 阅读 · 0 评论 -
深入学习JDK 线程池(之四)
一、ThreadPoolExecutor类分析 此类承载了CacheThreadPool,FixedThreadPool,SingleThreadExecutor三种线程池的创建和功能实现的任务。 1、内部类:Worker,CallerRunsPolicy,AbortPolicy,DiscardPolicy,DiscardOldestPolicy,其中Worker作原创 2014-03-09 14:31:39 · 1187 阅读 · 0 评论 -
深入学习JDK 线程池(之三)
一、环境准备 由于本章节主要是向大家介绍线程池的内部实现逻辑,需要进行断点调试跟踪JDK的源代码,而默认下载的JDK版本,断点调试时无法显示变量的值,所以需要大家另外下载debug版的JDK,并设置在eclipse开发环境中,有许多前辈已经分享过安装配置debug jdk的经验了,这儿就不再赘述了。 二、演示代码 演示代码非常简易,非常简单的实现,分三个类:一原创 2014-03-09 11:24:54 · 1087 阅读 · 0 评论 -
深入学习JDK 线程池(之二)
一、线程池实例化的具体实现 此章节的内容,大部分集中在Executors类的源代码介绍上,各位有兴趣可以顺便看一下该类的源码。 1、newCachedThreadPool()和newFixedThreadPool(int nThreads),包括相应的重载方法(重载方法包含参数ThreadFactory) 把这两个方法放在一起,是因为这两个线程池都是直接原创 2014-03-08 13:15:10 · 1322 阅读 · 0 评论 -
深入学习JDK 线程池(之一)
一、包位置及继承关系 1、线程池代码所在的包位置:java.util.concurrent。该包下的类,主要是完成JDK 线程池的功能。 2、基本继承关系,如下简易UML图所示: 由以上简易UML图可知,线程池的最终实现类是ThreadPoolExecutor和ScheduledThreadPoolExecutor,AbstractExecutorSer原创 2014-03-08 11:17:51 · 1354 阅读 · 0 评论