<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[O(∩_∩)O哈哈~]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liguo886</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liguo886]]></copyright><item><title><![CDATA[谈谈Java内存模型（JMM）以及对volatile关键字的理解]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/137209357</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/137209357</guid><author>liguo886</author><pubDate>Mon, 01 Apr 2024 23:35:25 +0800</pubDate><description><![CDATA[如果重排序之后的执行结果，与按 Happens-before 关系来执行的结果一致，那么这种重排序并不非法（也就是说，JMM 允许这种重排序）Java内存模式是一种虚拟机规范，Java内存模型规定线程之间的共享变量必须存储在主内存中。每个线程都有自己的工作内存，线程的工作内存保存了该线程用到的变量和主内存的副本拷贝，线程对变量的操作都在工作内存中进行。1）如果一个操作 Happens-before 另一个操作，那么第一个操作的执行结果将对第二个操作可见，而且第一个操作的执行顺序排在第二个操作之前。]]></description><category></category></item><item><title><![CDATA[Dubbo负载均衡]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/137126839</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/137126839</guid><author>liguo886</author><pubDate>Thu, 28 Mar 2024 22:47:53 +0800</pubDate><description><![CDATA[Dubbo负载均衡。]]></description><category></category></item><item><title><![CDATA[Dubbo 负载均衡算法说明]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/137126641</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/137126641</guid><author>liguo886</author><pubDate>Thu, 28 Mar 2024 22:45:34 +0800</pubDate><description><![CDATA[在集群负载均衡时，Dubbo 提供了多种均衡策略，缺省为基于权重的随机负载均衡策略。具体实现上，Dubbo 提供的是客户端负载均衡，即由 Consumer 通过负载均衡算法得出需要将请求提交到哪个 Provider 实例。目前 Dubbo 内置了如下负载均衡算法，可通过调整配置项启用。]]></description><category></category></item><item><title><![CDATA[Dubbo启动流程]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/137116366</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/137116366</guid><author>liguo886</author><pubDate>Thu, 28 Mar 2024 22:28:42 +0800</pubDate><description><![CDATA[4.服务消费者通过代理对象（Proxy）发起远程调用请求。5.Monitor 组件来统计服务的调用次数和调用时间。1.服务提供者将服务实例化后注册到注册中心。2.服务消费者向注册中心订阅所需的服务。3.注册中心异步将变更通知服务消费者。]]></description><category></category></item><item><title><![CDATA[@Autowired与@Resource区别]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/137064379</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/137064379</guid><author>liguo886</author><pubDate>Wed, 27 Mar 2024 08:46:29 +0800</pubDate><description><![CDATA[Autowired与@Resource区别。]]></description><category></category></item><item><title><![CDATA[Java线程池七大核心参数]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135855806</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135855806</guid><author>liguo886</author><pubDate>Thu, 25 Jan 2024 23:36:41 +0800</pubDate><description><![CDATA[Java面试题线程池七大核心参数。]]></description><category></category></item><item><title><![CDATA[MySQL数据库索引失效]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135763164</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135763164</guid><author>liguo886</author><pubDate>Tue, 23 Jan 2024 09:31:38 +0800</pubDate><description><![CDATA[解决办法是直接带函数新建一个索引，length(id)作为字段新建索引。3.对索引字段进行表达式计算，例如where age+1 = 18。6.索引字段类型为varchar，但是与int类型进行匹配，比如age字段为varchar，where age>10时就不会走索引。4.联合索引中未使用最左侧索引字段，比如联合索引包含字段（name,age）,我们只根据age字段进行匹配不会走索引。1.对索引字段使用左或者两侧模糊匹配时索引失效（使用右模糊匹配可以走索引）5.OR条件有一侧条件字段未使用索引。]]></description><category></category></item><item><title><![CDATA[线程和进程的区别]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135757409</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135757409</guid><author>liguo886</author><pubDate>Tue, 23 Jan 2024 09:09:01 +0800</pubDate><description><![CDATA[一个进程可以包含多个线程。进程之间的资源是相互独立，而同一进程下的线程之间可以共享进程中的资源。线程是处理器任务调度和执行的基本单位。进程是操作系统资源分配的基本单位。]]></description><category></category></item><item><title><![CDATA[HashMap原理]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/131522717</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/131522717</guid><author>liguo886</author><pubDate>Sat, 20 Jan 2024 23:08:03 +0800</pubDate><description><![CDATA[HashMap面试]]></description><category></category></item><item><title><![CDATA[BIO、NIO、AIO 的区别]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135678475</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135678475</guid><author>liguo886</author><pubDate>Fri, 19 Jan 2024 00:00:07 +0800</pubDate><description><![CDATA[BIO、NIO、AIO区别]]></description><category></category></item><item><title><![CDATA[synchronized 锁升级]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135659835</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135659835</guid><author>liguo886</author><pubDate>Thu, 18 Jan 2024 00:01:51 +0800</pubDate><description><![CDATA[synchronized 锁升级策略是为了减少性能消耗，提高程序执行效率。第一步：判断对象头中否是当前线程的线程ID，如果是，表示当前线程获得偏向锁，直接执行同步代码。如果不是，使用CAS自旋进行锁竞争。第三部：当自旋超过一定次数，或有其他线程来争抢时，锁会膨胀为重量级锁，除了拥有锁的线程外的其他线程全部阻塞。第二部：当一个线程已拥有偏向锁时，第二个线程通过CAS自旋来竞争锁时，此时升级为轻量级锁。synchronized 锁升级。]]></description><category></category></item><item><title><![CDATA[ChatGPT 和文心一言哪个更好用？]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135658548</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135658548</guid><author>liguo886</author><pubDate>Wed, 17 Jan 2024 19:30:20 +0800</pubDate><description><![CDATA[如果您需要处理自然语言处理和机器学习应用，例如开发智能客服或智能翻译应用，那么ChatGPT可能是更好的选择。总之，ChatGPT和文心一言各有千秋，哪个更好用取决于您的需求和喜好。如果您需要处理自然语言处理和机器学习应用，例如开发智能客服或智能翻译应用，那么ChatGPT可能是更好的选择。如果您需要生成各种类型的文本，例如广告、文章、社交媒体帖子等，那么文心一言可能更适合您。在人工智能技术不断发展的今天，ChatGPT和文心一言作为两种不同类型的人工智能工具，都受到了广泛的关注和应用。]]></description><category></category></item><item><title><![CDATA[CAS 原理以及ABA问题]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135634151</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135634151</guid><author>liguo886</author><pubDate>Wed, 17 Jan 2024 00:01:44 +0800</pubDate><description><![CDATA[CAS 原理以及ABA问题]]></description><category></category></item><item><title><![CDATA[缓存穿透、缓存击穿、缓存雪崩以及解决方案]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135613359</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135613359</guid><author>liguo886</author><pubDate>Mon, 15 Jan 2024 23:45:26 +0800</pubDate><description><![CDATA[缓存穿透、缓存击穿、缓存雪崩以及解决方案]]></description><category></category></item><item><title><![CDATA[TCP 的三次握手和四次挥手]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135577782</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135577782</guid><author>liguo886</author><pubDate>Sun, 14 Jan 2024 23:34:22 +0800</pubDate><description><![CDATA[TCP 的三次握手和四次挥手。标志位、序列号、确认号解释。]]></description><category></category></item><item><title><![CDATA[什么是双亲委派模型？]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135548939</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135548939</guid><author>liguo886</author><pubDate>Sat, 13 Jan 2024 01:02:26 +0800</pubDate><description><![CDATA[Java 中的类加载器包括BootstrapClassLoader(启动类加载器)，ExtensionClassLoader(扩展类加载器)以及AppClassLoader(应用程序类加载器)。双亲委派的执行流程是，当类加载器进行类加载时，先判断是否存在父加载器，如果存在则调取父类加载器中的loadClass方法，直到最顶层的Bootstrap类加载器，此时开始加载类，如果自己无法加载，则使用子类加载器尝试加载。这种设计的好处是，避免类的重复加载，保证了 Java 的核心 API 不被篡改。]]></description><category></category></item><item><title><![CDATA[谈谈你对 Spring AOP 的理解]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135517705</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135517705</guid><author>liguo886</author><pubDate>Thu, 11 Jan 2024 09:23:11 +0800</pubDate><description><![CDATA[Spring AOP  JDK动态代理  Cglib静态代理]]></description><category></category></item><item><title><![CDATA[算法：给你一个整数数组 nums 和一个整数k，请你统计并返回该数组中和为 k 的子数组的个数]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135492223</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135492223</guid><author>liguo886</author><pubDate>Wed, 10 Jan 2024 10:20:12 +0800</pubDate><description><![CDATA[算法：给你一个整数数组 nums 和一个整数k，请你统计并返回该数组中和为 k 的子数组的个数。用前缀和方法来解决。]]></description><category></category></item><item><title><![CDATA[Spring Bean 默认是单例的，如何保证并发安全]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135491901</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135491901</guid><author>liguo886</author><pubDate>Tue, 09 Jan 2024 23:21:33 +0800</pubDate><description><![CDATA[层的bean中定义了当前登录用户ID的类成员变量，导致客户操作时，创建人或修改人记录成其他人的ID，当时的解决方案就是增加了注解@Scope("prototype")启用原型模式。1.Bean由单例改为原型。在类上增加注解@Scope("prototype")，缺点是会增加服务器开销。在实际工作中遇到过这个问题，在。2.避免使用类成员变量。]]></description><category></category></item><item><title><![CDATA[@Autowired 和 @Resource 的区别是什么？]]></title><link>https://blog.youkuaiyun.com/liguo886/article/details/135491346</link><guid>https://blog.youkuaiyun.com/liguo886/article/details/135491346</guid><author>liguo886</author><pubDate>Tue, 09 Jan 2024 22:29:40 +0800</pubDate><description><![CDATA[当一个接口存在多个实现类的情况下，@Autowired 和@Resource都需要通过名称才能正确匹配到对应的 Bean。@Autowired 可以通过 @Qualifier 注解来显示指定名称，@Resource可以通过 name 属性来显示指定名称。@Autowired 是 Spring 提供的注解。默认的注入方式为byType（根据类型进行匹配）。@Resource 是 JDK 提供的注解。默认注入方式为 byName（根据名称进行匹配）。]]></description><category></category></item></channel></rss>