<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[l_learning的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/l_learning</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; l_learning]]></copyright><item><title><![CDATA[日志打印设计]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/128332797</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/128332797</guid><author>l_learning</author><pubDate>Thu, 15 Dec 2022 17:27:06 +0800</pubDate><description><![CDATA[日志设计]]></description><category></category></item><item><title><![CDATA[Linux运维常用命令]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/126154038</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/126154038</guid><author>l_learning</author><pubDate>Thu, 04 Aug 2022 10:06:48 +0800</pubDate><description><![CDATA[Linux运维常用命令。]]></description><category></category></item><item><title><![CDATA[Oracle 数据库表结构 Excel 导出]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125514914</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125514914</guid><author>l_learning</author><pubDate>Wed, 29 Jun 2022 10:15:01 +0800</pubDate><description><![CDATA[Oracle 表结构，结果集导出 CSV 格式]]></description><category></category></item><item><title><![CDATA[JAVA数据加密]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125418376</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125418376</guid><author>l_learning</author><pubDate>Wed, 22 Jun 2022 23:24:57 +0800</pubDate><description><![CDATA[哈希算法中最著名的当属MD5算法，MD5算法生成的信息摘要只有128位，数据加密后是不可逆的，常用来加密用户密码
2.对称加密算法
最为流行的对称加密算法是AES算法，对称算法的好处是加密解密的效率比较高。对称算法的缺点是不够安全。对称加密算法密钥是相同的，只要密钥泄露出去，通信的密文就会被破解。
3.非对称加密算法
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。非对称加密中存在一对密钥，一个叫做公钥，一个叫做私钥。在加密解密的过程中，可以使用公钥加密明文，私钥解密密文；也]]></description><category></category></item><item><title><![CDATA[RestTemplat发送HTTP请求]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125320800</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125320800</guid><author>l_learning</author><pubDate>Thu, 16 Jun 2022 18:13:49 +0800</pubDate><description><![CDATA[RestTemplate发送请求]]></description><category></category></item><item><title><![CDATA[JAVA应用层限流]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125223218</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125223218</guid><author>l_learning</author><pubDate>Fri, 10 Jun 2022 22:00:00 +0800</pubDate><description><![CDATA[限流中提到的阈值拒绝策略两个概念
阈值：在一个单位时间内允许的请求量。如 QPS 限制为10，说明 1 秒内最多接受 10 次请求。
拒绝策略：超过阈值的请求的拒绝策略，常见的拒绝策略有直接拒绝、排队等待等。一种简单方便的限流算法。通过一个支持原子操作的计数器来累计 1 秒内的请求次数，当 1 秒内计数达到限流阈值时触发拒绝策略。每过 1 秒，计数器重置为 0 开始重新计数。
测试

2. 滑动计数器算法
滑动计数器算法为解决计数器算法遇到时间窗口的临界突变时，会发生qps突增，如 1s 中的后 500 m]]></description><category></category></item><item><title><![CDATA[SpringBoot 参数 trim 处理]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125189965</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125189965</guid><author>l_learning</author><pubDate>Wed, 08 Jun 2022 18:22:42 +0800</pubDate><description><![CDATA[基于以上场景这里使用 Filter 去掉参数值的前后空格
2. 新建参数过滤器
RequestTrimHttpServletRequestWrapper 请求参数包装器]]></description><category></category></item><item><title><![CDATA[BigDecimal精度丢失处理]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125087062</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125087062</guid><author>l_learning</author><pubDate>Wed, 01 Jun 2022 22:15:00 +0800</pubDate><description><![CDATA[精度丢失处理
String、int 不会丢失精度，将double，float转成String再计算可以避免精度丢失问题
]]></description><category></category></item><item><title><![CDATA[JAVA多线程编程之异步]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/125027415</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/125027415</guid><author>l_learning</author><pubDate>Sun, 29 May 2022 10:32:45 +0800</pubDate><description><![CDATA[日常开发中我们在一个接口中需要处理多个任务，通常都是串行的，这样导致接口的响应时间是每个任务的执行时间的总和。为了缩短响应时间，通常会使用异步处理多任务。

需求举例：查询书籍基本信息，书籍详细信息，作者信息并将结果数据返回。
假设查询书籍基本信息花费500毫秒，查询书籍详细信息花费500毫秒，查询作者信息花费500毫秒，共计1500毫秒，使用异步处理时间一般都是远小于1500毫秒的。
下面使用异步调用方式优化接口
1、异步任务类
实现 Callable 接口，用来处理带返回结果的任务。taskId 用来.]]></description><category></category></item><item><title><![CDATA[Spring事务隔离级别与传播行为]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124794150</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124794150</guid><author>l_learning</author><pubDate>Mon, 16 May 2022 19:15:00 +0800</pubDate><description><![CDATA[org.springframework.transaction
public interface TransactionDefinition
定义符合 Spring 的事务属性的接口。基于类似于 EJB CMT 属性的传播行为定义。‎
‎注意，除非启动实际的新事务，否则不会应用隔离级别和超时设置。‎ ‎仅‎ PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW and PROPAGATION_NESTED ‎可能导致这种情况，在其他情况下指定这些设置通常没有意义。此外]]></description><category></category></item><item><title><![CDATA[Spring Cache 缓存]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124737094</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124737094</guid><author>l_learning</author><pubDate>Thu, 12 May 2022 18:51:08 +0800</pubDate><description><![CDATA[spring框架支持透明地向现有的Spring应用程序添加缓存]]></description><category></category></item><item><title><![CDATA[JVM 垃圾收集器选择]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124594546</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124594546</guid><author>l_learning</author><pubDate>Thu, 05 May 2022 18:49:10 +0800</pubDate><description><![CDATA[垃圾回收性能有吞吐量和占用空间两个主要度量标准。
吞吐量：吞吐量是长时间未在垃圾回收中花费的总时间的百分比。吞吐量包括在分配中花费的时间（但通常不需要调整分配速度）和应用程序由于发生垃圾回收而出现无响应的时间。
占用空间：占用空间是进程的工作集，以页面和缓存行为单位进行度量。在物理内存有限或进程较多的系统上，占用空间可能决定了可伸缩性。及时性是对象失效和内存变为可用之间的时间，是分布式系统（包括远程方法调用 （RMI））的一个重要考虑因素。

官方文档地址
垃圾收集器类型

串行收集器
串行收集器使用单个.]]></description><category></category></item><item><title><![CDATA[MySQL索引失效]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124573706</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124573706</guid><author>l_learning</author><pubDate>Wed, 04 May 2022 17:22:59 +0800</pubDate><description><![CDATA[环境：mysql-5.7.28
环境准备

-- 查看版本
select version();

]]></description><category></category></item><item><title><![CDATA[JAVA数据脱敏]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124450886</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124450886</guid><author>l_learning</author><pubDate>Wed, 27 Apr 2022 15:01:24 +0800</pubDate><description><![CDATA[为了保护用户隐私，需要对敏感信息进行脱敏处理，如：姓名、电话号码、身份证

基于jackson，通过自定义注解的方式实现数据脱敏
添加依赖
spring-web、spring-boot-starter-web已经集成了jackson相关包，不用添加
&lt;!--jackson依赖--&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
    &lt;artifactId&gt;jack.]]></description><category></category></item><item><title><![CDATA[JAVA HTML 转 PDF]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124396757</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124396757</guid><author>l_learning</author><pubDate>Mon, 25 Apr 2022 15:40:03 +0800</pubDate><description><![CDATA[JAVA 通过 itext，wkhtmltopdf 等，将 HTML 转成 PDF。
这里通过 wkhtmltopdf 实现htmlHTML转PDF


wkhtmltopdf 是一个开源的，使用Qt WebKit 渲染引擎，把 html 转换为 pdf 文件的命令行工具。


wkhtmltopdf官网地址
wkhtmltopdf
下载
下载地址：https://wkhtmltopdf.org/downloads.html根据系统选择相应的版本
这里以Linux为例：
版本：wkhtmltox-0.12.]]></description><category></category></item><item><title><![CDATA[JAVA实现JWT]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124383968</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124383968</guid><author>l_learning</author><pubDate>Sun, 24 Apr 2022 17:09:18 +0800</pubDate><description><![CDATA[JWT介绍
详情访问官网https://jwt.io/
JWT是什么
JSON Web Token（JWT）是一种开放标准（RFC 7519），它定义了一种紧凑且自包含的方式，用于在各方之间作为JSON对象安全地传输信息。此信息可以验证和信任，因为它是经过数字签名的。JWT可以使用密钥（使用 HMAC 算法）或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。
虽然 JWT 可以被加密以在各方之间提供保密性，但我们将重点关注签名令牌。签名令牌可以验证其中包含的声明的完整性，而加密令牌会对其他方隐藏这些声]]></description><category></category></item><item><title><![CDATA[Stream API 优化代码]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124312875</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124312875</guid><author>l_learning</author><pubDate>Thu, 21 Apr 2022 10:09:56 +0800</pubDate><description><![CDATA[使用Java8中新特性Lambda表达式和流申明式处理数据集合，让代码更简洁
使用一个简单的员工类来学习使用方法
public class Employee {

        /**
     * 姓名
     */
    private String name;

    /**
     * 年龄
     */
    private int age;

    /**
     * 薪资
     */
    private double salary;

    /**
     * 部]]></description><category></category></item><item><title><![CDATA[spring-retry失败重试]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124279307</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124279307</guid><author>l_learning</author><pubDate>Tue, 19 Apr 2022 18:28:21 +0800</pubDate><description><![CDATA[spring-retry实现重试功能POM 依赖启用Retryable在需要重试的方法上添加@Retryable注解@Retryable参数@Recover注意事项
spring-retry官网地址
在实际开发中，我们可能有重试的需要。这里使用springboot集成spring-retry实现重试功能
如： 1、网络波动需要，导致请求失败，需要重发。
&nbsp; &nbsp; &nbsp; &nbsp; 2、发送消息失败，需要重发，重发失败要记录日志
&nbsp; &nbsp; &nbsp; &nbsp]]></description><category></category></item><item><title><![CDATA[集合转树json]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/124002182</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/124002182</guid><author>l_learning</author><pubDate>Sun, 10 Apr 2022 09:12:36 +0800</pubDate><description><![CDATA[集合转树json

]]></description><category></category></item><item><title><![CDATA[SpringBoot整合RocketMQ]]></title><link>https://blog.youkuaiyun.com/l_learning/article/details/123009023</link><guid>https://blog.youkuaiyun.com/l_learning/article/details/123009023</guid><author>l_learning</author><pubDate>Fri, 18 Feb 2022 18:24:47 +0800</pubDate><description><![CDATA[项目环境
jdk：1.8
rocketmq：4.5.1
springboot：2.6.3
引入依赖
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt;
    &lt;artifactId&gt;rocketmq-spring-boot-starter&lt;/artifactId&gt;
    &lt;version&gt;2.2.0&lt;/version&gt;
&lt;/dependency&gt;

]]></description><category></category></item></channel></rss>