架构系列——volatile的可见性、防止指令重排序以及不能保证原子性的解决方式
前言 volatile的使用与线程安全关系密切,主要作用是使变量在多个线程间可见,另外也有防止指令重排的作用。 比如主内存中有变量a=0,线程1设置a=10,线程2再操作a的时候,是以a=10的基础上进行操作,否则会影响逻辑!01volatile的可...
前言 volatile的使用与线程安全关系密切,主要作用是使变量在多个线程间可见,另外也有防止指令重排的作用。 比如主内存中有变量a=0,线程1设置a=10,线程2再操作a的时候,是以a=10的基础上进行操作,否则会影响逻辑!01volatile的可...
一. 需求分析 我们在学习数据库查询时,经常会遇到关于分组和聚合函数的查询,比如查询每门课程的最高分,每位同学的平均分,其实这些都是比较一般的问题。但如果遇到查询每门课程成绩的前几名问题,就会变的很棘手,今天老谢给你唠唠这方面的问题。 比如我们现在有...
一. 引言 关于排序法算法其实有很多种,例如简单的有冒泡排序、选择排序,复杂一些的有快速排序、插入排序等,今天平哥就给大家讲解一下插入排序的实现过程。 二. 排序分析 插入排序,顾名思义就是每次排序时都是对插入的数据进行排列。例如,下面平哥给大家举个...
导读:消息的发送方式有哪几种?存储消息的可靠性面临哪些挑战?消费消息的确认机制是怎样的?本文通过分析消息流转的整个过程,从消息发送、消息存储和消息消费三个阶段介绍RocketMQ是如何保证消息的可靠性的。分布式系统中一个重要的前提假设是所有的网络传输...
一. 事务特性 事务管理是企业级应用程序开发中必不可少的技术,主要用来确保数据的完整性和一致性。 而所谓的事务,其实就是一系列的动作,它们被当做一个单独的工作单元,这些动作要么全部完成,要么全部不起作用。在事务中,有四个关键属性(ACID): 原子性...