自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 ElasticSearch 分词

分词将文本转换成一系列单词的过程,转换成的单词叫term or token原理: 倒排索引(b+)分词器的组成以及调用顺序1.Character Filter 单词过滤器,对原始的文本进行处理2.Tokenizer 将原始文本按照一定的规则切分成不同的单词3.Token Filter 针对2过程处理的单词在进行加工,例如大小写转换等1.指定analyzer进行测试请求:POST _ana...

2018-07-03 14:43:18 2004 1

原创 ElasticSearch基础操作及ElasticsearchTemplate API

docker下安装安装elasticsearchdocker pull elasticsearchdocker run -d --restart=always -p 9200:9200 -v ~/elasticsearch/data:/usr/share/elasticsearch/data --name elasticsearch elasticsearch安装kibanado...

2018-04-12 11:16:43 43436 14

原创 SpringSecurity(六):Session(集群)管理和Logout

Security的用户认证信息默认是存储在session中的,对于session过期的时间,springboot的里默认的是30分钟。当然也可以自己设置:application.yml:server: session: timeout: 7200 #最少是一分钟,就算比一分钟少也会默认转成一分钟,如果不设置默认为30分钟security的session管理:

2017-10-30 16:26:28 2140 2

原创 SpringSecurity(五):RememberMe以及源码分析

1.原理:参考博文:http://blog.csdn.net/fangchao2061/article/details/511793932.Security的实现添加remember功能之前,先启动项目进行测试。授权登录后,访问localhost:8080/user1可以得到用户信息,关闭浏览器,再次访问localhost:8080/user1会跳到鉴权页面。修改项目,添加reme

2017-10-30 09:25:22 1912

原创 SpringSecurity(四):自定义登陆认证实现手机号登陆

SpringSecurity默认提供了两种登陆,一种basic登陆一种表单登陆(分别在一三章有讲到),但是如果我们要实现其他方式的登陆(例如邮箱登陆,手机号登陆)又该怎么做呢?第二章中讲到了Security的登录原来,以及最后给出的流程图,结合它们这章来实现自定义登陆认证 1.MobileAuthenticationToken/** * 手机登录认证token * * 仿Us

2017-10-28 12:56:40 9096 5

原创 SpringSecurity(三):表单登陆

前面一章讲了security登陆的基本原理,这节讲讲如何不用basic登陆,采用表单登陆以及登陆过程中添加验证码1.login.htmlInsert title here 标准登录页面 表单登录 用户名: 密码: 登录 2.SecurityConfi

2017-10-28 10:17:38 1536

原创 SpringSecurity(二):security的基本原理

上一章,给大家介绍了如何引入SpringSecurity。但是Security的默认安全校验不是很人性化,所以我们需要实现自己的个性化校验逻辑。在实现个性化校验逻辑之前,我们先来看看SpringSecurity的基本原理,以方便我们个性化。

2017-10-27 16:11:16 1463 1

原创 SpringSecurity(一):创建一个简单的security应用

1.构建项目jdk1.8springbootideamaven  引入依赖 org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web 直接启动项目:

2017-10-27 10:15:09 1308

原创 实战Java高并发程序设计之LockSupport

LockSupport简介:LockSupport是一个非常方便实用的线程阻塞工具,它可以在线程任意位置让线程阻塞.和Thread.suspend()相比,它弥补了由于resume()在前发生,导致线程无法继续执行的情况.和Object.wait()相比,它不需要先获得对象的锁,也不会抛出中断异常.LockSupport是用于创建锁和其他同步类的基本线程阻塞原语.LockSuppo

2017-06-20 21:58:34 318

原创 实战Java高并发程序设计之CyclicBarrier

CyclicBarrier是另一种多线程并发控制使用工具.和CountDownLatch非常的相似,它也可以实现线程间的计数等待,但它的功能比CountDownLatch更加复杂且强大.CyclicBarrier可以理解成循环栅栏.栅栏就是一种阻碍物.这里是用来阻止线程继续执行,要求线程在栅栏处等待.前面Cyclic意为循环,也就是说这个计数器可以反复使用.CyclicBa

2017-06-19 22:19:12 317

原创 实战Java高并发程序设计之CountDownLatch

CountDownLatch:一个倒数计时器.这个工具类通常用来控制线程等待,它可以让某一个线程等待直到计时结束,再开始执行.CountDownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作如上图所示:主线程会在零界线上等待,检查任务会分别执行,当所有的任务全部都到达零界点以后,主线程才能继续往下执行基本用饭:CountDownLatch是一

2017-06-17 21:42:32 939

原创 实战Java高并发程序设计之ReadWriteLock

ReadWriteLock维持着一对关联的锁.一个仅仅为读操作,一个仅仅为写操作. 只要没有写操作,读锁不是互斥的.然而写锁是互斥的所有ReadWriteLock实现必须保证writeLock操作的内存同步效果对于相关的readLock而言也是一样的. 也就是说,一个线程成功获取读锁定将会看到在之前释放的写锁定所做的所有更新.读写分离锁可以有效的帮助减少锁竞争,以提升性能。用锁

2017-06-11 20:05:51 301

原创 实战Java高并发程序设计之Semaphoer

信号量为多线程协作提供了更强大的控制方法.广义上说,信号量是对锁的扩展.无论是内部锁synchronized还是重入锁ReentranLock,一次都只允许一个线程访问同一个资源,而信号量却可以指定多个线程,同时访问某一个资源. 概念上,一个信号量维持着大量的许可. 每个acquire请求都会阻塞直到一个permit可用为止,并且然后拥有这个许可. 每个release请求都可能会释放一个per

2017-06-11 17:14:56 294

原创 记一次Redis设置主从复制时遇到的问题

因为项目中redis用的比较多,所以最近在研究.就在昨天在设置Redis主从复制的时候,突然这么都不行.在设置好主从配置以后: slaveof 192.168.0.105 6379我启动的时候设置了 daemonize yes 所以不会显示启动日志.之后再启动redis-cli,auth 123456info以后:显示了主服务并没有启用,经过我再三确认,确定主服务器

2017-05-06 21:32:18 1000

原创 从零搭建Maven本地私服和简单使用

前言:不知道你对maven中央仓库导入依赖的方法怎么看,反正我是挺不喜欢这种方法的,弄个maven项目简直不要太浪费时间,而且最后你还会发现好多jar包都没有导入.所以,特地来写篇maven本地仓库的搭建.通过建立自己的私服,就可以降低中央仓库负荷,节省外网宽带,加速maven构建,自己部署构建等,从而高效的使用Maven有三种专门的Maven仓库管理软件可以来帮助大家建立私服:A

2017-04-13 20:22:30 1423

原创 实战Java高并发程序设计之ReentrantLock(二)

前面讲到了ReentranLock的基本使用,现在来看看它的底层实现.先看ReentrantLok的UML类图(图片来自:http://www.cnblogs.com/skywang12345/p/3496147.html)ReentrantLock实现了Lock接口.内部维持着一个Sync对象. /** * 该锁基于同步控制. 分为公平锁和非公平锁.

2017-04-05 22:22:03 329

原创 实战Java高并发程序设计之Condition

此处只讲该接口中的具体方法,至于实现,以后再讲.在多线程基础里面,我们将过了Object.wai()和Object.notify()方法.如果大家理解了这两个方法的话,那么就能很容易的理解Condition对象了.它和wait()和notify()方法的作用大致相同.但是wait和notify要配合synchronized关键字使用,而Condition是与重入锁相关联的.利用Cond

2017-03-29 20:53:27 311

原创 Java并发之AQS浅析

上一章我们讲了ReentrantLock.再来回顾下它的构造函数. public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(

2017-03-28 23:21:41 450

原创 实战Java高并发程序设计之ReentrantLock(一)

重入锁的特性:1.可重入.public class ReentrantLockTest extends Thread { public static ReentrantLock lock = new ReentrantLock(); public static int i = 0; public void run(){ for(int j = 0;j<100000;j++){

2017-03-28 00:11:57 304

原创 实战Java高并发程序设计之Java内存模型和线程安全

Java内存模型原子性:是指一个操作是不可中断的.即使多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰.一般CPU的指令是原子的.Q:i++是原子操作吗?A:不是.32位系统来说long型数据的读写不是原子性的(因为long有64位),也就是说两个线程同时对long进行写入的话,对线程之间的结果是有干扰的.有序性:在并发时,

2017-03-27 21:13:16 349

原创 实战Java高并发程序设计之多线程基础

1.什么是线程– 线程是进程内的执行单元进程的切换是一个重量级的操作,如果使用多进程去做并行,并发度不可能是很高的而线程是进程里更小的一个执行单元,所以线程可以较为广泛的用来做并发程序的设计2.线程的生命周期/** * 线程的所有状态都在Thread中的State枚举中定义 * @author mj * */public enum State

2017-03-22 22:58:12 369

原创 实战Java高并发程序设计之概念

学习高并发你必须知道的几个重要的概念:1. 同步(synchronous)和异步(asynchronous)同步和异步是对方法的调用而言的:同步调用时,会等待调用的方法完成以后才能继续执行这个方法。异步调用的时候会瞬间的返回,但是并不是表示这个请求已经完成了,但是会在后台起一个线程去执行接下来的任务2.并发(Concurrency)和并行(Parallelism)

2017-03-22 21:49:11 470

原创 java基础之ArrayList

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable{

2017-03-19 23:31:14 319 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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