<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[to_study的博客]]></title><description><![CDATA[活到老，学到老]]></description><link>https://blog.youkuaiyun.com/to_study</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; to_study]]></copyright><item><title><![CDATA[2026最新java单元测试json校验器]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/156832012</link><guid>https://blog.youkuaiyun.com/to_study/article/details/156832012</guid><author>to_study</author><pubDate>Sun, 11 Jan 2026 17:16:15 +0800</pubDate><description><![CDATA[java单元测试JSON校验工具。]]></description><category></category></item><item><title><![CDATA[springboot深入学习——定时任务、异步任务以及它们所使用的线程池，单线程还是多线程？]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/110228431</link><guid>https://blog.youkuaiyun.com/to_study/article/details/110228431</guid><author>to_study</author><pubDate>Fri, 27 Nov 2020 15:42:54 +0800</pubDate><description><![CDATA[前提：看之前我相信你已经掌握如何在springboot项目使用@Scheduled 开启一个定时任务，以及使用 @Async 开启一个异步任务



说一些你可能不知道：

@Scheduled：同步阻塞任务（单线程）

1.@Scheduled定时任务是同步阻塞任务，因为它所使用的线程池是一个单线程的线程池，这意味着所有任务都是串行执行，只要前一个任务未执行完成，后面的任务都会一直等待下去，并且当一个任务未执行完成，它的下个触发周期会被忽略。
因为这些特点，当我们项目中的定时任务比较密集并且耗时比较...]]></description><category></category></item><item><title><![CDATA[2020java构建Https请求client]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/110046092</link><guid>https://blog.youkuaiyun.com/to_study/article/details/110046092</guid><author>to_study</author><pubDate>Tue, 24 Nov 2020 10:33:33 +0800</pubDate><description><![CDATA[public class SSLClient {

    private static final String HTTP = "http";
    private static final String HTTPS = "https";
    private static SSLConnectionSocketFactory sslConnectionSocketFactory = null;
    private static PoolingHttpClientConnectionManage.]]></description><category></category></item><item><title><![CDATA[2020 最新使用 jvisualvm 配合 jstatd 远程查看jvm运行情况]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/109521309</link><guid>https://blog.youkuaiyun.com/to_study/article/details/109521309</guid><author>to_study</author><pubDate>Thu, 05 Nov 2020 22:14:40 +0800</pubDate><description><![CDATA[准备工作：

1.确保本地电脑windows安装的jdk有jvisualvm工具，查看你jdk的home目录下面的bin目录是否存在jvisualvm.exe

2.确保你的远程服务器安装的jdk存在，jstatd（位于jdk的home下面的bin目录下），以及tools.jar





首先在你的linux服务器任意位置新建一个文件：
...]]></description><category></category></item><item><title><![CDATA[2020最简单的java导出excel，使用easyexcel和准备好的excel模板进行数据填充导出]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/108305891</link><guid>https://blog.youkuaiyun.com/to_study/article/details/108305891</guid><author>to_study</author><pubDate>Sun, 30 Aug 2020 15:52:24 +0800</pubDate><description><![CDATA[1.添加依赖


&lt;dependency&gt;
            &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
            &lt;artifactId&gt;easyexcel&lt;/artifactId&gt;
            &lt;version&gt;2.1.6&lt;/version&gt;
            &lt;exclusions&gt;
                &lt;exclusion&gt;
]]></description><category></category></item><item><title><![CDATA[2020-java最新身份证验证，正则表达式以及校验位]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/107784298</link><guid>https://blog.youkuaiyun.com/to_study/article/details/107784298</guid><author>to_study</author><pubDate>Tue, 04 Aug 2020 13:22:17 +0800</pubDate><description><![CDATA[有帮助的记得点赞收藏，代码如下：

应该有点瑕疵，月-日是有些三十有些二十九





    public static boolean isIDNumber(String IDNumber) {
        if (IDNumber == null || "".equals(IDNumber)) {
            return false;
        }
        // 定义判别用户身份证号的正则表达式（15位或者18位，最后一位可以为字母）
        String r.]]></description><category></category></item><item><title><![CDATA[oracle与mysql的一些区别，count()的高级使用]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/107694775</link><guid>https://blog.youkuaiyun.com/to_study/article/details/107694775</guid><author>to_study</author><pubDate>Thu, 30 Jul 2020 17:17:21 +0800</pubDate><description><![CDATA[1.group by


select s.usd_cny from s_wd_rate_exchange s GROUP BY s.exchange_date;

这条sql语句，

oracle：直接报错，racle在使用groupby时，有一个规则需要遵守，即出现在select列表中的字段，如果没有在组函数中，那么必须出现在groupby子句中。（select中的字段不可以单独出现，必须出现在group语句中或者在组函数中。

mysql：直接运行效果下面这条语句效果一样


select d...]]></description><category></category></item><item><title><![CDATA[评论设计实现，完全模范bilibili实现评论功能，表的设计、sql如何查找，以及前端的一些设计]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/107578783</link><guid>https://blog.youkuaiyun.com/to_study/article/details/107578783</guid><author>to_study</author><pubDate>Sat, 25 Jul 2020 21:34:42 +0800</pubDate><description><![CDATA[如图，bilibili的评论主要分为根评论（顶级评论）和子评论（回复评论），名称我乱说的哈哈，这里的顶级评论就是最顶级的意思，他不是任何评论的回复评论，bilibili前端显示也没有那种层层递进，但我相信表的结构设计肯定是有所体现的

红色为顶级评论，蓝色为子评论


1.表结构设计

废话不多说，首先是表结构的设计，一般评论应该有的属性字段我就不说了，这里主要考虑说明的是根评论与子评论（回复评论）是一个表还是两个表的问题，考虑到如果是两张表话，那就必须得为子评论再加一张子评论点赞表以及子评论又有子评论呢，]]></description><category></category></item><item><title><![CDATA[java直播毕业设计，使用red5，obs，video.js仿bilibili实现一个视频直播网站]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/107011092</link><guid>https://blog.youkuaiyun.com/to_study/article/details/107011092</guid><author>to_study</author><pubDate>Mon, 29 Jun 2020 09:15:35 +0800</pubDate><description><![CDATA[该项目是本人的毕业设计，先罗列一下使用到的各种开源技术框架软件

red5，开源直播流项目，直播部署使用即可，优点：简单、开源免费
	obs，免费的视频录制软件，有强大丰富的功能，用于实现电脑屏幕录制推流到red5。（手机端使用的是杏林推流软件）
	video.js,前端播放插件（有点依赖flash），向red5拉流进行播放，是直播最终的播放效果
	其他的web项目基本各种东西如mysql，redis，nginx，第三方图床工具等等


最终项目的架构图：



实现效果：



首页：



最近工作有.]]></description><category></category></item><item><title><![CDATA[java 根据两个经纬度计算距离，并判断是否处于中国工具类]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/106942480</link><guid>https://blog.youkuaiyun.com/to_study/article/details/106942480</guid><author>to_study</author><pubDate>Wed, 24 Jun 2020 13:47:32 +0800</pubDate><description><![CDATA[代码如下：


public class MyLocationUtils {
    private static final double EARTH_RADIUS = 6378.137D;

    public MyLocationUtils() {
    }

    private static double getRadian(double d) {
        return d * 3.141592653589793D / 180.0D;
    }

    public static]]></description><category></category></item><item><title><![CDATA[2020，最新手机号码手机验证正则表达式，持续更新]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/106832942</link><guid>https://blog.youkuaiyun.com/to_study/article/details/106832942</guid><author>to_study</author><pubDate>Thu, 18 Jun 2020 13:49:59 +0800</pubDate><description><![CDATA[最近在跟一个别人写好上线的项目，今天出了一个bug，部分正常的手机号验证格式不通，查看了代码发现正则表达式有较大的错误，如图：





存在的问题：
1.存在逗号

2.不够全面，部分正常的手机号验证不通过

所以决定自己写，百度一下手机号的格式，下面应该是比较全面，所以就自己根据下面的写验证的正则表达式，如有小伙伴发现下图仍有遗漏请在评论指出，我看到会马上更新





最后写出来的正则表达式：


Pattern p = Pattern.compile("^1(3([1-35-9]\\d|4[1-..]]></description><category></category></item><item><title><![CDATA[HttpClient构建请求，并发送请求]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/106147140</link><guid>https://blog.youkuaiyun.com/to_study/article/details/106147140</guid><author>to_study</author><pubDate>Fri, 15 May 2020 18:00:01 +0800</pubDate><description><![CDATA[//构建图床HttpPost,用于发送请求
public HttpPost createHttpPostForPath(String path,MultipartFile file,String filename) throws IOException {
    HttpPost httpPost = new HttpPost(url);
    ContentType type=ContentType.MULTIPART_FORM_DATA.withCharset("UTF-8");
    Http.]]></description><category></category></item><item><title><![CDATA[自定义jpa的pageImple替换类]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/106147065</link><guid>https://blog.youkuaiyun.com/to_study/article/details/106147065</guid><author>to_study</author><pubDate>Fri, 15 May 2020 17:56:45 +0800</pubDate><description><![CDATA[自定义jpa的pageImple替换类


@Data
public class MyPage&lt;T&gt; implements Iterable&lt;T&gt;, Serializable {
    private static final long serialVersionUID = -3720998571176536865L;
    private List&lt;T&gt; content = new ArrayList&lt;&gt;();
    private long tota]]></description><category></category></item><item><title><![CDATA[linux常用命令总结，个人]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103731531</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103731531</guid><author>to_study</author><pubDate>Fri, 27 Dec 2019 14:28:03 +0800</pubDate><description><![CDATA[mv      移动文件目录，也可以改名（-n顺便打印出行号）
cp      复制文件

cat        fileName   正序一次性查看文件的所有内容
tac        fileName   反序一次性查看文件的所有内容
head -n 20  fileName   正序查看文件前20行的内容
tail  ...]]></description><category></category></item><item><title><![CDATA[springBoot使用springSecurity入门详细配置,自定义登录，RBAC权限模型，数据库（JPA+mysql)验证登录，验证码，json格式交互等（下篇）]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103592888</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103592888</guid><author>to_study</author><pubDate>Wed, 18 Dec 2019 10:39:20 +0800</pubDate><description><![CDATA[上篇：springBoot使用springSecurity入门详细配置,自定义登录，RBAC权限模型，数据库（mybatis+mysql)验证登录，验证码，json格式交互等（上篇）

写了：

springBoot项目使用security
	配置介绍
	自定义登录页面
	自定义登陆成功失败处理器
	添加验证码验证过滤
下篇开始

1.自定义用户认证的数据来源，内存以及数据库

前面我们一直使用s...]]></description><category></category></item><item><title><![CDATA[springBoot使用springSecurity入门详细配置,自定义登录，RBAC权限模型，数据库（Jpa+mysql)验证登录，验证码，json格式交互等（上篇）]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103572145</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103572145</guid><author>to_study</author><pubDate>Tue, 17 Dec 2019 12:01:23 +0800</pubDate><description><![CDATA[只写如何应用，并不深入流程原理，如果想深入学习原理机制的只能失望了；

springSecurity5.0开始默认必须对密码加密，之前的是可选；

0.准备工作，创建初始化的springBoot项目，版本是2.2.1

IDEA创建springBoot项目，勾选web，以来如下

	
&lt;dependency&gt;
            &lt;groupId&gt;org.springf...]]></description><category></category></item><item><title><![CDATA[Nginx配置文件详解]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103544572</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103544572</guid><author>to_study</author><pubDate>Sat, 14 Dec 2019 23:21:47 +0800</pubDate><description><![CDATA[#定义Nginx运行的用户和用户组

user wwwwww;



#nginx进程数，建议设置为等于CPU总核心数。

worker_processes8;



#全局错误日志定义类型，[ debug | info | notice | warn | error | crit ]

error_log/var/log/nginx/error.loginfo;



#进程文件
......]]></description><category></category></item><item><title><![CDATA[springBoot2数据库连接池自动装配原理，以及如何配置使用其他的数据库连接池（druid）为例]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103542038</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103542038</guid><author>to_study</author><pubDate>Sat, 14 Dec 2019 20:11:20 +0800</pubDate><description><![CDATA[1.SpringBoot的数据库连接池的相关默认

springBoot之前的版本默认使用的是Tomcat的数据库连接池
	较新的版本2点多（具体多少我看看）默认使用的是Hikari（我使用的是2.2.1）
	默认支持数据库连接池：
	Tomcat
		Hikari
		Dbcp2
	
2.springBoot默认的数据库连接池，以及自动装配原理

这部分可以通过查看数据库自动装配类：org.sp...]]></description><category></category></item><item><title><![CDATA[springBoot使用druid数据库连接池以及logback，并开启慢sql记录输出到指定的日志文件]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103537295</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103537295</guid><author>to_study</author><pubDate>Sat, 14 Dec 2019 11:57:13 +0800</pubDate><description><![CDATA[该文主要记录下自己使用过程，以后用到可以看看，我的springBoot版本是2.2.1，2以上应该都没问题

1.首先添加好需要的依赖包：


&lt;!--mysql--&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;mysql&lt;/groupId&gt;
            &lt;artifactId&gt;mys...]]></description><category></category></item><item><title><![CDATA[IDEA使用的一些小技巧，快捷键]]></title><link>https://blog.youkuaiyun.com/to_study/article/details/103533827</link><guid>https://blog.youkuaiyun.com/to_study/article/details/103533827</guid><author>to_study</author><pubDate>Fri, 13 Dec 2019 21:44:08 +0800</pubDate><description><![CDATA[快捷键：

Ctrl + 鼠标左键  一步到位打开源码 = Ctrl + Shift+i –&gt;Ctrl + Enter（如果目标是变量则跳应到相对的使用位置
Ctrl+Shift+N  知道类名查找打开类的源码
double shift  查找所有东西
Ctrl+Alt+B  根据方法名查找实现源码
ctrl + R   当前...]]></description><category></category></item></channel></rss>