自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 状态机引擎在vivo营销自动化中的深度实践 | 引擎篇02

利用状态机进行系统状态管理,可以提升业务扩展性和内聚性

2022-06-11 19:55:46 619

原创 设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01

在《vivo 营销自动化技术解密 |开篇》中,我们从整体上介绍了vivo营销自动化平台的业务架构、核心业务模块功能、系统架构和几大核心技术设计。 本次带来的是系列文章的第2篇,本文详细解析设计模式和相关应用如何帮助营销自动化业务提升系统扩展性,以及实践过程中的思考...

2022-04-09 11:13:53 393 1

原创 MySQL知识体系(附大图-持续更新)

一、前言

2021-10-31 22:19:08 136

原创 MySQL EXPLAIN 查询计划调优

MySQL EXPLAINMySQL EXPLAINid一般来说,每个Select关键字对应一个id,表示select查询的序列号。id越大越先执行;id相同从上往下执行。单表查询连接查询子查询union临时表select_type每个Select对应的查询类型SIMPLE不包含 UNION 或者子查询的简单查询PRIMARY包含了 UNION、UNION ALL 或者子查询的最外层查询UNION包含了 UNION 或者 UNION ALL 的非第一

2021-10-23 22:50:49 153

原创 MySQL MVCC原理深入探索

一、前言

2021-10-05 18:55:31 1625 2

原创 MySQL锁机制全面解析

一、锁的作用 数据库使用锁是为了支持对共享资源的并发访问,同时保证数据的完整性和一致性。二、锁的类型2.1 全局锁全局锁意味着对整个数据库实例加上锁。通常使用的是全局读锁——Flush tables with read lock (FTWRL)。使用这个命令,可以使整个库处于只读状态,其他线程的无论使用DML、DDL甚至是事务的提交语句都会无法正常执行。使用场景做全库逻辑备份,对所有的表数据进行锁定,保证数据的一致性。问题但是FTWRL的全局锁方案有比较严重的缺

2021-10-01 13:15:15 3628 5

转载 vivo营销自动化技术解密|开篇

营销自动化介绍

2022-06-11 20:49:47 466 1

原创 MySQL事务实现原理

一、前言

2021-10-10 19:40:07 2079

原创 深入解析AQS源码设计

一、ReentrantLock的作用

2021-09-18 23:31:23 1261

原创 一文轻松看透AQS的核心设计思想

一、AQS是什么AQS的完整类名是——AbstractQueuedSynchronizer(直译过来就是抽象队列同步器)。从字面上就能看出来,是专门用于实现同步功能的一个抽象框架。事实上,AQS是著名的JDK并发包设计者Doug Lea定义的一套用于控制多线程并发访问共享资源的基础框架,许多并发包工具实现都依赖于它,如常用的ReentrantLock、ReadWriteLock、Semaphore、CountDownLatch和ThreadPoolExecutor 的 Worker。二、为什么要使用AQ

2021-09-04 21:38:25 2496

原创 时间轮算法在定时任务与延时消息中的应用

一、延时任务中的时间轮1.1 背景项目开发中,我们经常会遇到这些场景:1.小程序商城用户下单,30分钟订单未付款自动取消。2.秒杀活动开始前15分钟对设置了秒杀提醒的用户进行推送。3.用户成功秒杀到商品,5分钟未提交订单退回商品。上述场景传统的解决方案一般是采用定时任务执行,通过设置定时任务的执行间隔,定时进行检测执行。参考:分布式定时任务调度框架实践1.2 缺陷然而,定时任务的方案会存在以下不足:1.触发时间和频率不好设置。2.不能满足实时性要求高的场景。3.会导致任务对应业

2021-08-28 23:00:25 1352 1

原创 并发底层原理之CPU缓存伪共享

一、什么是CPU缓存由于CPU 运算速度要比内存读写速度快上百倍,使得CPU 需要花费很长时间等待数据读取来以及写入。而高速缓存的主要是为了解决 CPU 运算速度与内存读写速度不匹配的矛盾。在内存金字塔层次结构中,CPU高速缓存位于第二层,仅次于CPU的寄存器。 可以比对一下数据从不同存储到CPU大约传输时间:主存 约60-80nsL3 cache 约40-45时钟周期 约15nsL2 cache 约10时钟周期 约3nsL1 cache 约3-4时钟周期 约1ns寄存器 约1时钟

2021-08-25 00:35:26 871

原创 Java多线程并发编程知识体系(附大图-持续更新)

Java并发编程并发编程的优势提升CPU资源利用率CPU缓存操作系统分时复用指令流水线优化提升吞吐量提升程序响应速度更好的编程模型并发带来的问题安全性问题定义:多线程读写共享变量时出现不正确的行为原因原子性问题CPU时钟中断带来的线程切换可见性问题多核CPU高速缓存之间不可见重排序问题CPU和编译器会进行重排序指令典型问题:单例模式DCL解决方案解决可见性问题和重排序Java内存模型(JMM)按需.

2021-08-22 11:40:42 2768 6

原创 从锁开始深入理解Java并发编程原理

一、引言相信刚学习Java并发编程的很多童鞋都有这样的感受,并发编程的知识体系非常庞大,知识点多,特别是JUC并发包里面各种复杂的组件:锁、原子变量、线程池和Doug Lea大神精心打造的AQS框架, 一不小心就会迷失在其中繁杂的细节,很多文章和教程一来就开始讲用法甚至是源码,看完后似懂非懂,而且很容易就会忘记。 本文来深入剖析一下Java并发体系的一项关键技术——锁,并借助自定义锁来深入理解Java并发体系的核心原理。二、锁的引入和多线程问题首先来思考一下为什么需要锁?相信很多了解并发的

2021-08-17 23:36:53 477 2

原创 分布式定时任务调度框架实践

分布式定时任务调度框架实践 本文首发于 vivo互联网技术 微信公众号  链接: https://mp.weixin.qq.com/s/l4vuYpNRjKxQRkRTDhyg2Q 作者:陈王荣 分布式任务调度框架几乎是每个大型应用必备的工具,本文介绍了任务调度框架使用的需求背景和痛点,对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践,并分析了这几种框架的优劣...

2021-08-15 23:10:29 2344 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除