<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lierenbiji21的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lierenbiji21</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lierenbiji21]]></copyright><item><title><![CDATA[单例设计模式]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/122409613</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/122409613</guid><author>lierenbiji21</author><pubDate>Mon, 10 Jan 2022 14:25:03 +0800</pubDate><description><![CDATA[本代码主要演示通过懒汉式如何设计一个单例的最佳实践，验证创造出来的对象是否是唯一，人狠话不多，直接上代码
/**
 * @Author lierenbiji
 * @Description 懒汉式双重判断实现单例已经验证
 * @Date 2021-12-07 14:29
 * @Param
 * @return
 **/
public class LeazySigle {
    /**
     * @return void
     * @Description main方法验证单例是否真的只创建一个]]></description><category></category></item><item><title><![CDATA[多线程-生产消费者模式]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/119453254</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/119453254</guid><author>lierenbiji21</author><pubDate>Fri, 06 Aug 2021 13:55:10 +0800</pubDate><description><![CDATA[package com.thread.cusproform;

```java
/**
 * @Author yg_wu
 * @Description //生产消费者模式，生产一个商品消费一个商品
 * @Date 2021/8/6 10:40
 **/
public class CPFTTest {
    public static void main(String[] args) {
        MessageObject messageObject = new MessageObject(tr]]></description><category></category></item><item><title><![CDATA[Idea工具整合Git进行版本控制 —添加到本地仓库，Push到GitHub远程仓库。]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108553115</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108553115</guid><author>lierenbiji21</author><pubDate>Sat, 12 Sep 2020 20:20:18 +0800</pubDate><description><![CDATA[idea整合Git，进行版本控制
第一步：git创建账号，并创建远程仓库，获取远程地址


往下拉，点击Create repository

此时会跳转到创建成功界面：复制上传路径地址，此时github操作完成。

第二步：打开idea,配置本地仓库，配置git远程仓库地址，remote到本地仓库，push到远程仓库



以上配置完成之后，我们开始配置本地仓库





注意：如果提交失败，以下的情况，记得把提交的名字改成以下格式：author&lt;github注册的邮箱地址&gt;


本地仓库已经上]]></description><category></category></item><item><title><![CDATA[七牛云工具类]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108540526</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108540526</guid><author>lierenbiji21</author><pubDate>Fri, 11 Sep 2020 19:51:36 +0800</pubDate><description><![CDATA[七牛云是国内领先的企业级公有云服务商，致力于打造以数据为核心的场景化PaaS服务
以下工具类采用了两种方式进行文件上传（图片）以及根据文件名称删除文件
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import co]]></description><category></category></item><item><title><![CDATA[Redis+Quartz+Spring，实战解决实时监控通知任务]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108540097</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108540097</guid><author>lierenbiji21</author><pubDate>Fri, 11 Sep 2020 19:26:03 +0800</pubDate><description><![CDATA[需求描述
一个容量为5L的池子，会有不同渠道给池子注水，如果动态监控当池子的水到达峰值时，发出警报提示
步骤分析：
第一步：导入定时任务框架，用来模拟外界渠道给池子注水的动作。
第二步：导入Redis数据库，用来存储池子水的状态
第三步：设置定时任务，每隔一段时间就去redis中取出当前池子水量，判断是否达到峰值，如果达到，及时报警。

代码实现
第一步：常见mavew-web工程，导入maven依赖
 &lt;!--quartz的基础包--&gt;
    &lt;dependency&gt;
     ]]></description><category></category></item><item><title><![CDATA[Redis-NoSql数据库的代表产品介绍]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108539102</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108539102</guid><author>lierenbiji21</author><pubDate>Fri, 11 Sep 2020 18:02:12 +0800</pubDate><description><![CDATA[Redis简介
Redis是非关系型数据库的代表产品之一，NoSql非关系型数据库优势：
1，易扩展
​	  NoSQL数据库种类繁多，但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系，这样就非常容易扩展。也无形之间，在架构的层面上带来了可扩展的能力。
2，大数据量，高性能
NoSQL数据库都具有非常高的读写性能，尤其在大数据量下，同样表现优秀。这得益于它的无关系性，数据库的结构简单。
3，灵活的数据模型
NoSQL无需事先为要存储的数据建立字段，随时可以存储自定义的数据格式。
4，高可用
]]></description><category></category></item><item><title><![CDATA[Quartz定时任务与spring框架整合案例]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108532741</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108532741</guid><author>lierenbiji21</author><pubDate>Fri, 11 Sep 2020 13:56:31 +0800</pubDate><description><![CDATA[Quartz简介
Quartz是Job scheduling（作业调度）领域的一个开源项目，Quartz既可以单独使用也可以跟spring框架整合使用，在实际开发中一般会使用后者。使用Quartz可以开发一个或者多个定时任务，每个定时任务可以单独指定执行的时间。
实现步骤
第一步：导入依赖
&lt;!--quartz的基础包--&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.quartz-scheduler&lt;/groupId&gt;
  &lt;artifac]]></description><category></category></item><item><title><![CDATA[SMM - Spring，SpringMVC，MyBatis 三大框架整合]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108329704</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108329704</guid><author>lierenbiji21</author><pubDate>Mon, 31 Aug 2020 23:41:27 +0800</pubDate><description><![CDATA[开发环境
真实项目开发最流行的开发结构体系是SMM整合
web层用 -&gt; SpringMVC
service层 -&gt; Spring
dao层用 -&gt;MyBatis
项目结构

项目源码下载地址：链接：https://pan.baidu.com/s/1Sic4xcxjjQsUgdPrj2vaLA
提取码：o3hp

整合流程
第一步：
pox.xml中导入maven依赖
&lt;properties&gt;
    &lt;!-- 版本锁定 --&gt;
    &lt;spring.ver]]></description><category></category></item><item><title><![CDATA[Spring-IOC方式引入事务，实现银行转账业务]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108300898</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108300898</guid><author>lierenbiji21</author><pubDate>Sat, 29 Aug 2020 23:29:08 +0800</pubDate><description><![CDATA[业务描述
模拟银行两个用户转账业务，张三向李四转账，当双方转收状态均正常是，返回客户端转账成功，如果出现异常，回滚事务，返回转账失败，并说明失败的原因。

代码实现
第一步，maven构建工程，导入依赖
  &lt;dependencies&gt;
    &lt;!--MySql驱动--&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;mysql&lt;/groupId&gt;
      &lt;artifactId&gt;mysql-connector-]]></description><category></category></item><item><title><![CDATA[SpringMVC中的DispatcherServlet在web.xml中配置的时候，路径用 “ / “ 和“ /* “有什么区别？]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108285188</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108285188</guid><author>lierenbiji21</author><pubDate>Fri, 28 Aug 2020 18:51:05 +0800</pubDate><description><![CDATA[相同点：
两种配置都表示拦截所有请求
不同点：
对JSP的处理不同

分析
第一： 优先级分析
完全路径匹配 &gt; 目录匹配 /*  &gt;  拓展名匹配  (/index.jsp)&gt;  缺省匹配(/)
但客户端请求的是   XXX.jsp 时
情况一：
如果DispactherServlet 配置的路径是目录匹配 /，那么他的优先级会高于拓展名匹配，因此他会拦截所有 .jsp的请求，而DispactherServlet 不具备查找或者处理jsp的能力，因此会报404错误
情况二：
如果Disp]]></description><category></category></item><item><title><![CDATA[Spring-简单三步配置第三方连接池-C3P0/Druid/SpringDB]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271964</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271964</guid><author>lierenbiji21</author><pubDate>Fri, 28 Aug 2020 01:33:57 +0800</pubDate><description><![CDATA[问题引出
在进行数据库的增删改查操作的时候，我们都会用到第三方连接池，当设计到事务的时候，我们要获取单个连接，下面我们简单配置一下第三方连接池到Spring中。

简单三步配置开源连接池到Sprting中
第一步：导入Maven坐标依赖
&lt;dependencies&gt;
    &lt;!--MySql驱动--&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;mysql&lt;/groupId&gt;
      &lt;artifactId&gt;m]]></description><category></category></item><item><title><![CDATA[Spring-基于注解的AOP快速入门案例]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271866</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271866</guid><author>lierenbiji21</author><pubDate>Fri, 28 Aug 2020 01:15:08 +0800</pubDate><description><![CDATA[问题引出
Spring 的AOP纯注解配置是官方主推的模式，它不仅简化了配置流程，而且用起来也特别的方便，下面我们在xml配置的基础上修改一下纯注解配置方式

实现步骤
第一步：maven坐标需要增加AOP的实现包：aspectjweaver
 &lt;!--Spring上下文核心包--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt;org.springframework&lt;/groupId&gt;
        &lt;artifactId&gt]]></description><category></category></item><item><title><![CDATA[Spring-基于xml的AOP快速入门案例]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271164</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108271164</guid><author>lierenbiji21</author><pubDate>Fri, 28 Aug 2020 00:52:20 +0800</pubDate><description><![CDATA[问题引出
AOP：Aspect Oriented Programming，面向切面编程。是通过预编译方式（aspectj）或者运行期动态代理（Spring）实现程序功能的统一维护的技术。
在实际项目中，我们都会遇到对原有功能的迭代与增强，修改源码是一件很痛苦的事情，往往会牵一发而动全身。怎样做到在不修改源码的情况下对原有功能进行增强呢？aop思想就是在这种需求中产生的。

AOP作为Spring最大特征之一，它的

作用：不修改源码的情况下，进行功能增强，通过动态代理实现的
优势：减少重复代码，提高开发效率]]></description><category></category></item><item><title><![CDATA[Spring纯注解配置，实现数据库的CRUD操作]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108249810</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108249810</guid><author>lierenbiji21</author><pubDate>Wed, 26 Aug 2020 23:37:10 +0800</pubDate><description><![CDATA[问题引出
纯注解配置是相对注解+xml文件练习中，仍然有部分配置需要使用applicationContext.xml，那么能不能使用注解替换掉所有的xml呢？Spring提供了一些新注解，可以达到这个目标。

请注意：Spring提供的这部分新注解，并非为了完全代替掉XML，只是提供了另外一种配置方案


环境跟上文xml+注解方式配置环境相同
修改的地方之一：
xml配置文件被核心控制类取代
import com.mchange.v2.c3p0.ComboPooledDataSource;
import ]]></description><category></category></item><item><title><![CDATA[Spring注解+xml配置文件实现数据库的CRUD操作]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108247796</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108247796</guid><author>lierenbiji21</author><pubDate>Wed, 26 Aug 2020 21:31:10 +0800</pubDate><description><![CDATA[问题引出
Spring为轻量级开源框架，以IOC（Inversion of Controll控制反转，用于解耦）和AOP（Aspect oriented Programming，面向切面编程，本质是动态代理，不修改源码的情况下进行功能增强）为内核。下面我们简单实现一下通过IOC思想实现数据库的增删改查操作
实现步骤：
第一步：环境准备
1，maven中pox.xml需要导入的jar依赖
&lt;dependencies&gt;
    &lt;dependency&gt;
        &lt;group]]></description><category></category></item><item><title><![CDATA[Spring-模拟SpringFactory实现原理]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108227096</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108227096</guid><author>lierenbiji21</author><pubDate>Tue, 25 Aug 2020 18:53:54 +0800</pubDate><description><![CDATA[问题引出
Spring思想是通过配置文件把对象配置好，当我们需要使用的时候不需要再去new创建对象，直接从已经创建好的工程里面拿就好了。

实现思路
第一步：配置文件中配置好类名跟类的全限定类名
UserDao=com.gg.dao.UserDaoImpl
CourseDao=com.gg.dao.CourseDaoImpl

第二步：BeansFactory中读取该配置文件，获取全限定类名，通过反射创建对象，存入map集合中
import java.io.InputStream;
import java.]]></description><category></category></item><item><title><![CDATA[MD5加密工具]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108225118</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108225118</guid><author>lierenbiji21</author><pubDate>Tue, 25 Aug 2020 17:09:38 +0800</pubDate><description><![CDATA[问题引出
MD5算法加密用户项目操作中我们对一些敏感信息进行加密，需要注意的是，md5加密是不可逆的。
工具类代码
/**
 * 写一个MD5算法,运行结果与MySQL的md5()函数相同
 * 将明文密码转成MD5密码
 * 123456-&gt;e10adc3949ba59abbe56e057f20f883e
 */
public  class Md5Util {
	private Md5Util(){}
	/**
	 * 将明文密码转成MD5密码 
	 */
	public static String]]></description><category></category></item><item><title><![CDATA[连接池工具类---C3P0连接池 vs Druid连接池]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108224012</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108224012</guid><author>lierenbiji21</author><pubDate>Tue, 25 Aug 2020 16:57:14 +0800</pubDate><description><![CDATA[问题引出
当我们java提供的最原始的链接数据库的时候，其中的步骤会比较繁琐，而且每次用到链接我们都需要重新创建，使用完之后关闭连接，这样不仅效率极低，而且耗时也会非常的长。如果成千上万的用户过来连接，这样我们就需要创建成千上万个连接，估计一般的服务器扛不住。
解决方案
创建连接池，当项目初始化的时候，我们新建立连接池，每次用户来访问的时候，我们从连接池中拿连接，用户用完之后，不要关闭连接，直接把连接归还到连接池中，这样就能解决以上问题。

实现步骤



...]]></description><category></category></item><item><title><![CDATA[自定义MethodMVC]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108222757</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108222757</guid><author>lierenbiji21</author><pubDate>Tue, 25 Aug 2020 16:12:17 +0800</pubDate><description><![CDATA[问题引出
在实际项目开发的时候，我们没发起一次请求都会调用一个写一个对应servlet来接收数据，而每一个servlet都需要我们到web.xml中进行配置，这样的工作量会很大。
解决方案
我们设想有这样一种模式：
就是当前端发起servlet请求的时候，我们可以在请求的末尾添加一个后缀，(例如： .do)，我们统一配置携带这种格式的servlet请求都请求到同一个servlet上，在有这个servlet分发给对于的servlet干活就可以了。

代码步骤
第一步：web.xml配置
&lt;?xml ve]]></description><category></category></item><item><title><![CDATA[MyBatisUtils工具类创建与使用]]></title><link>https://blog.youkuaiyun.com/lierenbiji21/article/details/108217738</link><guid>https://blog.youkuaiyun.com/lierenbiji21/article/details/108217738</guid><author>lierenbiji21</author><pubDate>Tue, 25 Aug 2020 11:43:17 +0800</pubDate><description><![CDATA[问题引出
在使用MyBatis的时候，我们可以把他的创建以及流程都封装起来，这样在使用的时候我们很方便去使用，需要每次都创建了。
流程
第一步：
导入MaBatis的jar包，同时创建MyBatis的配置文件,这里我们就叫SqlMapConfig.xml
MyBatis的jar包下载地址：
同时我们需要jdbc的jar以及dp.properties:
log4j日志文件jar以及配置文件:
链接：https://pan.baidu.com/s/1JhpeV921R_ILb866iv2kaw
提取码：7njt]]></description><category></category></item></channel></rss>