关闭

linux 命令

一些常用命令老是忘记,百度记录下,随时添加,谢谢原创 ----------------------------------------------------- 假如,你想在当前目录下的所有普通文件中搜索查找包含:liehuo.net 这个词的文件,那么命令如下:    1.# find . -name \* -type f -print | xargs grep “liehuo.n...
阅读(196) 评论(0)

MySQL索引背后的数据结构及算法原理

看到一篇好文章,还不错,转载学习下:http://blog.jobbole.com/24006/。 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为...
阅读(370) 评论(0)

java类加载说明

明天端午,下午回家,我的JUC也一时半会看不完,就随手看看阿里中间件博客http://jm.taobao.org上的文章,看到spi的东西,就想想好像java类加载进制不是特别清楚,虽说知道有3层,什么双亲委托,但是还是有点模糊,哎,赶紧学习吧,这里写下来,省的以后忘记。 千言万语不如一行代码,先看代码: public class Hello { public static ...
阅读(189) 评论(0)

JUC源码分析15-集合-ConcurrentHashMap

好几天没看juc了,之前看了HashMap,还有个差不多的HashTable,二者的结构大致相同,小小的比较下2者的不同: 1.HashMap是非线程安全的,HashTable通过synchronized加锁实现线程安全。如果我们的代码里存在{get();...;put()}这种操作的话就保证不了; 2.HashMap可以存储key或value为null的值,HashTable不行; 3.初...
阅读(1280) 评论(0)

java关键字-final语义

转载:http://www.infoq.com/cn/articles/java-memory-model-6/ 对java关键字final的解析,以前都没关注过final竟然这些东西。 与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被...
阅读(567) 评论(0)

JUC源码分析14-集合-HashMap

在学习juc并发集合前先看了下HashMap,听说好多面试会问这个,没遇见过,学习下吧。学习的jdk源码一直都是1.7版本的,其他版本可能有些微不同,应该也不影响学习。 HashMap有几点需要记得吧: 1.是非线程安全的:javadoc说明:可以通过Map m = Collections.synchronizedMap(new HashMap(...));解决,或者干脆用juc里面Concu...
阅读(3531) 评论(0)

JUC源码分析13-locks-ReentrantReadWriteLock

ReentrantReadWriteLock基于AQS实现读写锁的同步: 1.利用共享模式实现读锁,独占模式实现写锁; 2.支持公平和非公平,非公平的情况下可能会出现读锁阻塞写锁的场景; 3.写锁阻塞写锁和读锁,读锁阻塞写锁; 4.写锁可以降级为读锁,读锁不能升级为写锁,只能先release再lock; 5.写锁支持condition条件; 6.读写锁都支持超时/中断lock; ...
阅读(2531) 评论(0)

JUC源码分析12-locks-CyclicBarrier

CyclicBarrier字面意思是可循环栅栏,看javadoc的帮助A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier point. CyclicBarriers are useful in programs involving a fi...
阅读(191) 评论(0)

JUC源码分析11-locks-Semaphore

Semaphore不明白为什么直接放在juc包下,不是应该放locks下面嘛,这里还是当初locks学习吧。 Semaphore英文是信号量的意思,在这里我喜欢叫资源或者许可,实现的功能就是获取资源,获取到就干活,获取不到就排队,等别人释放了资源,然后所有排队的再去获取。实现AQS的共享api,看个入门demo: public class SemaphoreTest { //3个...
阅读(256) 评论(0)

JUC源码分析10-locks-CountDownLatch

上一次学习了ReetrantLock,是对AQS独占模式的,这次学习CountDownLatch,是共享模式api的实现。人生不死,学无止境。先看个demo吧: import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { private static CountDownLatch ...
阅读(521) 评论(0)

JUC源码分析9-locks-ReentrantLock

ReentrantLock可重入锁,使用比synchronized方便灵活,可作为替代使用: 1.支持公平/不公平锁; 2.支持响应超时,响应中断; 3.支持condition; ReentrantLock实现了Lock接口,内部使用static类继承AQS实现独占式的api来实现这些功能,使用AQS的state来表示锁可重入次数: 之前学习AQS的时候说过请求和rele...
阅读(664) 评论(0)

JUC源码分析8-locks-AQS-condition

AQS的conditionObject实现类似object的wait/notify/notify的功能,功能大概是: 1.object维护一个监视器和一个等待队列,condition对于一个lock可以有多个condition,对于每个condition维护一个条件队列; 2.提供wait/signal/signalall功能。 来个入门demo: public class Conditi...
阅读(765) 评论(1)

JUC源码分析7-locks-AQS-共享模式

AQS中一定要记住2点: 1.处理流程: if(!请求成功) 加入队列 2.请求是对state的判断,AQS不关心你state表示什么,你可以表示状态也可以表示数量,由子类实现对请求的判断。将规则的判断和规则的处理分离,有点像模板模式。 先想想什么是独占什么是共享,举个栗子:独占就像大家拿号去排队体检,你拿号了发现前面还有n个人,没办法,等吧,然后你前面的人体检完了,医生就说,你通知下一...
阅读(967) 评论(1)

JUC源码分析6-locks-AQS-独占模式

AbstractQueuedSynchronizer(下面简称AQS),javadoc说明: Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on  first-in-first-out (FIFO) wait que...
阅读(762) 评论(0)

JUC源码分析5-locks-LockSupport

LockSupport通过unsafe提供阻塞和唤醒线程的方法,AQS和其他的lock都会使用到这个基础类。 private LockSupport() {} // Cannot be instantiated. private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long parkBl...
阅读(300) 评论(0)

JUC源码分析4-原子变量-AtomicStampedReference/AtomicMarkableReference

之前讲过的AtomicInteger等CAS操作会产生ABA问题,什么是ABA?wiki官方解释https://en.wikipedia.org/wiki/ABA_problem,简单讲就是多线程环境,2次读写中一个线程修改A->B,然后又B->A,另一个线程看到的值未改变,又继续修改成自己的期望值。如果我们不关心中间状态的变化,只关心最终结果,就无所谓ABA问题。看代码: import jav...
阅读(336) 评论(0)

JUC源码分析3-原子变量-AtomicIntegerFieldUpdater/AtomicLongFieldUpdater/AtomicReferenceFieldUpdater

如果我们系统中已经有某个类的变量定义为volatile了,现在为了保证对这个变量的原子性操作,就可以尝试使用这几个类,举个栗子: import sun.reflect.Reflection; public class AtomicFieldIncr { //这里最好是public volatile,不要加final、static //修饰符最好也不要为protected,pr...
阅读(550) 评论(0)

JUC源码分析2-原子变量-AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray

JUC针对数组元素的原子封装,先看AtomicIntegerArray。 private static final Unsafe unsafe = Unsafe.getUnsafe(); //arrayBaseOffset获取数组首个元素地址偏移 private static final int base = unsafe.arrayBaseOffset(int[].class); //shif...
阅读(310) 评论(0)

JUC源码分析1-原子变量-AtomicInteger/AtomicBoolean/AtomicLong/AtomicReference

记录学习中的一些东西,防止以后遗忘,参考了很多别人的文章,感谢之! 多线程并发操作时,对普通变量++或--不具有原子性,每次读取的值都不一样,看代码: import java.util.concurrent.atomic.AtomicInteger; public class Incr { public AtomicInteger a = new AtomicInteger...
阅读(457) 评论(0)

Protostuff序列化

这几天在看rpc框架的东西,一哥们写的轻量级rpc框架(http://my.oschina.net/huangyong/blog/361751?fromerr=NpC3phqY)实现,写的rpc很不错,就跟着撸了遍代码,里面用到的序列化工具是protostuff,之前我们项目供应商接口用的xml,没用过protostuff,拿过来研究下,写个demo示例,以后再需要的话,也可以拿过来用。 常用的...
阅读(1476) 评论(0)
135条 共7页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:62404次
    • 积分:1347
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:72篇
    • 译文:1篇
    • 评论:15条
    最新评论