AQS中共享锁源码解析
AQS中的非共享锁,也就是我们所说的排他锁,相信大家都不陌生,比如ReentrantLock
中的公平锁以及非公平锁。最近小编心血来潮看了看AQS中的共享锁,于是写点东西分享下,欢迎指正。
AQS中共享锁的实现,其实很多,比如大家耳熟能详的CountDownLatch
,ReentrantReadWriteLock
,读写锁大部分也都是用了共享锁的思想。还是按照以前看互斥锁的思路来看。
AQS中的非共享锁,也就是我们所说的排他锁,相信大家都不陌生,比如ReentrantLock
中的公平锁以及非公平锁。最近小编心血来潮看了看AQS中的共享锁,于是写点东西分享下,欢迎指正。
AQS中共享锁的实现,其实很多,比如大家耳熟能详的CountDownLatch
,ReentrantReadWriteLock
,读写锁大部分也都是用了共享锁的思想。还是按照以前看互斥锁的思路来看。
RDD概念:Resilient Distributed Datasets 弹性分布式数据集,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(transformation操作)而创建。RDD可看作一个spark的对象,它本身存在于内存中,如对文件计算是一个RDD等。
对于系统异常时,一般采取重启tomcat的方式来快速回复服务,我们应该考虑保留一台有问题的机器处于服务下线状态,方便导出当时的系统快照,分析异常原因。下线并不是指关闭tomcat,而是类似于修改ng或者修改分布式系统中标识机器可用的那个东西,以达到没有请求能够访问到本台机器,但是机器的tomcat还是运行状态
HBase是一个key-value数据库,逻辑上看它一行可以包含多个列,列数可以不固定,这是HBase的一个优势。有一点需要注意:HBase虽然一个rowkey可以对应很多列(column),但是由于key-value数据库的性质,每存一列,rowkey就同样也要再存一次,HBase也不例外。因此rowkey如果过大,会导致存储量变得很大会导致存储量变得很大。
JStack是利用Thread Dump,能够让使用者看到线程的运行状态。他的使用是要比看线上日志可靠的多的,因为线上日志可能并没有处理某些异常的堆栈,因此利用JStack定位问题是很准确、快速的。
This is a highlight test.
alert('Hello World!');
print 'helloworld'
alert( 'Hello, world!' );
print 'helloworld'
def foo
puts 'foo'
end
def foo
puts 'foo'
end
1
2
3
def foo
puts 'foo'
end
#include <iostream>
using namespace std;
void foo(int arg1, int arg2)
{
}
int main()
{
string str;
foo(1, 2);
cout << "Hello World" << endl;
return 0;
}
This is an emoji test. :smile: lol.