<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[magicproblem的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/magicproblem</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; magicproblem]]></copyright><item><title><![CDATA[SpringSecurity配置及注解说明]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/120959182</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/120959182</guid><author>magicproblem</author><pubDate>Mon, 25 Oct 2021 22:27:47 +0800</pubDate><description><![CDATA[一、配置准备
1、引入相关pom.xml
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;
            &lt;version&gt;2.0.4.RELEASE&lt;/version&gt;
     ]]></description><category></category></item><item><title><![CDATA[dockerfile基本内容笔记]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/118878385</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/118878385</guid><author>magicproblem</author><pubDate>Sun, 18 Jul 2021 19:16:51 +0800</pubDate><description><![CDATA[一、docker file的基本语句
1、FROM
基础镜像，当前新镜像是基于哪个镜像的。
2、MAINTAINER
用于标注镜像维护者的信息，如邮箱、姓名。
3、RUN
容器构建时所需执行的命令。
4、EXPOSE
当前容器默认暴露在外的端口。
5、WORKDIR
指定在创建容器后，终端默认登陆的进来工作目录位置。
6、ENV
用来在构建镜像过程中设置环境变量。
7、ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。
8、COPY
类似ADD，拷贝文件和目录到镜像中。
]]></description><category></category></item><item><title><![CDATA[Activiti7学习笔记———activiti进阶]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/117635938</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/117635938</guid><author>magicproblem</author><pubDate>Mon, 14 Jun 2021 21:42:03 +0800</pubDate><description><![CDATA[一、流程实例
1、通过Businesskey关联业务
    /**
     * 启动流程实例，添加businessKey
     */
    @Test
    public void addBusinessKey(){
//        1、得到ProcessEngine
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//        2、得到RunTimeService
    ]]></description><category></category></item><item><title><![CDATA[Activiti7学习笔记———activiti基本介绍及使用]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/117595854</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/117595854</guid><author>magicproblem</author><pubDate>Sat, 05 Jun 2021 17:45:13 +0800</pubDate><description><![CDATA[一、Activiti使用环境
1、idea actiBPM插件的安装
方式一
通过idea搜索actiBPM来安装插件

方式二
通过去官网查找actiBPM插件将插件下载下来通过如图所示的方式安装插件

2、Activiti所需环境部署
1）创建maven工程，在pom.xml文件中添加activiti所需的各种jar包


activiti-engine-7.0.0.beta1.jar


activiti 依赖的 jar 包： mybatis、 alf4j、 log4j 等


activiti 依赖]]></description><category></category></item><item><title><![CDATA[装饰者模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/115631107</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/115631107</guid><author>magicproblem</author><pubDate>Mon, 12 Apr 2021 17:52:26 +0800</pubDate><description><![CDATA[1、uml类图

2、两个对象
主体：被装饰的对象（打包）
包装：包装核心类，即各个在类中继承Decorator的调料类
3、代码
//包装核心类（包装）
package test.decorator;

/**
 * 包装类
 */
public class Decorator extends Drink{
    private Drink drink;

    public Decorator(Drink drink){
        this.drink = drink;
    }

    ]]></description><category></category></item><item><title><![CDATA[桥接模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/115011963</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/115011963</guid><author>magicproblem</author><pubDate>Fri, 19 Mar 2021 18:04:04 +0800</pubDate><description><![CDATA[1、UML类图

2、代码
抽象类
/**
 * 抽象类
 */
public abstract class Graphical {
    Color color;

    public Graphical(Color color){
        this.color = color;
    }

    public void showColor(){
        color.color();
    }

    public abstract void showShape();
}

具]]></description><category></category></item><item><title><![CDATA[适配器模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/114977276</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/114977276</guid><author>magicproblem</author><pubDate>Thu, 18 Mar 2021 15:09:39 +0800</pubDate><description><![CDATA[1、适配器的角色
1）目标（Target）：使用的特定接口。
2）被适配者（Adaptee）：一个现存需要适配的接口。
3）适配器（Adapter）：负责将Adaptee的接口转换为Target的接口。适配器是一个具体的类，这是该模式的核心。
2、类适配器
类图

代码
适配器类
/**
 * 电压适配器
 */
public class VoltageAdapter extends Voltage220V implements IVoltage110V {
    @Override
    public]]></description><category></category></item><item><title><![CDATA[建造者模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/114965466</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/114965466</guid><author>magicproblem</author><pubDate>Thu, 18 Mar 2021 10:19:16 +0800</pubDate><description><![CDATA[1、UML类图

**简单介绍：**建造者模式可以将复杂对象的建造过程抽象出来这个抽象过程。建造者模式只需通过指定复杂对象的类型和内容就可以构建他们，用户不需要知道具体构建的细节。
2、建造者模式的四个角色
1）产品：建造的对象
2）抽象建造者：指定产品的各个部件的接口或是抽象类
3）具体建造者：实现接口，并构建各个部件
4）指挥者：控制产品的生产流程
3、代码
抽象建造者
/**
 * 抽象建造者
 * 用于构建产品的流程
 */
public abstract class HouseBuilder {
]]></description><category></category></item><item><title><![CDATA[原型模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/114092951</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/114092951</guid><author>magicproblem</author><pubDate>Fri, 26 Feb 2021 10:05:37 +0800</pubDate><description><![CDATA[1、示例图

2、代码
实现原型模式的核心类
/**
 * 1、实现Cloneable接口
 * 2、实现clone方法
 */
public class Sheep implements Cloneable{
    private String name;
    private Integer age;

    public Sheep(String name, Integer age) {
        this.name = name;
        this.age = age;
    ]]></description><category></category></item><item><title><![CDATA[工厂设计模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113686996</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113686996</guid><author>magicproblem</author><pubDate>Sun, 07 Feb 2021 09:35:25 +0800</pubDate><description><![CDATA[一、简单工厂（静态工厂）
简单工厂即实例化工厂类调用创建方法获取对象
静态工厂即直接调用工厂静态方法获取对象（示例）
优点

结构比较简单，易懂

缺点

违反了设计模式的ocp原则，即对扩展开放，对修改关闭。即当我们给类增
加新功能的时候，尽量不修改代码，或者尽可能少修改代码.

当我们新增加产品对象时我们需要修改代码，在其中新增一个判断。
uml类图

工厂类
/**
 * 简单工厂模式
 */
public class SimpleFactroy {

    public static Produc]]></description><category></category></item><item><title><![CDATA[单例设计模式]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113657472</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113657472</guid><author>magicproblem</author><pubDate>Thu, 04 Feb 2021 17:46:51 +0800</pubDate><description><![CDATA[一、饿汉式（线程同步）
优点：线程安全
缺点：在类加载的时候就已经实例化，没有达到懒加载的效果，若是没有使用实例，则就造成内存的浪费
1、静态常量
/**
 * 饿汉式一
 */
public class Singleton01 {

    private Singleton01() {}

    private static Singleton01 instance = new Singleton01();

    public Singleton01 getInstance(){
        ]]></description><category></category></item><item><title><![CDATA[shiro初始化资源和权限]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113624675</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113624675</guid><author>magicproblem</author><pubDate>Thu, 04 Feb 2021 09:57:06 +0800</pubDate><description><![CDATA[1、shiro配置filterChainDefinitions实现初始化页面权限保护
在正常情况下我们的资源和权限都是从数据库中读取出来的，而在shiro中通过配置文件中的ShiroFilterFactoryBean的filterChainDefinitions属性来配置各个页面的权限。
    &lt;bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"&gt;
        &lt;proper]]></description><category></category></item><item><title><![CDATA[shiro权限注解]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113607230</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113607230</guid><author>magicproblem</author><pubDate>Wed, 03 Feb 2021 16:32:03 +0800</pubDate><description><![CDATA[一、注解解释
@RequiresAuthentication
表示subject已经通过登录验证，才可使用
@RequiresUser
表示subject已经身份验证或者通过记住我登录，才可使用
@RequiresGuest
表示subject没有身份验证或通过记住我登录过，即是游客身份，才可使用
@RequiresRoles(value={“admin”, “user”}, logical=Logical.AND)
表示subject需要xx（value）角色，才可使用
@RequiresPermissi]]></description><category></category></item><item><title><![CDATA[shiro常用标签在jsp中的使用笔记]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113603301</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113603301</guid><author>magicproblem</author><pubDate>Wed, 03 Feb 2021 15:10:17 +0800</pubDate><description><![CDATA[1、shiro标签的使用
在jsp页面头部加上shiro标签库，即可使用shiro标签
&lt;%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %&gt;

2、常用shiro标签的介绍
1）shiro:guest
用户没有身份验证时显示相应信息
2）shiro:user
用户已经经过认证/记住我登录后显示相应的信息
3）shiro:authenticated
用户已经身份验证通过，即Subject.login登录成功，不是记住我登录的]]></description><category></category></item><item><title><![CDATA[shiro授权流程]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113592948</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113592948</guid><author>magicproblem</author><pubDate>Wed, 03 Feb 2021 12:00:56 +0800</pubDate><description><![CDATA[1、授权需要继承 AuthorizingRealm 类, 并实现其 doGetAuthorizationInfo 方法（也可认证）
public class MyRealm extends AuthorizingRealm 

2、实现doGetAuthorizationInfo方法
   /**
     * 授权
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection]]></description><category></category></item><item><title><![CDATA[shiro多realm认证策略]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113566913</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113566913</guid><author>magicproblem</author><pubDate>Tue, 02 Feb 2021 17:48:49 +0800</pubDate><description><![CDATA[1、多Realm配置
配置多个realm
方式一：
配置securityManager的realms属性下配置多个realm
    &lt;bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" &gt;
        &lt;property name="cacheManager" ref="cacheManager"&gt;&lt;/property&gt;
&lt;!--       ]]></description><category></category></item><item><title><![CDATA[shiro认证加密流程]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113520978</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113520978</guid><author>magicproblem</author><pubDate>Mon, 01 Feb 2021 16:53:14 +0800</pubDate><description><![CDATA[一、shiro认证流程

获取当前的 Subject. 调用 SecurityUtils.getSubject();
测试当前的用户是否已经被认证. 即是否已经登录. 调用 Subject 的 isAuthenticated()
若没有被认证, 则把用户名和密码封装为 UsernamePasswordToken 对象
1). 创建一个表单页面
2). 把请求提交到 SpringMVC 的 Handler
3). 获取用户名和密码.
执行登录: 调用 Subject 的 login(Authenticatio]]></description><category></category></item><item><title><![CDATA[shiro+springmvc的环境搭建]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113505068</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113505068</guid><author>magicproblem</author><pubDate>Mon, 01 Feb 2021 15:30:11 +0800</pubDate><description><![CDATA[1、所需要的jar包
	&lt;!-- springmvc环境搭建所需jar --&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework&lt;/groupId&gt;
      &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt;
      &lt;version&gt;5.0.2.RELEASE&lt;/version&gt;
    &lt;/dependency&gt]]></description><category></category></item><item><title><![CDATA[redis虚拟机与本地连接]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113238030</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113238030</guid><author>magicproblem</author><pubDate>Wed, 27 Jan 2021 09:21:14 +0800</pubDate><description><![CDATA[1、配置redis.conf文件
1）配置daemonize为yes

2）修改bind为本机的ip地址ifconfig可见

3）在配置文件中关闭保护模式，将protected-mode设置为no

2、开放当前配置文件中配置的端口号

1）开放当前配置的这个端口
firewall-cmd --permanent --add-port=6379/tcp

2）通过一下指令查看开放的端口
firewall-cmd --zone=public --list-ports


3、启动redis服务
1）通过re]]></description><category></category></item><item><title><![CDATA[redis的主从复制笔记]]></title><link>https://blog.youkuaiyun.com/magicproblem/article/details/113177235</link><guid>https://blog.youkuaiyun.com/magicproblem/article/details/113177235</guid><author>magicproblem</author><pubDate>Tue, 26 Jan 2021 16:24:55 +0800</pubDate><description><![CDATA[1、是什么
行话：也就是我们所说的主从复制，主机数据更新后根据配置和策略，
自动同步到备机的master/slaver机制，Master以写为主，Slave以读为主
2、能干嘛

读写分离
容灾恢复

3、这么用
1）配从（库）不配主（库）
2）在从库中使用slaveof主库端口

每次与master断开之后，都需要重新连接，除非你配置进redis.conf文件
Info replication可以查看配置情况


3）修改配置文件细节操作
①拷贝多个redis.conf

②开启daemonize yes]]></description><category></category></item></channel></rss>