自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Shiro使用Session缓存

Shiro的Session缓存主要有两种方案,一种是使用Shiro自己的Session,不使用HttpSession,自己实现Shiro的Cache接口和Session缓存等;另外一种是直接使用spring boot的spring-session-data-redis的包,并且配置RedisTemplate和Redis的序列化方法就可以了。相对来说第二种方式非常简单,第一种还需要不少开发...

2019-09-17 09:35:00 573

转载 Shiro的几个关键类

Shiro在于Spring集成中,需要配置SecurityManager,Realm,ShiroFilterFactoryBean这三个类。在Web环境中SecurityManager一般配置DefaultWebSecurityManager,如果需要扩展或者定制一些额外的功能,可以配置DefaultWebSecurityManager的继承类;Realm需要先继承Authorizing...

2019-09-01 21:27:00 489

转载 谈谈JVM垃圾回收

概述 Java运行时区域中,程序计数器,虚拟机栈,本地方法栈三个区域随着线程的而生,随线程而死,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收问题。而Java堆和方法区则不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存可能也不一眼,我们只有在运行期,才能知道会创建的对象,这部分的内存分配和回收,是垃圾回收器所关注的。垃圾回收器需要完成三个问题:那些内...

2019-08-25 21:22:00 74

转载 Shrio使用Jwt达到前后端分离

概述 前后端分离之后,因为HTTP本身是无状态的,Session就没法用了。项目采用jwt的方案后,请求的主要流程如下:用户登录成功之后,服务端会创建一个jwt的token(jwt的这个token中记录了当前的操作账号),并将这个token返回给前端,前端每次请求服务端的数据时,都会将令牌放入Header或者Parameter中,服务端接收到请求后,会先被拦截器拦截,token检验的拦截...

2019-08-24 18:02:00 155

转载 Shiro权限注解原理

概述 前不久刚学会使用权限注解(),开始思索了一番。最开始猜测实现方式是注解@Aspect,具体实现方式类似如下所示(切面记录审计日志)。后来发现并非如此,所以特地分析一下源码。 @Component @Aspect public class AuditLogAspectConfig { @Pointcut("@annotation(com.ygsoft.ecp.mapp.bas...

2019-08-20 17:55:00 538

转载 Spring Boot整合Shiro

概述 4A(认证Authentication、授权Authorization、账号Account、审计Audit)是现代任何IT系统中很基础但非常重要的部分,无论是传统管理信息系统还是互联网项目,出于保护业务数据和应用自身的安全,都会设计自己的登录和资源授权策略。最近项目中需要登录和权限相关的功能,项目为spring-boot工程,现在流行的权限验证框架有shiro和spring-sec...

2019-08-18 20:24:00 93

转载 Java虚拟机日志与参数

虚拟机日志 打印GC日志可以使用参数-XX:+PrintGC /** * -Xmx10m -Xms10m -XX:PretenureSizeThreshold=10485760 * -XX:+PrintGC -XX:+UseSerialGC */ public class GCLogTest { private static final int CAPACITY = ...

2019-08-15 14:39:00 627

转载 函数的调用过程与出入栈

函数调用的过程 线程执行的基本行为是函数调用,每次函数调用的数据都是通过Java栈传递的。Java栈与数据结构上的栈有类似的含义,它是一块先进后出的数据结构,只支持入栈和出栈两种操作。Java栈的主要内容是栈帧。每次函数调用都会有一个对应的栈帧被压入Java栈,每次函数调用结束(无论是正常返回或者抛出异常),都会有一个栈帧被弹出Java栈。 如图所示,函数1中调用函数2,函数2中调用函数...

2019-08-13 19:02:00 915

转载 常用linux的命令

常用但是容易忘记的命令 查看java项目的进程 ps -ef | grep java jps 根据进程查询端口 lsof -i | grep pid netstat -nap | grep pid ps -ef | grep pid 根据端口查询进程 lsof -i:port netstat -nap | grep port nohup command>/dev/null 2&...

2019-08-13 10:59:00 80

转载 JVM运行时数据区

Java虚拟机定义了若干种程序运行期间会使用的运行时数据区域,其中一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是和线程一一对应,这些与线程对应的数据区域随着线程开始而创建,线程的结束而销毁。 PC寄存器 PC寄存器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,每条线程都要一个独立的PC寄存器,这个内存也是线程私有的内存。正在执行 java 方法的...

2019-08-12 18:27:00 75

转载 为什么写博客

刚接触博客时时在看别人写的文章,但是从来没有自己诞生过去写博客的想法。而我写博客的契机是三年前我的一位同学告诉我他在尝试写博客,才想到好像自己也可以去写博客。但是再写了第一篇之后,文字格式化和排版花费很多时间后,就放弃了。直到最近我的那位同学和我谈起过这个,我才想起来之前写过一篇。刚好最近辞职中有些时间,在将博客的格式改为Markdown之后,再也不用为格式化和排版花费很多时间了。 以前...

2019-08-10 20:27:00 56

转载 装饰器模式

定义 动态的给一个对象添加一些额外的职责。就功能来说,装饰模式相比生成子类更加灵活 使用场景 装饰类和被装饰类都可以独立发展,不会耦合,它是继承关系的一个替代方案 需要扩展一个类的功能,或者给一个类增加附加功能 动态增加一个类的功能,再动态的撤销 需要为一批兄弟类,进行改装或者加装功能首选装饰模式 实现方式 组件接口 /** * 基础接口 **/ public interface...

2019-08-10 11:36:00 71

转载 策略模式

定义 定义一组算法,将每个算法封装起来,并且它们之间可以互换 使用场景 多个类只有在算法或者行为上不同的场景 算法需要自由切换 实现方式 一般判断条件的代码,可以使用策略模式优化 public double getPrice(String type, double price) { if (type.equals("gerneral")) { System.o...

2019-08-09 15:56:00 57

转载 观察者模式

定义 定义对象间的一对多的关系,使得每当一个对象的状态改变,则所有依赖与它的对象都会得到通知并被自动更新 使用场景 观察者和被观察者是抽象耦合,利于扩展 一个对象的改变将会导致一个或多个对象的改变,不清楚具体有多少对象以及这些被影响的对象是谁的情况 如果有这样一个影响链的情况下也可以使用,例如A的改变会影响B,B的改变会影响C......,可以使用观察者模式设计一个链式触发机制。 实...

2019-08-09 11:25:00 72

转载 建造者模式

定义 将一个复杂对象的创建与它的表示(部件与装配细节)相分离,使得同样的创建过程可以创建不同的表示。 使用场景 可以将装配细节封装起来,调用者不必知道具体的产品的内部结构和产生过程。 多个部件,都装配到一个对象,不同的装配过程或者不同的装配顺序,产生不同的结果,可以使用该模式 实现方式 产品类 public class Product { private String pa...

2019-08-08 11:32:00 75

转载 代理模式

定义 为其他对象提供一种代理以控制这个对象的访问。 使用场景 职责清晰,真实角色就是实现业务逻辑,不必关系其他非本职的工作。 高扩展性,具体的角色随时变化,只要实现了接口,代理类都可以在不用改变的情况下使用。 实现方式 一个简单的RPC通信,运用了动态代理。详细的代码请参考自己实现RPC通信 package com.fzsyw.client; import java.lang.re...

2019-08-08 10:31:00 86

转载 工厂模式

定义 简单工厂:由一个工厂对象决定创建出产品的实例。 工厂方法:定义一个用于创建对象的接口,让使用者决定实例化哪一个类。工厂方法使一个类的实例化延迟到其使用者。 抽象工厂:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体实现类。 使用场景 简单工厂模式将对象的创建和对象的使用进行了分离,屏蔽了中间具体的产品类,让对象的使用者不需要知道对象的创建细节。比如线程池的创建...

2019-08-01 11:51:00 99

转载 单例模式

定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 使用场景 当一个类只有一个实例,并且第三方可以从一个公共的访问点访问它时。 当一个唯一一个的实例可以通过子类化来扩展,而且第三方再不需要改代码的情况下就能使用一个扩展实例 当是一个对象需要频繁地创建、销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显。 实现方式 懒汉式(在getInstance方法上加同步...

2019-07-31 10:57:00 50

空空如也

空空如也

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

TA关注的人

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