Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

先看锁的分类: 按照是否共享,可以分为: 共享锁(读锁) 排他锁(写锁) 按照锁的粒度,可以分为: 表锁 行锁 要谈锁,我认为是要结合事务隔离级别一起谈的,MySQL的事务隔离级别有: Read Uncommitted Read Committed Repeatable Read Serializable InnoDB默认的是行锁,而且行锁是加给索引的,所以如果没有索引,那也就只...

讨论MySQL的MVCC的同时还应该讨论MySQL中的锁,不过本文先就MVCC进行讨论。 MVCC叫做多版本并发控制,它主要是为了实现多个事务之间的隔离性而提出的一种更高效的方法,为什么说更高效呢,因为锁也可以实现,只不过相比之下比较低效。 MVCC的核心有三: MySQL每一行记录的隐藏列之DATA_TRX_ID MySQL每一行记录的隐藏列之``DATA_ROLL_PTR` READ ...

首先,它是面向连接的,也就是它的三次握手和四次挥手,保证了每次发送数据前先建立连接,发送完数据后断开连接 它的确认和重传机制。它会对每次发送的数据包进行一个确认,如果过了很久发送端还没有收到这个确认,就会进行重传。 数据校验。头部有校验和,用以检验数据包的完整性。 流量控制:通过滑动窗口以及连续ARQ协议进行数据包的接收,而且当接收方来不及处理发送方的数据,能通过滑动窗口,提示发送方降低发...

在讨论TCP的三次握手与四次挥手之前,首先我们需要了解TCP报文格式: 这里面需要留意的有: 序列号:标识本次数据包的序号 确认号:对于发送发送方数据包的确认,值是收到的数据包的序列号+1,即下次期待收到的数据包序列号 标志位: 下图展示了三次握手以及四次回收的过程: 这里需要注意各个阶段的状态。 下面分别进行分析 三次握手阶段: 客户端向服务端发送SYN数据包,表示想和服务端建...

同步与异步,阻塞与非阻塞这几个词可以说是很常见了,但是网络上关于它们的解释却又众说纷纭,其中一个主要原因就是我们是在脱离了上下文在谈论这个问题,所以本文主要是基于Network IO来讨论。 在《UNIX网络编程:套接字联网API》一书中,一共比较了五种IO模型: 阻塞式IO (blocking IO) 非阻塞式IO (non-blocking IO) IO多路复用(IO multip...
OS

最近在重新看JVM的内容,这篇文章重新梳理一下垃圾回收中的相关内容。 Java中的垃圾回收(Garbage Collection, GC)指的是回收堆和方法区中不再使用被使用到的对象,即垃圾。 GC中需要考虑的三个主要问题: 什么是垃圾:即哪些对象可以被定义为垃圾 何时回收 如何回收 本文将针对上述三个问题一一解答。 什么是垃圾? 这里就涉及到两种判断对象是否存活的算法: 引用计数法...
Java

最近发现JUC包里除了AtomicLong外还有LongAdder,所以打算研究一下它俩的异同。 AtomicLong AtomicLong是JUC包中的原子类,通过CAS来实现long类型的加减。 那么既然都有AtomicLong类了,为什么还要有一个LongAdder类?因为从名字来看,LongAdder也是用来操作long类型的。 LongAdder的设计思想 先翻译一段官方文档里...
Java

CountDownLatch 多线程的使用中往往有这样的场景:某个线程需要等到其他线程执行完毕后才能继续执行,即线程的“等待其他线程”的功能(注意这里说的不是wait())。这时候就可以用CountDownLatch类来实现,当然了,Thread.join()方法也具有这个功能,只不过相比之下,CountDownLatch功能更加丰富。 通过一个例子来看下: 1234567891011121...
Java

等待/唤醒机制是多线程之间进行通信(同步)的一种方式,这里对它在Java中的使用做一个总结。 Object的wait()和notify() 这个算是比较原始的一种等待/唤醒机制,这两个方法都是Object类中定义的方法,也就是说每个对象都拥有这两个方法。 它们一般都是和synchronized关键字配合使用的。 Condition接口 Condition接口是为了对Lock的一个等待/通知机...
Java

前面的文章中,我们了解了Java中的Lock接口,以及相关的实现类ReentrantLock、ReentrantReadWriteLock。它们都是通过聚合一个AQS来实现的。同时讨论了为什么有了Synchronized关键字之后还要有Lock。 我们知道Synchronized关键字是Monitor机制在Java中的一种具体实现,每个对象都有wait()、notify()和notifyA...
Java