为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Security(7)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~有时某些业务或者功能,需要在用户请求到来之前就进行一些判断或执行某些动作,就像在Servlet中的FilterChain过滤器所做的那样,Spring Security也有类似机制。Spring Security有三种增加过滤器的方式:addFilterBefaore()、 addFilterAt()和addFilterAfter(),也可以disable掉默认的过滤器,例如:1、http.logout().disable();或者http.headers().disable();2、用自定义过滤器http.addFilterAt(new...

15浏览
0推荐
0评论

Spring Security(6)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~Spring Security使用MySQL保存cookie记录虽然方便,但是目前更多的主流互联网应用都是用NoSQL来保存非业务数据的,Spring Security也应该可以实现这个功能。之前Spring...

42浏览
0推荐
0评论

Spring Security(5)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~经常上网的人都应该有这样的体验:很多网站或者APP只需要第一次登录时输入用户名和密码之后,后面很长一段时间内就不需要再次输入密码了。这确实是一个非常好的体验,不然每次都让人输用户名和密码就太麻烦了。Spring Security也提供了这样的功能,也就是Remember-Me(记住我)。要实现这个功能也异常简单:只需要稍稍修改一下WebSecurityConfiguration即可:// 控制逻辑 @Override protected void configure(HttpSecurity http) throws Exception {...

69浏览
0推荐
0评论

Spring Security(4)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~前面的方法中,除了login()方法能成功,另外两个都失败,并不是因为代码问题,而是Spring Security默认是通过Web页面来实现页面逻辑跳转的。但在前后端分离的开发模式中,页面跳转的逻辑后端已经无法直接控制了,而是通过返回状态码由前端来执行跳转。因此,需要对应用进行改造。首先自定义认证成功处理器,也就是实现AuthenticationSuccessHandler接口:/**  * 自定义认证成功处理器  *  * @author 湘王  */ @Component public class CustomAuthenticationSuccessHandler...

124浏览
0推荐
0评论

Spring Security(3)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~前面运行写好的代码之所以没有任何显示,是因为还没有对Spring Security进行配置,当然啥也不显示了。这就好比你坐在车上,却不打开发动机,车子当然跑不起来。所以咱们就来让它跑起来。不过在配置之前,有必要对Spring Security的登录流程做个大致了解。如果深入源码去了解,这个玩意及其复杂,但是没必要,知道它的机制就行了。就好比你买车也不必把发动机拆开去看它是怎么工作的吧。简单来说它就是下面这些步骤:1、Spring...

147浏览
0推荐
0评论

Spring Security(2)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~前面已经把需要的环境准备好了,包括数据库和SQL语句,现在再来写代码。至于安装MySQL什么的就跳过去了,娘度子里面一大把。先做一点声明:因为考虑到有些初学Java的工程师可能并不太熟悉MyBatis,而且MyBatis也并非能完全代替SQL,所以在接下来的所有业务代码中,会以JDBC为主。这么做也很好理解:会MyBatis的很大可能也会JDBC,但会JDBC的就不一定会MyBatis了。而且MyBatis用多了,写SQL能力可能会退化,这其实不好。当然,以上纯属个人意见,不喜可喷,欢迎来喷。先创建一个专门用来操作数据库的Dao类,就叫MySQLDao吧:/**  *...

98浏览
0推荐
0评论

Spring Security(1)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~虽然说互联网是一个非常开发、几乎没有边界的信息大海,但说起来有点奇怪的是,每个稍微有点规模的互联网应用都有自己的权限系统,而权限的本质却是是封闭的——开放的互联网有着封闭的权限。现在做Java后端应用开发用的都是Spring框架,但在Spring诞生之前,却是Servlet的天下,都是根据业务规则各自实现自己的Servlet。权限系统也是一样,在没有统一的权限系统规范之前,各个Java业务系统都是根据需求自己实现对功能的授权管理。这种早期的权限系统称之为ACL(Access Control...

140浏览
0推荐
0评论

Java新特性(2):Java 10以后

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~虽然到目前为止Java的版本更新还没有什么惊天动地的改变,但总是会冒出一些有趣的小玩意。前面列举了Java9和Java10的一些特色,现在接着来撸一撸Java11之后的新奇特。Java9更新了Http 2 Client,也说过先不着急看,因为在后续版本中语法会变。这不,到Java11就实现了。最直接的变化就是http相关包名由Java 9的jdk.incubator.http改为Java 11的java.net.http。感觉java.net.http才像那么回事,incubator是个啥呢?好像完全和http不沾边。本着好奇害死猫的精神,查了下incubator的意思:...

41浏览
0推荐
0评论

Java新特性(1):Java 9和Java10

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~自从Java在2009年被Oracle收购之后,就不再开源,除了Oracle官方发布的版本之外,还有OpenJDK版本,这两者的区别可以自行找某度去搞明白。对于没有几千万用户的应用来说,OpenJDK已经足够了,即使是一些大厂,内部系统用OpenJDK也足够了。从Java 8开始,整个JDK就一直在致力于不断改进,不断融合新的开发特性。Java目前始终保持前向兼容,所以如果有新的稳定版JDK出来,就可以立即使用新的JDK,尝试一些新特性,而不必担心不兼容的问题(可能个别地方有改动,但对个人及小型开发来说可以忽略不计)。先做一些名词解释:1、JEP:Java...

59浏览
0推荐
0评论

Java反应式编程(3)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~在前面的文章中已经把vert.x框架给跑起来了,但是实际开发中服务端是需要响应客户端的请求的,所以肯定需要增加接口,但是该怎么加呢?有的人倾向于去搜索引擎找答案,其实还有一个比较好的方式是去官网看看有啥可以用的资料,比如说打开反应式编程的官网就能直接找到最新最准确的文档: 可以看到,点击进入【Vert.x Web】之后,再在左边浏览,然后点击【Routing by HTTP method】: 为了节约大家的时间,我就直接把代码展示出来了。先创建接口路由和GET请求:// 创建路由 Router router = Router.router(vertx); //...

41浏览
0推荐
0评论

Java反应式编程(2)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~看了前面对反应式编程的说明,可能很多人都会打退堂鼓了。Lambda都已经够难理解的了,又来了一个反应式编程!实在卷不动了~其实很好肝。就像之前学习编程,或者说学习Java的同学,也不是全都要把面向对象编程OOP搞懂了才能往下学的吧,之前的OFP也是一样,现在轮到ORP这种编程范式也还是这样的,比如我们可以到Github上看有关反应式编程的资料: 右边是目录,包括一些概念性的介绍,还有各种文档,包括最主要的操作符。而且为了降低学习的难度,官方还特意提供了大量的示例代码。比如点击【Creation】,可以跳转到创建相关的操作符界面:...

43浏览
0推荐
0评论

Java反应式编程(1)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~前面把Java函数式编程的由来和最主要的核心知识点讲完了。包括比较难懂的Lambda表达式是怎么演变而来的也全部都撸了一遍。Lambda表达式这种编程方式的确是让人不太习惯,尤其是之前那种纯面向对象编程的思维模式一旦建立起来之后,想要再接受这种比较奇怪的语法和编程模式,确实是非常困难。但Lambda表达式和流式编程的出现,又催生了另一门新的技术:反应式编程。《三国演义》中说:“天下大势,分久必合,合久必分”。在科技领域也是一样。之前没有科学的时候,由占星术、炼金术、神学等催生出了一系列的自然科学,像什么物理、化学、数学等等。等到这些学科演变的差不多了之后,又开始了逐步的融...

34浏览
0推荐
0评论

Java组合异步编程(2)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用CompletableFuture,就会具备一种神奇的能力:将同步变为异步(有点像用了月光宝盒后同时穿梭在好几个时空的感觉)。怎么做呢?来看看代码。新增一个商店类Shop:/**  * 商店类  *  * @author 湘王  */ public class Shop {     private String name = "";     public Shop(String name) {         this.name = name;     }     public String...

67浏览
0推荐
0评论

Java组合异步编程(1)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~在《计算机干活的两种方式》中我们提到过同步和异步的区别。所谓同步就是事情只能一件接一件地顺着干,而不能跳过。比如外卖小哥送外卖只能一件一件地送,不能说一件先送一半再送另一件。而异步就可以不按顺序出牌,但是这种不按顺序需要以互不影响为前提。比如李雷问韩梅梅一个数学问题,但是韩梅梅一时答不出来,李雷就先去干其他的事情去了。等韩梅梅知道答案的时候,再给李雷打电话告诉他结果。就像这样子: Java也支持这种异步工作模式。还是以代码来举例。public static void doSomethingElse() {    try {...

60浏览
0推荐
0评论

Java函数式编程(2):流式计算

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~Lambda表达式虽然将接口作为代码块赋值给了变量,但如果仅仅只是Lambda表达式,还无法让Java由量变引起质变。真正让Lambda能够发挥出巨大威力的,就是流式计算。所谓流式计算,就是让数据像在流水线上一样,从一道工序流转到下一道工序。就像这样: 如果把数据处理的方式比作流水线,那么Spark、Storm和Flink就是目前市面上头部的三家工厂。它们有各种各样的数据装配间(也就是各种处理数据的算子),将数据按照所需加工成型。所以,不懂流式计算根本就做不了大数据开发。上面那张图,如果换成流式计算的,就是这样:...

63浏览
0推荐
0评论

Java函数式编程(1):Lambda表达式(2)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~从之前的Lambda表达式的演变过程可以知道,Lambda表达式其实是一个对匿名内部类的简化过程:去掉了多余的语法修饰,只保留最最核心的部分。在Java中类似这种使用匿名内部类写代码的场景非常多,比如Runnable接口,就是典型的最好使用Lambda表达式的地方。例如这样的代码:...

43浏览
0推荐
0评论

Java函数式编程(1):Lambda表达式(1)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~Java在其技术发展周期中经历过几次比较重要的变化,如果不是这几次比较重要的变化,恐怕不会有现在这样的江湖地位。个人看来,至少有两次,一是2010~2011年兴起的移动应用开发,Android的出现,让Java狠狠地出了次风头。再就是2014年发布的Java8,这个版本也是Java8之前和后续所有版本的一个分水岭。尽管在Java8之后出现了更多的版本,也加入了很多的功能,但从改变上来上,Java8可以说是一次脱胎换骨的变化,而原因就在于它引入了函数式编程(这个没有绝对的正确与否,仅是个人之间)。Java码农都知道,虽然都学过集合、I/O、多线程、泛型、抽象类、注解、反射等...

55浏览
0推荐
0评论

Java多线程(7):JUC(下)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~除了四种常见的同步器(发令枪、摇号器、栅栏和交换机),JUC还有所谓线程安全的容器、阻塞队列和一些特殊的类。其中常出现的就是线程安全的容器和阻塞队列。与其说这是两个大的分类,还不如说它就是两个用得最多的类:ConcurrentHashMap和ArrayBlockingQueue。我的风格是尽量少讲原理,多讲实际生活中的案例,除非它非常重要,就像AQS,这玩意绝对是个重量级的神器,差不多整个JUC都是建立在它之上的。如果说学习多线程只有一次集中全部精力的机会的话,那我绝对建议把这份宝贵的精力花在AQS上,物超所值。至于搞明白ThreadPool底层原理、synchroniz...

74浏览
0推荐
0评论

Java多线程(7):JUC(上)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~前面把线程相关的生命周期、关键字、线程池(ThreadPool)、ThreadLocal、CAS、锁和AQS都讲完了,现在就剩下怎么来用多线程了。而要想用好多线程,其实是可以取一些巧的,比如JUC(好多面试官喜欢问的JUC,就是现在要讲的JUC)。JUC就是java.util.concurrent的首字母缩写,它是Java并发工具包就是中提供的各种工具类的统称,主要分为几大类:1、同步器;2、线程安全的容器;3、阻塞队列;4、一些特殊的类。他们都有各自适合应用场景。这里是并发工具包相关类的继承结构:...

57浏览
0推荐
0评论

Java多线程(6):锁与AQS(下)

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~之前说过,AQS(抽象队列同步器)是Java锁机制的底层实现。既然它这么优秀,是骡子是马,就拉出来溜溜吧。首先用重入锁来实现简单的累加,就像这样:/**  * 用重入锁实现累加  *  * @author 湘王  */ public class MyLockTest {     private final Lock lock = new ReentrantLock();     private int value;     public int getNext() {         lock.lock();         try {...

50浏览
0推荐
0评论
首页上一页1234下一页尾页
意见反馈 帮助中心 APP下载
官方微信