04 2018 档案
摘要:elasticsearch-5.2.0.zip、 kibana-5.2.0-windows-x86.zip链接:https://pan.baidu.com/s/1buz2hZ0jBZJJlAE2Q4ei5w 密码:sw2o1、安装JDK,至少1.8.0_73以上版本,...
阅读全文
摘要:lucene和elasticsearch的前世今生lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)elasticsearch,基于lucene,隐藏复...
阅读全文
摘要:什么是搜索?百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)百度 != 搜索,这是不对的垂直搜索(站内搜索)互联网的搜索:电商网站,招聘网站,新闻网站,各种ap...
阅读全文
摘要:Java内存模型 在了解Java的同步秘密之前,先来看看JMM(Java Memory Model)。 Java被设计为跨平台的语言,在内存管理上,显然也要有一个统一的模型。而且Java语言最大的特点就是废除了指针,把程序员从痛苦中解脱出来,不用再考虑内存...
阅读全文
摘要:在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(堆区域)、Java Stacks(Java...
阅读全文
摘要:ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的。 所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。 读写锁比互斥锁允许对...
阅读全文
摘要:前面分析了volatile 关键字解析,如何确认多线程调用之间的可见性?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用happens-before的概念来...
阅读全文
摘要:synchronized介绍synchronized关键字通过修饰一个方法或声明一个代码块,从而产生一个同步对象锁以及对应的同步代码块。每当有线程要对该同步代码块进行访问时,线程就会首先尝试去获取该对象锁,并在成功获取到对象锁后,对该同步代码块进行正常访问,在同步代码...
阅读全文
摘要:概念 XA是由X/Open组织提出的分布式事务的规范。 XA规范主要定义了(全局)事务管理器(TM)和(局 部)资源管理器(RM)之间的接口。主流的关系型 数据库产品都是实现了XA接口的。 XA接口是双向的系统接口,在事务管理器 (TM)以及一个或多个资源管理...
阅读全文
摘要:前言SpringCache是SpringFramework3.1引入的新特性,提供了基于注解的缓存配置方法.SpringCache是SpringFramework3.1引入的新特性,提供了基于注解的缓存配置方法pom文件引入 org.springframework s...
阅读全文
摘要:前言ThreadLocal 线程本地变量/线程本地存储用来提供线程内部的局部变量(ThreadLocal.ThreadLocalMap类对象),将一个共用的ThreadLocal静态实例作为key,通过get或set方法访问时能保证各个线程里的变量相对独立于其他线程内...
阅读全文
摘要:场景1:如果发现该操作已经在执行中则不再执行(有状态执行)a、用在定时任务时,如果任务执行时间可能超过下次计划执行时间,确保该有状态任务只有一个正在执行,忽略重复触发。b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种...
阅读全文
摘要:1.1 synchronized的局限性 synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如: 1...
阅读全文
摘要:一、前言DelayQueue队列中每个元素都有个过期时间,并且队列是个优先级队列,当从队列获取元素时候,只有过期元素才会出队列。 ● CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。 ● getDela...
阅读全文
摘要:定义阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线...
阅读全文
摘要:前言 线程不安全的HashMap,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,详细解析 HashMap 实现原理和源码分析 ; 效率低下的HashTable, 使用HashTable的同步方法时,其他线程访问H...
阅读全文
摘要:1、继承的父类不同public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializablepublic class HashMap extends Abstrac...
阅读全文
摘要:哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的...
阅读全文
摘要:Volatile可以看做一种轻量级的锁,但又和锁有些不同。这边看个例子,多线程执行generateSerialNumber时候,每次结果都是不同。private static volatile int serialNum = 0;public static int g...
阅读全文
摘要:基本同步器至少要有以下两种类型的方法acquire和releaseacquire:至少要有一个操作能实现对调用线程的阻塞,直到同步器允许它进行操作。release:至少要有一个操作能用一种方式解锁一个或者更多个已经阻塞的线程改变同步状态。同时,同步器还需要支持以下几种...
阅读全文
摘要:在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的...
阅读全文
摘要:1 ResourceServerConfigurerAdapter (资源服务器配置)内部关联了ResourceServerSecurityConfigurer和HttpSecurity。前者与资源安全配置相关,后者与http安全配置相关 @Override p...
阅读全文
摘要:本篇追踪源码阐述获Security的认证的基本流程 密码模式请求/oauth/token ,获取令牌(access_token)经过客户端认证核心过滤器ClientCredentialsTokenEndpointFilter(attemptAuthentication...
阅读全文
摘要:总览 本系列针对Security-Oauth2架构的剖析,包括:oauth2.0认证架构详解、架构源码解读、核心结构配置。 本篇是对oauth2认证流程的概述,喜欢的多多pick! 内容引用书籍:The OAuth...
阅读全文
摘要:import org.aspectj.lang.reflect.SourceLocation; public interface JoinPoint { String toString(); //连接点所在位置的相关信息 String...
阅读全文
摘要:类型匹配语法AspectJ类型匹配的通配符: *:匹配任何数量字符; ..:匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。 +:匹配指定类型的子类型;仅能作为后缀放在类型模式...
阅读全文
摘要:TCC Transaction 框架解析核心通过拦截器构建事务上下文,经过反射进行confirm/cancel操作。DTOTransactionXid (Xid: 指一个XA事务。不同的数据库要不同的 Xid(每个数据库连接(分支)一个)) : formatId(X...
阅读全文
摘要:材料摘自龙果学院:http://www.roncoo.com/一个完整的TCC事务参与方包括三部分:主业务服务:主业务服务为整个业务活动的发起方,如前面提到的组合支付场景,支付系统即是主业务服务。从业务服务:从业务服务负责提供TCC业务操作,是整个业务活动的操作方。从...
阅读全文
摘要:背景:订单完成支付,通知商户商户系统接口必须实现幂等性订单服务提供商户订单查询接口流程:消息生产端:完成事件 -> 调用消息服务,发送消息消息消费端:接收消息 -> 调用通知服务(判断该消息未保存过,保存通知消息)-> 构建通知task (delayqueue通知队列...
阅读全文
摘要:最大努力通知正向流程 材料摘自龙果学院:http://www.roncoo.com/用到的服务模式可查询操作方案特点业务活动的主动方在完成业务处理后,向业务活动的被动方发送通知消息(允许消息丢失)主动方可以设置时间梯形通知规则,在通知失败后按规则重复通知,直到通知N...
阅读全文
摘要:背景:1.支付成功 通知订单完成2.订单完成,通知会计记账上游订单服务,必须开放可查询订单状态接口,判断消息是否可以发送下游会计消费成功后,必须回调消息服务,ACK操作(约束:幂等性。 例如:消息id等)材料摘自龙果学院:http://www.roncoo.com/...
阅读全文
摘要:可靠消息的生产与消费的正向流程可靠消息最终一致性方案1材料摘自龙果学院:http://www.roncoo.com/优点1消息时效性比较高2.从应用设计开发的角度实现了消息数据的可靠性,消息数据的可靠性不依赖于MQ中间件,弱化了对MQ中间件的依赖3.方案轻量,容易实现...
阅读全文
摘要:总览 本系列针对分布式事务提出三种解决方案:可靠消息最终一致性、最大努力通知、TCC。 每种方案分为上下两篇,上篇为原理概述,下篇为具体实现。 本篇是对本地事务和分布式事务的特性理解分析,喜欢的多多pick!事务概念原子性是指事务是一个不可...
阅读全文