<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cai_javaXiaoFan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Cai_javaXiaoFan]]></copyright><item><title><![CDATA[spring security的checkpw加密和对密码验证的原理]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/111612383</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/111612383</guid><author>Cai_javaXiaoFan</author><pubDate>Thu, 24 Dec 2020 11:02:20 +0800</pubDate><description><![CDATA[为何每次不同的 密码盐值 却可以校验成功的 关键


public static void main(String[] args) {
        String hashpw = BCrypt.hashpw("123", BCrypt.gensalt());
        System.out.println(hashpw);
        System.out.println(BCrypt.checkpw("123", "$2a$10$4uRhi/76ixeg7KS4p5tf7O3wGKNj1E.]]></description><category></category></item><item><title><![CDATA[java  通过月份 取到上个月份]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/108490222</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/108490222</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 09 Sep 2020 15:15:45 +0800</pubDate><description><![CDATA[public static String getPreMonth(String date) throws ParseException {
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM");
        Date currentDate = sd.parse(date);
        Calendar cal = Calendar.getInstance();
        cal.setTime(currentDate).]]></description><category></category></item><item><title><![CDATA[关于 idea 存在情况下的mac 自动重启 解决方式]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/107585111</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/107585111</guid><author>Cai_javaXiaoFan</author><pubDate>Sat, 25 Jul 2020 21:21:57 +0800</pubDate><description><![CDATA[本人电脑型号：2018 mbp 13.3 macos 10.15.6

idea 在mac上 导致mac 频繁关机重启解决方式



当然是你去过售后 或者你自认为你的电脑的硬件是完全没有问题的情况下这样做。才可以。 不用听 apple售后的动不动就格式化重新安装系统。屁用没有！！！。

这个方法 亲测有效！！！

将标红的 两个文件里面的 关于 idea的文件都给删掉 rm -rf。 重新安装 idea 即可解决mac 频繁自动重启


...]]></description><category></category></item><item><title><![CDATA[springboot 全局异常处理]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/106788823</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/106788823</guid><author>Cai_javaXiaoFan</author><pubDate>Tue, 16 Jun 2020 15:49:47 +0800</pubDate><description><![CDATA[前言

本篇文章主要介绍的是SpringBoot项目进行全局异常的处理。

SpringBoot全局异常准备

说明：如果想直接获取工程那么可以直接跳到底部，通过链接下载工程代码。

开发准备

环境要求JDK：1.8SpringBoot：1.5.17.RELEASE

首先还是Maven的相关依赖:



  &lt;properties&gt;
        &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncodi]]></description><category></category></item><item><title><![CDATA[简单面试题]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/106234089</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/106234089</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 20 May 2020 22:32:48 +0800</pubDate><description><![CDATA[1.@component 和@bean的区别

@component主要用于注册到类上，告诉spring容器要去注册创建一个类，并且扫描路径自动装配到spring；

@bean 用在方法上，返回一个实例对象，告诉Spring，然后在Spring容器中注册成一个bean，通常方法体中包含了最终产生bean实例的逻辑。
主要用于第三方库中的类需要装配到Spring容器，因为无法在第三方库中加@Component注解，只能通过@Bean来实现。

2.spring对于异常的处理

https://www.cnb]]></description><category></category></item><item><title><![CDATA[springboot vue hutool实现 前后端分离导出excel]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/105735165</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/105735165</guid><author>Cai_javaXiaoFan</author><pubDate>Fri, 24 Apr 2020 17:01:40 +0800</pubDate><description><![CDATA[git地址前端https://github.com/yf466532479/xffvue.git

git地址后台https://github.com/yf466532479/upordownfile.git



hutool工具 里面有封装的 excel

还有通过字段值对 每个单元格进行赋值背景颜色 不知道怎么写。有会的大神帮忙搞一下。。。

后端项目里有注意。


...]]></description><category></category></item><item><title><![CDATA[SpringBoot集成JWT实现token验证]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/102819315</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/102819315</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 30 Oct 2019 14:56:39 +0800</pubDate><description><![CDATA[JWT官网： https://jwt.io/JWT(Java版)的github地址:https://github.com/jwtk/jjwt

什么是JWT

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准（(RFC 7519).定义了一种简洁的，自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在，这些信...]]></description><category></category></item><item><title><![CDATA[idea2019 win系统启动 报 error]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/102573662</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/102573662</guid><author>Cai_javaXiaoFan</author><pubDate>Tue, 15 Oct 2019 20:00:55 +0800</pubDate><description><![CDATA[idea2019 win系统启动 报 error 明明自己电脑安装了 64位的 java 可是只要一启动 就会显示没有安装 64位 jdk

在网上找了好多 都说是 选错了 32位 和 64位的启动快捷方式 实际上 除了 自己脑子发热选错 一般是不会有问题 那么为什么还会提示呢？？？



wtf！！！！！！！

就是因为**的自己电脑加域了 没有权限 要右击以管理员身份启动！！！！！靠！
...]]></description><category></category></item><item><title><![CDATA[vue cli 初始化]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/101430467</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/101430467</guid><author>Cai_javaXiaoFan</author><pubDate>Thu, 26 Sep 2019 11:42:37 +0800</pubDate><description><![CDATA[一、安装步骤

step1、安装Node.js

首先需要下载并安装Node.js，下载地址：Node官网。
可查看我的另外一篇文章，仅作参考：Node.js入门及安装

测试安装是否成功，打开cmd，使用 node -v，如果显示版本号则表示安装成功。





image.png

step2、安装vue-cli

使用vue-cli（脚手架）搭建项目，vue-cli是Vue官方提供的用于搭...]]></description><category></category></item><item><title><![CDATA[mac下安装nginx 启动和 关闭重启]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/97782637</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/97782637</guid><author>Cai_javaXiaoFan</author><pubDate>Tue, 30 Jul 2019 14:46:13 +0800</pubDate><description><![CDATA[前言：nginx的强大不必多言，所以很自然很应当的我也来玩一玩。但是网上许多安装和配置都太那啥了，在这里真的想说一句带有引战性质但我真的无意引战的言论：现在的好多程序员的文笔实在是烂，写的教程让人着实难懂啊，该不会语文都是体育老师教的吧。

当前系统环境：



安装工具：

homebrew（还没用过的小伙伴可以点链接进行了解或者自行百度）

步骤：

　　1、打开终端，习惯性命令：


bre...]]></description><category></category></item><item><title><![CDATA[elasticsearch 常见查询及聚合的JAVA API]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/93163670</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/93163670</guid><author>Cai_javaXiaoFan</author><pubDate>Fri, 21 Jun 2019 09:58:48 +0800</pubDate><description><![CDATA[最近在研究ES 有点心得记录下备忘

ES 常见查询

 根据ID 进行单个查询

 GetResponse response = client.prepareGet("accounts", "person", "1")
 .setOperationThreaded(false)
 .get();

 ...]]></description><category></category></item><item><title><![CDATA[MAC下安装配置Tomcat]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/91901986</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/91901986</guid><author>Cai_javaXiaoFan</author><pubDate>Thu, 13 Jun 2019 22:22:12 +0800</pubDate><description><![CDATA[cocoaCoffee关注

1.12018.06.10 14:50*字数 459阅读 13797评论 7喜欢 17

一、安装Tomcat

1、首先到官网下载Tomcat：https://tomcat.apache.org/download-90.cgi



2、解压tomcat文件,最好把它文件名重命名为“Tomcat”，方便以后查找，最后把它放入/Library(资源库...]]></description><category></category></item><item><title><![CDATA[java ElasticSearch es 聚合排序等]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/91534742</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/91534742</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 12 Jun 2019 15:18:47 +0800</pubDate><description><![CDATA[序言:

近来一直在javaAPI对ES数据进行统计分析, 中间也遇到不少问题, 本篇文章只针对聚合过程中的排序方法进行总结

例如:selectavg(age) as avg_age from table group by gender;



聚合的两种排序方式

1. 按组内字段排序: 分组后按组内数据某个字段进行排序

2. 按聚合后指标排...]]></description><category></category></item><item><title><![CDATA[css优先级计算规则]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/90042015</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/90042015</guid><author>Cai_javaXiaoFan</author><pubDate>Thu, 09 May 2019 16:54:27 +0800</pubDate><description><![CDATA[最近面试了一些求职者，我问css优先级计算规则是怎样的？答曰ID优先级&gt;class&gt;元素选择器，外联样式优先级低于内联样式，内联样式优先级低于行间样式，然后就没有然后了……，ID选择器的优先级确实&gt;class选择器的优先级&gt;元素选择器的优先级，但是外联样式优先级并不一定低于内联样式优先级。做为一个合格的前端工程师，让我们彻底搞清楚css优先级计算规则吧！

  特殊性
...]]></description><category></category></item><item><title><![CDATA[css 文本换行 隐藏  ... 等]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89455064</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89455064</guid><author>Cai_javaXiaoFan</author><pubDate>Mon, 22 Apr 2019 16:37:46 +0800</pubDate><description><![CDATA[、word-wrap:break-word;

	内容将在边界内换行，仅用于块对象，内联对象要用的话，必须要设定height、width或display:block或position:absolute。

	

	
	
	
	2、word-break:break-all;

	用于处理单词折断。(注意与第一个属性的对比)

	

	
	
	
	3、white-space:nowrap;

	用...]]></description><category></category></item><item><title><![CDATA[数组去重]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89248963</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89248963</guid><author>Cai_javaXiaoFan</author><pubDate>Fri, 12 Apr 2019 17:49:08 +0800</pubDate><description><![CDATA[data = [{'userId':1,'a':11},{'userId':3,'a':33},{'userId':2,'a':22},{'userId':1,'a':11}]
var hash = [];
var obj = {};
$.each(data,function (i,item) {
    if(!obj[item.userId]){
        obj[item.userI...]]></description><category></category></item><item><title><![CDATA[关于数组 字符串和两个数组合并的一些记录]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89173858</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/89173858</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 10 Apr 2019 09:32:10 +0800</pubDate><description><![CDATA[两个数组合并成一个。
var allrenyuan =[];
senator = ‘小明’,'小红','小绿','小黄','小黑';
senatorIds = [‘1’,'2','3','4','5'];
$.each(senator.split(','),function (i,item) {
    var obj = {};
    obj.senator = item;
    obj....]]></description><category></category></item><item><title><![CDATA[React-Native生命周期详解]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/88567405</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/88567405</guid><author>Cai_javaXiaoFan</author><pubDate>Fri, 15 Mar 2019 10:28:17 +0800</pubDate><description><![CDATA[一.React-Native生命周期



说到生命周期，大家大概也能想到就是创建、销毁、状态改变。RN的组件就是一个状态机。它接收两个输入参数：props和state，返回一个Virtual DOM。和Native一样，RN也为我们提供相应的钩子函数。RN的状态变化取决于props和state。我们先来看一张经典图。



这张图涵盖了一个组件从创建、运行到销毁的整个过程。大家可以看到，初始化...]]></description><category></category></item><item><title><![CDATA[if判断中 true 和 false的分类（"",0,null 等等）]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/85597015</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/85597015</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 02 Jan 2019 09:34:16 +0800</pubDate><description><![CDATA[
区分JS中的undefined,null,&quot;&quot;,0和false

 

今天有同事问我一个Js 问题，if (0 == '') 是true  很不理解，单独做了一下测试，记录于此。

 




&amp;lt;script&amp;gt;

alert(0 == ''); //true
alert(0 == false); //true
alert(false == ''); //true
alert(nul...]]></description><category></category></item><item><title><![CDATA[ko绑定双层]]></title><link>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/83580867</link><guid>https://blog.youkuaiyun.com/Cai_javaXiaoFan/article/details/83580867</guid><author>Cai_javaXiaoFan</author><pubDate>Wed, 31 Oct 2018 12:27:56 +0800</pubDate><description><![CDATA[&amp;lt;ul data-bind=&quot;foreach: data&quot;&amp;gt;
                        &amp;lt;li &amp;gt;
                            &amp;lt;div class=&quot;head&quot;&amp;gt;
                                &amp;lt;span class=&quot; &quot; data-bind=&quot;text:]]></description><category></category></item></channel></rss>