<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xian_hui的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xian_hui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xian_hui]]></copyright><item><title><![CDATA[关于mongoDB插入去重以及高并发问题]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/121493953</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/121493953</guid><author>xian_hui</author><pubDate>Tue, 23 Nov 2021 15:37:09 +0800</pubDate><description><![CDATA[关于mongoDB插入去重以及高并发问题
最近在项目中碰到过向mongoDB插入数据去重问题。一开始我的想法直接用upsert，我的项目部分代码如下：
        //使用Upsert进行插入，如果存在就更新，不存在则插入
        //根据报告时间和code进行筛选去重
        Query query = new Query();
        query.addCriteria(Criteria.where("reporttimeStamp").is(meteorologicalDa]]></description><category></category></item><item><title><![CDATA[用设计模式来替代if-else]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/120207028</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/120207028</guid><author>xian_hui</author><pubDate>Thu, 09 Sep 2021 18:21:06 +0800</pubDate><description><![CDATA[前言
物流行业中，通常会涉及到EDI报文(XML格式文件)传输和回执接收，每发送一份EDI报文，后续都会收到与之关联的回执（标识该数据在第三方系统中的流转状态）。这里枚举几种回执类型：MT1101、MT2101、MT4101、MT8104、MT8105、MT9999，系统在收到不同的回执报文后，会执行对应的业务逻辑处理。当然，实际业务场景并没有那么笼统，这里以回执处理为演示案例
模拟一个回执类
@Data
public class Receipt {
/**
 * 回执信息
 */
String messa]]></description><category></category></item><item><title><![CDATA[Spring定时任务@scheduled多线程的使用（@Async注解）]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/116454850</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/116454850</guid><author>xian_hui</author><pubDate>Thu, 06 May 2021 15:21:08 +0800</pubDate><description><![CDATA[1.开篇

在Spring定时任务@Scheduled注解使用方式浅窥这篇文章里面提及过，spring的定时任务默认是单线程的，他在某些场景下会造成堵塞，那么如果我们想让每一个任务都起一条线程去执行呢？

2.使用@Async

我们可以使用Spring的@Async注解十分容易的实现多线程的任务执行。
测试代码：


@Scheduled(cron = "0/2 * * * * ?")
    @Async
    public void doTask() throws InterruptedExcept]]></description><category></category></item><item><title><![CDATA[Java读取Excel数值内容带.0或变科学计数法的解决办法]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/116304765</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/116304765</guid><author>xian_hui</author><pubDate>Fri, 30 Apr 2021 15:42:08 +0800</pubDate><description><![CDATA[Java读取Excel数值内容带.0或变科学计数法的解决办法

当excel里单元格的内容为纯数字 例如 '123'或 '12345678' 时，
读取后，会变成 123.0 或科学计数法。
一开始以为是单元格格式问题，发现把单元格改成文本类型也是如此。

网上其他诸如自己写方法进行转换 或者正则表达之类判断的方法，非常局限。

简单的方式


Row row = sheet.getRow(i);
row.getCell(j).setCellType(CellType.STRING); //读取前将单元格设]]></description><category></category></item><item><title><![CDATA[查询各类POM文件代码官网]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/116277306</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/116277306</guid><author>xian_hui</author><pubDate>Thu, 29 Apr 2021 21:21:02 +0800</pubDate><description><![CDATA[https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter/1.2.4
]]></description><category></category></item><item><title><![CDATA[java读取解析XML小结]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/108834513</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/108834513</guid><author>xian_hui</author><pubDate>Mon, 28 Sep 2020 16:06:19 +0800</pubDate><description><![CDATA[java读取XML文件小结java读取XML文件java修改XML文件
java读取XML文件
最近开发碰到对XML文件进行解析，查找了很多资料，总结一个自己喜欢用的一种模式，java代码如下：
	 	SAXReader reader = new SAXReader();
        String rootPath = System.getProperty("user.dir").replace("\\", "/");
        //File file = new File(rootPath+"/]]></description><category></category></item><item><title><![CDATA[Shiro的加密和解密步骤]]></title><link>https://blog.youkuaiyun.com/xian_hui/article/details/107929254</link><guid>https://blog.youkuaiyun.com/xian_hui/article/details/107929254</guid><author>xian_hui</author><pubDate>Tue, 11 Aug 2020 11:20:51 +0800</pubDate><description><![CDATA[Shiro的密码加密和解密Shiro密码比对的过程MD5盐值加密具体步骤
通过前段时间的学习，可以根据Shiro框架写出一个简单的登录操作，当然正常商业运用不可能直接让密码进行明文对比，所以需要学习密码的加密和解密操作
Shiro密码比对的过程
通过AuthenticatingRealm的credentialsMatcher属性来进行密码的比对！

获取当前的Subject，调用SecurityUtils.getSubject();
测试当前的用户是否已经被认证，即是否已经登录，调用Subject的isAu]]></description><category></category></item></channel></rss>