<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lzfnemo2009的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lzfnemo2009</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lzfnemo2009]]></copyright><item><title><![CDATA[LeetCode 42 接雨水]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/147458669</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/147458669</guid><author>Lzfnemo2009</author><pubDate>Wed, 23 Apr 2025 17:08:08 +0800</pubDate><description><![CDATA[【代码】LeetCode 42 接雨水。]]></description><category></category></item><item><title><![CDATA[LeetCode 70 爬楼梯]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/147413140</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/147413140</guid><author>Lzfnemo2009</author><pubDate>Tue, 22 Apr 2025 11:24:31 +0800</pubDate><description><![CDATA[【代码】LeetCode 70 爬楼梯。]]></description><category></category></item><item><title><![CDATA[接口限流方案]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135442473</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135442473</guid><author>Lzfnemo2009</author><pubDate>Sun, 07 Jan 2024 18:26:39 +0800</pubDate><description><![CDATA[限流是对某一时间窗口内的请求数进行限制，保持系统的可用性和稳定性，防止因流量暴增而导致的系统运行缓慢或宕机。在高并发系统中，出于系统保护角度考虑，通常会对流量进行限流。在分布式系统中，高并发场景下，为了防止系统因突然的流量激增而导致的崩溃，同时保证服务的高可用性和稳定性，限流是最常用的手段。]]></description><category></category></item><item><title><![CDATA[cas单点登录流程]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135329420</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135329420</guid><author>Lzfnemo2009</author><pubDate>Mon, 01 Jan 2024 21:39:20 +0800</pubDate><description><![CDATA[CAS 是 Yale 大学发起的一个开源项目，旨在为 Web 应用系统提供一种可靠的。]]></description><category></category></item><item><title><![CDATA[MySql的mvcc原理]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135185113</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135185113</guid><author>Lzfnemo2009</author><pubDate>Sun, 24 Dec 2023 19:27:58 +0800</pubDate><description><![CDATA[mvcc全称Multi-VersionConcurrency Control，即多版本并发控制，主要是为了提高数据库的并发性能,同一行数据平时发生读写请求时，会上锁阻塞住。但mvcc用更好的方式去处理读—写请求，做到在发生读—写请求冲突时不用加锁。这个读是指的快照读，而不是当前读，当前读是一种加锁操作，是悲观锁它读取的数据库记录，都是当前最新的版本，会对当前读取的数据进行加锁，防止其他事务修改数据。是悲观锁的一种操作。]]></description><category></category></item><item><title><![CDATA[沙箱安全机制]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135053986</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/135053986</guid><author>Lzfnemo2009</author><pubDate>Mon, 18 Dec 2023 07:35:10 +0800</pubDate><description><![CDATA[保证程序安全；保护Java原生的JDK代码；Java安全模型的核心就是Java沙箱(Sandbox)，什么是沙箱？沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中，并且严格限制代码对本地系统资源访问。通过这样的措施来保证对代码的有限隔离，防止对本地系统造成破坏。沙箱主要限制系统资源访问，那系统资源包括什么？CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。所有的Java程序运行都可以指定沙箱，可以定制安全策略。]]></description><category></category></item><item><title><![CDATA[spring IOC bean为什么默认是单例的]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134917903</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134917903</guid><author>Lzfnemo2009</author><pubDate>Mon, 11 Dec 2023 06:56:07 +0800</pubDate><description><![CDATA[上面的代码中，创建了 10 个线程来获取 ThreadUnSafe 实例，并且循环 1000 次加法，循环 1000 次减法，并把最后的结果打印出来。ThreadLocal 简单的说就是在自己线程内创建一个变量的副本，那么线程操作的自然也就是自己线程内的资源了，也就规避了线程安全问题。然后再次运行 main 方法，发现无论运行多少次，最后的结果都是 0，是线程安全的！不会，无状态 bean 没有实例对象，不能保存数据，是不变类，是线程安全的。从结果可以看出，运行结果都不是 0，这明显的是线程不安全啊！]]></description><category></category></item><item><title><![CDATA[锁表的原因及解决办法]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134771830</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134771830</guid><author>Lzfnemo2009</author><pubDate>Sun, 03 Dec 2023 22:23:40 +0800</pubDate><description><![CDATA[当我们对数据库进行修改操作的时候，例如添加字段，更新记录等，没有正确评估该表在这一时刻的使用频率，直接进行修改，致使修改操作长时间无法响应，造成锁表，在 mysql 中，如果出现 alter 操作引发Waiting for table metadata lock 类型的锁表，会导致任何操作不可用，后果是灾难性的。当多个事务处理对多个资源同时访问时，若双方已锁定一部分资源但也都需要对方已锁定的资源时，无法在有限的时间内完全获得所需的资源，就会处于无限的等待状态，从而造成其对资源需求的死锁，导致锁表。]]></description><category></category></item><item><title><![CDATA[group by]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134637238</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134637238</guid><author>Lzfnemo2009</author><pubDate>Mon, 27 Nov 2023 09:07:05 +0800</pubDate><description><![CDATA[当然，这个可能跟不同的数据库，不同的版本有关吧。group by 就是分组统计的意思，一般情况都是配合聚合函数如（count(),sum(),avg(),max(),min())一起使用。当然，平时大家使用的时候，group by还是配合聚合函数使用的，除非一些特殊场景，比如你想去重，当然去重用distinct也是可以的。不会报错，并且返回的是，分组的第一行数据。group by一般用于分组统计，它表达的逻辑就是根据一定的规则，进行分组。这条SQL语句的逻辑很清楚啦，但是它的底层执行流程是怎样的呢？]]></description><category></category></item><item><title><![CDATA[MySQL优化-查询优化]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134499490</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134499490</guid><author>Lzfnemo2009</author><pubDate>Mon, 20 Nov 2023 08:53:43 +0800</pubDate><description><![CDATA[查询优化是数据库优化中的一个重要方面，可以提高查询的效率和响应速度，从而提升数据库系统的整体性能。以下是一些查询优化的总结：使用索引：索引可以加速查询的速度，因此需要在经常使用的字段上创建索引，避免在 where 子句中使用不等于避免在 where 子句中使用 or 操作符，避免在 where 子句中使用函数，避免在 where 子句中使用模糊查询。避免全表扫描：尽量避免使用不带条件的 select 语句，因为这会导致数据库执行全表扫描，而且会消耗大量的系统资源。]]></description><category></category></item><item><title><![CDATA[MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00‘ for column]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134366351</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134366351</guid><author>Lzfnemo2009</author><pubDate>Sun, 12 Nov 2023 21:33:48 +0800</pubDate><description><![CDATA[使用navicat导入数据时报错：MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00’ for column这是因为当前的MySQL不支持datetime为0的情况。]]></description><category></category></item><item><title><![CDATA[nginx负载配置]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134205710</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134205710</guid><author>Lzfnemo2009</author><pubDate>Fri, 03 Nov 2023 16:15:22 +0800</pubDate><description><![CDATA[第一个后端服务器的权重为5，第二个后端服务器的权重为10，第三个后端服务器的权重为1（默认值）。Nginx是一款高性能的Web服务器，同时也是一款高效的反向代理和负载均衡工具。在高并发的情况下，使用Nginx进行负载均衡可以提高网站的并发处理能力，保证网站的稳定性和可用性。在server模块中，我们定义了一个监听80端口的虚拟主机，并且指定了请求的转发规则和负载均衡算法。其中，proxy_pass指定了请求转发的目标地址，$host和$remote_addr是Nginx内置变量，用于设置请求头信息。]]></description><category></category></item><item><title><![CDATA[解决：getReader() has already been called for this request]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134105804</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/134105804</guid><author>Lzfnemo2009</author><pubDate>Sun, 29 Oct 2023 18:28:06 +0800</pubDate><description><![CDATA[HttpServletRequest 的 getInputStream() 和 getReader() 都只能读取一次。过滤器是优先于拦截器的， 我们写一个过滤器，在过滤器里面 把流数据 copy一份出来用，也就是复写一哈。因为 我们使用@RequestBody 注解，读取body参数；由于@RequestBody 也是流的形式读取，流读了一次就没有了。，也需要将post请求，body数据拿出来。在拦截器上使用我们复写的流数据就行。]]></description><category></category></item><item><title><![CDATA[为什么spring默认采用单例bean]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/133976798</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/133976798</guid><author>Lzfnemo2009</author><pubDate>Sun, 22 Oct 2023 19:37:20 +0800</pubDate><description><![CDATA[单例的 bean一个很大的劣势就是他不能做到线程安全！由于所有请求都共享一个 bean实例，所以这个 bean要是有状态的一个 bean的话可能在。出现问题，而原型的 bean则不会有这样问题（但也有例外，比如他被单例 bean依赖），因为给每个请求都新创建实例。如下图是官方文档上的截图，感兴趣的朋友可以进去看看这五种分别有什么不同。今天要介绍的是这五种中的前两种，也是。) 里查看有没有，有的话直接使用这个对象，没有的话才实例化一个新的对象，所以这是个单例的。的时候，在处理多次请求的时候在。]]></description><category></category></item><item><title><![CDATA[IDEA spring-boot项目启动，无法加载或找到启动类问题解决]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/133813996</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/133813996</guid><author>Lzfnemo2009</author><pubDate>Fri, 13 Oct 2023 16:41:03 +0800</pubDate><description><![CDATA[3、以上两个方案还不能解决问题，那么可能是你电脑环境出了问题，建议直接重启电脑。问题描述：找不到或无法加载主类 xxx.xxx.xxx.Classname。]]></description><category></category></item><item><title><![CDATA[SpringBootTest]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132945492</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132945492</guid><author>Lzfnemo2009</author><pubDate>Sun, 17 Sep 2023 16:16:04 +0800</pubDate><description><![CDATA[可以在运行基于Spring Boot的测试的测试类上指定的注释。在常规的Spring TestContext框架之上提供了以下特性:默认提供SpringBootContextLoader作为ContextLoader，也通过 @ContextConfiguration(loader=…)来自定义若没有显示指定，将查找嵌套的@类，然后返回到SpringBootConfiguration搜索配置允许使用properties属性定义自定义环境属性。允许使用args属性定义应用程序参数。]]></description><category></category></item><item><title><![CDATA[java的动态代理如何实现]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132794597</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132794597</guid><author>Lzfnemo2009</author><pubDate>Sun, 10 Sep 2023 19:24:07 +0800</pubDate><description><![CDATA[通过JavaCompiler动态编译java源文件，并将相应字节码加载到JVM中，其编译底层通过。Cglib实现动态代理与JdkProxy不同， 是通过构建继承类实现。必须基于接口(interface)实现。]]></description><category></category></item><item><title><![CDATA[spring的事务隔离级别]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132764581</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132764581</guid><author>Lzfnemo2009</author><pubDate>Fri, 08 Sep 2023 17:23:27 +0800</pubDate><description><![CDATA[事务的传播行为：一个方法在运行了一个开启事务的方法中时，当前方法是使用原来的事务还是开启一个新的事务。事务传播的行为有传播属性指定，Spring定义了7中类传播行为，如下其重点主要讲讲其中的两个：REQUIRED，REQUIRES_NEW。开启事务的注解：开启事务的注解：TransactionlREQUIRED:如果当前方法中有事务在运行，当前这个方法就是在事务内运行，否则就启动一个新事务，并在自己的事务内运行如100块钱，同时购买两本60块钱的书，由于是在当前事务中运行，]]></description><category></category></item><item><title><![CDATA[对象头的结构]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132396257</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132396257</guid><author>Lzfnemo2009</author><pubDate>Sun, 20 Aug 2023 21:25:57 +0800</pubDate><description><![CDATA[32位虚拟机Mark WordMonitor  是监视器的意思，在Java中被synchronized关键字修饰的对象头且为重量级锁时，会关联一个Monitor对象，Monitor有Owner、EntryList、WaitSet三个字段，分别表示Monitor的持有者线程(获得锁的线程)、阻塞队列、和等待队列。如下图：上图的情况下，MarkWord状态应为heavyweight Locked，ptr_to_heavyweight_monitor占用30位指向Monitor对象。]]></description><category></category></item><item><title><![CDATA[JDK1.7中HashMap的扩容机制及扩容过程中可能出现的死锁及数据丢失问题]]></title><link>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132135272</link><guid>https://blog.youkuaiyun.com/Lzfnemo2009/article/details/132135272</guid><author>Lzfnemo2009</author><pubDate>Sun, 06 Aug 2023 20:45:59 +0800</pubDate><description><![CDATA[JDK1.7—》哈希表，链表JDK1.8—》哈希表，链表，红黑树— JDK1.8之后，当链表长度超过8使用红黑树。非线程安全0.75的负载因子，扩容必须为原来的两倍。默认大小为16，传入的初始大小必须为2的幂次方的值，如果不为也会变为2的幂次方的值。根据HashCode存储数据。]]></description><category></category></item></channel></rss>