摘要:
1.下载zookeeper-3.4.7.tar.gz2.解压tar-zxvf -3.4.7.tar.gz3.conf目录下修改文件名zoo_sample.cfg改为zoo.cfg#mvzoo_sample.cfgzoo.cfg4.修改成如下内容clientPort=2181initLimit=5sy...
阅读全文
posted @ 2015-12-09 18:54
xuqiyu
阅读(192)
推荐(0)
摘要:
1.wget方式下载maven或先下载到本地然后上传至服务器2.解压tar zxvf apache-maven-3.0.5-bin.tar.gz3.vi /etc/profile 设置环境变量,你懂得 M2_HOME=/opt/maven/apache-maven-3.0.5 export M2_H...
阅读全文
posted @ 2015-12-09 18:28
xuqiyu
阅读(179)
推荐(0)
摘要:
1.下载JDK,可以用wget下载,也可以先把JDK下载到本地再上传至linux服务器例如下载 jdk-7u25-linux-x64.rmp2.执行安装命令rpm -ivh jdk-7u25-linux-x64.rmp3. 设置JAVA_HOME vi /etc/profil JAVA_HOME...
阅读全文
posted @ 2015-12-09 18:13
xuqiyu
阅读(149)
推荐(0)
摘要:
sudo-uadmin crontab-e*/5**** /bin/sh/home/admin/wmpinventory/bin/jbossctlrestart
阅读全文
posted @ 2015-05-31 18:03
xuqiyu
阅读(331)
推荐(0)
摘要:
近期,发现库存应用部署启动越来越来越慢,想看下缓存的多个Map对象实例到底占用了多少堆内存使用的方法是 SizeOf.java 网站链接http://sizeof.sourceforge.net/使用很简单,贴一行代码SizeOf.humanReadable(SizeOf.deepSizeOf(Ob...
阅读全文
posted @ 2015-05-18 19:45
xuqiyu
阅读(8944)
推荐(0)
摘要:
这张图说明了伪共享的问题:在核心1上运行的线程想更新变量X,同时核心2上的线程想要更新变量Y。不幸的是,这两个变量在同一个缓存行中。每个线程都要去竞争缓存行的所有权来更新变量。如果核心1获得了所有权,缓存子系统将会使核心2中对应的缓存行失效。当核心2获得了所有权然后执行更新操作,核心1就要使自己对应...
阅读全文
posted @ 2015-03-25 19:56
xuqiyu
阅读(243)
推荐(0)
摘要:
什么是内存屏障?它是一个CPU指令。它是这样一条指令: a)确保一些特定操作执行的顺序; b)影响一些数据的可见性(可能是某些指令执行后的结果)。插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。强制更新一次不同CPU的缓存。例如,一个写屏障会把这个屏障前...
阅读全文
posted @ 2015-03-25 19:46
xuqiyu
阅读(238)
推荐(0)
摘要:
Disruptor相对于传统方式的优点:没有竞争=没有锁=非常快。所有访问者都记录自己的序号的实现方式,允许多个生产者与多个消费者共享相同的数据结构。在每个对象中都能跟踪序列号(ring buffer,claim Strategy,生产者和消费者),加上神奇的缓存行填充,就意味着没有为伪共享和非预期...
阅读全文
posted @ 2015-03-25 16:07
xuqiyu
阅读(132)
推荐(0)
摘要:
64位处理器缓存行的长度是64字节,java 64位long类型数据是8字节,也就是说一个缓存行需要8个long类型数据填充如上图,假设volatile类型 head和tail在内存中地址连续,被两个CPU core1和core2都加载到各自的缓存行中,如果core1修改了head的值(缓存和内存中...
阅读全文
posted @ 2015-03-24 17:39
xuqiyu
阅读(353)
推荐(0)
摘要:
Volatile变量修饰符如果使用恰当的话,它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度。处理器为了提高处理速度,不直接和内存进行通讯,而是先将系统内存的数据读到内部缓存(L1,L2或其他)后再进行操作,但操作完之后不知道何时会写到内存,如果对声明了Vol...
阅读全文
posted @ 2015-03-24 17:17
xuqiyu
阅读(171)
推荐(0)