<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hhgh_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hhgh_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hhgh_]]></copyright><item><title><![CDATA[对MVCC的理解]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146188710</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146188710</guid><author>hhgh_</author><pubDate>Tue, 11 Mar 2025 20:49:38 +0800</pubDate><description><![CDATA[MVCC即Mutil-Version Concurrency Control（多版本并发控制），用于保证并发快照读下的读已提交级别和可重复读级别。]]></description><category></category></item><item><title><![CDATA[分布式事务的原理]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146163928</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146163928</guid><author>hhgh_</author><pubDate>Mon, 10 Mar 2025 21:00:33 +0800</pubDate><description><![CDATA[分布式事务是指在分布式系统中，涉及多个节点或服务之间的数据操作，需要保证这些操作要么全部成功提交，要么全部回滚，以维持数据的一致性。]]></description><category></category></item><item><title><![CDATA[fail-safe 机制与 fail-fast 机制分别有什么作用]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146119108</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146119108</guid><author>hhgh_</author><pubDate>Sat, 08 Mar 2025 17:15:47 +0800</pubDate><description><![CDATA[Fail-safe 和 fail-fast 是两种应对系统故障或错误的不同机制，主要用于处理迭代过程中可能发生的并发修改、异常或其他不可预期的错误。它们的作用和实现方式各有不同，适用于不同的场景。]]></description><category></category></item><item><title><![CDATA[你对Seata的理解]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146105029</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146105029</guid><author>hhgh_</author><pubDate>Fri, 07 Mar 2025 21:02:04 +0800</pubDate><description><![CDATA[*事务协调者（TC）**主要负责管理全局的分支事务的状态，用于全局性事务的提交和回滚。Seata的主要特点是无侵入以及高性能。它对业务无侵入，可以减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入，同时高性能则是减少分布式事务解决方案所带来的性能消耗。**资源管理器（RM）**用于分支事务上的资源管理，向TC注册分支事务，上报分支事务的状态，接收TC的命令来提交或者回滚分支事务。在Seata的事务处理中主要有三个重要的角色：事务的协调者（TC）、事务的管理者（TM）和事务的作业管理器（RM）。]]></description><category></category></item><item><title><![CDATA[常见的限流算法有哪些？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146080094</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146080094</guid><author>hhgh_</author><pubDate>Thu, 06 Mar 2025 21:00:25 +0800</pubDate><description><![CDATA[提示：这里对文章进行总结：例如：以上就是今天要讲的内容，本文仅仅简单介绍了pandas的使用，而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。]]></description><category></category></item><item><title><![CDATA[常用的分布式 ID 设计方案]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146052029</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146052029</guid><author>hhgh_</author><pubDate>Wed, 05 Mar 2025 20:34:44 +0800</pubDate><description><![CDATA[它将 64 位划分为不同部分，包含 1 位符号位（固定为 0）、41 位时间戳（毫秒级）、10 位工作机器 ID（可支持 1024 个节点）和 12 位序列号（同一毫秒内生成不同 ID）。二是 “segment（号段）” 模式，服务端一次性分配一个号段给客户端，客户端在号段内自行生成 ID，用完后再向服务端申请新号段。：利用关系型数据库（如 MySQL）的自增字段特性，每插入一条数据，ID 自动递增。：利用 Redis 的INCR或INCRBY命令，以原子操作的方式递增一个键的值，以此作为 ID。]]></description><category></category></item><item><title><![CDATA[你对服务降级的理解]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/146026302</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/146026302</guid><author>hhgh_</author><pubDate>Tue, 04 Mar 2025 20:40:43 +0800</pubDate><description><![CDATA[服务降级其实就是降低服务的能力等级。在高并发流量下，因为系统资源有限，导致系统无法为高并发流量提供稳定可靠的支撑。所以我们可以把一些非核心服务下掉，或者提供一些默认的处理结果，把这些计算资源腾出来给到核心服务去使用。从而保证核心服务的稳定运行。]]></description><category></category></item><item><title><![CDATA[分布式和微服务架构理解]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145997643</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145997643</guid><author>hhgh_</author><pubDate>Mon, 03 Mar 2025 20:00:32 +0800</pubDate><description><![CDATA[举个易懂的例子，单体服务如果相当于一个快餐店，所有的服务员职责都是一样的，又要负责收银结算，又要负责做汉堡，又要负责端盘子，又要负责打扫，服务员之间不需要有交流，用户来了后，服务员从前到后负责到底。举一个招聘时一个同学来面试的例子。微服务更倾向于使用 Restful 风格的 API，轻量级的协议可以很好得支持跨语言开发的服务，可能有的微服务用 Java 语言实现，有的用 Go 语言，有的用 C++，但所有的语言都可以支持 Http 协议通信，所有的开发人员都能理解 Restful 风格 API 的含义。]]></description><category></category></item><item><title><![CDATA[nacos数据同步原理能说下吗]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145937815</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145937815</guid><author>hhgh_</author><pubDate>Fri, 28 Feb 2025 20:58:29 +0800</pubDate><description><![CDATA[当有其他服务（服务消费者）订阅了某个服务（服务提供者）时，Nacos 服务端会将该服务的实例列表信息同步给订阅的服务消费者。这样，服务消费者就能获取到可用的服务提供者实例信息，从而进行服务调用。：当 Nacos 服务端的配置数据发生变化时，如管理员手动修改配置或者通过 API 更新配置，服务端会记录这些变更，并将变更信息推送给所有订阅了该配置的客户端。一旦发现某个实例不健康，服务端会及时将该信息同步给订阅的服务消费者，服务消费者在进行服务调用时就会避开该不健康实例，实现服务实例数据的动态更新和高可用。]]></description><category></category></item><item><title><![CDATA[你对 Spring Cloud 的理解]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145913681</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145913681</guid><author>hhgh_</author><pubDate>Thu, 27 Feb 2025 20:58:51 +0800</pubDate><description><![CDATA[不过，Spring Cloud 也有一些局限性，例如组件众多导致系统复杂度增加，对开发人员的技术要求较高；在大规模集群环境下，配置和管理成本会有所上升等。但总体而言，Spring Cloud 为微服务架构的快速开发和落地提供了便捷高效的途径，在企业级分布式系统开发中应用广泛。Spring Cloud 是一个基于 Spring Boot 的微服务架构开发工具集，为开发者提供了快速构建分布式系统的一系列解决方案，涵盖了服务发现、配置管理、熔断器、智能路由、微代理、控制总线等多个方面。]]></description><category></category></item><item><title><![CDATA[IO 和 NIO 有什么区别？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145887805</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145887805</guid><author>hhgh_</author><pubDate>Wed, 26 Feb 2025 20:35:54 +0800</pubDate><description><![CDATA[当有 IO 事件发生时，选择器会通知相应的线程去处理，大大提高了系统的并发处理能力，减少了资源的消耗。：通常使用阻塞式的通信模型，每个连接都需要一个独立的线程来处理，当并发连接数增多时，会创建大量的线程，这会消耗大量的系统资源，包括内存和 CPU 时间片，并且线程之间的上下文切换也会带来额外的开销，从而限制了系统的并发处理能力。：是阻塞式的 IO 操作。：适用于高并发、高性能的应用场景，如大型的网络服务器、即时通讯应用、大规模数据处理系统等，能够更好地利用系统资源，提高应用的性能和响应能力。]]></description><category></category></item><item><title><![CDATA[什么是可重入，什么是可重入锁？ 它用来解决什么问题？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145862362</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145862362</guid><author>hhgh_</author><pubDate>Tue, 25 Feb 2025 20:54:53 +0800</pubDate><description><![CDATA[可重入是指一个函数或代码段可以在其执行过程中被再次调用，且不会出现数据混乱或其他错误。也就是说，当函数在执行期间还未返回时，如果再次被调用，它能够正确地处理这种情况，不会因为多次调用而导致程序出现异常或产生不正确的结果。可重入锁是一种特殊的锁机制，它允许同一个线程对同一把锁进行多次获取。当一个线程获取了可重入锁后，在锁释放之前，该线程可以再次获取这把锁而不会被阻塞。可重入锁内部会维护一个计数器，用于记录线程获取锁的次数。每次线程获取锁时，计数器加 1；每次释放锁时，计数器减 1。]]></description><category></category></item><item><title><![CDATA[Mysql 主从集群同步延迟问题怎么解决]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145837519</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145837519</guid><author>hhgh_</author><pubDate>Mon, 24 Feb 2025 20:47:19 +0800</pubDate><description><![CDATA[主库的写入性能直接影响到同步延迟，因为从库必须等待主库的事务提交之后才能同步数据。优化主库的写入性能有助于减少延迟。从库的读取性能决定了从库应用的查询响应速度。如果从库的查询响应速度较慢，可能导致延迟积累。]]></description><category></category></item><item><title><![CDATA[ReentrantLock实现原理]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145797787</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145797787</guid><author>hhgh_</author><pubDate>Sat, 22 Feb 2025 17:20:01 +0800</pubDate><description><![CDATA[通过类图我们发现了上篇文章中介绍的AQS的身影，该类继承自AQS，并有两个实现类FairSync、NonfairSync，这两个类分别是ReentrantLock的公平和非公平实现。公平锁和非公平锁的区别时，阻塞队列中存在其他阻塞线程，公平锁就插入阻塞队列尾部，非公平锁是在进行添加操作时都会进行一次锁竞争。eentrantLock是一个Java层面的锁的实现，也是我们常用的一个锁对象，是一个可重入的排他锁。ReentrantLock是Lock的一个实现类，实现了Lock中定义的锁应该具备的功能。]]></description><category></category></item><item><title><![CDATA[索引有哪些缺点以及具体有哪些索引类型]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145785186</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145785186</guid><author>hhgh_</author><pubDate>Fri, 21 Feb 2025 20:36:17 +0800</pubDate><description><![CDATA[索引的作用]]></description><category></category></item><item><title><![CDATA[Redis 存在线程安全问题吗？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145761659</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145761659</guid><author>hhgh_</author><pubDate>Thu, 20 Feb 2025 19:48:38 +0800</pubDate><description><![CDATA[虽然redis6.0里面增加了多线程模型。但是增加的多线程模型只是用来处理网络的IO事件。对于指令的执行过程仍然是采用主线程来处理，所以说它不存在多个线程同时去执行操作指令的情况。为什么redis里面没有采用多线程来执行指令，有几方面的原因。从redis服务端层面，redis server本身是线程安全的key-value数据库，在redis server端执行指令的时候不需要任何的同步机制，它不会存在任何的线程安全的问题。]]></description><category></category></item><item><title><![CDATA[Spring Bean 生命周期的执行流程]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145738042</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145738042</guid><author>hhgh_</author><pubDate>Wed, 19 Feb 2025 20:31:38 +0800</pubDate><description><![CDATA[Java 中的公共类称之为Java Bean，而 Spring 中的 Bean 指的是将对象的生命周期，交给Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时，无需通过 new 来创建对象，只需要通过 DI（依赖注入），从 Spring 中取出要使用的对象即可。]]></description><category></category></item><item><title><![CDATA[SpringBoot的自动装配原理]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145713978</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145713978</guid><author>hhgh_</author><pubDate>Tue, 18 Feb 2025 20:43:03 +0800</pubDate><description><![CDATA[自动装配是 Spring Boot 的核心功能之一，旨在根据项目的依赖和配置自动配置 Spring 应用的 Beans，避免繁琐的手动配置。这种机制通过条件注解（如等）实现，允许开发者以最小的配置量快速构建应用。创建 Maven 模块：定义项目结构。添加依赖：在 pom.xml 中添加所需的依赖。实现自动配置：创建自动配置类并使用条件注解。@Bean在pom.xml中，指定 Starter 的相关信息：</</</</开发者可以根据需要自定义自动装配配置，以满足项目的特定需求。]]></description><category></category></item><item><title><![CDATA[Spring 是如何解决循环依赖问题的？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145691440</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145691440</guid><author>hhgh_</author><pubDate>Mon, 17 Feb 2025 20:59:54 +0800</pubDate><description><![CDATA[Bean A 依赖于 Bean B，而 Bean B 又依赖于 Bean A，这样形成了一个循环。在构造器注入的情况下，Spring 无法解决这个问题，因为所有依赖必须在构造器执行之前就已经准备好。然而，在属性注入（setter注入）和字段注入（field注入）的场景中，Spring 可以通过三级缓存机制打破循环依赖。# 二、使用步骤Spring 使用三级缓存机制（singletonObjects、earlySingletonObjects、singletonFactories）来解决循环依赖问题。]]></description><category></category></item><item><title><![CDATA[Spring Boot 的约定优于配置，你的理解是什么？]]></title><link>https://blog.youkuaiyun.com/hhgh_/article/details/145641163</link><guid>https://blog.youkuaiyun.com/hhgh_/article/details/145641163</guid><author>hhgh_</author><pubDate>Fri, 14 Feb 2025 20:42:55 +0800</pubDate><description><![CDATA[约定优于配置” 指的是在 Spring Boot 框架中，对于常见的开发场景和需求，框架预先设定了一系列合理的默认配置和开发约定。开发者在大多数情况下只需遵循这些约定，无需手动编写大量繁琐的配置代码，框架就能自动完成相应的配置工作。只有当默认配置无法满足特定需求时，开发者才需要通过显式的配置来覆盖默认设置。]]></description><category></category></item></channel></rss>