<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_49705090的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_49705090</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_49705090]]></copyright><item><title><![CDATA[Nginx]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146388164</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146388164</guid><author>m0_49705090</author><pubDate>Thu, 20 Mar 2025 09:34:30 +0800</pubDate><description><![CDATA[为什么要这样做呢，比如阿里巴巴服务器，有很多台，我用户的session id 保存在某一个服务器上，但是session不共享，如果每次的请求随机发到服务器上，需要频繁的访问。我们选择加一层中间件，登录一次访问所有，我们只需要把请求发给反向代理服务器，由他选择目标服务器，在进行数据的返回。这种方法通过哈希算法，可以将某一个用户的请求一直打在某一台服务器上面，比如某个服务器保存了我们的sessionID，那么我们希望以后的请求，都由这台服务器去返回，就避免了频繁的去切换用户访问登录的一个资源浪费。]]></description><category></category></item><item><title><![CDATA[短链接项目思考]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146115832</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146115832</guid><author>m0_49705090</author><pubDate>Sat, 08 Mar 2025 14:16:48 +0800</pubDate><description><![CDATA[用于消费者组消费，消费者组可以实现消息的负载均衡，确保每条消息只被组内一个消费者处理。将长链接通过一定的算法转换成短链接，访问短链接实际上是访问短链接服务器，根据短链接的参数找到长链接重定向跳转。Redis Stream 是 Redis 5.0 引入的一种新数据类型，能很好地实现消息队列的功能。算法：MD5 从一个字符串或一个文件中按照一定的规律生成一个特殊的字符串。原始链接-->murmurhash-->10进制数-->62编码的数。客户端-->发出短链接请求--> 重定向跳转 -->长链接。]]></description><category></category></item><item><title><![CDATA[如何保证幂等]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146115753</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146115753</guid><author>m0_49705090</author><pubDate>Sat, 08 Mar 2025 14:12:14 +0800</pubDate><description><![CDATA[不过，JDK 自带的锁属于是本地锁，分布式环境下无法使用。拿版本号机制来说，通过在表中增加一个版本号字段，每次更新数据时，检查当前的版本号否和数据库中的一致。如果一致，则更新成功，并且版本号加一。如果不一致，则更新失败，表示数据已经被其他请求修改过。通过在表中加上唯一索引，保证数据的唯一性。如果有重复的数据插入，会抛出异常，程序可以捕获异常并处理。不过，这种方法只适用于插入数据的场景。在 MySQL 里使用排他锁： 如果一个记录已经被加了排他锁，那其他事务不能再对这条事务加任何类型的锁（锁不兼容）。]]></description><category></category></item><item><title><![CDATA[Redis实现延迟队列]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146064160</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146064160</guid><author>m0_49705090</author><pubDate>Thu, 06 Mar 2025 11:29:55 +0800</pubDate><description><![CDATA[redis 2.0 引入了发布订阅功能（pub/sub），引入了一个channel的概念 发布者publish事件给指定的channel 订阅者subscribe它所关心的事件 一个订阅者可以订阅多个 redis里面有默认的channel 负责监听key的过期事件 也就是说，当一个key过期时，redis会发布一个过期事件到这个channel当中。Redisson 是一个开源的 Java 语言 Redis 客户端，提供了很多开箱即用的功能，比如多种分布式锁的实现、延时队列。模型）来通知消费者有新任务到达。]]></description><category></category></item><item><title><![CDATA[每日面经篇]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146064039</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146064039</guid><author>m0_49705090</author><pubDate>Thu, 06 Mar 2025 11:27:05 +0800</pubDate><description><![CDATA[锁会自动释放，synchronzed是基于JVM的监视器锁实现的 （Monitor），线程进入代码块或者方法时，会获取该对象的monitor锁，当线程离开synchronized代码块或者方法时，释放monitor锁，所有无论是正常结束还是异常结束，锁都会被释放。修饰方法或者代码块，当一个线程访问被synchronized修饰的方法或代码块时，会自动获取该对象的锁。是框架的核心，赋予了在运行时分析类以及执行类中方法的能力，通过反射可以获取任意一个类的所有属性和方法，还可以调用这些方法和属性。]]></description><category></category></item><item><title><![CDATA[每日面经学习篇]]></title><link>https://blog.youkuaiyun.com/m0_49705090/article/details/146004665</link><guid>https://blog.youkuaiyun.com/m0_49705090/article/details/146004665</guid><author>m0_49705090</author><pubDate>Tue, 04 Mar 2025 08:35:37 +0800</pubDate><description><![CDATA[Java（或其他语言）核心知识Java中的面向对象特性（封装、继承、多态）是什么？重载（Overload）和重写（Override）的区别？final、finally、finalize的区别？项目相关介绍一个你最熟悉的项目，技术栈是什么？如何保证代码的可维护性和可扩展性？如何设计一个高并发的购物车系统？性能优化如何优化一个高并发的系统？缓存穿透、缓存雪崩、缓存击穿的区别及解决方案？如何解决数据库的并发问题（如死锁）？数据库设计数据库的三大范式是什么？如何设计一个电商平台的数据库表结构？栈和队列的应用场景？]]></description><category></category></item></channel></rss>