自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用Spring Security OAuth2使用JWT生成token及自定义token携带的信息(十)

自定义token携带信息很简单,主要步骤就是自定义TokenEnhancer,然后将自定义的TokenEnhancer加入到TokenEnhancerChain中,最后设置到端点中endpoints.tokenEnhancer(tokenEnhancerChain)。

2020-08-31 15:46:52 6309 1

原创 OAuth2与JWT的区别JWT的适用场景及好处(九)

什么是jwt、jwt相对于oauth2和session的好处

2020-08-28 18:21:21 7190

原创 授权服务器与资源服务器分离-资源服务器验证token是否合法(六)

资源服务器校验token的方式

2020-08-28 16:45:20 4034 14

原创 Spring Security OAuth2密码模式(四)

之前已经使用客户端模式进行认证授权的演示记录,但到目前为止还没有使用到用户相关的信息,之前项目都是在用户登录的时候判断用户名和密码是否正确,都校验通过后查询用户拥有的角色及菜单,并将用户权限信息放入session,那使用oauth2后怎么结合用户的角色权限保护资源呢?本篇记录一下密码模式的使用姿势。

2020-08-28 11:47:21 3075 2

原创 Spring Security OAuth2使用步骤(一)

Springclound Security Oauth2配置授权服务器和资源服务器、token存储

2020-08-26 14:18:22 3951 4

原创 Spring Security OAuth2配置WebSecurityConfigurerAdapter及与ResourceServerConfigurerAdapter区别(三)

上一篇提到通常WebSecurityConfigurerAdapter (spring security的配置)和ResourceServerConfigurerAdapter会配合来对url进行访问控制,本篇通过示例细化一下它们两者的使用。

2020-08-26 14:16:53 5866

原创 Spring Security OAuth2授权服务器资源服务器基本配置(二)

上一篇介绍了一些基本的概念及大致的使用流程,本篇我们完成授权服务的搭建并实现基本的认证授权功能。

2020-08-26 11:44:28 1192

原创 线程(十五)---CompletableFuture、并行流(parallelStream)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢! 记录一下使用并行流、CompletableFuture、及普通处理方式的效率问题,创建一个taskList表示要处理的任务列表,新建task方法,sleep两秒,模拟下处理每个任务所需时间,先测试一下使用并行流,直接上代码:public class ParallelStreamAndCompletableFuture { static final List<Ob...

2020-08-25 11:54:38 984

原创 线程(十四)---ThreadPoolExecutor线程池

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢! 前面了解了Fork/Join线程池,再记录一下ThreadPoolExecutor线程池的使用,在使用前先说一下在《阿里巴巴java开发手册》中对并发处理的要求:1.线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程。2.线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这样的处理方式可以更加明确线程池的运行规则,避免资源耗尽的风险...

2020-08-24 18:19:18 221

原创 线程(十三)---ForkJoin

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢! 到这里,关于 CompletableFuture 的基本使用你已经了解的差不多了,不知道你是否注意,我们前面说的带有 Sync 的方法是单独起一个线程来执行,但是我们并没有创建线程,这是怎么实现的呢?细心的朋友如果仔细看每个变种函数的第三个方法也许会发现里面都有一个 Executor 类型的参数,用于指定线程池,因为实际业务中我们是严禁手动创建线程的,如果没有指定线程池,那自然就会有一个默认.

2020-08-24 16:54:40 713 1

原创 线程(十二)---CompletableFuture(三)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!示例五:异常处理接着上一篇记录一下CompletableFuture的异常处理,异常处理通常使用exceptionally、whenComplete、handle相关方法,他们之间有一点区别,exceptionally相当于try/catch,whenComplete和handle相当于try/finally。以下先演示下exceptionally的使用方式,exceptional...

2020-08-24 15:57:38 444

原创 线程(十一)---CompletableFuture(二)

先列一下CompletableFuture 中4个异步执行任务静态方法:public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) { return asyncSupplyStage(asyncPool, supplier);}public static <U> CompletableFuture<U> supplyAsync(Supplier...

2020-08-24 15:01:26 333

原创 线程(十)---CompletableFuture(一)

CompletableFuture有很多方法,为了方便归类和记住每个方法是否需要传参是否有返回值,先贴上网上找到的一张图,因为 CompletableFuture 的函数命名以及其作用都是和这几个函数式接口高度相关的。一、串行关系then 直译【然后】,也就是表示下一步,所以通常是一种串行关系体现, then 后面的单词(比如 run /apply/accept)就是上面说的函数式接口中的抽象方法名称了,它的作用和那几个函数式接口的作用是一样一样滴。如:CompletableFut...

2020-08-24 11:36:11 255

原创 线程(九)---Future

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!Future常用方法:1.get()方法可以当任务结束后返回一个结果,如果调用时,工作还没有结束,则会阻塞线程,直到任务执行完毕。2.get(long timeout,TimeUnit unit)做多等待timeout的时间就会返回结果。3.cancel(boolean mayInterruptIfRunning)方法可以用来停止一个任务,如果任务可以停止(通过mayInte...

2020-08-24 11:03:42 199

原创 线程(八)---Semaphore

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!概念:Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。从概念上讲,Semaphore是一个计数信号量,Semaphore包含一组许可证。如果有需要的话,每个acquire()方法都会阻塞,直到获取一个可用的许可证。每个release()方法都会释放持有许可证的线程,并且归还Semaphore一个可用的许可证。使用Semaphore可以..

2020-08-21 17:04:46 336

原创 线程(七)---CyclicBarrier

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!概念:CyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行。通过CyclicBarrier的await()方法,线程就处于barrier状态。找到一张动图很好的说明了CyclicBarrier的执行过程。常用构造方法:1.public CyclicB..

2020-08-21 16:00:24 710

原创 线程(六)---CountDownLatch

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!概念:CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。主要方法:1.public void await() thr..

2020-08-21 14:49:38 149

原创 线程(五)---join

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通告私信我或者评论此博客的方式指出,以免误人子弟。多谢!对于join()的概念如名字一样,当调用线程的join方法时,之后所有的操作需要等该线程结束才能继续,因此,可以很方便的使用join实现多个线程的串行执行,以下对使用join串行化执行多个线程的方式进行简单介绍,首先我创建一个线程任务类JoinTask,线程中执行的方法就是打印五次线程名字,代码如下:public class JoinTask extends Thread { ..

2020-08-21 14:02:47 155

原创 线程(四)---Lock

提到synchronized 不得不说一下Lock,它是从Java 5之后,在java.util.concurrent.locks包下的一个类,同synchronized一样都可以实现同步访问。两者的区别如下:ReentranLock是Lock的唯一实现类,它可以实现公平锁,默认非公平,公平锁与非公平锁区别如下:下面记录下ReentranLock的简单使用:1.首先演示ReentranLock实现同步(与synchronized一样实现同步)的例子,public class ...

2020-08-20 17:48:18 115

原创 线程(三)---synchronized

概念:synchronized 用来做线程同步;对象锁 与 类锁:synchronized加到非静态方法或代码块时,给对象加锁,多个线程执行该对象的同步方法会互斥多个对象执行对象中的同步方法不会互斥。synchronized加到静态方法或类时,锁的是这个类,多个线程多个对象执行对象中的同步方法时都会互斥对以上说明通过代码来演示以便方便理解。1.验证修饰非静态方法public class SynchronizedTest { public static void ..

2020-08-20 15:18:44 123

原创 线程(二)---wait notify的应用场景

实现生产者消费者模型1.创建生产者类public class Producer implements Runnable{ private List<Integer> container; public Producer(List<Integer> container){ this.container = container; } @Override public void run() { try

2020-08-20 12:21:22 661

原创 Linux常用命令(防火墙--firewall)

安装firewallyum install firewalld 不中断服务的重新加载firewall-cmd --reload查看防火墙状态systemctl status firewalld启动 systemctl start firewalld关闭systemctl stop firewalld开机启用 systemctl enable firewalld开机禁用systemctl disable fire...

2020-08-15 22:25:56 168

空空如也

空空如也

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

TA关注的人

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