<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CodeMavs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/beslet</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; beslet]]></copyright><item><title><![CDATA[vivo营销自动化技术解密｜开篇]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/125238604</link><guid>https://blog.youkuaiyun.com/beslet/article/details/125238604</guid><author>beslet</author><pubDate>Sat, 11 Jun 2022 20:49:47 +0800</pubDate><description><![CDATA[营销自动化介绍]]></description><category></category></item><item><title><![CDATA[状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/125237967</link><guid>https://blog.youkuaiyun.com/beslet/article/details/125237967</guid><author>beslet</author><pubDate>Sat, 11 Jun 2022 19:55:46 +0800</pubDate><description><![CDATA[利用状态机进行系统状态管理，可以提升业务扩展性和内聚性 ]]></description><category></category></item><item><title><![CDATA[设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/124056321</link><guid>https://blog.youkuaiyun.com/beslet/article/details/124056321</guid><author>beslet</author><pubDate>Sat, 09 Apr 2022 11:13:53 +0800</pubDate><description><![CDATA[在《vivo 营销自动化技术解密 |开篇》中，我们从整体上介绍了vivo营销自动化平台的业务架构、核心业务模块功能、系统架构和几大核心技术设计。 
本次带来的是系列文章的第2篇，本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性，以及实践过程中的思考...]]></description><category></category></item><item><title><![CDATA[MySQL知识体系(附大图-持续更新)]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120581238</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120581238</guid><author>beslet</author><pubDate>Sun, 31 Oct 2021 22:19:08 +0800</pubDate><description><![CDATA[一、前言

]]></description><category></category></item><item><title><![CDATA[MySQL EXPLAIN 查询计划调优]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120923812</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120923812</guid><author>beslet</author><pubDate>Sat, 23 Oct 2021 22:50:49 +0800</pubDate><description><![CDATA[MySQL EXPLAIN

MySQL EXPLAIN
id
一般来说，每个Select关键字对应一个id，表示select查询的序列号。id越大越先执行；id相同从上往下执行。

单表查询
连接查询
子查询
union临时表

select_type
每个Select对应的查询类型


SIMPLE

不包含 UNION 或者子查询的简单查询



PRIMARY

包含了 UNION、UNION ALL 或者子查询的最外层查询



UNION

包含了 UNION 或者 UNION ALL 的非第一]]></description><category></category></item><item><title><![CDATA[MySQL事务实现原理]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120581221</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120581221</guid><author>beslet</author><pubDate>Sun, 10 Oct 2021 19:40:07 +0800</pubDate><description><![CDATA[一、前言

]]></description><category></category></item><item><title><![CDATA[MySQL MVCC原理深入探索]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120581208</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120581208</guid><author>beslet</author><pubDate>Tue, 05 Oct 2021 18:55:31 +0800</pubDate><description><![CDATA[一、前言

]]></description><category></category></item><item><title><![CDATA[MySQL锁机制全面解析]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120537171</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120537171</guid><author>beslet</author><pubDate>Fri, 01 Oct 2021 13:15:15 +0800</pubDate><description><![CDATA[一、锁的作用
           数据库使用锁是为了支持对共享资源的并发访问，同时保证数据的完整性和一致性。

二、锁的类型

2.1 全局锁
全局锁意味着对整个数据库实例加上锁。通常使用的是全局读锁——Flush tables with read lock (FTWRL)。
使用这个命令，可以使整个库处于只读状态，其他线程的无论使用DML、DDL甚至是事务的提交语句都会无法正常执行。

使用场景
做全库逻辑备份，对所有的表数据进行锁定，保证数据的一致性。

问题
但是FTWRL的全局锁方案有比较严重的缺]]></description><category></category></item><item><title><![CDATA[深入解析AQS源码设计]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120146903</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120146903</guid><author>beslet</author><pubDate>Sat, 18 Sep 2021 23:31:23 +0800</pubDate><description><![CDATA[一、ReentrantLock的作用

]]></description><category></category></item><item><title><![CDATA[一文轻松看透AQS的核心设计思想]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/120098886</link><guid>https://blog.youkuaiyun.com/beslet/article/details/120098886</guid><author>beslet</author><pubDate>Sat, 04 Sep 2021 21:38:25 +0800</pubDate><description><![CDATA[一、AQS是什么
AQS的完整类名是——AbstractQueuedSynchronizer（直译过来就是抽象队列同步器）。从字面上就能看出来，是专门用于实现同步功能的一个抽象框架。事实上，AQS是著名的JDK并发包设计者Doug Lea定义的一套用于控制多线程并发访问共享资源的基础框架，许多并发包工具实现都依赖于它，如常用的ReentrantLock、ReadWriteLock、Semaphore、CountDownLatch和ThreadPoolExecutor 的 Worker。
二、为什么要使用AQ]]></description><category></category></item><item><title><![CDATA[时间轮算法在定时任务与延时消息中的应用]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/119974430</link><guid>https://blog.youkuaiyun.com/beslet/article/details/119974430</guid><author>beslet</author><pubDate>Sat, 28 Aug 2021 23:00:25 +0800</pubDate><description><![CDATA[一、延时任务中的时间轮
1.1 背景
项目开发中，我们经常会遇到这些场景：

1.小程序商城用户下单，30分钟订单未付款自动取消。
2.秒杀活动开始前15分钟对设置了秒杀提醒的用户进行推送。
3.用户成功秒杀到商品，5分钟未提交订单退回商品。

上述场景传统的解决方案一般是采用定时任务执行，通过设置定时任务的执行间隔，定时进行检测执行。
参考：分布式定时任务调度框架实践
1.2 缺陷
然而，定时任务的方案会存在以下不足：

1.触发时间和频率不好设置。
2.不能满足实时性要求高的场景。
3.会导致任务对应业]]></description><category></category></item><item><title><![CDATA[并发底层原理之CPU缓存伪共享]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/119899316</link><guid>https://blog.youkuaiyun.com/beslet/article/details/119899316</guid><author>beslet</author><pubDate>Wed, 25 Aug 2021 00:35:26 +0800</pubDate><description><![CDATA[一、什么是CPU缓存
由于CPU 运算速度要比内存读写速度快上百倍，使得CPU 需要花费很长时间等待数据读取来以及写入。而高速缓存的主要是为了解决 CPU 运算速度与内存读写速度不匹配的矛盾。
在内存金字塔层次结构中，CPU高速缓存位于第二层，仅次于CPU的寄存器。 

可以比对一下数据从不同存储到CPU大约传输时间：

主存 约60-80ns
L3 cache 约40-45时钟周期  约15ns
L2 cache 约10时钟周期  约3ns
L1 cache 约3-4时钟周期  约1ns
寄存器 约1时钟]]></description><category></category></item><item><title><![CDATA[Java多线程并发编程知识体系(附大图-持续更新)]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/119850419</link><guid>https://blog.youkuaiyun.com/beslet/article/details/119850419</guid><author>beslet</author><pubDate>Sun, 22 Aug 2021 11:40:42 +0800</pubDate><description><![CDATA[Java并发编程
并发编程的优势
提升CPU资源利用率

CPU缓存
操作系统分时复用
指令流水线优化

提升吞吐量
提升程序响应速度
更好的编程模型
并发带来的问题
安全性问题


定义：多线程读写共享变量时出现不正确的行为


原因


原子性问题

CPU时钟中断带来的线程切换



可见性问题

多核CPU高速缓存之间不可见



重排序问题


CPU和编译器会进行重排序指令

典型问题：单例模式DCL







解决方案


解决可见性问题和重排序


Java内存模型(JMM)


按需.]]></description><category></category></item><item><title><![CDATA[从锁开始深入理解Java并发编程原理]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/119744834</link><guid>https://blog.youkuaiyun.com/beslet/article/details/119744834</guid><author>beslet</author><pubDate>Tue, 17 Aug 2021 23:36:53 +0800</pubDate><description><![CDATA[一、引言
相信刚学习Java并发编程的很多童鞋都有这样的感受，并发编程的知识体系非常庞大，知识点多，特别是JUC并发包里面各种复杂的组件：锁、原子变量、线程池和Doug Lea大神精心打造的AQS框架, 一不小心就会迷失在其中繁杂的细节，很多文章和教程一来就开始讲用法甚至是源码，看完后似懂非懂，而且很容易就会忘记。
    本文来深入剖析一下Java并发体系的一项关键技术——锁，并借助自定义锁来深入理解Java并发体系的核心原理。

二、锁的引入和多线程问题
首先来思考一下为什么需要锁？
相信很多了解并发的]]></description><category></category></item><item><title><![CDATA[分布式定时任务调度框架实践]]></title><link>https://blog.youkuaiyun.com/beslet/article/details/119721831</link><guid>https://blog.youkuaiyun.com/beslet/article/details/119721831</guid><author>beslet</author><pubDate>Sun, 15 Aug 2021 23:10:29 +0800</pubDate><description><![CDATA[分布式定时任务调度框架实践
            
 本文首发于 vivo互联网技术 微信公众号&nbsp; 链接： https://mp.weixin.qq.com/s/l4vuYpNRjKxQRkRTDhyg2Q 作者：陈王荣 
 
分布式任务调度框架几乎是每个大型应用必备的工具，本文介绍了任务调度框架使用的需求背景和痛点，对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践，并分析了这几种框架的优劣...]]></description><category></category></item></channel></rss>