- 博客(6)
- 资源 (16)
- 收藏
- 关注

原创 MySQL下并发重复插入的唯一性问题
1. 背景在高并发场景中,经常会遇到并发重复数据插入,没有唯一索引(比如有逻辑删除)却要保证唯一性的问题。比如分布式告警计算中,多个计算实例同时计算出同一个告警并同时插入相同的告警记录到数据库中,这时应该只插入一条记录。本文分析了在MySQL的InnoDB引擎中解决这类的问题的4种思路和相关方案。2. 问题提出InnoDB下,两个事务同时插入同一条数据,如何保证只有一条数据被插入?...
2019-08-24 22:36:40
13652
9
原创 并发、并行和分布式(Concurrent, Parallel, and Distributed)
概述在复杂的系统开发中,经常会遇到并发编程、高并发、并行计算、分布式系统、分布式计算、分布式存储这些词语,那么这些词背后的并发、并行、分布式到底有什么区别呢?总的来说,这些概念有许多重叠,没有特别清晰的划分[1]。但是从它们最常见的含义上,可以从以下几个方面来区分。从处理器上看从处理器个数来区分并发处理:是在同一个处理器上同时做多件事。如下图所示:并行处理:在多个...
2019-08-15 22:15:27
2456
原创 Java内存模型
一方面,在多处理器架构中,单个处理器一般都有自己的高速缓存,既然是缓存,就有可能和主存不同步。通常我们不会让线程间的每次读写都做同步,因为这样性能代价太高。另外一个方面,也是为了性能,编译器可能会对语句进行重排,而重排也会导致多线程的数据一致性问题。而Java内存模型(Java Memory Model (JMM))就定义了多线程程序被允许的行为,同时也规定了代码重排的规则。有了这些规则,...
2019-08-08 19:04:55
276
原创 【Java并发】synchronized不可以被中断?
synchronized方法可以被中断我们常说synchronized不可以被中断,并不指synchronized方法不可中断,比如:public class InterruptSynMethodTest { public synchronized void foo() throws InterruptedException { System.out.println("foo be...
2019-08-06 11:10:57
6088
1
原创 使用GO语言调用Windows API
一、背景为了更好兼容Windows,有时候需要直接在Go程序里面去调用Windows系统的API,比如在Go程序里面直接控制Windows窗口。二、环境搭建Windows下GO的下载、安装和配置Windows下GO的下载、安装和配置可参考:GO语言下载、安装、配置使用Visual Studio Code来搭建GO开发环境采用微软开源的Visual Studio C...
2019-08-01 20:15:42
6316
原创 诗解UML关系
UML关系泛实组聚关依赖,六种关系强到弱。(六种关系及强弱)泛化实现同一类,组合聚合是关联。(分类)泛化继承三角实,实现接口三角虚。(泛化、实现的含义和画法)整体部分有两种,聚合可离组合否。(组合、聚合的含义)组合实菱聚合空,箭指部分实线凑。(如何画组合、聚合)关联拥有可双向,实线箭指被拥有。(关联的含义画法)依赖使用弱关联,被用之前虚箭头。(依赖的含义画法)[简化版]泛实...
2015-04-11 17:54:29
433
1
LoadRunner联机帮助(英文版和中文版)
2011-02-13
各种Hash函数(JAVA版)
2010-05-20
计算MD5码C++代码
2010-05-20
[英文]10学分钟会SQL (Sams Teach Yourself SQL in 10 Minutes)
2008-09-10
JavaScript.Pocket.Reference
2008-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人