<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[be Free & Happy]]></title><description><![CDATA[do what you like,be who you are]]></description><link>https://blog.youkuaiyun.com/scrokt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; scrokt]]></copyright><item><title><![CDATA[JAAS和Java GSS-API]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/123105087</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/123105087</guid><author>scrokt</author><pubDate>Fri, 25 Feb 2022 16:49:07 +0800</pubDate><description><![CDATA[做spring security kerberos时候底层使用了JAAS和Java GSS-API，记录下学习文档。

JASS全称为Java Authentication and Authorization Service，Java GSS-API全称为Java Generic Security Services ；

JDK官方文档本地版路径：

Home: Java Platform, Standard Edition (Java SE) 8 Release 8

file:///F:/docs/te]]></description><category></category></item><item><title><![CDATA[SpringSecurityKerberos使用碰到的问题解决]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/123089627</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/123089627</guid><author>scrokt</author><pubDate>Wed, 23 Feb 2022 18:10:15 +0800</pubDate><description><![CDATA[@DOMAIN 域名大写
	主机名0和O要分清
	生成keytab: 
	
# setspn -A HTTP/clone-WIN-0KD0B8USQGC.fuhao.com fuhao
# ktpass /out c:\fuhao.keytab /mapuser fuhao@FUHAO.COM /princ HTTP/clone-WIN-0KD0B8USQGC.fuhao.com@FUHAO.COM /pass Password# /ptype KRB5_NT_PRINCIPAL /crypto All..]]></description><category></category></item><item><title><![CDATA[致远部署环境问题 报错：请先设置MySQL数据库字符集为utf8，然后再进行系统安装]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/123045755</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/123045755</guid><author>scrokt</author><pubDate>Mon, 21 Feb 2022 13:58:29 +0800</pubDate><description><![CDATA[确认jdbcUrl指定了编码：jdbc:mysql://127.0.0.1:3308/v8xa8g_release?autoReconnection=true&amp;useUnicode=true&amp;characterEncoding=UTF-8
	确认mysql服务器编码都为utf8：
问题汇总：

mysql5.6配置utf8（windows）,配置my.ini，参考MySQL 安装 | 菜鸟教程


mysql修改用户密码的方法及命令 - mmx8088 - 博客园
	ERROR 129...]]></description><category></category></item><item><title><![CDATA[VMware中安装Windows Server 2008 R2系统&安装AD域服务]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/123030765</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/123030765</guid><author>scrokt</author><pubDate>Sun, 20 Feb 2022 14:39:20 +0800</pubDate><description><![CDATA[转载：VMware中安装Windows Server 2008 R2系统_~~~的博客-优快云博客_server2008r2安装vmware
]]></description><category></category></item><item><title><![CDATA[mysql给表做按天分区]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102897470</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102897470</guid><author>scrokt</author><pubDate>Mon, 04 Nov 2019 15:54:00 +0800</pubDate><description><![CDATA[最近项目的数据量每天达到了六百万，并且应用大部分只使用热数据，因此准备对表进行按天分区。

思路

由于之前的表并没有建立分区，不能直接添加分区，因此需要先把数据挪到一个分区表中，表名不能变。解决方法：新建一个表结构完全相同的分区表，分区需要包含之前表中所有数据，然后通过insert...select语句拷贝数据，拷贝完之后把原表改名，把新的表更名为原表。下面进行操作：

1.创建分区表


CR...]]></description><category></category></item><item><title><![CDATA[Swagger下载的Excel打不开，下载的Excel比实际大小更大]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102838678</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102838678</guid><author>scrokt</author><pubDate>Thu, 31 Oct 2019 15:30:58 +0800</pubDate><description><![CDATA[有同事使用了我写的ExcelUtil生成Excel并提供下载，使用Swagger进行测试的时候，发现下载的Excel打不开。解决思路如下：

首先更改输出流的地址，把Excel生成在本地测试下，发现功能正常，Excel可以打开；
	检查response有没有正确设置Content-type和Content-disposition，发现也没有什么问题；
	比较下载下来的Excel和第1步生成的Exc...]]></description><category></category></item><item><title><![CDATA[【easyexcel】阿里easyexcel 2.0.5版本简单读写示例]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102742513</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102742513</guid><author>scrokt</author><pubDate>Fri, 25 Oct 2019 14:46:09 +0800</pubDate><description><![CDATA[阿里easyexcel是基于poi封装的一个读写excel的工具包，主要解决读大文件poi占内存大的问题，同时也提供了一些简单的excel操作API。但是网上找了下，官方说明比较少，示例都是1.*版本，2.0版本的改动还是有一些的，因此写个简单的读写示例。

引入maven依赖


		&lt;!-- https://mvnrepository.com/artifact/com.alibaba/e...]]></description><category></category></item><item><title><![CDATA[【八】Bean工厂后置处理器BeanFactoryPostProcessor]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102605927</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102605927</guid><author>scrokt</author><pubDate>Thu, 17 Oct 2019 14:30:00 +0800</pubDate><description><![CDATA[和BeanPostProcessor类似，不过这个是在BeanFactory实例化之后的后置处理器，同样可以通过@Bean声明，方法标为static，如下两图：





一个典型的作用就是，可以把在spring.factories中注册的监听器去掉了，把监听中的方法挪到这个PostProcessor中，就可以在容器初始化之前进行配置，比如注册Scope、编程添加BeanPostProcessor...]]></description><category></category></item><item><title><![CDATA[【七】Bean后置处理器 BeanPostProcessor]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102605336</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102605336</guid><author>scrokt</author><pubDate>Thu, 17 Oct 2019 14:06:07 +0800</pubDate><description><![CDATA[通过扩展BeanPostProcessor，可以参与Spring框架初始化过程。

创建类PojoBeanPostProcessor，代码如下图：



在BeanConfig中配置它为Bean，这个类型的Bean会在早期进行初始化并参与其它Bean的生命周期，代码如下图：



启动应用，控制台打印如下图：



看到后置处理器的日志打印在afterPropertiesSet之后。注意这个Bea...]]></description><category></category></item><item><title><![CDATA[【六】短生命周期的Bean注入到长生命周期的Bean问题]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102600422</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102600422</guid><author>scrokt</author><pubDate>Thu, 17 Oct 2019 10:26:41 +0800</pubDate><description><![CDATA[回到之前的simpleThreadScope代码，配置如下图：



写一个CommandLineRunner，如下图：



启动应用，控制台打印如下图：



显然，两个线程打印的ServiceA是一模一样的，包括里面的PojoBean实例也是一样的，这是与我们想要的结果不同的，因为PojoBean定义的Scope是simpleThreadScope，也就是每个线程创建一个。

修改一下Poj...]]></description><category></category></item><item><title><![CDATA[【五】Bean方法注入，@Lookup]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102599487</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102599487</guid><author>scrokt</author><pubDate>Thu, 17 Oct 2019 09:58:52 +0800</pubDate><description><![CDATA[在Spring应用中，大部分Bean是单例的，prototype的Bean很少，因为prototype的Bean一般我们自己直接new也可以。但是如果我们想要在singleton Bean中的方法使用prototype Bean，应该怎么写？

方法一：实现ApplicationContextAware，通过ApplicationContext获取prototype Bean，这种比较简单也比较清...]]></description><category></category></item><item><title><![CDATA[【四】注册SimpleThreadScope，自定义Scope]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102585908</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102585908</guid><author>scrokt</author><pubDate>Wed, 16 Oct 2019 15:21:51 +0800</pubDate><description><![CDATA[Spring框架里面还有一个没有注册的Scope，SimpleThreadScope，通过这个学习下怎么自定义Scope。

把BeanConfig中PojoBean的配置改成@Scope("simpleThreadScope")，启动应用程序报错，如下两图：



原来是这个Scope没有注册，创建一个ApplicationListener用来注册simpleThreadScope，监听Appl...]]></description><category></category></item><item><title><![CDATA[【三】Bean的基本scope]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102585618</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102585618</guid><author>scrokt</author><pubDate>Wed, 16 Oct 2019 15:05:22 +0800</pubDate><description><![CDATA[Scope表示Bean的范围，用来定义Bean在什么范围不需要重新创建，超出了范围要重新创建。默认是singleton，在一个Spring容器中存在一个实例。

写两个Service，如下图：





在BeanConfig类中配置它们，都传递pojoBean做为构造参数，如下图：



启动应用，控制台打印如下：



可以看到，PojoBean只实例了一次，并且ServiceA和Servic...]]></description><category></category></item><item><title><![CDATA[【二】Bean的基本生命周期]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102585204</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102585204</guid><author>scrokt</author><pubDate>Wed, 16 Oct 2019 14:48:04 +0800</pubDate><description><![CDATA[Spring是通过配置来管理Bean的，现在主流的配置方式已经不是xml了，而是推崇无xml配置，就是使用Java注解配置Bean。首先创建一个BeanConfig类，在这个类上面注解@Configuration，如下图：



上图配置了一个PojoBean类，这个类我是这么写的，如下图：



这就可以了，然后直接运行主程序，控制台打印如下图：



通过打印的日志，可以看出来PojoBean...]]></description><category></category></item><item><title><![CDATA[【一】创建Spring Boot应用]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102584678</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102584678</guid><author>scrokt</author><pubDate>Wed, 16 Oct 2019 14:25:42 +0800</pubDate><description><![CDATA[使用开发工具Idea，菜单栏选择File-&gt;New-&gt;Project，在弹出框中选择Spring Initializr，如下图：



点击下一步，输入Group、Artifact，其它可以不动，如下图：



点击下一步，选择依赖。在Developer Tools中选择Lombok(可以减少很多代码量的工具)，Spring Boot版本使用默认值，如下图：



点击下一步，创建一个...]]></description><category></category></item><item><title><![CDATA[【Spring Security】WebSecurity]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102459244</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102459244</guid><author>scrokt</author><pubDate>Wed, 09 Oct 2019 14:42:19 +0800</pubDate><description><![CDATA[首先，查看WebSecurity类图，如下：



SecurityBuilder是基础接口，代码如下：


public interface SecurityBuilder&lt;O&gt; {

	/**
	 * Builds the object and returns it or null.
	 *
	 * @return the Object to be built or null if...]]></description><category></category></item><item><title><![CDATA[【eureka】跟踪源码、发散]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/102388953</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/102388953</guid><author>scrokt</author><pubDate>Tue, 08 Oct 2019 17:50:01 +0800</pubDate><description><![CDATA[在spring微服务架构中，服务经常打印一条日志：



第一个问题：这个5640是什么意思？

找一下打印日志的格式，在项目中没找到，但是在config项目中找到了一个。里面console的配置如下：



再看这个property，配置如下：


&lt;property name="CONSOLE_LOG_PATTERN"
			  value="${CONSOLE_LOG_PATTERN:...]]></description><category></category></item><item><title><![CDATA[BigDecimal运算精度问题]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/99406570</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/99406570</guid><author>scrokt</author><pubDate>Tue, 13 Aug 2019 09:20:48 +0800</pubDate><description><![CDATA[在做浮点运算时，经常会出现精度问题，常用的做法有两种：

一、先乘以100或1000转换为整数进行运算，再除回来；

二、使用BigDecimal进行加减乘除运算；

在使用BigDecimal中有一个点要注意，如果new BigDecimal(Double )，这样精度依然会有问题，建议使用new BigDecimal(String)。
...]]></description><category></category></item><item><title><![CDATA[vue中动态生成checkbox列表的绑定问题]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/99299940</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/99299940</guid><author>scrokt</author><pubDate>Mon, 12 Aug 2019 14:30:44 +0800</pubDate><description><![CDATA[需求

前端需要从后台获取一个列表，遍历形成一个checkbox列表，列表是动态的，可以选择或取消选择，点击保存提交数据给后台。

效果



前端

element


&lt;span v-for="(item, index) in params.province" v-bind:key="index" style="margin-right:20px;"&gt;
      &lt;el-c...]]></description><category></category></item><item><title><![CDATA[从Spring IOC看管理（二）]]></title><link>https://blog.youkuaiyun.com/scrokt/article/details/87693734</link><guid>https://blog.youkuaiyun.com/scrokt/article/details/87693734</guid><author>scrokt</author><pubDate>Tue, 19 Feb 2019 16:33:51 +0800</pubDate><description><![CDATA[时间长河在不断流逝，流入深不见底的悬崖，而源头已尽。

我很欣喜，每一天的我都是新的我，因为每一天的时间都是新的时间。这是“从Spring IOC看管理”的第二篇，包含我在当前对于管理的另一角度理解，关键词是“牺牲”。

在这之前，我想先安利一下《权利的游戏》这部美剧，这部剧最值得称赞的就是庞大的世界格局、魔幻的故事背景和真实的人物形象，里面的剧情发展会让你觉得即在意料之外又在情理之中，塑造出了一...]]></description><category></category></item></channel></rss>