<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WLQ0621的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WLQ0621</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WLQ0621]]></copyright><item><title><![CDATA[JDK8新特性之Optional快速入门]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/141930780</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/141930780</guid><author>WLQ0621</author><pubDate>Thu, 05 Sep 2024 16:04:58 +0800</pubDate><description><![CDATA[Java8中Optional的empty(), of(T value), ofNullable(T value), orElse(), orElseGet(), orElseThrow(), map(), flatMap(), isPresent(), ifPresent(), filter()用法]]></description><category></category></item><item><title><![CDATA[JDK8新特性之Stream快速入门]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/141093541</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/141093541</guid><author>WLQ0621</author><pubDate>Sat, 10 Aug 2024 23:06:07 +0800</pubDate><description><![CDATA[list.stream()、Arrays.stream()、Stream.of()、Stream.iterate()、Stream.generate()]]></description><category></category></item><item><title><![CDATA[JDK8新特性之方法引用与构造器引用快速入门]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/140896046</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/140896046</guid><author>WLQ0621</author><pubDate>Sat, 03 Aug 2024 22:44:42 +0800</pubDate><description><![CDATA[对象实例::方法名、类名::静态方法名、类名::非静态方法名、类名::new、类型[]::new]]></description><category></category></item><item><title><![CDATA[JDK8新特性之Lambda表达式快速入门]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/140792180</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/140792180</guid><author>WLQ0621</author><pubDate>Tue, 30 Jul 2024 18:24:36 +0800</pubDate><description><![CDATA[JDK8中引入了一个新的操作符 **->**"箭头操作符，分成两部分：参数列表、实现类的方法体]]></description><category></category></item><item><title><![CDATA[MySQL主从同步延迟的原因、排查和解决方案]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/137502332</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/137502332</guid><author>WLQ0621</author><pubDate>Mon, 08 Apr 2024 11:58:25 +0800</pubDate><description><![CDATA[解决方案：半同步复制、一主多从读写分离、避免大事务、业务侧加缓存、化网络带宽、选择高版本MySQL ]]></description><category></category></item><item><title><![CDATA[BigDecimal常用方法及手写通用工具类]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/133049010</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/133049010</guid><author>WLQ0621</author><pubDate>Tue, 19 Sep 2023 22:21:54 +0800</pubDate><description><![CDATA[项目中操作BigDecimal的工具类，包括加减乘除、四舍五入和比较大小等操作]]></description><category></category></item><item><title><![CDATA[使用Redis控制表单重复提交和控制接口访问频率]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/132718489</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/132718489</guid><author>WLQ0621</author><pubDate>Wed, 06 Sep 2023 17:51:20 +0800</pubDate><description><![CDATA[防重提交有很多方案，从前端的按钮置灰，到后端synchronize锁、Lock锁、借助Redis语法实现简单锁、Redis+Lua分布式锁、Redisson分布式锁，再到DB的悲观锁、乐观锁、借助表唯一索引等等都可以实现防重提交，以保证数据的安全性。这篇文章我们介绍其中一种方案–，最终实现防重提交。]]></description><category></category></item><item><title><![CDATA[Nacos之NacosWatch源码解读]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/121680393</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/121680393</guid><author>WLQ0621</author><pubDate>Thu, 02 Dec 2021 17:03:13 +0800</pubDate><description><![CDATA[NacosWatch实例化、调用时机及作用（订阅服务变更通知、获取注册服务的服务列表、开启定时任务更新注册服务的实例列表、发送心跳等）]]></description><category></category></item><item><title><![CDATA[git常用命令笔记]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/119992245</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/119992245</guid><author>WLQ0621</author><pubDate>Mon, 30 Aug 2021 11:46:33 +0800</pubDate><description><![CDATA[一、本地分支之间相互切换和查看；
二、本地创建一个新分支推送到远程仓库；
三、从远程仓库里拉取一个本地不存在的分支；
四、分支合并；
五、重置账号密码、存储账号密码；]]></description><category></category></item><item><title><![CDATA[SpringCould Gateway里添加前置过滤器校验参数格式]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/119784314</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/119784314</guid><author>WLQ0621</author><pubDate>Wed, 18 Aug 2021 17:39:44 +0800</pubDate><description><![CDATA[目前SpringMVC做了很好的兼容处理，即使请求参数的json格式有错误，也能只取json串前面一段能匹配上的数据，而不报错。
啥事有好处也有坏处，不好的地方就是有注入风险。所以需要校验入参的格式，那接下来就需要考虑在哪里做校验。因为校验入参格式是公共操作，所以最好选在网关层做拦截校验，而不是下发到应用层。
我们项目采用的是SpringCould Gateway实现的网关，我尝试在GlobalFilter的实现类下读取请求参数然后校验json格式，可以做到，但引发了一个问题，请求参数在流里面，被读取过一次]]></description><category></category></item><item><title><![CDATA[MybatisPlus支持Entity里使用枚举做为属性类型的源码解析]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/118180884</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/118180884</guid><author>WLQ0621</author><pubDate>Thu, 24 Jun 2021 12:02:09 +0800</pubDate><description><![CDATA[1.mybatis-plus配置里指定枚举路径；2.枚举类里使用@EnumValue注解标记要映射的枚举属性；3.Entity里使用该枚举做为属性类型。]]></description><category></category></item><item><title><![CDATA[Spring启动时实现初始化的几种方式]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/117661645</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/117661645</guid><author>WLQ0621</author><pubDate>Mon, 07 Jun 2021 16:06:04 +0800</pubDate><description><![CDATA[构造方法里初始化、@PostConstruct、InitializingBean、initMethod、ApplicationListener监听、SpringBoot的ApplicationRunner和CommandLineRunner接口]]></description><category></category></item><item><title><![CDATA[swagger中注解的value和tags区别]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/116935127</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/116935127</guid><author>WLQ0621</author><pubDate>Mon, 17 May 2021 15:53:36 +0800</pubDate><description><![CDATA[@Api注解用于描述类，@ApiOperation注解用于描述方法。两种注解都有value、tags属性，那么这两个属性的区别是什么？作用在类上 和 作用在方法上又有什么区别？]]></description><category></category></item><item><title><![CDATA[MySQL开发过程日常使用命令]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/116600929</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/116600929</guid><author>WLQ0621</author><pubDate>Mon, 10 May 2021 17:23:27 +0800</pubDate><description><![CDATA[目录添加修改查看注释创建表时添加表和列的注释修改已有表的注释修改已有表的列的注释查看表注释DESC命令，只能看到表结构但看不到注释SHOW CREATE TABLE命令，可以看到完整SQL（推荐）SHOW FULL COLUMNS FROM命令，格式化的展示（推荐）在元数据表里查看查看information_schema.TABLES表
添加修改查看注释

创建表时添加表和列的注释
DROP TABLE IF EXISTS `process_record`;
CREATE TABLE `process_re]]></description><category></category></item><item><title><![CDATA[HttpServletRequest获取POST请求的参数]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/116274749</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/116274749</guid><author>WLQ0621</author><pubDate>Thu, 29 Apr 2021 18:38:04 +0800</pubDate><description><![CDATA[除了@RequestBody方式外，我们还可以通过HttpServletRequest方式获取参数。
比如参数是：
{
  "code": "xxx"
}

获取方式：
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
]]></description><category></category></item><item><title><![CDATA[Spring事务的7种传播属性]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/115445799</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/115445799</guid><author>WLQ0621</author><pubDate>Mon, 05 Apr 2021 18:24:30 +0800</pubDate><description><![CDATA[Spring在TransactionDefinition接口中规定了7种事务传播行为，他们规定了事务方法和事务方法发生嵌套时事务如何进行传播。
所谓事务的传播行为是指，如果在开始当前事务之前，一个事务上下文已经存在，此时有若干选项可以指定一个事务性方法的执行行为。


PROPAGATION_REQUIRED
默认事务类型，如果没有，就新建一个事务；如果有，就加入当前事务。适合绝大多数情况。
如果当前存在事务，则加入该事务；如果当前没有事务，则创建一个新的事务。


PROPAGATION_REQUIRES]]></description><category></category></item><item><title><![CDATA[mybatis-plus中QueryWrapper的使用技巧]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/115355555</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/115355555</guid><author>WLQ0621</author><pubDate>Thu, 01 Apr 2021 11:45:16 +0800</pubDate><description><![CDATA[前言：mybatis-plus使用场景
mybatis大家都有使用过，既面向对又灵活可配。不友好的地方是，会随着使用出现大量xml文件和SQL语句。
此时，mybatis-plus应运而生，对mybatis做了无侵入增强，还可以简化SQL语句，或者不写SQL语句。
MyBatis-Plus 官网：https://mp.baomidou.com/
MyBatis-Plus 官方文档：https://mp.baomidou.com/guide/
码云项目地址：https://gitee.com/baomidou]]></description><category></category></item><item><title><![CDATA[手动同步Chrome（解决Chrome不能自动同步的问题）]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/112284299</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/112284299</guid><author>WLQ0621</author><pubDate>Wed, 06 Jan 2021 17:19:31 +0800</pubDate><description><![CDATA[使用Chrome浏览器如果有用到它的同步功能时，会有一个问题，就是数据变更后不能及时自动同步到云端，所以在其他客户端也不能及时看到数据的变更。]]></description><category></category></item><item><title><![CDATA[HTTPS是怎么防止劫持的]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/112172349</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/112172349</guid><author>WLQ0621</author><pubDate>Mon, 04 Jan 2021 13:00:40 +0800</pubDate><description><![CDATA[HTTP是明文传输的，如果想密文传输就需要HTTPS（HTTP+SSL），三次握手之后再建立SSL连接。

那么HTTPS是怎么防止劫持的？
在HTTP请求时，常见的劫持有DNS劫持和传输内容被劫持，我们从这两个劫持来看看HTTPS是怎么解决的。

怎么防止DNS劫持
什么是DNS劫持？
比如用户想访问知乎，在浏览器输入如下域名https:// www.zhihu.com要打开这个网站，首先要解析域名www.zhihu.com，结果这个域名被黑客劫持到他的私人服务器1.2.3.4，结果用户的浏览器和黑客的私]]></description><category></category></item><item><title><![CDATA[Java网络编程基础]]></title><link>https://blog.youkuaiyun.com/WLQ0621/article/details/110791260</link><guid>https://blog.youkuaiyun.com/WLQ0621/article/details/110791260</guid><author>WLQ0621</author><pubDate>Tue, 08 Dec 2020 10:09:30 +0800</pubDate><description><![CDATA[目录计算机网络体系结构OSI 七层模型TCP/IP 模型TCP/IP协议族TCP的基本特性TCP建立连接的3次握手TCP的洪泛攻击TCP断开连接的4次挥手常用的网络工具HTTP协议一次完整的HTTP请求的过程HTTP协议报文结构

计算机网络体系结构
每一个抽象层建立在低一层提供的服务上，并且为高一层提供服务。

OSI 七层模型
物理层、链路层、网络层、传输层、会话层、表示层、应用层。

TCP/IP 模型
链路层、网络层、传输层、应用层。

TCP/IP协议族
常见的有TCP、UDP、HTTP、FTP、]]></description><category></category></item></channel></rss>