[总结]Spring事务管理中@Transactional的参数

@Transactional注解就代表支持事务管理,@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。如果这个注解在类上,那么表示该注解对于所有该类中的public方法都生效;如果注解出现在方法上,则代表该注解仅对该方法有效,会覆盖先前从类层次继承下来的注解。 @Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Tran...阅读全文

Mobabel 2020-03-08 11:08 Mobabel

G1垃圾回收器详解

G1垃圾回收器详解在前一篇的文章《HotSpot垃圾回收算法概述》里面,对于Serial, Parallel和CMS几种垃圾回收器做了比较详细的描述。但是对于G1的叙述是比较粗糙的。这篇文章则是提供了G1垃圾回收器的详细分析。 概述 G1垃圾回收器是在Java7 update 4之后引入的一个新的垃圾回收器。G1是一个分代的,增量的,并行与并发的标记-复制垃圾回收器。它的设计目标是为了适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间(pause time),同时兼顾良好的吞吐量。...阅读全文

简书 2020-03-01 11:39 简书

可能是最全面的G1学习笔记

引子最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题。总体来讲,对于G1我有几个疑惑,希望能够在这篇文章中得到解决。 G1出现的初衷是什么? G1适合在什么场景下使用? G1的trade-off是什么? G1的详细过程? 如何理解G1的gc日志? G1的调优思路? G1和CMS的对比和选择? 一、基础知识1. 初衷在G1提出之前,经典的垃圾收集器主要有三种类型:串行收集器、并行收集器和并发标记清除收集器,这三种收集器分别可以是满足...阅读全文

知乎 2019-01-07 00:00 知乎

工作效率低?这个锅远程办公不背

疫情仍在继续,每个人为这个社会做贡献的方式,除了做好防控和不必要的恐慌外,我们更应该做好本职工作,以确保社会经济的正常运转,要做到“各司其职”。 从2月3号开始,越来越多企业选择了远程办公模式。但因为沟通不畅所带来的信息不对称、效率低下,内耗等问题,对管理者和员工都是不小的考验。 远程办公三大疑问:如何远程办公?如何高效远程办公?如何高效协同他人一起远程办公? 别急,这就为大家一个个来解答。 一、如何远程办公? 据阿里统计,2月3日,...阅读全文

java技术圈 2020-02-24 13:18:25 CORNERSTONE

分布式一致性之两阶段提交协议、三阶提交协议

前言最近在学习一些分布式系统中的基础知识,看到了前人总结的非常好的博客。在作者申明可以转载的情况下,将它们转载到自己的专栏。既为了建立一个完整的知识体系,也为了更好的理解原文。接下来的篇幅末尾,会将参考的篇幅列举出来,感兴趣的可以读一下参考的博客。笔者是在前人博客的基础上,加上自己的理解和适当的配图,使得文章更易理解。原文内容随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发...阅读全文

MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进

当期文章 POLARDB · 新品介绍 · 深入了解阿里云新一代产品 POLARDB HybridDB · 最佳实践 · 阿里云数据库PetaData MySQL · 捉虫动态 · show binary logs 灵异事件 MySQL · myrocks · myrocks之Bloom filter MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进 MySQL · 特性分析 · 利用gdb跟踪MDL加锁过程 MySQL · 源码分析 · Innodb 引擎Redo日志存储...阅读全文

mysql.taobao.org 7869-04-01 00:00 mysql.taobao.or 等

MySQL innodb引擎的事务执行过程_数据库技术_Linux公社

通过这篇文章可以了解到下面几个问题 问题1:MySQL innodb引擎的update的流程; 问题2:以及写redo,undo,binlog的顺序,然后刷盘的顺序又是什么呢? 问题3:以及刷新redo和脏数据的相关进程; 总结以上的三个问题,其实就是关于MySQL innodb事务的流程;那么接下来,我将详细总结下一一一:MySQL innodb的事务流程: 1.接下来我就以update为例,讲解下MySQL5.6的innodb的事务流程,总结起来就是: 镇对update he set nam...阅读全文

Linux系统门户网站 2018-04-26 00:00 Linux系统门户网站

解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题

源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。 1. 问题原因分析 为了安装最新版本的Node.js(最新版本的Node.js使用了C++ 11中,而C++ 11需要code>gcc 4.8+才能支持),将gcc升级到了...阅读全文

IT笔录 2015-10-17 00:00 IT笔录

Go 生态圈的 K/V 数据库 benchmark

Go生态圈有好几个K/V数据库,我们经常用它来做我们的存储引擎,但是这些数据库引擎的性能如何呢?本文试图用性能而不是功能的数据考察这些数据库,我测试了几种场景: 并发写、并发读、单一写并发读、并发删除,得出了一些有趣的数据。 测试在两台机器上测试的,一台机械硬盘,一台固态硬盘,使用256字节作为value值的大小,9个字节作为key的大小,测试简单的读写删除操作,并没有测试批量读写操作。 每个测试case测试1分钟。 代码: kvbench K/V 数据库 Rocksdb: RocksDB是Fa...阅读全文

一文解决内存屏障

内存屏障是硬件之上、操作系统或JVM之下,对并发作出的最后一层支持。再向下是是硬件提供的支持;向上是操作系统或JVM对内存屏障作出的各种封装。内存屏障是一种标准,各厂商可能采用不同的实现。 本文仅为了帮助理解JVM提供的并发机制。首先,从volatile的语义引出可见性与重排序问题;接下来,阐述问题的产生原理,了解为什么需要内存屏障;然后,浅谈内存屏障的标准、厂商对内存屏障的支持,并以volatile为例讨论内存屏障如何解决这些问题;最后,补充介绍JVM在内存屏障之上作出的几个封装。为了帮助理解...阅读全文

程序猿说你好 2017-12-28 00:00 程序猿说你好

并发研究之CPU缓存一致性协议(MESI) - 枫飘雪落

CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。 时间局部性...阅读全文

博客园 2018-05-03 16:27 博客园

GoLang内存模型

一、前言Go语言的内存模型规定了一个goroutine可以看到另外一个goroutine修改同一个变量的值的条件,这类似java内存模型中内存可见性问题(Java内存可见性问题可以参考拙作:Java并发编程之美一书)。。当多个goroutine并发同时存取同一个数据时候必须把并发的存取的操作顺序化,在go中可以实现操作顺序化的工具有高级的通道(channel)通信和同步原语比如sync包中的Mutex(互斥锁)、RWMutex(读写锁)或者和sync/atomic中的原子操作。二、Happens...阅读全文

知乎 2019-03-03 00:00 知乎

死磕 java同步系列之JMM(Java Memory Model) - 极术社区

彤哥读源码 · 2019年10月06日 死磕 java同步系列之JMM(Java Memory Model) Java (手机横屏看源码更方便)简介Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果。硬件内存模型在正式讲解Java的内存模型之前,我们有必要先了解一下硬件层面的一些东西。在现代计算机的硬件体系中,CPU的运算速度是非常快的,远远高于它从存储介质读取数据的速度,这里的存储介质有很多,比...阅读全文

AIoT 开发者之家 2020-02-20 22:55 AIoT 开发者之家

如何把Go调用C的性能提升10倍? - LinkerLin的个人空间

目前,当Go需要和C/C++代码集成的时候,大家最先想到的肯定是CGO。毕竟是官方的解决方案,而且简单。 但是CGO是非常慢的。因为CGO其实一个桥接器,通过自动生成代码,CGO在保留了C/C++运行时的情况下,搭建了一个桥来沟通C/C++世界和Go的世界。这就意味着,兼容性很好,但是对C的函数的调用,必须先把当前的goroutine挂起,并切换执行栈到当前的线程M的主栈(大小2MB)。如果不做这个操作,那么只能在goroutine的栈上执行C函数调用,可是,goroutine的栈一般都很小,很...阅读全文

OSCHINA 2017-09-06 14:48 OSCHINA

LSM 算法的原理是什么?

其实大家提的 LSM 最开始论文里面都使用树做搜索结构的, 现在在用的都不是严格的树结构了。 如[这篇文章](https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/)解释的一样,从最朴素的角度上来讲可以把`SSTable(sorted string table)`作为一个连续的kv构成的块。SSTable +-+---+----+---+ |k| v | k | v | ... +-+---+--...阅读全文

知乎 2017-03-31 00:00 知乎

LMDB中的mmap、Copy On Write、MVCC深入理解——讲得非常好,常来看看! - bonelee

lmdb创建完env对象,打开时,会做data file和lock file的mmap映射: env->me_lfd = open(lpath, O_RDWR|O_CREAT|MDB_CLOEXEC, mode); void *m = mmap(NULL, rsize, PROT_READ|PROT_WRITE, MAP_SHARED, env->me_lfd, 0); env->me_txns = m; env->me_fd = open(dpath, oflags, mode); env->...阅读全文

博客园 2017-05-24 17:57 博客园

根据拓扑图理解golang的sync.Map工作原理 - 星期八

fizz 153 根据拓扑图理解golang的sync.Map工作原理 golang sync map 源码 拓扑图 发布于 2019-11-08  约 4 分钟 sync.Map的拓扑关系图 读懂关系图需要了解的几个关键点 var expunged = unsafe.Pointer(new(interface{})) type Map struct type readOnly struct type entry struct func (m *Map) Load(key interface{}...阅读全文

SegmentFault 思否 2019-11-08 00:00 SegmentFault 思否 等

HTTP/2 学习笔记

Why HTTP/2HTTP/1.1 是文本协议对用户友好,但对计算机不友好 (parse 不高效)TCP 连接管理TCP 慢启动,因此尽可能的复用连接 (keep-alive)一个 TCP 连接上只能有一个 request/response,可以使用 pipeline 实现并发请求,但会有头部阻塞问题,现代浏览器默认不启用 pipeline,而是通过对一个域名同时建立多个连接 workaround头部 field 重复,造成资源浪费资源没有优先级HTTP/2 特性:HTTP/2 没有改变 HT...阅读全文

SSH原理与运用(二):远程操作与端口转发

接着前一次的文章,继续介绍SSH的用法。 ======================================= SSH原理与运用(二):远程操作与端口转发 作者:阮一峰 (Image credit: Tony Narlock) 七、远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。 上一节的操作,就是一个例子:   $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id...阅读全文

阮一峰的网络日志 2011-12-23 00:00 阮一峰的网络日志