自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 收藏
  • 关注

原创 arthas非常有用的一个命令监控调用方法堆栈性能

trace命令,可以监控某个方法内部所有方法的调用性能情况 $ trace com.test.mobile.popularity.service.cache.PopularityRankCache getCurNotFinishDayPress Ctrl+C to abort.[dump: G:\workspace\popularity\mobile-popularity\mobi...

2018-11-13 20:08:14 12725 1

原创 arthas性能监控,本地调试方法

1、在目标监控进程(要查看该进程popularity中某个方法的性能) ,配置远程调试-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 2、在arthas 中远程连接上要监控的进程的远程调试,配置如下的连接127.0.0.1 8000 3、在arthas的控制台中,起动监听进程as.bat pid 连...

2018-11-13 16:08:31 11027

原创 spark join shuffle 数据文件的读取

spark join shuffle 数据文件的读取我们看下在shuffle过程中数据文件的读取过程中调用的类对象// 下面就是对这个shuffler中的分片数据进行读取并进行相关的aggregate操作了val blockFetcherItr = new ShuffleBlockFetcherIterator( context, blockManager.shuffleClient,

2017-10-19 16:53:32 630

原创 spark join shuffle 数据读取的过程

spark join shuffle 数据读取的过程在spark中,当数据要shuffle时,这个拉取过程RDD是怎么和ShuffleMapTask 关联起来的。 在CoGroupedRDD通过调用如下函数去读取指定分区的数据 SparkEnv.get.shuffleManager .getReader(shuffleDependency.shuffleHandle, split.in

2017-10-18 18:22:06 1550

原创 spark RDD join的核心过程

spark RDD join的核心过程spark join的过程是查询过程中最核心的过程,怎么做到实现两个表的关联查询耗费资源最少。可看源码如下 join的实现在 PairRDDFunctions类当中。def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))] = self.withScope {thi

2017-10-18 14:52:18 2487

原创 spark task 任务状态管理

spark task 任务状态管理spark task 的任务状态经常进行更新,当任务完成后,这个任务是怎么取得结果的呢,看下面的代码流程def statusUpdate(tid: Long, state: TaskState, serializedData: ByteBuffer) {var failedExecutor: Option[String] = None// 进行状态的更新 了s

2017-10-16 19:59:25 3764

原创 spark RDD action job的提交过程之 taskSchedule

spark RDD action job的提交过程之 taskSchedule在TaskSchedulerImpl中,有接收task 任务的接口 override def submitTasks(taskSet: TaskSet) {// 提交dag task 任务了val tasks = taskSet.taskslogInfo("Adding task set " + taskSet

2017-10-13 11:26:30 487

原创 spark RDD action job的提交过程

spark RDD action job的提交过程以RDD的 count()方法的例子为例,来演示 dag生成提交的过程。def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum上面直接调用到 runJob的方法 def runJob[T, U: ClassTag]( rdd: RDD[T], func: (Tas

2017-10-12 20:05:45 492

原创 spark work ResultTask 源码分析

spark work task 源码分析rdd在各个 CoarseGrainedExecutorBackend 进程中,经典的业务执行过程private[spark] class ResultTask[T, U](stageId: Int,stageAttemptId: Int,taskBinary: Broadcast[Array[Byte]],partition: Partition,

2017-10-10 10:53:45 344

原创 spark work task 源码分析

spark work task 源码分析spark 的task 主要以ShuffleMapTask为主,这个类就是在 任务的driver中进行生成然后序列化传输到 work 的CoarseGrainedExecutorBackend进程中进行执行。

2017-09-30 19:20:56 362

原创 spark 业务执行进程

spark 业务执行进程spark的task的业务执行进程的入口类为 CoarseGrainedExecutorBackend通过接收相关的参数调用如下的入口,然后进行创建相关的类

2017-09-30 11:43:40 573

原创 java concurrent 包的基石 volatile 和 锁的原理分析

java concurrent 包的基石 volatile 和 锁的原理分析在concurrent包中,用到很多的锁,如 ReentrantLock锁,里面的核心原理是通过 volatile 的和cas进行操作的。volatile 的读语义和写语义的核心就是禁止指令的重排序。 由于在编译器和处理器会对指令进行重排序,进行指令的优化,但有时这种重排序会导致计算结果的不一致性。 所以由此涉及到数

2016-09-02 14:47:52 1105

原创 phoenix 如何优化成使用索引进行查询源码分析

phoenix 如何优化成使用索引进行查询源码分析在 phoenix 生成执行计划时,最后会进行执行计划的优化,在优化过程中,会根据当前的sql中有没有hint的 提示使用索引,或者查询中用到了索引字段,也会自动转换成用索引表进行关联查询。在下面的方法当中,会根据已有的执行计划,进行优化QueryOptimizer.getApplicablePlans//根据当前的数据执行计划,优化成用索引进行数

2016-08-31 16:11:57 2849

原创 phoenix 写二级索引的触发机制

phoenix 写二级索引的触发机制查看org.apache.phoenix.hbase.index.Indexer 类当中 在该类中覆盖了 preBatchMutate方法,实现预先写数据到hbase中的拦截操作。@Overridepublic void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c, Mini

2016-08-31 09:44:15 2785

原创 phoenix local index的使用和join table的原理

phoenix local index的使用和join table的原理下面分析一下索引的协处理器的代码流程UngroupedAggregateRegionObserver.doPostScannerOpen //拿出在scan属性中的数据 byte[] localIndexBytes = scan.getAttribute(LOCAL_INDEX_BUILD); List<Inde

2016-08-25 16:00:16 1515

原创 phoenix local index 本地索引分裂源码分析

phoenix 本地索引分裂源码分析phoenix的表有时要建立二级索引,这里可以分为local和global,下面分析一下当数据表进行分拆时,对应的该本地索引表 的拆分情况。(本地索引表和数据表对应的数据区间保证存放在同一个regionserver中)。LocalIndexSplitter 类分析public void preSplitBeforePONR(ObserverContext<Reg

2016-08-24 14:37:07 2043

原创 phoenix select 查询源码分析

phoenix select 查询源码分析如下执行一个Sql的查询语句ResultSet rst = conn.createStatement().executeQuery("select * from test.person");创建的statement对象为 PhoenixStatement,然后进入到这个对象的方法中进行查询@Overridepublic ResultSet execut

2016-08-11 10:40:10 3989

原创 phoenix upsert 源码分析

phoenix查询源码分析。在之前的driver源码分析的基础上,现在分析一下UPSERT的流程SET_ASYNC_CREATED_DATE ="UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE + " PreparedStatement setAsync = connection.prepareState

2016-08-03 17:43:42 2404 2

原创 phoenix预创建表拆分key的源码分析

phoenix预创建表拆分key的源码分析在 ConnectionQueryServicesImpl.createTableInternal 方法当中,要分析表是否需要预先分区, if (parent != null && tableType == PTableType.INDEX && indexType == IndexType.LOCAL) {tableProps.put(MetaDat

2016-08-03 14:55:19 1089

原创 phoenix jdbc driver查询源码分析

phoenix driver查询源码分析首先 phoenix 支持jbbc协议,则就要按装jdbc的协议接口进行处理。 首先要实现driver PhoenixDriver,这个driver负责连接的创建,和连接到目标 服务器端的链接创建。 在该类中有一个创建链接的方法protected final Connection createConnection(String url, Properti

2016-08-03 14:27:11 3330

原创 hbase 权限控制源码分析

–hbase 权限控制源码分析在hbase中可以通过 grant ‘alice’, ‘RW’, ‘hbase_perf.table20’ 命令把一个读写权限分配给一个命名空间下面的一个表其实是通过rpc 调用发送到 AccessController 这个类当中可以通过查看该类的继续关系 public class AccessController extends BaseMasterAndR

2016-07-26 11:48:09 3068

原创 hbase客户端源码分析--deletetable

–hbase 删除表HBaseAdmin admin = new HBaseAdmin(conf);可以查看源码,其实低层也是调用创建 HConnectionImplementation 对象进行连接管理的admin.disableTable(tableName);然后失效一个表, 里面类似于delete操作一下,创建一个回调临时对象DisableTableResponse response

2016-07-18 17:23:55 1002

原创 hbase客户端源码分析--put流程

—client 的调用流程table.put(put); 操作HTable table = new HTable(conf, Bytes.toBytes(tableName));调用流程如上面的delete流程一样 首先创建一个muti的操作对象new BufferedMutatorImpl(this, rpcCallerFactory, rpcControllerFactory, params

2016-07-18 15:56:48 1070

原创 hbase客户端协议修改

hbase 的客户端 协议修改(源码基于hbase-1.1.5版本) hbase 的客户端通过 RpcClientImpl 进行远程的rpc调用客户端连接到远程是通过RpcClientImpl 进行管理的,通过创建 createSocket 进行连接到远程的服务端 通过 connectionmanager.getStubKey 拿到远程链接,创建到远程对应的ip端口 NetUtils.conn

2016-07-15 19:32:31 1611

原创 hbase客户端源码分析调用

—client 的调用流程delete 数据的流程.(table.delete(deleteColumn);)HTable 对象创建时调用如下方法创建对远程的链接对象管理器ConnectionManager.getConnectionInternal(conf) ConnectionFactory.createConnection(conf, managed, pool, user)默认为 HC

2016-07-15 18:08:36 1305

原创 hbase服务端源码分析

—client –>hmaster 和 client —> regionserver的流程 服务端主要有两个进程,hmaster 和 HRegionServer(其实 hmaster继承于 HRegionServer,这两个进程中既提供了web界面,同时也提供了rpc服务的调用, 如web服务在hmaster中是 http://127.0.0.1:16010/master-s

2016-07-15 17:26:00 850

原创 window下eclipse中运行hbase

首先在hbase 在window下面编译成功 我编译的是 hbase-1.1.5 版本,具体编译问题,可以查看我的前一文章。 当编译成功后,修改 hbase-1.1.5/conf/hbase-site.xml 中的为 <property> <name>hbase.rootdir</name> <value>D:/tmp/hbase/root</value>

2016-07-14 10:36:25 542

原创 hbase远程调试

打开配置文件 hbase-env.sh 中的 export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8070"然后在eclipse 或者idea中,编译成功对应版本的源码,创建application remote debug 输

2016-07-14 10:27:29 838

原创 hbase按装

vi /etc/profile 文件,增加如下路径export HBASE_HOME=/data/hadoop/apps/hbase-1.1.5export PATH=$HBASE_HOME/bin:$PATH–修改conf目录下面的hbase-site.sh 文件,增加如下内容<configuration> <property> <name>hbase.rootdir</nam

2016-07-14 10:11:03 354

原创 elasticsearch 生产参数配置

cluster.name: testindex node.master: false node.data: true index.store.type: niofs index.cache.field.type: soft indices.recovery.max_bytes_per_sec: 250mb node.max_local_storage_nodes: 1 i

2016-07-14 10:01:38 1049

原创 elasticserch 测试优化参数

一、JVM配置: Jdk1.8(es要求最低jdk1.7) 最大堆最小堆均为32G GC类型:-XX:+UseG1Gc -XX:MaxGCPauseMillis=200 。 其他默认。 二、Es集群配置:cluster.name: estest node.name: “testanya”node.master: false node.data: trueindex.store.type

2016-07-14 09:58:14 3957

原创 编译android指定模块

在前面编译完整个android后,现在开始可以编译指定模块cd ~/android执行.  ./build/envsetup.sh有下面命令 - croot: Changes directory to the top of the tree.      - m: Makes from the top of the tree.      -

2015-05-31 16:14:41 842

原创 研究android系统架构层次

如借用其它人员研究的wifi层次,对比android 下载后的源码。可看到android一层一层的架构层次是怎么样的。并了解一个android系统是怎么跑起来的。    所以平时我的的android开发大部分是在java应用层,一些深层次点的就是ndk编码,会通过进行ndk编码。如proxydroid.他的代理功能其实就是用到了ndk,通过jndi接口,调用到一个c++层,

2015-05-31 15:01:26 1385

原创 android 源码编译

1. 磁盘空间预留40G左右,内存3G,因为下载的androd文件非常多并且编译后,会生成很多文件     2.  virchobox      3.  按装 Ubuntu  我的版本是12.04     4. 安装Git工具。Android源代码采用Git工具来管理,     sudo apt-get install git-core gnupg

2015-05-31 11:26:41 718

原创 android proxy

android 代理,支持socket5 http 等大部分应用

2015-04-29 18:08:08 870

原创 sql 子串处理

<br />--pl/sql中的indexof和lastindexof instr INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。<br />--默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找<br />select substr('2.3.30.41',INSTR('1.2.30.1', '.', -1, 1)+1) FROM DUAL<br /> <br

2010-12-13 13:47:00 700

原创 sql with 子查询

<br />with<br />sql1 as (select to_char(a) s_name from test_tempa),<br />R ]F5^5"KFW0n B0sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))<br />select * from sql1ITPUB个人空间2g N*` O3y2eB Q6}<br />un

2010-12-13 13:46:00 1922

原创 EJB Transaction部分

<br />Transaction部分<br /> <br />基本概念和词汇:<br />n         Transaction object (or Transaction component): 是一个参与在事务当中的组件。如:Ejb 组件、.Net组件、Corba组件等。<br />n         Transaction manager: 负责管理Transaction objects的事 务操作。就像乐队中的指挥一样。<br />n         Resource:持久的数据源。如:数据

2010-12-13 13:43:00 1245

原创 打印JS

function DP() //mainFrame网页中函数    {       window.focus();       if (window.print) {           window.status='none';       //  window.print();       doPrint();       }    }function doPrint() {///隐藏不需要打印的内容        try    {        PageSetup_Null();    }    ca

2010-12-13 13:38:00 519

原创 HTML插入Flash

1.插入透明flash代码codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"width="373" height="166" align="center">align="center" quality="high"plu

2010-12-13 13:31:00 3149

Netty权威指南 pdf全书下载

Netty权威指南 详细介绍了netty技术框架的实现原理。介绍了一个基于netty框架的通讯框架的实现过程,并对核心的类进行的分析。

2015-08-11

android 动态加载class

一个动态加载android 的class框架, 过程是先解压一个完全的apk,然后创建自己的dexclassloader,然后动态加载指定的activity的过程

2015-05-24

淘宝TFS架构演进

淘宝TFS架构演进 淘宝TFS架构演进 淘宝TFS架构演进

2015-05-17

APK加壳demo

加壳技术 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想做的工作

2015-05-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除