- 博客(56)
- 收藏
- 关注
原创 白话理解: 准确率(Accuracy), 精确率(Precision), 召回率(Recall)
本文重点是在白话,不是数学上面的严格定义. 那首先要有一个业务场景,就好比上学,学习数据库,就要用到学生成绩. 在这,我们的业务场景就是对100个西瓜进行分类(已知生熟各半) 下面是针对上面场景,对各个术语的解释准确率(Accuracy): 对所有西瓜分类正确的比率.精确率(Precision): 挑出来的熟西瓜,有多少是正确的.召回率(Recall) : 50个熟西瓜,有...
2018-07-27 19:23:55 2181
Solution to Fix OOM in Drill
Drill用来查询Hbase,不需要预先定义Schema,十分方便.当时如果Hbase表过大会出现OOM(OUT OF MEMORY). 查询文档后,发现通过如下2个配置可以解决. 高亮的是系统的默认值. SELECT * FROM sys.options WHERE type in ('SYSTEM','SESSION') and name in( 'planner.memory....
2016-11-27 22:30:55 202
Scala浮点运算精度问题
在Spark开发的时候,直接使用java.math.BigDecimal进行浮点相乘的时候,依然有精度缺失.但是如果是纯JAVA就没有,在Scala中调用JAVA的BigDecimal就有这样的问题. 偶然之间发现Scala也实现了scala.math.BigDecimal. 换用SCALA自身的BigDecimal就没这样的问题了. 不知道深层次的原因,在这抛砖引玉,如果有人...
2016-10-15 21:15:35 2701
原创 如何使用Spark/Scala读取Hbase的数据
必须使用高亮参数启动Spark-shell,否则当你遍历RDD时会出现如下的Exceptionjava.io.NotSerializableException: org.apache.hadoop.hbase.io.ImmutableBytesWritable spark-shell --conf spark.serializer=org.apache.spark.serializ...
2016-09-05 17:10:24 1373
使用Drill查询Column如果有"点"或者其他特殊字符怎么办
使用Drill查询如果字段名有"点"或者其他特殊字符怎么办, 百度, GOOGLE查询良久也没找到,在官方文档里面偶然之间查到了,也就是Drill的逃逸符[`].下面是文档连接:https://drill.apache.org/docs/lexical-structure/下面是示例.select CONVERT_FROM(t.b.BUYER_ID, 'UTF8') AS BUYER...
2016-04-20 09:14:11 192
Parquet列式存储格式笔记
最近偶然的因素,突然觉得这个格式很神奇,找了很多文章细读了一遍,特整理如下. 第一篇文章里面讲的很通俗,易懂.但是对于之前没有背景的,细节地方不好理解,因为里面的实例比较简单和真实案例差别比较大.深入分析Parquet列式存储格式http://www.infoq.com/cn/articles/in-depth-analysis-of-parquet-column-storag...
2016-04-13 10:15:22 368
原创 ThreadPoolExecutor中largestPoolSize和maximumPoolSize的区别
查看ThreadPoolExecutor的源代码时,发现了2个意思十分接近的变量(maximumPoolSize, largestPoolSize) .十分好奇,google,百度也无法得到答案.只好查看源码,现将结果分享出来. maximumPoolSize:是一个静态变量,在变量初始化的时候,有构造函数指定. largestPoolSize: 是一个动态变量,是记录Poll...
2016-04-11 08:57:52 2667
Hbase 笔记
但一个CF被Flush时,其他相关的CF也会被同时Flush. 如果CF分配不均衡会导致很多小的HFile.Hbase的一条记录,只会由一个Region维护,即使有多个Column Family也不会跨越多个Region.Hbase的Memstore flush到 Hfile的触发条件有如下几种WAL大小达到阀值 内存使用达到阀值,但是阀值有2种: ...
2015-09-17 16:17:47 108
原创 MAC下如何安装protobuf
brew tap homebrew/versionsbrew install protobuf250 brew link --force --overwrite protobuf250protoc --version
2015-08-19 10:12:21 264
【大数据笔记】白话详解Zookeeper的一致性
下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeeper 是一种高性能、可扩展的服务。 Zookeeper 的读写速度非常快,并且读的速度要比写的速度更快。另外,在进行读操作的时候, ZooKeeper 依然能够为旧的数据提供服务。这些都是由于 ZooKeepe 所提供的一致性保证,它具有如下特点:【Zook...
2014-09-25 14:08:32 531
细说Tomcat如何打破双亲委派(续1)
在上一篇文章里面分析WebappClassLoader.loadClass,了解了Tomcat是如何打破双亲委派的. 有兴趣的可以参考. 细说Tomcat如何打破双亲委派(有源码和图) 但是上面的分析偏重于流程,没有分析ClassLoader是如何加按照顺序寻址,然后加载对应的Class到二进制流中. WebappClassLoader.loadClass在违背双亲委派规则,自...
2014-09-24 09:13:46 1157
一句话解释ThreadPoolExecutor添加线程(有源码)
ThreadPoolExecutor添加线程是通过 execute(Runnable command),此方法代码行数不多,但是由于太精炼了,不大好读懂,理解完之后,特写下笔记加深印象. 一句话解释:如果BlockingQueue没有大小限制,如果在执行的线程个数小于corePoolSize,则自动执行,否则当前线程存入BlockingQueue. 备注:如果Blockin...
2014-09-19 21:29:36 186
【大数据笔记】Hadoop通过动态代理实现RPC
Hadoop所有的跨节点的通信都是通过RPC来通信的, RPC通信是需要创建Stub,一个好的RPC需要通过良好的设计确保了对上层调用的透明性. 我们下面就通过Hadoop里面最常用的心跳(JobTrack和TaskTracker)来研究一下Hadoop的RPC机制.心跳函数的调用在方法:TaskTracker.transmitHeartBeat();在此方法中会调用下面的代码段.这个方法...
2014-09-12 20:09:49 185
【大数据笔记】--续谈WordCount的Bug
在之前的Blog [http://flyfoxs.iteye.com/blog/2110463] 中讨论了, hadoop在文件切割时,可能会把一个行数据切割成无意义的2块. 如果不做特别处理,这会造成数据的失真及处理错误. 经人指点,发现这个BUG不存在. Hadoop在分割文件后,后期读取中会通过一些规则来保证不会出现把一行数据分割成2行. 下面对这个后期处理机制(LineRec...
2014-09-09 22:55:32 141
细说Tomcat如何打破双亲委派(有源码和图)
一句话概况: 不考虑缓存, 那么装载路径就是,先Classpath, 然后War包,当前工程, 最后才是Tomcat相关目录. 不考虑缓存,是因为缓存只是用来加快速度,对外不调用展现出的逻辑效果是可以忽略的. 下图是一个概况的流程图, 简介起见,绘图过程中移除了缓存功能. (个了感觉还是有些逻辑还是有些复杂的,图画出来了,自己看着都觉得还是不清楚,但是也没发现可以改进的地方) ...
2014-09-08 22:43:46 4051 1
【大数据笔记】-解读hadoop命令
下面是hadoop发布版本, bin目录下面的hadoop命令的源码,hadoop命令支持好多种参数,一直记不住,想通过精度这部分代码,能记住部分参数. #!/usr/bin/env bash# Licensed to the Apache Software Foundation (ASF) under one or more# contributor license ag...
2014-09-03 22:41:32 200
如何在JAVA中创建一个不可变对象
1. 对象的状态在构造函数之后都不能被修改,任何修改应该通过创建一个新对象来实现.2. 所有的对象属性应该都设置为final3. 对象创建要正确,例如:对象的应用不能在构造函数中被泄露出去4. 对象要设置为final,确保不要继承的Class修改了immutability特性 上面这些规则不是100%的不能打破,比如String对象hash属性就不是一个final对象,但是...
2014-08-29 23:45:53 588
【大数据笔记】--浅谈WordCount的Bug
最近精读Hadoop WordCount的示例,发现里面应该存在一个"可能的"Bug,现斗胆发出,希望有高人指点. Bug描述:WordCount数单词的时候,如果遇到大文件会对文件进行切分.但是切分是按照字节来进行的,完全有可能会将一个单词切分成2个单词,这样也就可能会创造2个不存在的单词. 相关代码:WordCount main 函数 ( FileInp...
2014-08-28 16:05:09 163
古怪的泛型
Java1.5引入的泛型是一个比较大的进步,让人用的也很爽.但是java的泛型是基于类型擦除,也就是只在编译期才有泛型的存在,在运行时根本没有泛型什么事. 这也造成了泛型不能支持下面这些情况,而这些是在C++里面是都得到了支持的. 不支持New操作 Java代码 class SomeContainer<E> { E creat...
2014-08-20 15:56:45 139
一键安装Maven/Ant (使用Yum)
在Centos下面如何安装Maven,查了很多地方,都是: 下载,解压,复制.... 今天偶然发现了一个通过Yum安装maven的办法,就2个命令: wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-ap...
2014-08-15 23:40:04 239
【大数据笔记】--Hui无法连接Hbase (Cloudera默认安装)
错误提示:在通过Hui使用Hbase时,提示如下错误hbase Api Error: Could not connect to localhost:9090 具体原因:The HBase Browser application依赖HBase Thrift server,但是CDH并没有默认的启用Thrift Server role 解决办法:一句话描述:在Hui...
2014-08-15 16:56:24 384
详解JAVA线程的中断
多线程之--2种办法让HashMap线程安全多线程之--synchronized 和reentrantlock的优缺点多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)多线程之--详解JAVA线程的中断 中断线程,并不是直接的中断一个线程,需要依赖于当前线程的状态,有如下几点需要需要注意: 1) 除非当前线程中断自己(这个总是被...
2014-08-08 14:11:54 126
2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
多线程之--2种办法让HashMap线程安全多线程之--synchronized 和reentrantlock的优缺点多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync) 本文从成员函数和锁的获取这2个角度, 比较这2种锁. 发现区别其实不大.只有在阻塞队列为0的时候才有些许区别. 如果分析的不对,请斧正. 稍...
2014-08-07 11:13:10 436
2种办法让HashMap线程安全
多线程之--2种办法让HashMap线程安全多线程之--synchronized 和reentrantlock的优缺点多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync) HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全. 方法一:通过Collect...
2014-08-04 16:29:30 2227
synchronized 和reentrantlock的优缺点
多线程之--2种办法让HashMap线程安全多线程之--synchronized 和reentrantlock的优缺点多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync) reentrantlock的优点可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait...
2014-08-01 09:15:09 1457
降序索引的适用场景
Oracle默认的索引是升序的, 同时也支持降序索引. 一直没想明白为什么要支持降序索引,因为索引是用来查找的,只要是排序后的查找都是可以使用折半查找的(使用平衡树会更快些),根本不关心是升序还是降序排列. 查了多方资料也没找到原因, 最近想到了一个可能的场景. 就是如果查询结果是需要降序排列,这个时候排序字段如果有降序索引就可以加快响应速度.(需要是组合索引才会有用,并且需要查询语句...
2014-07-29 10:47:12 360
白话2种Oracle的事务隔离
Oracle事务的隔离级别有2总, Read Commitment, Serializable, Read Only (另外还有2种事务隔离级别,Read Uncommitted, Repatable Read,Oracle没有单独提供.) Read Only, 看名字就比较简单,在此我们不做讨论,下面主要分析一下Read Commitment, Serializable. ...
2014-07-16 16:47:23 117
原创 数据库原子性和隔离性可以推导出一致性吗
前面我们已经分析了因为原子性并不能保证事务在一个时间点上完成,而是在一个时间片上完成,所以不能作为一致性的充分条件.详细的分析,可以参考:http://flyfoxs.iteye.com/admin/blogs/2087543 那么原子性,加上隔离性可以推导出一致性吗? 下面我们通过一个例子来分析下这个问题.场景如下A是老板,需要给员工B, C发工资. A账户里面有100...
2014-07-15 11:05:34 163
Log4j是如何取得行号的(有源码分析)
Log4J是如何打印出行号的呢,之前一直以为是通过JAVA的反射.今天特意去查了一下,JAVA的方式好像没有提供这样的接口.于是研究了一下Log4J的代码,现在分享出来. 开门见山:直接开门见山的讲重点, 其实要获得JAVA的行号,Log4j就是先抛出异常,然后在异常堆栈中找到调用函数所在位置. 下面根据下面的一个异常堆栈,来分析如何通过2歩找到找位置的办法.1)找到org...
2014-07-09 15:44:09 1262
原创 数据库的原子性可以推导出一致性吗
数据库用了很久了,最近看书又看到了ACID,突然想起来原子性就是不可分割, 既然是这样,那应该就可以保证一致性,为什么数据库的事务定义了4个特性. 其实这个问题的症结在怎么理解原子性,以前学物理的时候,留下了一个印象,原子性就是不可再分割的意思,但是在数据库事务里面却需要加上一些注释,是把本来几个可以分的事情整个在一起,要成功都成功,要失败都失败. 说简单点,就是事务里面的各个...
2014-07-02 16:41:03 259
JAVA类加载器分析--热部署的缺陷(有代码示例,及分析)
首先纠正一个误区: 热部署不是我们在Eclipse里面修改了代码不用重启就可以持续调试. 详情可以参考上一篇博文: 热部署和"Hot Code Replace"的区别 http://flyfoxs.iteye.com/blog/2078863 热部署有一个缺陷,就是很容易导致内存泄露, 并且不是很容易从代码层次避免. 所以产品环境一般不推荐启用热部署. JAVA里面...
2014-06-16 11:18:49 388
原创 JAVA类加载器分析-比较热部署和"Hot Code Replace"
最近复习JAVA类加载的相关知识,看到了热部署的实现原理,突然感觉这个好像不是以前Eclipse调试Tomcat的时候,修改代码不需要重启就可以调试的功能.查阅资料比较之后,发现不需要重启就可以继续调试的功能是"Hot Code Replace",我个人比较这两者之间的区别如下: 1)如果源文件有修改热部署会会导致JVM里面有2个不同的Class存在,他们的类加载器不一样.他...
2014-06-13 11:04:09 363
CGLIB学习札记---Enhancer如何生成子类并装载
上一篇博文: CGLIB学习札记---生成CLASS的命名规则 介绍了生成之类的命名规则, 在这个博文里面主要分析了下面3点:1)Cglib如何生成的Class的二进制文件2)Cglib生成的Class二进制(byte[])放哪3)Cglib如何把二进制Load生成的Class 泛泛而谈,整个过程如下就是Cglib根据父类,Callback, Filter 及一些相关...
2014-06-09 11:25:17 804
原创 CGLIB学习札记---生成CLASS的命名规则
CGLIB生存的Class的命名规则有多种,它们都是由接口NamingPolicy对应的实现来定义的.接下来针对DefaultNamingPolicy进行分析.泛泛的说,生成的CLASS的规则如下 被代理class name(包名和类名) + "$$" +使用cglib处理的class name(只有类名,不包含包名) +"ByCGLIB" + "$$" +key的hashco...
2014-06-06 11:53:00 621
Cglib为什么不能完全替换 动态代理
看到好多地方对比CGLIB和动态代理来实现AOP的, 感觉就是一边倒的. CGLIB什么都好, 比如: 目标对象可以是Interface或者Class,不像动态代理只支持Interface CGlib性能也好. 看到这些,我就有一个疑问, 既然如此优秀, 为什么动态代理还有存在的必要呢.带着这个疑问,我研究了一下CGLIB的不足.对比动态代理来实现AOP,CGLIB需要有2...
2014-05-30 11:23:23 838
JAVA函数可以修改传入的变量吗?
泛泛的谈,可以说,有时可以有时不可以. 那我们就具体些,直入主题,看疗效吧.下面是一个例子: import java.util.LinkedList;import java.util.List;public class Api { public static final void main(String[] args) { int tmp = 10; chan...
2014-05-27 11:17:54 748
原创 百度一道面试题的三种解法
http://greemranqq.iteye.com/blog/2069056 在上面的地址看到了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字. 个人总结了一下,在上面博文加评论里面共提到了2种方法.1)使用一个数组来记录出现的次数,数组下标为对应的数,数组的值为出现的次数2)使用BitMap来实现,这样...
2014-05-21 20:48:03 281
2种AOP方式的比较(动态代理, Cglib)
动态代理说到底,还是设计模式代理的一种.根据"代理对象的接口"生成一个新对象(利用反射).实际情况是根据传入的对象,看此对象实现的所有接口,然后生成新对象.生成新对象最后还是通过 InvocationHandler 来调用真正的业务对象缺点:所代理的对象必须有接口 Cglib运行时,动态生成指定拦截对象的子类. 通过子类就可以添加说需要的拦截方式了.由于是生成子类所以也就不需要是...
2014-05-19 14:23:52 295
使用Clojure实现贪吃蛇
最近学习Clojure,买了<<Clojure程序设计>>,对里面大部分章节进行了精读. 比如贪吃蛇程序,并且这个程序也比较精简,200行不到.在读的过程中,对不能一目了然的地方,添加了注释,现发出来,希望能对有的人有用. ;;;;Excerpted from "Programming Clojure, Second Edition",;;pub...
2014-04-28 12:49:21 143
一道淘汰85%面试者的百度开发者面试题- [用Clojure来解答]
题目来源:http://student.csdn.net/mcd/topic/235300/753730 最近学习Clojure好一段时间了,在网上看到一个蛮简单的面试题,于是用Clojure解答一下.注: Clojure主要是合适并行开发的场景,这个例子仅仅是解答了这个题目,优势并不明显. (doseq [n (range 1 101)] (do (print n...
2014-04-25 13:37:03 126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人