<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mifffy_java的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/mifffy_java</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; mifffy_java]]></copyright><item><title><![CDATA[认真聊聊并发编程的10个坑！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155038678</link><guid>https://blog.csdn.net/mifffy_java/article/details/155038678</guid><author>mifffy_java</author><pubDate>Wed, 19 Nov 2025 21:42:29 +0800</pubDate><description><![CDATA[对于从事后端开发的同学来说，并发编程肯定再熟悉不过了。说实话，在java中并发编程是一大难点，至少我是这么认为的。不光理解起来比较费劲，使用起来更容易踩坑。不信，让继续往下面看。今天重点跟大家一起聊聊并发编程的10个坑，希望对你有帮助。]]></description><category></category></item><item><title><![CDATA[京东一面：MySQL 主备延迟有哪些坑？主备切换策略]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155038655</link><guid>https://blog.csdn.net/mifffy_java/article/details/155038655</guid><author>mifffy_java</author><pubDate>Wed, 19 Nov 2025 21:41:12 +0800</pubDate><description><![CDATA[高可用性（high availability，缩写 HA），指系统无中断地执行其功能的能力，代表系统的可用性程度。高可用性通常通过提高系统的容错能力来实现。MySQL 的高可用是如何实现的呢？首先，我们来看张图过程：开始时，处理流程主要是场景一客户端读、写，访问的是主库主库通过某种机制，将数据实时同步给备库当主库突然发生故障（如：磁盘损坏等），无法正常响应客户端的请求。此时会自动主备切换，进入场景二客户端读写，访问的是备库（此时备库升级为新主库）看似天衣无缝，那是不是可以高枕无忧了呢？？？]]></description><category></category></item><item><title><![CDATA[深入浅出Nacos！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155038623</link><guid>https://blog.csdn.net/mifffy_java/article/details/155038623</guid><author>mifffy_java</author><pubDate>Wed, 19 Nov 2025 21:39:38 +0800</pubDate><description><![CDATA[Nacos 是阿里巴巴开源的一款优秀的中间件，在分布式微服务场景下用的非常多。英文全称，其中 Na 是 naming 的缩写，注册中心；co为 configuration 的缩写， 配置中心；不管是配置中心还是注册中心本质都是围着。Nacos 分为服务端和客户端，这一点不要含糊。Nacos Server 使用 Java 语言编写，提供了服务注册发现和服务配置功能；对外提供了 SDK 接入以及HTTP RESTful 开放接口，SDK 接入和 RESTful 接口的功能是一致的。]]></description><category></category></item><item><title><![CDATA[原来你是这样的 IO 模型！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155038596</link><guid>https://blog.csdn.net/mifffy_java/article/details/155038596</guid><author>mifffy_java</author><pubDate>Wed, 19 Nov 2025 21:38:00 +0800</pubDate><description><![CDATA[听见 IO 模型有些同学就开始背八股文了，Java 常见 IO 模型有：同步阻塞 BIO同步非阻塞 NIO异步非阻塞 AIO今天跟大家一起重温下这些知识点。]]></description><category></category></item><item><title><![CDATA[面试高频：一致性hash算法！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155038535</link><guid>https://blog.csdn.net/mifffy_java/article/details/155038535</guid><author>mifffy_java</author><pubDate>Wed, 19 Nov 2025 21:37:00 +0800</pubDate><description><![CDATA[简单的阐述了下一致性hash，如果有不对的地方大家可以留言指正，任何技术都不会十全十美，一致性Hash算法也是有一些潜在隐患的，如果Hash环上的节点数量非常庞大或者更新频繁时，检索性能会比较低下，而且整个分布式缓存需要一个路由服务来做负载均衡，一旦路由服务挂了，整个缓存也就不可用了，还要考虑做高可用。不过话说回来，只要是能解决问题的都是好技术，有点副作用还是可以忍受的。]]></description><category></category></item><item><title><![CDATA[几行代码搞定RPC服务注册和发现！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155002609</link><guid>https://blog.csdn.net/mifffy_java/article/details/155002609</guid><author>mifffy_java</author><pubDate>Tue, 18 Nov 2025 22:09:35 +0800</pubDate><description><![CDATA[在日常的工作或者学习编码过程中，我们一定要习惯面向接口编程，这样做有助于增强代码可扩展性。服务注册register/*** 注册服务信息* @param serviceInfo 待注册的服务* @throws Exception 异常*/服务向注册中心注册，注册的内容定义一个类来封装。/*** 服务名称*//*** ip 地址*//*** 端口号*//*** class 对象*/> clazz;/*** bean 对象*/]]></description><category></category></item><item><title><![CDATA[高并发场景：红包雨背后的设计与实现！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155002582</link><guid>https://blog.csdn.net/mifffy_java/article/details/155002582</guid><author>mifffy_java</author><pubDate>Tue, 18 Nov 2025 21:49:42 +0800</pubDate><description><![CDATA[我们通常称 Redis 为内存数据库 ,  不同于传统的关系数据库，为了提供了更高的性能，更快的写入速度，在设计和实现层面做了一些平衡，并不能完全支持事务的 ACID。Redis 的事务具备如下特点：保证隔离性；无法保证持久性；具备了一定的原子性，但不支持回滚；一致性的概念有分歧，假设在一致性的核心是约束的语意下，Redis 的事务可以保证一致性。]]></description><category></category></item><item><title><![CDATA[一次线上事故，我顿悟了异步的精髓！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155002562</link><guid>https://blog.csdn.net/mifffy_java/article/details/155002562</guid><author>mifffy_java</author><pubDate>Tue, 18 Nov 2025 21:48:22 +0800</pubDate><description><![CDATA[学习需要一层一层递进的思考。第一层：什么场景下需要异步大量写操作占用了过多的资源，影响了系统的正常运行；写操作异步后，不影响主流程，允许适当延迟；第二层：异步的外功心法本文提到了四种异步方式：线程池模式本地内存 + 定时任务MQ 模式Agent 服务 + MQ 模式它们的共同特点是：将写操作命令存储在一个池子后，立刻响应给前端，减少写动作的耗时。任务服务异步从池子里获取任务后执行。第三层：异步的本质在笔者看来，异步是更细粒度的使用系统资源的一种方式。]]></description><category></category></item><item><title><![CDATA[服务端注册，开始进入深水区了！]]></title><link>https://blog.csdn.net/mifffy_java/article/details/155002549</link><guid>https://blog.csdn.net/mifffy_java/article/details/155002549</guid><author>mifffy_java</author><pubDate>Tue, 18 Nov 2025 21:47:20 +0800</pubDate><description><![CDATA[在日常的工作或者学习编码过程中，我们一定要习惯面向接口编程，这样做有助于增强代码可扩展性。服务注册register/*** 注册服务信息* @param serviceInterfaceInfo 待注册的服务(接口)信息* @throws Exception 异常*/服务向注册中心注册，注册的内容定义一个类来封装。@Data/*** 服务名（接口全限定名）*//*** 实例 id，每个服务实例不一样*//*** 服务实例 ip 地址，每个实例不一样*//**]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（8：使用OpenFeign服务调用）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149118764</link><guid>https://blog.csdn.net/mifffy_java/article/details/149118764</guid><author>mifffy_java</author><pubDate>Tue, 15 Jul 2025 21:52:25 +0800</pubDate><description><![CDATA[Feign是一种声明式、模板化的HTTP客户端。使用Feign，可以做到声明式调用。尽管Feign目前已经不再迭代，处于维护状态，但是Feign仍然是目前使用最广泛的远程调用框架之一。在SpringCloud Alibaba的生态体系内，有另一个应用广泛的远程服务调用框架Dubbo，在后面我们会接触到。Feign是在RestTemplate 和 Ribbon的基础上进一步封装，使用RestTemplate实现Http调用，使用Ribbon实现负载均衡。接下来，我们开始学习Feign的使用，非常简单。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（7：nacos注册中心管理微服务）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149118726</link><guid>https://blog.csdn.net/mifffy_java/article/details/149118726</guid><author>mifffy_java</author><pubDate>Tue, 15 Jul 2025 21:52:02 +0800</pubDate><description><![CDATA[在微服务的体系里，注册中心是最重要的组件之一，我们来简单了解一下什么是注册中心。注册中心和DNS类似，大家想一想，我们平时访问百度，是访问 www.baidu.com ，还是直接访问ip地址呢？注册中心就承担了这样一个“名单”的角色，它记录了服务和服务地址的映射关系。在分布式架构中，服务会注册到这里，当服务需要调用其它服务时，就到这里找到服务的地址，进行调用。注册中心的作用就是服务的注册和服务的发现。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（6：nacos-server服务搭建）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149118118</link><guid>https://blog.csdn.net/mifffy_java/article/details/149118118</guid><author>mifffy_java</author><pubDate>Tue, 15 Jul 2025 21:51:18 +0800</pubDate><description><![CDATA[Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。Nacos英文全称Dynamic Naming and Configuration Service，Na为naming/nameServer即注册中心,co为configuration即注册中心，service是指该注册/配置中心都是以服务为核心。Nacos 无缝支持一些主流的开源生态，使用Nacos，可以简化服务发现、配置管理、服务治理及管理。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（5：子模块基本业务开发）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149118065</link><guid>https://blog.csdn.net/mifffy_java/article/details/149118065</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:58:55 +0800</pubDate><description><![CDATA[在上一节里，我们搭建了一个微服务项目的整体架构，并进行了版本控制。接下来我们进一步来完善架构，引入SpringBoot等开发框架，来支撑具体业务的开发。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（4：基本开发框架搭建）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149118024</link><guid>https://blog.csdn.net/mifffy_java/article/details/149118024</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:58:17 +0800</pubDate><description><![CDATA[在上一节，我们已经完成了项目的整体技术架构设计和具体的数据库设计，接下来，我们搭建整体的开发框架。开发工具选用Idea。开发工具只是为了提高效率，如果不习惯Idea的话，STS使用起来也是OK的。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（3：存储设计与基础架构设计）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117984</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117984</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:57:58 +0800</pubDate><description><![CDATA[我们首先看一下SpringCloud 官方的一些组件，有些组件不再维护升级，有些新的组件重新承担起相应的责任。我们要做的实例的一个粗略的架构图如下，接下来，我们会围绕SpringCloud/SpringCloud Alibaba的体系来进行我们的项目实战。虽然在微服务的理论中，没有对数据库定强制性的规范，但一般，服务拆分之后，数据库也会对应的拆分。在上一章中，我们已经完成了基本业务流程的梳理和服务模块的划分，接下来，开始设计数据存储。这种结合业务来进行拆分的方式是数据库拆分中的垂直拆分。]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba实战（2：电商系统业务分析）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117953</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117953</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:57:17 +0800</pubDate><description><![CDATA[选用了很常见的电商业务来进行SpringCloud Alibaba的实战。当然，因为仅仅是为了学习SpringCloud Alibaba，所以对业务进行了大幅度简化，这里只取一个精简版的用户下单业务。]]></description><category></category></item><item><title><![CDATA[SpingCloud Alibaba实战（1：微服务与SpringCloud Alibaba）]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117926</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117926</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:57:00 +0800</pubDate><description><![CDATA[微服务可谓是这几年比较热门的技术，从2017开始逐渐爆火，逐渐大大小小的公司纷纷将微服务技术引入并在实际业务中落地。微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出：微服务是由单一应用程序构成的小服务，拥有自己的进程与轻量化处理，服务依业务功能设计，以全自动的方式部署，与其他服务使用HTTP API通讯。同时，服务会使用最小规模的集中管理 （例如Docker）技术，服务可以用不同的编程语言与数据库等。]]></description><category></category></item><item><title><![CDATA[十分钟彻底掌握缓存击穿、缓存穿透、缓存雪崩]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117822</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117822</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:56:43 +0800</pubDate><description><![CDATA[先从缓存击穿开始。一个并发访问量比较大的key在某个时间过期，导致所有的请求直接打在DB上。缓存击穿会增大数据库的负载，我们看看怎么缓解。缓存穿透：缓存穿透指的查询缓存和数据库中都不存在的数据，这样每次请求直接打到数据库，就好像缓存不存在一样。缓存穿透将导致不存在的数据每次请求都要到存储层去查询，失去了缓存保护后端存储的意义。缓存穿透可能会使后端存储负载加大，如果发现大量存储层空命中，可能就是出现了缓存穿透问题。自身业务代码问题恶意攻击，爬虫造成空命中我们来看看如何解决。]]></description><category></category></item><item><title><![CDATA[Redis破障之路（四）Jedis基本使用]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117765</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117765</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:56:27 +0800</pubDate><description><![CDATA[在前面我们已经学习了Redis命令行客户端redis-cli的使用，接下来我们了解一下Redis基于Java编程语言的客户端。在Java语言体系下，有三个常用的Redis客户端JedisRedissonLettuce。三者各有特点，各有适用的场景。Jedis：Redis的Java实现的客户端，其API提供了比较全面的Redis命令的支持；]]></description><category></category></item><item><title><![CDATA[Redis破障之路（三）Redis单线程架构 ]]></title><link>https://blog.csdn.net/mifffy_java/article/details/149117673</link><guid>https://blog.csdn.net/mifffy_java/article/details/149117673</guid><author>mifffy_java</author><pubDate>Mon, 14 Jul 2025 21:56:04 +0800</pubDate><description><![CDATA[首先要明白，Redis的单线程指的是执行命令时的单线程。Redis客户端与服务端的模型可以简化成下图，每次客户端调用都经历了发送命令、执行命令、返回结果三个过程。我们说的单线程就是在第二步执行命令，一条命令从从客户端达到服务端不会立刻被执行，而是会进入一个队列中等待，每次只会有一条指令被选中执行。发送命令、返回结果、命令排队这些就不是那么简单了，例如Redis使用了I/O多路复用技术来解决I/O的问题。]]></description><category></category></item></channel></rss>