- 博客(43)
- 收藏
- 关注
原创 Spring Security Oauth2 学习(客户端)
OAuthOAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据
2020-05-05 14:54:29
840
原创 Spring Security学习(三)授权管理器
在第一篇的授权部分,有分析到授权主要由AbstractSecurityInterceptor及其子类完成具体到实际代码中其实是 // 用户通过了认证,基于当前用户信息,和目标对象的安全属性配置,进行相应的权限检查 this.accessDecisionManager.decide(authenticated, object, attributes);AccessDecisi...
2020-03-29 14:25:59
1107
原创 Spring Security学习(二)认证管理器
前文分析到 UsernamePasswordAuthenticationFilter的时候,可以发现最终过滤器还是把用户登陆信息交给了认证管理器进行认证,如下面代码所示:this.getAuthenticationManager().authenticate(authRequest);本文继续分析认证过程AuthenticationManagerAuthenticationManager...
2020-03-07 13:16:10
945
原创 Spring Security学习(一)认证与授权
Spring SecuritySpring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。简单来说springsecurity主要对用户进行认证以及授权。认证是指验证用户是否为当前系统中的用户, 授权是指验证用户是否有权限执行某个操作。故此本文着重从认证以及授权两个方向对springsecurity进行分析。核心组件Security...
2020-03-07 13:15:42
1629
原创 面试还怕被问排序算法吗?
插入排序插入排序是最简单的排序算法之一。插入排序由N-1趟排序组成。对于从p=1到p=N-1趟,插入排序保证从位置0到位置p上的元素为已排序状态。代码示例:public static void insertionSort(int[] array) { int j; for (int p = 1; p < array.length; p++) { int temp = arr...
2019-09-21 14:58:30
184
原创 Spring Boot集成Actuator
Actuator 介绍actuator 是 spring boot 提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等使用 Actuator要想使用 Actuator 只需要在pom.xml依赖中加入Actuator 依赖即可,代码如下: &lt;dependency&gt; &lt;groupId&gt;org.springframewor...
2019-02-25 20:07:48
562
原创 java ArrayList 源码分析(1.8)
简介ArrayList 跟HashMap一样是很常用的集合类。特点ArrayList 的底层使用的依然是数组,但是与 Java 中常规的数组不同的是,它的容量能动态增长。在添加大量元素前,java通过调用ensureCapacity操作来增加 ArrayList 实例的容量。内部变量// 默认容量为10private static final int DEFAULT_CAPACITY ...
2019-02-17 16:19:20
420
原创 java 并发之 Lock
Lock 与 Synchronized 一样用于控制多个线程访问共享资源。Synchronized 关键字隐式地获取锁和释放锁,同时也将锁的获取释放流程固定化了。Lock 则不同,它支持用户去手动地获取和释放锁。基本方法Lock 是一个接口,定义了锁的获取与释放的基本操作:void lock():使用得最多的一个方法,就是用来获取锁。如果锁已被其他线程获取,则进行等待,在锁获得后从该方法返...
2018-11-24 19:16:20
172
原创 java 并发之线程
现代的操作系统都是每运行一个程序就会为其创建一个进程(Process),进程具有独立性,动态性和并发性的特点。,在操作系统中可以支持多个进程并发地执行,比如一边编程,一边听歌…多线程则是对多进程的扩展,线程被称作轻量级进程(Light Weight Process),一个进程可以拥有多个线程,这些线程拥有独立的程序计数器,堆栈和局部变量等等,可以并发执行。因此,线程是现代操作系统调度的最小单元。...
2018-11-24 19:15:52
146
原创 java 并发之 volatile 实现原理
volatile 属于轻量级的 synchronized, 它保证了共享变量的“可见性”。Java语言规范对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。一个变量如果用volatile修饰了,那么 Java 可以确保所有线程看到这个变量的值是一致的,如果某个线程对使用了 volatile 修...
2018-11-24 19:15:28
182
原创 java 并发之 synchronized 实现原理
在 java 开发中 synchronized 是使用的最多的工具。表现形式在 java 中每个对象都可以作为锁:对于普通同步方法,锁是当前实例对象;对于静态同步方法,锁是当前类的 Class 对象;对于同步方法快,锁是 Synchronized 括号里配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁。实现原理JVM 基于进入和退出 Monitor 对象来实现方法同...
2018-11-24 19:15:01
237
原创 java 动态代理
文章目录代理应用场景开闭原则静态代理代码示例动态代理代码示例代理通过不直接访问被代理对象的方式,而访问被代理对象的方法,这样的模式称为代理。应用场景在不修改源码的情况下,增强一些方法,在方法执行前后做任何你想做的事情;在使用RPC框架的时候,可以通过动态代理的方式来进行逻辑搭建,实现松耦合;SpringAOP 便是采用的动态代理的机制来完成的。开闭原则所谓开闭原则就是:对修改关...
2018-10-31 19:53:48
183
原创 Java垃圾回收
文章目录垃圾回收的意义什么才是垃圾引用垃圾回收算法标记清除算法复制算法标记整理算法分代收集算法垃圾收集器Serial收集器垃圾回收的意义在C、C++ 中,对象所占的内存在程序结束运行之前一直被占用,除非被显式地释放。但是在Java中,java虚拟机具有自动内存管理机制,不需要为每一个new出来的对象显式地编写配对的delete/free内存的代码,由虚拟机区清理内存垃圾,不容易出现内存泄漏或者...
2018-10-29 19:28:02
153
原创 JVM 学习
JVM(Java Virtual Machine)Java程序的一大特性就是跨平台特性。Java虚拟机(JVM)是实现这一特性的关键。因为字节码文件(.class)可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将.class文件解释成为特定的机器码进行运行。从而可以达到一次编译到处运行的效果。这一特性就好比各个厂商的浏览器各不相同,但是html都能在...
2018-10-28 16:10:53
232
原创 java 注解
概述java 的 Annotation(注解)是代码里面的一种特殊标记,这些标记不会影响程序的原有逻辑,只有配套的注解处理工具经过读取,处理,才能够让这些注解产生作用。Annotation 相当于修饰符,可以修饰类、方法,成员变量等。基本 Annotation@Override 表示当前的方法定义将覆盖超类中的方法。@Deprecated使用了注解为它的元素编译器将发出警告,因为注解@...
2018-10-09 19:04:27
283
原创 java HashMap 源码分析(1.8)
概述HashMap是Java中使用频率最高的用于存储键值对的数据类型。特点HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线...
2018-09-18 21:55:34
188
原创 docker学习笔记(一)
Docker学习笔记(一)什么是DockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。功能和组件Docker 客户端Docker deamonDocker 容器Docker 镜像RegistryDocker 客户端通过命令行或者其他工具使用 Docker AP...
2018-09-17 22:11:26
125
原创 java 的几个关键字(一)
static 关键字static 关键字可以用来修饰变量和方法,定义静态代码块,也可以用来修饰内部类:变量和方法: 被 static 修饰的成员属于类,不属于单个这个类new出来的某个对象(即不能通过this调用),被类中所有对象共享,可以通过类名调用。调用格式:类名.静态变量名 类名.静态方法名()静态代码块: 一个对象被创建的顺序为:静态代码块—>非静态代码块—>...
2018-09-16 21:41:01
421
原创 Redux 介绍 (二)
ActionAction 是把数据从界面或者服务器端传到 store 的有效载荷。它是 store 数据的唯一来源。{ type: 'add', name: 'newItem'}Action 本质上是 JavaScript 普通对象。redux约定,action 内必须使用一个字符串类型的 type 字段来表示将要执行的动作。多数情况下,type 会被定义成字符串常量。当应用...
2018-09-16 17:33:13
174
原创 Redux 介绍(一)
什么是Redux它一个面向JavaScript应用的可预测状态的容器。协助管理我们的前端应用的状态。与 React 搭配首先说明一点,react项目不一定要搭配Redux。 在React中,深层次的组件的属性需要有父组件向子组件传递,当父子组件之间的隔代很多时,属性需要一层一层地传递,中间的部分组件可能是不需要使用这些多余的属性的,那么这样的做法就会很鸡肋。 redux可以帮助我们...
2018-09-15 22:09:20
258
原创 React-router 介绍
路由简介路由是干什么的? 根据不同的 url 地址展示不同的内容或页面。 单页面应用最大的特点就是只有一个 web 页面。因而所有的页面跳转都需要通过javascript实现。当需要根据用户操作展示不同的页面时,我们就需要根据访问路径使用js控制页面展示内容。React-router 简介React Router 是专为 React 设计的路由解决方案。它利用HTML5 的hi...
2018-09-13 21:36:59
1129
原创 单页面应用
简述单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用,就是只有一张Web页面的应用。该应用仅在该Web页面初始化时加载相应的HTML、JavaScript 和 CSS。一旦页面加载完成了,应用不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用 JavaScript 动态的变换HTML的内容,从而实现UI与用户的交互。...
2018-09-12 21:32:26
163
原创 React 入门(六)
实战结合之前的学习,开发一个简单的项目,点击实现名片翻转: 主要组件:import React, { Component } from 'react';import header from './header.svg';import './Header.css';class Header extends Component { constructor(props) ...
2018-09-11 23:04:49
142
原创 React 入门(五)
组件的生命周期声明一个React组件可以通过函数或者 ES6class 的形式,当使用ES6class类的时候需要继承React.Component类,并实现render()方法。 组件实例在被创建或者插入到DOM中时,提供以下方法可以调用: 1. constructor():这是组件的构造函数,将会在组件被装配之前调用。当覆写该函数时,需要在最顶部执行super(props)。否则,th...
2018-09-10 21:12:19
161
原创 React 入门(四)
UI更新的方式ReactDOM.render()是将 React 元素渲染到 dom 中的唯一方法。当元素被渲染到界面中以后,我们可以使用this.setState()方法来修改组件属性,从而更新节点。 React 操作的永远都是JSX声明的元素或者定义好的组件,因而,我们更新页面中的节点只能通过修改组件属性的方式,触发 Dom 更新。注意点不能绕过this.setState()方...
2018-09-09 22:22:25
121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人