<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小林子的博客]]></title><description><![CDATA[记录小技术]]></description><link>https://blog.youkuaiyun.com/qq_26106607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_26106607]]></copyright><item><title><![CDATA[手动校验JWT]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/135521843</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/135521843</guid><author>qq_26106607</author><pubDate>Thu, 11 Jan 2024 11:02:24 +0800</pubDate><description><![CDATA[手动校验JWT]]></description><category></category></item><item><title><![CDATA[on conflict do update]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/130948216</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/130948216</guid><author>qq_26106607</author><pubDate>Tue, 30 May 2023 14:48:06 +0800</pubDate><description><![CDATA[相比于传统的INSERT和UPDATE两个步骤执行，使用ON CONFLICT DO UPDATE可以将这两个步骤合并为一个数据库操作，从而减少了通信和锁定的开销，提高了插入数据的性能。在PostgreSQL中，这个语句通常使用在INSERT INTO语句中，用于在插入新行时，如果遇到重复的键值，则执行UPDATE操作。此外，ON CONFLICT DO UPDATE也可能会引入一些复杂性，特别是针对涉及多个列的行和需要执行更复杂逻辑的更新操作的情况。]]></description><category></category></item><item><title><![CDATA[两个线程交替输出内容]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/122745060</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/122745060</guid><author>qq_26106607</author><pubDate>Mon, 07 Feb 2022 08:51:36 +0800</pubDate><description><![CDATA[public class App {

    public static void main(String[] args) throws Exception {
        sellTicket s = new sellTicket();
        Thread t1 = new Thread(s);
        Thread t2 = new Thread(s);
        t1.setName("t1");
        t2.setName("t2");
        t1.]]></description><category></category></item><item><title><![CDATA[logback日志详细配置]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/122707754</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/122707754</guid><author>qq_26106607</author><pubDate>Wed, 26 Jan 2022 19:58:45 +0800</pubDate><description><![CDATA[&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!-- Log4j2 配置参考：https://www.cnblogs.com/keeya/p/10101547.html  --&gt;
&lt;!--日志级别优先级：OFF &gt; FATAL &gt; ERROR &gt; WARN &gt; INFO &gt; DEBUG &gt; TRACE &gt; ALL --&gt;
&lt;!-- monitorInterval：自动间隔 N 秒检测配置文.]]></description><category></category></item><item><title><![CDATA[使用GJit操作Git进行push文件到Git远程分支]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/119245545</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/119245545</guid><author>qq_26106607</author><pubDate>Fri, 30 Jul 2021 13:53:33 +0800</pubDate><description><![CDATA[公司有一个需求：用户上传zip压缩包，然后后端接收该zip压缩包，然后进行解压到git目录，然后使用JGit操作Git把解压后的内容push到Git远程分支


Maven依赖如下:


        &lt;dependency&gt;
            &lt;groupId&gt;org.eclipse.jgit&lt;/groupId&gt;
            &lt;artifactId&gt;org.eclipse.jgit&lt;/artifactId&gt;
        .]]></description><category></category></item><item><title><![CDATA[Windows上的RocketMQ安装以及测试]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/116164691</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/116164691</guid><author>qq_26106607</author><pubDate>Mon, 26 Apr 2021 18:20:43 +0800</pubDate><description><![CDATA[废话不多说。

步骤一：下载安装RocketMQ

地址：http://rocketmq.apache.org/







步骤二：配置环境解压启动RocketMQ

解压后的目录



配置环境





启动bin目录里的文件(请使用cmd去启动)


start mqnamesrv.cmd




start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true





步骤三：安装RocketMQ服务

网址：https://...]]></description><category></category></item><item><title><![CDATA[springboot返回给前端数据将null值转化为对应的空字符串、空数组、时间统一格式化等等]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/114394489</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/114394489</guid><author>qq_26106607</author><pubDate>Fri, 05 Mar 2021 14:59:50 +0800</pubDate><description><![CDATA[实现WebMvcConfigurer 即：implements WebMvcConfigurer

自己重写消息转换器代码如下：


import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;]]></description><category></category></item><item><title><![CDATA[利用注解进行前端传过来的参数校验]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/112663823</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/112663823</guid><author>qq_26106607</author><pubDate>Mon, 18 Jan 2021 16:03:05 +0800</pubDate><description><![CDATA[@NotNull和@Null

类型：任意类型。

前者作用：验证注解的元素值不是null，无法查检长度为0的字符串。后者作用：验证注解的元素值是null。



@NotBlank

类型：CharSequence类型。

作用：只应用于字符串且在比较时会去除字符串的首位空格后长度必须大于0。



@Min(value=值)

类型：BigDecimal，BigInteger，byte，short，int，long等任何Number或CharSequence（CharSequence存储的是数字字符..]]></description><category></category></item><item><title><![CDATA[Java后端接收时间字符串转成LocalDateTime，LocalDateTime转成时间字符串给前端]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/112611562</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/112611562</guid><author>qq_26106607</author><pubDate>Thu, 14 Jan 2021 15:48:54 +0800</pubDate><description><![CDATA[1.接收前端时间字符串

1.1后端可以使用String去接收，手动在代码中进行转换成LocalDateTime操作，这里不做讨论。

1.2后端使用LocalDateTime去接收，需要配合注解:


@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

1.2.1例子:

1.2.1.1前端请求的数据


import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTim]]></description><category></category></item><item><title><![CDATA[spring手动开启事务，手动提交事务，手动回滚事务]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/112056156</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/112056156</guid><author>qq_26106607</author><pubDate>Thu, 31 Dec 2020 22:12:49 +0800</pubDate><description><![CDATA[1.未加事务注解(或者事务配置), 所以需要手动开启事务和手动提交事务和手动回滚事务


@Autowired
  private PlatformTransactionManager txManager;

  @Autowired
  private ShopGroupBuyDao shopGroupBuyDao;

  @GetMapping(value = "/transactionDemo")
  public void ceshi() {

    // 手动开启事务  start
    De]]></description><category></category></item><item><title><![CDATA[微信小程序登陆(两种写法)]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/110101285</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/110101285</guid><author>qq_26106607</author><pubDate>Wed, 25 Nov 2020 00:14:14 +0800</pubDate><description><![CDATA[1.第一种写法, 不借助第三方工具,直接上代码

1.1Controller代码:


	@ApiOperation("微信登录授权")
	@PostMapping("/login")
	@ApiImplicitParams({
	public void WxLogin(@RequestBody WeiXinLoginRequestVO weiXinLoginRequestVO) {
		 userService.decodeUserInfo(weiXinLoginRequestVO);
	}

1.1.1]]></description><category></category></item><item><title><![CDATA[非对称加密和解密之RSA]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/109691586</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/109691586</guid><author>qq_26106607</author><pubDate>Sun, 15 Nov 2020 21:38:51 +0800</pubDate><description><![CDATA[说明：本人使用的是hutool的工具类，Hutool官网

我这里演示怎么使用



1.系统自动生成公钥和私钥

1.1代码如下


   // 创建测试数据  start
    String str = "地球人";
    byte[] bytes = str.getBytes(CharsetUtil.CHARSET_UTF_8);
    // 创建测试数据  end


    // 生成公钥 和 私钥  start
    RSA rsa = SecureUtil.rsa();        ]]></description><category></category></item><item><title><![CDATA[对称加密和解密之des]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/109679918</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/109679918</guid><author>qq_26106607</author><pubDate>Fri, 13 Nov 2020 18:04:50 +0800</pubDate><description><![CDATA[说明：本人使用的是hutool的工具类，Hutool官网

我这里演示怎么使用


      // 加密数据  start
      String str = "我是人";
      byte[] bytes = str.getBytes("UTF-8");
      // 加密数据  end


      // 生成密钥  start
      byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue()).getE]]></description><category></category></item><item><title><![CDATA[解决邮件附件乱码问题]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/109648012</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/109648012</guid><author>qq_26106607</author><pubDate>Thu, 12 Nov 2020 17:02:46 +0800</pubDate><description><![CDATA[参考这个博客:https://blog.youkuaiyun.com/daiqinge/article/details/89970382或者https://blog.youkuaiyun.com/z69183787/article/details/79238735

1.如果是springboot在springboot启动类中加入, 如下:



2.其他工程项目,创建一个类,加入如下代码:





代码:


	  // 解决收件人收到附件显示附件名字乱码  是因为附件名字过长导致附件名字乱码  start
    Syst.]]></description><category></category></item><item><title><![CDATA[解决事务未提交读取不到数据问题]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/108802314</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/108802314</guid><author>qq_26106607</author><pubDate>Fri, 25 Sep 2020 18:49:00 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/yangzhengjianglove/article/details/102734629



这是我的代码:


]]></description><category></category></item><item><title><![CDATA[Java后端接收用户关注/取消公众号或者接收用户发送到公众号的消息]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/108167524</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/108167524</guid><author>qq_26106607</author><pubDate>Sat, 22 Aug 2020 14:13:19 +0800</pubDate><description><![CDATA[请求的Controller


import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


    @PostMapping(value = "/notifyMsg", produc.]]></description><category></category></item><item><title><![CDATA[微信公众号启用服务器配置Java代码]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/108167251</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/108167251</guid><author>qq_26106607</author><pubDate>Sat, 22 Aug 2020 13:54:30 +0800</pubDate><description><![CDATA[如图所示



请求的Controller


import com.oraro.util.SignUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@Slf4j
@RestControll.]]></description><category></category></item><item><title><![CDATA[对list进行分页]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/107436960</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/107436960</guid><author>qq_26106607</author><pubDate>Sat, 18 Jul 2020 23:07:16 +0800</pubDate><description><![CDATA[import java.util.ArrayList;
import java.util.List;
import org.springframework.util.CollectionUtils;

public class ListPagingUtil {

  /**
   * @param list 进行分页的list
   * @param pageNo 页码
   * @param pageSize 每页显示条数
   * @return 分页后数据
   */
  public static.]]></description><category></category></item><item><title><![CDATA[postman上传Excel到springboot后台]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/106699518</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/106699518</guid><author>qq_26106607</author><pubDate>Thu, 11 Jun 2020 23:50:56 +0800</pubDate><description><![CDATA[1.postman设置如下:









2.springboot后台代码







3.测试结果








]]></description><category></category></item><item><title><![CDATA[使用@ControllerAdvice全局异常捕获]]></title><link>https://blog.youkuaiyun.com/qq_26106607/article/details/105542449</link><guid>https://blog.youkuaiyun.com/qq_26106607/article/details/105542449</guid><author>qq_26106607</author><pubDate>Wed, 15 Apr 2020 19:15:12 +0800</pubDate><description><![CDATA[import lombok.Data;
import lombok.EqualsAndHashCode;


@Data
@EqualsAndHashCode(callSuper = true)
public class ServiceException extends RuntimeException {

    final Exception ex;

    final String m...]]></description><category></category></item></channel></rss>