<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[study_maker的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/study_maker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; study_maker]]></copyright><item><title><![CDATA[mysql深入——事务原理与MVCC]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/127098895</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/127098895</guid><author>study_maker</author><pubDate>Wed, 28 Sep 2022 23:47:24 +0800</pubDate><description><![CDATA[中的版本链进行策略匹配，可以发现红圈圈出的版本符合策略要求，所以。事务5中查询id为30的记录返回该版本数据。，下一组查询同理进行匹配。]]></description><category></category></item><item><title><![CDATA[maven依赖导入报红的处理]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/125141709</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/125141709</guid><author>study_maker</author><pubDate>Mon, 06 Jun 2022 10:08:11 +0800</pubDate><description><![CDATA[刷新无用，找到右边的maven，将报红的依赖对应的模块进行reimport处理
]]></description><category></category></item><item><title><![CDATA[Redis——实现关注与取关等功能]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/125021914</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/125021914</guid><author>study_maker</author><pubDate>Sat, 28 May 2022 23:11:53 +0800</pubDate><description><![CDATA[目录

实现关注与取关

实现共同关注功能

关注推送

Feed流的模式

拉模式

推模式

推拉结合模式

总结

基于推模式实现关注推送功能

Feed流的分页问题

实现关注推送页面的分页查询

实现关注与取关





实现

Controller层


@RestController
@RequestMapping("/follow")
public class FollowController {
    @Resource
    private IFollowService follow]]></description><category></category></item><item><title><![CDATA[操作系统——虚拟内存]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/125011629</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/125011629</guid><author>study_maker</author><pubDate>Fri, 27 May 2022 23:01:34 +0800</pubDate><description><![CDATA[目录

虚拟内存的定义和特征

三个主要特征

如何实现虚拟内存技术

总结

请求分页管理方式

页表机制

缺页中断机构

地址变换机构

基本流程图​

总结

分页置换算法

最佳置换算法​

先进先出置换算法

最近最久未使用置换算法

时钟置换算法

改进型的时钟置换算法

总结

页面分配与置换策略

何时调入页面​

从何处调入页面

抖动（颠簸）现象

工作集

总结







传统存储管理方式的特征、缺点





局部性原理 





虚拟内存的定义和特征



三个主要特...]]></description><category></category></item><item><title><![CDATA[操作系统——内存管理]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124915953</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124915953</guid><author>study_maker</author><pubDate>Mon, 23 May 2022 00:38:13 +0800</pubDate><description><![CDATA[连续分配方式的缺点 





非连续分配管理方式





分页存储管理的基本概念






]]></description><category></category></item><item><title><![CDATA[操作系统——内存]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124781209</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124781209</guid><author>study_maker</author><pubDate>Sun, 15 May 2022 16:06:19 +0800</pubDate><description><![CDATA[目录

内存的基础知识

什么是内存

逻辑地址(相对地址)和物理地址(绝对地址)

程序的执行过程(编译，链接，装入)

装入的三种方式

绝对装入

静态重定位

动态重定位

链接的三种方式

静态链接

装入时动态链接

运行时动态链接

总结

内存管理的概念

需要提供的功能

内存保护

方法一

方法二

总结

内存空间的扩充

覆盖技术

交换技术

问题

总结

内存空间的分配

单一连续分配

固定分区分配​编辑

动态分区分配

总结

动态分区分配算法...]]></description><category></category></item><item><title><![CDATA[redis——实现点赞功能]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124768929</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124768929</guid><author>study_maker</author><pubDate>Sat, 14 May 2022 16:12:47 +0800</pubDate><description><![CDATA[目录

完善点赞功能

实现点赞排行榜功能

完善点赞功能

（采用redis中的set集合）



实现


    @Override
    public Result likeBlog(Long id) {
        //1.获取登录用户
        Long userId = UserHolder.getUser().getId();
        //2.判断当前用户是否点赞
        String key="blog:liked"+id;
        Boolean is]]></description><category></category></item><item><title><![CDATA[Redisson]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124638157</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124638157</guid><author>study_maker</author><pubDate>Fri, 13 May 2022 23:23:46 +0800</pubDate><description><![CDATA[前文链接：

主要是要学习redis分布锁的原理，其实redis有专门用来处理这些问题的工具

(1条消息) Redis——实现优惠券秒杀_486过于烦躁的博客-优快云博客

(1条消息) 基于Redis的分布式锁实现(秒杀优惠券的优化)_486过于烦躁的博客-优快云博客




Redisson可以解决以下四个问题





Redisson

之所以引用Redisson是因为前文我们自己实现的锁不满足可重入性（什么是 “可重入”：可重入就是说某个线程已经获得某个锁，可以再次获取锁而不会出现死锁...]]></description><category></category></item><item><title><![CDATA[操作系统——死锁]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124665042</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124665042</guid><author>study_maker</author><pubDate>Wed, 11 May 2022 15:28:47 +0800</pubDate><description><![CDATA[前言


再次声明：操作系统篇章都是参考B站王道考研视频：王道计算机考研 操作系统_哔哩哔哩_bilibili

采用截图学习法




死锁的概念









什么是死锁









死锁、饥饿与死循环的区别





死锁产生的必要条件

四个条件：

-互斥条件   -不剥夺条件    -请求和保持条件-循环等待条件





什么时候会发生死锁





死锁的处理策略





总结





死锁的处理





通过破坏死锁所需的必...]]></description><category></category></item><item><title><![CDATA[基于Redis的分布式锁实现(秒杀优惠券的优化)]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124618172</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124618172</guid><author>study_maker</author><pubDate>Sat, 07 May 2022 15:25:17 +0800</pubDate><description><![CDATA[什么是分布式锁



修改秒杀优惠券的流程





分布式锁的实现



基于Redis的分布式锁（非阻塞实现）



ILock接口


public interface ILock {
    /**
     * 尝试获取锁
     * @param timeoutSec 锁持有的过期时间，过期后自动释放
     * @return true代表获取锁成功，false代表获取锁失败
     */
    boolean trLock(long timeoutSec);

    /...]]></description><category></category></item><item><title><![CDATA[Redis——实现优惠券秒杀]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124389980</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124389980</guid><author>study_maker</author><pubDate>Fri, 06 May 2022 19:31:22 +0800</pubDate><description><![CDATA[全局ID生成器

当数据规模达到一定量级的时候会影响到数据库的性能，那么这个时候我们一般会沿着AKF的Z轴使用分库分表的策略，以降低单表的数据量，从而提高数据库的性能。但是分库分表后，我们怎么保证ID的全局唯一性呢？这个时候ID生成器就登场了。





ID应该遵循的原则

1、ID应该是按时间有序的，因为在某些场景上可能会用到，比如获取商品的评论，一般需要按照评论的时间倒序显示，如果评论ID是无序的那边就需要添加额外的字段排序。另外ID如果是有序，可以提升数据库的性能，因为有序的ID，对...]]></description><category></category></item><item><title><![CDATA[ThreadLocal的三种使用场景（转发）]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124589566</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124589566</guid><author>study_maker</author><pubDate>Thu, 05 May 2022 15:18:26 +0800</pubDate><description><![CDATA[目录

场景一：

场景二：

场景三：

慎用的场景



ThreadLocal包含了四个方法:


void set(Object value) 设置当前线程的线程局部变量的值。

public Object get() 该方法返回当前线程所对应的线程局部变量。

public void remove() 将当前线程局部变量的值删除，其目的是为了减少内存使用，加快内存回收。

protected Object initialValue() 返回该线程局部变量的初始值，该方法是一个protected..]]></description><category></category></item><item><title><![CDATA[深入理解Maven]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124452838</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124452838</guid><author>study_maker</author><pubDate>Wed, 27 Apr 2022 21:34:32 +0800</pubDate><description><![CDATA[Maven简介





Maven的作用



Maven基础概念

仓库



坐标








]]></description><category></category></item><item><title><![CDATA[Redis实战——商户查询缓存]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124056413</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124056413</guid><author>study_maker</author><pubDate>Sun, 24 Apr 2022 19:07:58 +0800</pubDate><description><![CDATA[​​​​​​​







线程一查询的时候，缓存恰好失效



方案二更好












]]></description><category></category></item><item><title><![CDATA[亿级别大数的排序查找]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124246601</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124246601</guid><author>study_maker</author><pubDate>Mon, 18 Apr 2022 14:20:26 +0800</pubDate><description><![CDATA[技术思路
1.容量换算
1 byte = 8 bits
1k = 1024 byte = 8*1024 bit
1M = 1024 k = 810241024 bit = 8388608 bit 800万
100M = 8亿比特
1亿 = 10810^8108
1亿整数 = 32亿比特 = 400M
int 能存的最大数字为[−231-2^{31}−231, 231−1]2^{31}-1]231−1]，即 [-2147483648, 2 147 483 647] 。
正整数是 21亿个，int 总共表达的数]]></description><category></category></item><item><title><![CDATA[Redis实战——实现类附近商铺功能]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124238002</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124238002</guid><author>study_maker</author><pubDate>Sun, 17 Apr 2022 22:58:48 +0800</pubDate><description><![CDATA[前言


首先需要了解 Redis 中 GEO 的使用，和GeoHash算法的基本原理

链接：Redis——GEO




附近商户搜索

将类型相同的商户分为同一组



为了支持 GEOSEARCH 命令，需要更新 Redis 版本







实现代码

加载商铺数据(含坐标)


    @Test
    void loadShopData(){
        //1.查询商户信息
        List&lt;Shop&gt; shops = shopService.list();

 ]]></description><category></category></item><item><title><![CDATA[Redis——GEO]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124226449</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124226449</guid><author>study_maker</author><pubDate>Sun, 17 Apr 2022 22:16:29 +0800</pubDate><description><![CDATA[GEO数据结构





GEOADD

1.1 GEOADD概念

将给定的空间元素（纬度、经度、名字）添加到指定的键里面。 这些数据会以有序集合的形式被储存在键里面， 从而使得像 GEORADIUS 和 GEORADIUSBYMEMBER 这样的命令可以在之后通过位置查询取得这些元素。

GEOADD 命令以标准的 x,y 格式接受参数， 所以用户必须先输入经度， 然后再输入纬度。 GEOADD 能够记录的坐标是有限的： 非常接近两极的区域是无法被索引的。 精确的坐标限制由 EPS...]]></description><category></category></item><item><title><![CDATA[操作系统——调度算法]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124093046</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124093046</guid><author>study_maker</author><pubDate>Mon, 11 Apr 2022 12:47:43 +0800</pubDate><description><![CDATA[目录



调度算法的评价指标

1.cpu利用率

2.系统吞吐量​

3.周转时间​

4.等待时间

5.响应时间​

总结

调度算法(批处理系统)

1.先来先服务(FCFS)

示例

2.短作业优先(SJF)

非抢占式​

抢占式

对FCFS和SJF的对比思考

3.高响应比优先(HRRN)

示例

总结

调度算法(交互系统)

1.时间片轮换

时间片大小为2

时间片为5​

注意时间片大小的设置​

2.优先级调度算法

非抢占式

抢占式

补充​

思考

3.多级反馈...]]></description><category></category></item><item><title><![CDATA[操作系统——进程调度]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124091240</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124091240</guid><author>study_maker</author><pubDate>Mon, 11 Apr 2022 09:45:09 +0800</pubDate><description><![CDATA[目录

调度的基本概念

高级调度

中级调度

低级调度

三层调度的联系及对比

补充知识：七状态模型

总结

进程调度

进程调度的时机

进程调度的方式

进程的切换与过程

总结



调度的基本概念





高级调度





中级调度



低级调度





三层调度的联系及对比





补充知识：七状态模型



总结









进程调度

进程调度的时机





进程调度的方式





进程的切换与过程





总结
...]]></description><category></category></item><item><title><![CDATA[通俗易懂讲布隆过滤器(转载)]]></title><link>https://blog.youkuaiyun.com/study_maker/article/details/124069632</link><guid>https://blog.youkuaiyun.com/study_maker/article/details/124069632</guid><author>study_maker</author><pubDate>Sat, 09 Apr 2022 22:49:25 +0800</pubDate><description><![CDATA[目录

前言：

缓存雪崩

从一道面试题说起

布隆过滤器

Guava实现布隆过滤器

Redis实现布隆过滤器

Redisson实现

带计数的布隆过滤器

布隆过滤器工作位置

布隆过滤器的其他应用场景

前言：

    哈哈，没想到昨天才看的字节青训营直播，今天就看到了直播某位大佬的文章，实在是太有缘分了


作者：小杰博士

链接：通俗易懂讲布隆过滤器 - 掘金 (juejin.cn)




缓存雪崩

缓存雪崩就是Redis的大量热点数据同时过期（失效），因为设置了相同的过期时间...]]></description><category></category></item></channel></rss>