`
文章列表
锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。 下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchronized void writer() { //1 a++; //2 } //3 public s ...
  虽然jvm可以通过GC自动回收无用的内存,但是代码不好的话仍然存在内存溢出的风险。 最近在网上搜集了一些资料,现整理如下:  ——————————————————————————————————————————   一、为什么要了解内存泄露和内存溢出?   1、内存泄露一般是代码设计存在缺陷导致的,通过了解内存泄露的场景,可以避免不必要的内存溢出和提高自己的代码编写水平;   2、通过了解内存溢出的几种常见情况,可以在出现内存溢出的时候快速的定位问题的位置,缩短解决故障的时间。    
一个优秀Java程序员,必须了解Java内存模型、GC工作原理,以及如何优化GC的性能、与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能。 本文将从JVM内存模型、GC工作原理,以及GC的几个关键问题进行探讨,从GC角度提高Java程序的性能。   一、Java内存模型   按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-h ...
集群管理结构图   清单 3. Leader Election 关键代码                                 void findLeader() throws InterruptedException {         byte[] leader = null;         try {             leader = zk.getData(root + "/leader", true, null);         } catch (Exception e) {             lo ...
转一篇关于Hadoop系统架构设计的文章,作者翻译的不错,其英文原文是理解Hadoop的经典文章。 原文出处:http://www.blogjava.net/killme2008/archive/2008/06/05/206043.html   Hadoop分布式文件系统:架构和设计要点 原文:http://hadoop.apache.org/co ...
  consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛; 1 基本场景 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join();      //使调用线程 t 在此之前执行完毕。t.join(1000);  //等待 t 线程,等待时间是1000毫秒   先上一段JDK中代码: Java代码  
1. Classloader的作用,概括来说就是将编译后的class装载、加载到机器内存中,为了以后的程序的执行提供前提条件。 2. 一段程序引发的思考: 风中叶老师在他的视频中给了我们一段程序,号称是世界上所有的Java程序员都会犯的错误。 诡异代码如下: package test01;  
原文:http://coolshell.cn/?p=1302  酷壳     Code Review中的几个提示 陈皓   Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这 ...
目录(?)[-] 概述 Hbase数据模型 Hbase物理模型 HBase架构及基本组件 Hbase使用场景 Hbase与HDFS对比 参考文档   概述
 1、检查是否需要进行Region Split的时机: 每次flush或者compact之后,regionserver都会去检查是否满足了Split的条件。 2、Region Split的过程如下:   (1)RegionServer在Zookeeper上创建一个/hbase/region-in-transition/region-name结点,并设置结点的内容为SPLITTING  (2)由于Master监听/hbase/region-in-transition,所以(1)发生时,Master会收到相应的通知。 (3)RegionServer在HDFS上的parent’s r ...
原文地址:HBase Region 分配 探索 分区作者:闪出光芒  HBase 的 cluster 中, Region 是如何分配这个问题,困扰了我很久,经过代码分析和调试,得出了一些见解,缺点和错误请大家批评指正。   参与 Region 分配的重要对象 在 Region 分配过程中,起着重要作用有如下一些对象。  
       最近在线上往hbase导数据,因为hbase写入能力比较强,没有太在意写的问题。让业务方进行历史数据的导入操作,中间发现一个问题,写入速度太快,并且业务数据集中到其中一个region,这个region无法split掉,处于不可用 ...
  split操作执行的是将HBase中较大的Region分为两个。因为split比较耗时,因此split是在独立的线程中完成的,相关类是CompactSplitThread。 首先,CompactSplitThread中分区的方法主要是以下两个: CompactSplitThread.requestSplit(HRegion):检测是否需要分区,如果需要分区则调用requestSplit(HRegion, byte[]) CompactSplitThread.requestSplit(HRegion, byte[]):执行分区操作<用户手动分区调用的也是该方法> ...
多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 ——synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了。 synchronized 快速回顾 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 
Global site tag (gtag.js) - Google Analytics