Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags
总文章数 379
所有文章 友链 关于我

Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags

分布式锁与事务

阅读数:568次 2019-09-17
字数统计: 1.4k字   |   阅读时长: 4分

文章导航

× 文章目录
  1. 1. 一、使用锁的原因分析:
  2. 2. 二、在单机应用里,JVM可以通过以下工具,可协调资源像原子性一样操作
  • 三、分布式环境下,如何协调资源达到原子性的操作?
    1. 1. 四、事务的概念
    2. 2. 五、分布式事务
    3. 3. 六、小结
  • 转载自 https://www.cnblogs.com/skorzeny/p/10409866.html

    单机里面,完美解决锁与事务。

    一、使用锁的原因分析:

    1、使用锁的目的

    ————多个外部线程同时来竞争使用同一资源时,会彼此影响,导致混乱

    ————锁的目的,将资源的使用做排它性处理,使同一时间,仅一个线程能访问资源

    2、并不是所有的资源,都无法同时服务多个线程 —— 比如,无状态的资源

    3、无成员变量/成员变量不存在变化的类—- 就是无状态类 —– 这种类是线程安全的

    4、有状态的对象,也不一定是不安全的

    ———- 如果状态变化是原子的(即没有中间变迁过程,变化不需要时间,没有中间态) —- 那么它一样是线程安全的

    5、重要的概念,动作的原子性

    6、总结:锁的本质

    锁要解决的问题是 ——- 资源数据会不一致

    锁要达成的目标是 ——- 让资源使用起来,像原子性一样

    锁达成目标的手段 ——- 让使用者访问资源时,只能排队,一个一个地去访问资源

    二、在单机应用里,JVM可以通过以下工具,可协调资源像原子性一样操作

    1、sychronized —— java语言天生支持

    2、lock —- jdk有接口标准

    三、分布式环境下,如何协调资源达到原子性的操作?

    1、sychronized / lock 这些java天然的实现,无法跨JVM发挥作用

    2、只得去寻求分布式环境里,大家都公认的服务来做见证人,以协调资源

    3、常见的公证人 ——》 mysql/zk/file/redis

    4、目标 —– 通过公证人发出信号,来协调分布式的访问者,排队访问资源

    5、条件 —– 任何一个能够提供【是/否】信号量的事物,都可以来做公证人

    6、陷阱 —– 发出锁信号量的动作,本身必须是原子性的

    7、mysql来充当公证人,利用的是一条sql语句执行的成功/失败,是原子的,流程如下:

    8、redis来充当公证人,利用的其 setnx指令的成功/失败,是原子的,流程如下:

    9、为了防止线程宕机,造成锁死在那里挡道,需要给锁认定一个有效期限,

    ——此期限的自动失效解锁,与线程的主动解锁之间,会存在冲突,reids的解锁流程必须考虑这一点:

    10、上图的解锁逻辑虽然是正确的,但因为整个动作不是原子的,因为不安全。需要改为lua脚本来执行

    11、lua 脚本为什么是原子性的

    —– redis是单线程执行指令的,因此内部不存在线程竞争

    (1)服务器A依次发送了ab指令到redis

    (2)服务器B依次发送了cd指令到redis

    (3)两台机器同向redis发送的四条指令,最终在指令队列里顺序是:acbd

    (4)可以看到,服务器A发送的ab两条指令,中间穿插了c指令,破坏了其完整性,因此,ab两条指令不是原子的

    (5)lua脚本,被放进队列时,ab指令是放在一起的,因为ab会顺序一起被执行,成为了原子性动作

    四、事务的概念

    1、锁的问题 —– 多对一的问题 —— 是多个线程同时访问同一个资源,造成资源状态不一致

    2、事务的问题 —– 一对多的问题 —– 是一个线程进数据库,操作多条sql,其中,某条sql的失败,致使整个业务失去意义;

    3、数据库中事务的实现方式:

    —————— service执行一个操作,要执行N条sql( 一条sql 是一个原子性操作)

    ——— 数据库内部,如何实现事务?

    ——— 所有的sql执行完毕之前,结果都以副本形式存在,如下图

    ——- commit操作 —— 业务线程向数据库发指令 —– 把副本转正

    —— roback操作 ——- 把副本丢掉

    事务管理器定义三个标准接口,即:

    1、启动事务(启动副本),

    2、副本转正

    3、副本丢弃

    五、分布式事务

    1、分布式事务,是指多台数据库的执行sql,也想要达到一致性的标准,即:多台一起commit或rollback

    2、参照单机事务的模型,分布式事务的思路延袭,也想通过三个标准接口的模式来完成(启副本/commit/rollback)

    3、按这个思路, X/Open组织提出了分布式事务的规范 —– XA

    4、XA的核心,便是全局事务,通过XA二阶段提交协议,与各分布式数据交互,分准备与提交两个阶段,如下图:

    六、小结

    1、锁的本质,资源的操作不是原子 ——– 锁目标,让一系列操作,一次性做完。排队

    2、分布式环境下,一切能够发出两个信号量事物都能够做锁 —– 做锁要求:加锁/解锁两个动作,一定是原子的

    3、mysql来做锁 ——- 一条sql的执行,是原子的

    4、redis有做锁 ——– setnx操作,是原子的

    5、redis要做安全的锁,—– 加锁进程死掉,——– 有效期使用解锁过程复杂化–锁判断—-lua脚本来保证原子性

    6、锁 —- 多个线程操作一个资源 ; 事务 —– 一个线程,操作多个资源问题。

    7、事务 —– ACID —– 启事务/commit/rollback

    8、X/open组织提出分布式事务规范 —- XA、

    • 面试
    • 系统架构
    • 分布式
    • 分布式
    • 面试
    • 系统架构

    扫一扫,分享到微信

    微信分享二维码
    分布式锁
    数据结构与算法第四阶段学习图
    1. 1. 一、使用锁的原因分析:
    2. 2. 二、在单机应用里,JVM可以通过以下工具,可协调资源像原子性一样操作
  • 三、分布式环境下,如何协调资源达到原子性的操作?
    1. 1. 四、事务的概念
    2. 2. 五、分布式事务
    3. 3. 六、小结
  • Related Issues not found

    Please contact @JavaSsun to initialize the comment

    © 2018-2024 Allen
    Hexo Theme Yilia by Litten
    本站总访问量70282次 | 本站访客数63203人
    • 所有文章
    • 友链
    • 关于我

    tag:

    • Elasticsearch
    • 面试
    • MQ
    • Redis
    • Nginx
    • Docker
    • Git
    • Dubbo
    • 论文
    • MySql
    • Tools
    • 日志
    • Linux
    • 系统架构
    • Java
    • 源码解析
    • Hexo-yilia
    • Jvm
    • MyBatis
    • SpringBoot
    • Swagger2
    • 算法
    • 分布式
    • Photo
    • HTTP
    • Hystrix
    • SSL
    • ELK
    • IDEA
    • Jwt
    • 定时任务
    • BigData
    • Maven
    • Quartz
    • 人工智能
    • 地图坐标转换
    • 网络编程
    • Python
    • SpringCloud
    • 搬砖结晶
    • OpenCV
    • 推荐系统
    • 目标检测
    • SkLearn
    • 图神经网络
    • PyTorch
    • TensorFlow
    • 数据挖掘
    • 研究生课题-AD检测
    • 研究生成果

      缺失模块。
      1、请确保node版本大于6.2
      2、在博客根目录(注意不是yilia根目录)执行以下命令:
      npm i hexo-generator-json-content --save

      3、在根目录_config.yml里添加配置:

        jsonContent:
          meta: false
          pages: false
          posts:
            title: true
            date: true
            path: true
            text: false
            raw: false
            content: false
            slug: false
            updated: false
            comments: false
            link: false
            permalink: false
            excerpt: false
            categories: false
            tags: true
      

    • 研究生总结

      2024-05-09

      #论文#人工智能#搬砖结晶#图神经网络#研究生课题-AD检测#研究生成果

    • 12-ROI文件分析

      2023-11-22

      #Tools#人工智能#研究生课题-AD检测

    • 11-DTI预处理

      2023-11-16

      #Tools#人工智能#研究生课题-AD检测

    • 10-GRETNA处理fMRI

      2023-11-05

      #Tools#人工智能#研究生课题-AD检测

    • 9-(图)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-28

      #Tools#人工智能#研究生课题-AD检测

    • 9-(文)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-26

      #Tools#人工智能#研究生课题-AD检测

    • 8-7-FSL软件使用

      2023-10-20

      #Tools#人工智能#研究生课题-AD检测

    • 8-6-FreeSurfer软件使用

      2023-10-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-5-SPM软件使用

      2023-10-10

      #Tools#人工智能#研究生课题-AD检测

    • 8-4-MRI预处理

      2023-09-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-3-UNet提取海马体

      2023-09-10

      #人工智能#研究生课题-AD检测

    • 8-2-ADNI论文数据预处理

      2023-09-02

      #论文#Tools#人工智能#研究生课题-AD检测

    • 8-1-数据预处理工具

      2023-08-05

      #Tools#人工智能#研究生课题-AD检测

    • 7-2-GNN For AD

      2023-07-25

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 7-1-GNN For Medical Diagnosis

      2023-06-28

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 6-2-SCI一区论文精读

      2023-05-25

      #论文#人工智能#研究生课题-AD检测

    • 6-1-MRI成像及ADNI简介

      2023-05-10

      #人工智能#研究生课题-AD检测

    • 5-ADNI-实验数据筛选与下载

      2023-04-25

      #人工智能#研究生课题-AD检测

    • 4-AD文献的阅读记录

      2023-04-20

      #论文#人工智能#研究生课题-AD检测

    • 3-指标特征选择

      2023-04-05

      #人工智能#研究生课题-AD检测

    • 2-AD有关课题

      2023-03-25

      #人工智能#研究生课题-AD检测

    • 1-阿尔茨海默病

      2023-03-20

      #人工智能#研究生课题-AD检测

    • 7-SHAP

      2023-03-15

      #人工智能#数据挖掘

    • 6-模型的融合技术大总结与结果部署

      2023-02-25

      #人工智能#数据挖掘

    • 5-模型建立与调参

      2023-02-20

      #人工智能#数据挖掘

    • 4-特征工程

      2023-02-12

      #人工智能#数据挖掘

    • 3-数据清洗和转换技巧

      2023-02-09

      #人工智能#数据挖掘

    • 2-数据的探索性-EDA分析

      2023-02-06

      #人工智能#数据挖掘

    • 1-赛题理解

      2023-02-04

      #人工智能#数据挖掘

    • 0-零基础入门数据挖掘学习路径

      2023-02-03

      #人工智能#数据挖掘

    • 重温深度学习优化算法

      2023-01-28

      #人工智能

    • 重温归一化(MinMaxScaler)和标准化(StandardScaler)

      2023-01-20

      #人工智能

    • 重温Batch Normalization

      2023-01-15

      #人工智能

    • 交叉熵损失函数和平方损失的区别

      2023-01-12

      #人工智能

    • loss不下降的解决方法

      2023-01-10

      #人工智能

    • 重温Seq2Seq和Attention机制

      2023-01-05

      #人工智能

    • 重温LSTM和GRU

      2022-12-28

      #人工智能

    • 重温RNN

      2022-12-25

      #人工智能

    • pytorch_geometric离线安装

      2022-12-19

      #人工智能#图神经网络#PyTorch

    • pytorch_geometric安装

      2022-12-18

      #人工智能#图神经网络#PyTorch

    • 生成式对抗网络GAN的工作原理

      2022-12-13

      #人工智能

    • Ubuntu查看cuda-cudnn等版本命令

      2022-12-10

      #Tools#人工智能

    • CUDA和CuDNN安装

      2022-12-08

      #Tools#人工智能

    • GPU之nvidia-smi命令详解

      2022-12-05

      #Tools#人工智能

    • 1-TensorFlow简介及安装

      2022-12-01

      #人工智能#TensorFlow

    • 入门图神经网络

      2022-11-25

      #人工智能#图神经网络

    • 10-模型的保存加载-模型微调-GPU使用及Pytorch常见报错

      2022-11-06

      #人工智能#PyTorch

    • 9-正则化与标准化大总结

      2022-10-28

      #人工智能#PyTorch

    • 8-Tensorboard可视化与Hook机制

      2022-10-25

      #人工智能#PyTorch

    • 7-优化器和学习率调整策略

      2022-10-23

      #人工智能#PyTorch

    • 6-模型的权值初始化与损失函数介绍

      2022-10-20

      #人工智能#PyTorch

    • 5-nn各网络层介绍

      2022-10-17

      #人工智能#PyTorch

    • Pytorch提取神经网络层结构-层参数及自定义初始化

      2022-10-14

      #人工智能#PyTorch

    • 4-模型创建Module-模型容器Containers及AlexNet网络搭建

      2022-10-12

      #人工智能#PyTorch

    • 3-Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

      2022-10-09

      #人工智能#PyTorch

    • 2-Pytorch的动态图-自动求导及逻辑回归

      2022-10-02

      #人工智能#PyTorch

    • 1-Pytorch的数据载体张量与线性回归

      2022-09-28

      #人工智能#PyTorch

    • Pytorch与词向量

      2022-09-25

      #人工智能#PyTorch

    • Pytorch基础理论和简单的神经网络实现

      2022-09-23

      #人工智能#PyTorch

    • Windows下的Pytorch环境搭建

      2022-09-20

      #人工智能#PyTorch

    • 图卷积网络-GCN

      2022-09-15

      #人工智能#图神经网络

    • GCN使用的数据集Cora等

      2022-09-10

      #人工智能#图神经网络

    • 图网络属性介绍

      2022-09-08

      #人工智能#图神经网络

    • 图神经网络理论基础

      2022-09-05

      #人工智能#图神经网络

    • 5-AI上推荐之AutoRec与Deep Crossing模型(改变神经网络的复杂程度)

      2022-08-28

      #人工智能#推荐系统

    • 4-AI上推荐之FM和FFM(九九归一)

      2022-08-17

      #人工智能#推荐系统

    • 梯度提升树GBDT的理论学习与细节补充

      2022-08-05

      #人工智能#推荐系统

    • 梯度下降算法的细节补充(凸函数, 导数, 偏导数,梯度, 方向导数以及负梯度下降最快背后的泰勒身影)

      2022-07-28

      #人工智能#推荐系统

    • 逻辑回归、优化算法和正则化的幕后细节补充

      2022-07-24

      #人工智能#推荐系统

    • 3-AI上推荐之逻辑回归模型与GBDT+LR(特征工程模型化的开端)

      2022-07-20

      #人工智能#推荐系统

    • 奇异值分解(SVD)的原理详解及推导

      2022-07-13

      #人工智能#推荐系统

    • 2-AI上推荐之隐语义模型(LFM)和矩阵分解(MF)

      2022-07-10

      #人工智能#推荐系统

    • 1-AI上推荐之协同过滤

      2022-07-02

      #人工智能#推荐系统

    • R-CNN and Fast R-CNN and Faster R-CNN and SPP

      2022-06-15

      #人工智能#目标检测

    • 10-Harris和Shi-Tomas算法

      2022-06-06

      #人工智能#OpenCV

    • 9-角点特征

      2022-06-03

      #人工智能#OpenCV

    • 8-图像变换-傅里叶变换

      2022-05-29

      #人工智能#OpenCV

    • 7-模板匹配与霍夫变换

      2022-05-15

      #人工智能#OpenCV

    • 6-边缘检测

      2022-05-08

      #人工智能#OpenCV

    • 5-直方图

      2022-04-28

      #人工智能#OpenCV

    • 4-图像平滑

      2022-04-26

      #人工智能#OpenCV

    • 3-形态学操作

      2022-04-22

      #人工智能#OpenCV

    • 2-几何变换

      2022-04-20

      #人工智能#OpenCV

    • 1-图像的基础操作

      2022-04-18

      #人工智能#OpenCV

    • 0-OpenCV简介

      2022-04-15

      #人工智能#OpenCV

    • Ubuntu18.04下安装OpenCV3.4

      2022-04-01

      #人工智能#OpenCV

    • 后 R-CNN时代, Faster R-CNN、SSD、YOLO 各类变体统治下的目标检测综述:Faster R-CNN系列胜了吗?

      2022-03-28

      #人工智能#目标检测

    • SKLearn学习总结

      2022-03-20

      #人工智能#SkLearn

    • 详细了解PyCharm支持的4种Python Interpreter和配置方法

      2022-03-02

      #Tools

    • Pycharm远程连接

      2022-02-26

      #Tools

    • JupyterLab学习总结

      2022-02-19

      #Tools#人工智能

    • Anaconda学习总结

      2022-02-13

      #Tools#人工智能

    • Ubuntu下安装lrzsz工具

      2022-02-08

      #Tools

    • 13-RNN

      2022-02-05

      #人工智能

    • 12-加速深度学习的算法和硬件-讲座

      2022-01-10

      #人工智能

    • 11-深度学习硬件算力基础-GPU与TPU与英特尔神经棒

      2021-12-26

      #人工智能

    • 10-经典卷积神经网络架构案例分析

      2021-12-16

      #人工智能

    • 9-迁移学习与fine-tuning

      2021-12-11

      #人工智能

    • 8-CNNS in Practice-卷积神经网络工程实践技巧

      2021-11-28

      #人工智能

    • 7-训练神经网络-下

      2021-11-09

      #人工智能

    • 6-训练神经网络-上

      2021-11-05

      #人工智能

    • 5-可视化并理解卷积神经网络

      2021-10-25

      #人工智能

    • 4-Convolutional-Neural-Networks

      2021-10-18

      #人工智能

    • 3-神经网络与反向传播

      2021-10-10

      #人工智能

    • 2-损失函数和梯度下降

      2021-09-25

      #人工智能

    • 1-KNN&线性分类器

      2021-09-20

      #人工智能

    • 0-机器学习基础

      2021-09-15

      #人工智能

    • 入门人工智能算法工程师-先来碗毒鸡汤

      2021-07-30

      #人工智能

    • 3-如何高效阅读机器学习顶会论文

      2021-07-15

      #论文

    • 2-论文ABC类与一二区的区别

      2021-06-10

      #论文

    • 1-学术小白

      2021-06-06

      #论文

    • 领域驱动设计在互联网业务开发中的实践

      2020-09-13

      #系统架构

    • 领域驱动设计

      2020-07-12

      #系统架构

    • DDD模式-从天书到实践

      2020-06-28

      #系统架构

    • DDD-马什么梅

      2020-06-14

      #系统架构

    • FaaS-又一个为未来

      2020-05-17

      #系统架构

    • 分布式ID的花拳绣腿

      2020-04-19

      #面试#系统架构#分布式

    • 4-Dockerfile上

      2020-04-08

      #Docker

    • 3-Docker存储卷

      2020-04-07

      #Docker

    • 2-Docker容器网络

      2020-04-06

      #Docker

    • 1-安装_使用Docker

      2020-04-05

      #Docker

    • 45-自增ID用完怎么办

      2020-03-11

      #MySql

    • 44-一些常见问题

      2020-03-09

      #MySql

    • 43-要不要使用分区表

      2020-03-08

      #MySql

    • 42-grant之后要跟着flush privileges吗

      2020-03-07

      #MySql

    • 41-如何最快的复制一张表

      2020-03-06

      #MySql

    • 40-insert语句的锁为什么这么多

      2020-03-04

      #MySql

    • 39-自增主键为什么不是连续的

      2020-03-03

      #MySql

    • 38-都说InnoDB好_那还要不要使用Memory引擎

      2020-03-02

      #MySql

    • 37-什么时候会使用内部临时表

      2020-03-01

      #MySql

    • SpringBoot_RabbitMQ配置参数详解

      2020-02-26

      #MQ

    • RabbitMQ安装

      2020-02-26

      #MQ

    • ELK日志平台-中

      2020-02-11

      #日志#ELK

    • ELK日志平台-上

      2020-02-10

      #日志#ELK

    • Java8新特性

      2020-02-08

      #Java

    • 1-Hystrix知多少

      2020-01-01

      #面试#Hystrix

    • 25-Nginx变量原理-应用

      2019-12-13

      #Nginx

    • 24-详解HTTP过滤模块

      2019-12-12

      #Nginx

    • 23-详解HTTP请求的11个阶段

      2019-12-11

      #Nginx

    • 22-如何找到处理请求的Server指令块

      2019-12-10

      #Nginx

    • 21-Nginx中的正则表达式

      2019-12-09

      #Nginx

    • 20-处理HTTP请求头部流程

      2019-12-09

      #Nginx

    • 19-Nginx中Listen指令用法

      2019-12-08

      #Nginx

    • 18-Nginx冲突的配置指令以谁为准

      2019-12-08

      #Nginx

    • 17-Nginx动态模块

      2019-12-07

      #Nginx

    • 16-Nginx容器

      2019-12-06

      #Nginx

    • 15-Worker集成协同工作的关键

      2019-12-06

      #Nginx

    • 14-Nginx连接池处理网络请求-内存池对性能的影响

      2019-12-05

      #Nginx

    • 13-Nginx模块

      2019-12-04

      #Nginx

    • 12-网络收发与Nginx事件模型

      2019-12-03

      #Nginx

    • 11-Nginx架构_相关流程

      2019-12-02

      #Nginx

    • LinkedHashMap实现原理_探险

      2019-11-28

      #Java#源码解析

    • HashTable实现原理_探险

      2019-11-22

      #Java#源码解析

    • HashMap实现原理_探险

      2019-11-20

      #Java#源码解析

    • LinkList实现原理_探险

      2019-11-17

      #Java#源码解析

    • ArrayList实现原理_探险

      2019-11-16

      #Java#源码解析

    • 10-OpenResty用Lua语言实现简单服务

      2019-11-12

      #Nginx

    • 9-SSL-Nginx

      2019-11-11

      #Nginx#SSL

    • 8-Nginx配置文件简易解析

      2019-11-10

      #Nginx

    • 7-Nginx安装详解

      2019-11-09

      #Nginx

    • 6-GoAccess实现可视化并实时监控access日志

      2019-11-08

      #Nginx#Tools#日志

    • 5-Nginx搭建具备缓存功能的反向代理

      2019-11-05

      #Nginx

    • 4-Nginx搭建静态资源Web服务器

      2019-11-01

      #Nginx

    • SpringBoot中jar为什么可以直接运行

      2019-10-30

      #面试#SpringBoot

    • SpringBoot全局异常处理

      2019-10-29

      #面试#SpringBoot

    • SpringBoot事件和监听器

      2019-10-29

      #面试#SpringBoot

    • SpringBoot启动原理

      2019-10-29

      #面试#SpringBoot

    • 36-为什么临时表可以重名

      2019-10-28

      #MySql

    • 35-join语句如何优化

      2019-10-27

      #MySql

    • 34-到底可不可以使用join

      2019-10-26

      #MySql

    • 33-我查这么多数据_会不会把数据库内存打爆

      2019-10-24

      #MySql

    • 32-为什么有kill不掉的语句

      2019-10-23

      #MySql

    • 31-误删数据后除了跑路_还能怎么办

      2019-10-22

      #MySql

    • 3-Nginx命令行演示-重载-热部署-切割

      2019-10-20

      #Nginx

    • 2-Nginx配置语法

      2019-10-17

      #Nginx

    • 1-Nginx的前世今生

      2019-10-15

      #Nginx

    • 0-Nginx访问日志配置及信息详解

      2019-10-11

      #Nginx

    • 分布式事务

      2019-09-19

      #面试#系统架构#分布式

    • 分布式锁

      2019-09-18

      #面试#系统架构#分布式

    • 分布式锁与事务

      2019-09-16

      #面试#系统架构#分布式

    • 数据结构与算法第四阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第三阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第二阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第一阶段学习图

      2019-09-16

      #算法

    • 2018-2019工作总结

      2019-09-15

      #搬砖结晶

    • 开发常见问题

      2019-09-14

      #Java

    • 52-算法实战(五)_如何用学过的数据结构和算法实现一个短网址系统

      2019-09-14

      #算法

    • 30-用动态的观点看加锁

      2019-09-13

      #MySql

    • 29-如何判断一个数据库是不是出问题了

      2019-09-12

      #MySql

    • 28-读写分离有哪些坑

      2019-09-11

      #MySql

    • 51-算法实战(四)_剖析微服务接口鉴权限流背后的数据结构和算法

      2019-09-09

      #算法

    • 50-算法实战(三)_剖析高性能队列Disruptor背后的数据结构和算法

      2019-09-06

      #算法

    • 49-算法实战(二)_剖析搜索引擎背后的经典数据结构和算法

      2019-09-02

      #算法

    • 27-主库出问题了_从库怎么办

      2019-08-29

      #MySql

    • 26-备库为什么会延迟好几个小时

      2019-08-28

      #MySql

    • 25-MySQL是怎么保证高可用的

      2019-08-27

      #MySql

    • 24-MySQL是怎么保证主备一致的

      2019-08-26

      #MySql

    • 48-算法实战(一)_剖析Redis常用数据类型对应的数据结构

      2019-08-25

      #算法

    • 47-并行算法_如何利用并行处理提高算法的执行效率

      2019-08-20

      #算法

    • 46-索引_如何在海量数据中快速查找某个数据

      2019-08-16

      #算法

    • 45-搜索_如何用A*搜索算法实现游戏中的寻路功能

      2019-08-13

      #算法

    • 44-B+树_MySQL数据库索引是如何实现的

      2019-08-10

      #算法

    • 43-向量空间_如何实现一个简单的音乐推荐系统

      2019-08-08

      #算法

    • 42-概率统计_如何利用朴素贝叶斯算法过滤垃圾短信

      2019-08-05

      #算法

    • 41-位图_如何实现网页爬虫中的URL去重功能

      2019-08-02

      #算法

    • 40-最短路径_地图软件是如何计算出最优出行路径的

      2019-07-28

      #算法

    • 39-拓扑排序_如何确定代码源文件的编译依赖关系

      2019-07-24

      #算法

    • 38-动态规划实战_如何实现搜索引擎中的拼写纠错功能

      2019-07-20

      #算法

    • 23-MySQL是如何保证数据不丢的

      2019-07-19

      #MySql

    • 22-MySQL有哪些“饮鸩止渴”提高性能的方法

      2019-07-18

      #MySql

    • 21-为什么我只改一行的语句_锁还这么多

      2019-07-17

      #MySql

    • 20-幻读是什么_幻读有什么问题

      2019-07-16

      #MySql

    • 19-只查一行的语句为何执行这么慢

      2019-07-15

      #MySql

    • 37-动态规划理论_一篇文章带你彻底搞懂最优子结结构_无后效性_重复子问题

      2019-07-13

      #算法

    • 36-初识动态规划_如何巧妙解解决“双十一”购物时的凑单问题

      2019-07-09

      #算法

    • 35-回溯算法_从电影《蝴蝶效应》中学习回溯算法的核心思想

      2019-07-06

      #算法

    • 34-分治算法_谈一谈大规模计算框架MapReduce中的分治思想

      2019-07-04

      #算法

    • 33-贪心算法_如何用贪心算法实现Huffman压缩编码

      2019-07-01

      #算法

    • 32-AC自动机_如何用多模式串匹配实现敏感词过滤功能

      2019-06-25

      #算法

    • 18-SQL语句逻辑相同_性能却为何差异巨大

      2019-06-23

      #MySql

    • 17-如何正确的显示随机消息

      2019-06-22

      #MySql

    • 16-MySQL中order by是如何工作的

      2019-06-20

      #MySql

    • 15-日志和索引有关问题

      2019-06-18

      #MySql

    • RocketMQ探索

      2019-06-17

      #MQ

    • 14-count(\*)为什么这么慢

      2019-06-16

      #MySql

    • 13-为什么表数据删掉一半而表文件大小不变

      2019-06-15

      #MySql

    • 12-为什么我的MySQL会“抖”一下

      2019-06-13

      #MySql

    • 11-怎么给字符串字段加索引

      2019-06-12

      #MySql

    • 10-MySQL为什么有时候会选错索引

      2019-06-11

      #MySql

    • 3-3-Docker容器用法

      2019-06-10

      #Docker

    • RabbitMQ详解

      2019-06-08

      #MQ

    • 5-分布式会话_锁_事务_高并发系统设计

      2019-06-07

      #面试

    • 3.2-Docker镜像用法

      2019-06-05

      #Docker

    • 4-Zookeeperer使用场景

      2019-06-04

      #面试

    • Dubbo知多少

      2019-06-03

      #面试#Dubbo

    • 3-分布式系统中接口调用顺序性如何保证

      2019-06-03

      #面试#Dubbo

    • 2-分布式系统中接口的幂等性该如何保证_比如不能重复扣款

      2019-06-02

      #面试#Dubbo

    • 1-分布式系统连环炮_Dubbo有关知识点

      2019-06-01

      #面试#Dubbo

    • 9-普通索引和唯一索引如何选择

      2019-05-30

      #MySql

    • 8-事务到底是隔离的还是不隔离的

      2019-05-29

      #MySql

    • 7-行锁功过_怎么减少行锁对性能的影响

      2019-05-28

      #MySql

    • 6-全局锁和表锁_给表加个字段怎么有这么多阻碍

      2019-05-27

      #MySql

    • 5-深入浅出索引(下)

      2019-05-26

      #MySql

    • 4-深入浅出索引(上)

      2019-05-25

      #MySql

    • 3.1-Docker用法

      2019-05-24

      #Docker

    • 2.2-Docker启动报错

      2019-05-23

      #Docker

    • 3-事务隔离_为什么你改了我还看不见

      2019-05-21

      #MySql

    • MySQL重要日志

      2019-05-20

      #面试#MySql

    • 2-日志系统_一条SQL更新语句是如何执行的

      2019-05-20

      #MySql

    • 1-基础架构_一条SQL查询语句是如何执行的

      2019-05-19

      #MySql

    • 2.1-Docker安装与部署

      2019-05-18

      #Docker

    • 1-Docker缘由

      2019-05-12

      #Docker

    • 0-Docker配置国内免费registry_mirror

      2019-05-08

      #Docker

    • 5-分布式搜索引擎如何部署

      2019-04-26

      #Elasticsearch#面试

    • 4-ES如何在几十亿数据场景下优化查询性能

      2019-04-23

      #Elasticsearch#面试

    • 3-ES读写数据的工作原理

      2019-04-22

      #Elasticsearch#面试

    • 2-分布式搜索引擎的架构是如何设计的

      2019-04-21

      #Elasticsearch#面试

    • 1-面试官对分布式搜索引擎的4个连环炮

      2019-04-20

      #Elasticsearch#面试

    • 8-如何设计一个消息队列

      2019-04-10

      #面试#MQ

    • 7-消息队列如何解决延迟_过期失效_积压消息等问题

      2019-04-10

      #面试#MQ

    • JWT学习

      2019-04-09

      #Java#Jwt

    • 6-消息队列如何保证消息的顺序性

      2019-04-08

      #面试#MQ

    • 5-消息队列如何保证可靠性传输(消息丢了怎么办)

      2019-04-07

      #面试#MQ

    • 4-消息队列消费到重复数据怎么办

      2019-04-06

      #面试#MQ

    • 3-消息队列如何保证高可用性

      2019-04-03

      #面试#MQ

    • 2-消息队列引入原原因_优缺点_应用场景_技术选型

      2019-04-02

      #面试#MQ

    • 1-面试官对消息队列的10个连环炮

      2019-04-01

      #面试#MQ

    • Git常见200+条命令

      2019-03-28

      #Git

    • 8-GitLab简单操作

      2019-03-25

      #Git

    • 31-Trie树_如何实现搜索引擎的搜索关键词提示功能

      2019-03-12

      #算法

    • 7-基于GitHub进行团队协作

      2019-03-09

      #Git

    • 30-字符串匹配基础下_如何借助BM算法轻松理解KMP算法

      2019-03-06

      #算法

    • 29-字符串匹配基础中_如何实现文本编辑器中的查找功能

      2019-03-03

      #算法

    • 28-字符串匹配基础上_如何借助哈希算法实现高效字符串匹配

      2019-03-01

      #算法

    • 6-GitHub的认识与使用

      2019-02-25

      #Git

    • 5-Git集成使用禁忌

      2019-02-15

      #Git

    • 27-深度和广度优先搜索_如何找出社交网络中的三度好友关系

      2019-02-13

      #算法

    • 26-图的表示_如何存储微博微信等社交网络中的好友关系

      2019-02-10

      #算法

    • 国内地图坐标系转换

      2019-02-08

      #地图坐标转换

    • 4-Git多人单分支集成协作时的常见场景

      2019-02-08

      #Git

    • 微服务架构-下篇

      2019-02-06

      #系统架构

    • 微服务架构-中篇

      2019-02-03

      #系统架构

    • 微服务架构-上篇

      2019-02-01

      #系统架构

    • Python数据分析工具

      2019-01-30

      #Python

    • Python高级篇

      2019-01-29

      #Python

    • Python中级篇_下

      2019-01-28

      #Python

    • Python中级篇_上

      2019-01-27

      #Python

    • Python初级篇

      2019-01-26

      #Python

    • Python前世今生

      2019-01-25

      #Python

    • 源码分析-MyBatis数据源与连接池

      2019-01-23

      #MyBatis

    • MyBatis初始化做了什么

      2019-01-21

      #MyBatis

    • 3-Git与GitHub简单同步

      2019-01-20

      #Git

    • 2-Git常用场景

      2019-01-18

      #Git

    • 1-Git安装及简单操作

      2019-01-15

      #Git

    • SpringCloud探索与实战

      2019-01-13

      #SpringCloud

    • MyBatis架构与原理

      2019-01-09

      #MyBatis

    • MyBatis原理概括

      2019-01-08

      #MyBatis

    • MyBatis多数据源配置

      2019-01-07

      #MyBatis

    • JVM(八):Jvm知识点概览

      2019-01-06

      #Jvm

    • JVM(七):Jvm调优-工具

      2019-01-05

      #Tools#Jvm

    • JVM(六):Java服务GC参数调优案例

      2019-01-03

      #Jvm

    • JVM(五):GC分析

      2019-01-02

      #Jvm

    • JVM(四):Jvm调优-命令

      2019-01-01

      #Jvm

    • JVM(三):GC算法_垃圾收集器

      2019-01-01

      #Jvm

    • 25-堆的应用_如何获取Top10最热门的搜索关键词

      2018-12-30

      #算法

    • 24-堆和堆排序_为什么说堆排序没有快速排序快

      2018-12-29

      #算法

    • 23-递归树_如何借助树来求解递归算法的时间复杂度

      2018-12-27

      #算法

    • 22-红黑树下_实现红黑树的技巧

      2018-12-25

      #算法

    • 21-红黑树上_为什么工程中都用红黑树这种二叉树

      2018-12-23

      #算法

    • 应用架构演变过程

      2018-12-20

      #Photo

    • MyBatis常用插件

      2018-12-14

      #MyBatis

    • JVM(二):Jvm内存结构

      2018-12-11

      #Jvm

    • JVM(一):Java类加载机制

      2018-12-10

      #Jvm

    • Map-Reduce学习

      2018-11-20

      #BigData

    • 20-二叉树基础下_有了如此高效的散列表—_为什么还需要二叉树

      2018-11-18

      #算法

    • 19-二叉树基础上_什么样的二叉树适合用数组来存储

      2018-11-16

      #算法

    • 18-哈希算法下_哈希算法在分布式系统中有哪些应用

      2018-11-15

      #算法

    • 17-哈希算法上_如何防止数据库中的用户信息被脱库

      2018-11-13

      #算法

    • Hadoop学习

      2018-11-10

      #BigData

    • 16-散列表下_为什么散列表和链表经常一起使用

      2018-11-09

      #算法

    • 15-散列表中_如何打造一个工业级水平的散列表

      2018-11-09

      #算法

    • 14-散列表上_Word文档中的单词拼写检查功能如何实现

      2018-11-08

      #算法

    • 13-跳表_为什么Redis一定要用跳表来实现有序集合

      2018-11-06

      #算法

    • 12-二分查找下_如何快速定位IP对应的省份地址

      2018-11-04

      #算法

    • 11-二分查找上_如何用最省内存的方式实现快速查找功能

      2018-11-02

      #算法

    • 10-排序优化_如何实现一个通用的高性能的排序函数

      2018-11-01

      #算法

    • 9-线性排序_如何根据年龄给100万用户数据排序

      2018-10-28

      #算法

    • 8-排序下_如何用快排思想在O(n)内查找第K大元素

      2018-10-24

      #算法

    • 7-排序上_为什么插入排序比冒泡排序更受欢迎

      2018-10-22

      #算法

    • 6-递归_如何用三行代码找到最终推荐人

      2018-10-20

      #算法

    • 高性能队列-Disruptor

      2018-10-18

      #MQ#Java

    • 5-队列_队列在线程池等有限资源池中的应用

      2018-10-16

      #算法

    • 4-栈_如何实现浏览器的前进和后退功能

      2018-10-13

      #算法

    • Quartz学习

      2018-10-09

      #Java#定时任务#Quartz

    • 3-链表下_如何轻松写出正确的链表代码

      2018-10-06

      #算法

    • 2-链表上_如何实现LRU缓存淘汰算法

      2018-10-06

      #算法

    • 1-数组_为什么很多编程语言中数组都从0开始编号

      2018-10-02

      #算法

    • 复杂度分析-下部

      2018-09-29

      #算法

    • 复杂度分析-上部

      2018-09-28

      #算法

    • 数据结构与算法概览

      2018-09-26

      #算法

    • 请求与响应

      2018-09-17

      #HTTP

    • TextRank基本了解

      2018-09-01

      #算法

    • (5)Hexo踩坑_主题优化

      2018-08-21

      #Hexo-yilia

    • (4)Hexo撰写文章

      2018-08-19

      #Hexo-yilia

    • (3)Hexo常用命令详解

      2018-08-19

      #Hexo-yilia

    • (2)Hexo配置文件详解

      2018-08-17

      #Hexo-yilia

    • 关于Firewalld二三事

      2018-08-15

      #Linux

    • (1)Hexo博客搭建

      2018-08-11

      #Hexo-yilia

    • 修改Vim_tab为4个空格

      2018-08-06

      #Linux

    • CentOs7防火墙开端口测试

      2018-08-01

      #Linux

    • 10-Redis的并发竞争问题及生产环境集群部署架构

      2018-07-30

      #面试#Redis

    • 9-如何保证缓存与数据库双写时的数据一致性

      2018-07-29

      #面试#Redis

    • 8-如何应对缓存雪崩及穿透问题

      2018-07-28

      #面试#Redis

    • 7-Redis集群模式原理

      2018-07-26

      #面试#Redis

    • Redis所需安装包及各种依赖

      2018-07-25

      #Redis

    • 6-Redis挂掉重启后数据如何进行恢复

      2018-07-24

      #面试#Redis

    • 5-Redis高并发高可用有关问题

      2018-07-21

      #面试#Redis

    • 4-Redis过期策略_手写LRU

      2018-07-19

      #面试#Redis

    • 3-Redis常用数据类型及使用场景

      2018-07-18

      #面试#Redis

    • 2-Redis线程模型_单线程效率高的原因

      2018-07-17

      #面试#Redis

    • 1-项目中缓存如何使用

      2018-07-16

      #面试#Redis

    • AWK三剑客

      2018-07-15

      #Linux

    • Maven插件-assembly插件基本使用

      2018-06-28

      #Java#Maven

    • Maven知多少

      2018-06-27

      #Java#Maven

    • 1-分库分表知多少

      2018-06-25

      #面试#MySql

    • MySQL基本用法

      2018-06-21

      #MySql

    • MySQL安装

      2018-06-20

      #MySql

    • Swagger2学习与集成

      2018-05-20

      #SpringBoot#Swagger2

    • SpringBoot面试

      2018-05-16

      #面试#SpringBoot

    • SpringBoot+Docker简单配置

      2018-05-15

      #Docker#SpringBoot

    • Java定时任务

      2018-05-13

      #Java#定时任务

    • Netty知多少

      2018-05-05

      #网络编程

    • Java编程瞎侃

      2018-04-18

      #Java

    • Vim常用操作

      2018-03-25

      #Linux

    • Linux定时任务Crontab详解

      2018-03-23

      #Linux

    • Linux常用插件及乱码

      2018-03-20

      #Linux

    • Linux安装常用软件

      2018-03-19

      #Linux

    • Idea常用插件及个性化配置

      2018-03-18

      #Tools#IDEA

    • Host-Vm相互ping不同到的解决办法

      2018-03-16

      #Linux

    • GitHub
    • 廖雪峰
    • 纯洁的微笑
    • 我没有三颗心脏
    • 阿里巴巴开源镜像网站
    一个脱离了高级趣味的人!