- 博客(206)
- 资源 (3)
- 收藏
- 关注
转载 Presto:Facebook的分布式SQL查询引擎
背景 Facebook是一家数据驱动的公司。 数据处理和分析是Facebook为10亿多活跃用户开发和交付产品的核心所在。 我门拥有世界上最大的数据仓库之一,存储了大约 300PB 以上的数据。 这些数据被一系列不同种类的程序所使用, 包括传统的数据批处理程序、基于图论的数据分析[1]、机器学习、和实时性的数据分析。 分析人员、数据科学家和工程师需要处理数据、分析数据、不断地改
2014-07-29 12:25:11
1254
转载 Presto: Interacting with petabytes of data at Facebook
By Martin TraversoBackgroundFacebook is a data-driven company. Data processing and analytics are at the heart of building and delivering products for the 1 billion+active users of Facebo
2014-07-29 09:50:01
1363
转载 网络IO之阻塞、非阻塞、同步、异步总结
1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.csdn.net/historyasamirror/article/details/5778378。我结合网上博客和书总结一下,加以区别,加深理解。
2014-07-26 08:30:28
922
原创 网络编程
宏哥分享的大作,不分享出来,就埋没了本次分享主要针对TCP协议,不涉及UDP等其他网络协议。网络编程的核心接口------》建立连接,数据收发客户端使用connect发起连接,服务器端使用listen监听和accept建立连接。图里面少了一个重要的函数,socket——创建套接字,两边都要使用。连接过程:backlog,在连接建立完成之前的连接请
2014-07-25 12:15:01
1297
转载 JAVA多线程与并发学习总结
非常不错的一篇we1. 计算机系统使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的缓存数据不一致的情况,则同步回主内存时需要遵循一些协
2014-07-25 10:33:55
803
转载 java-String中的 intern()
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;3. String str=”kvill”;String str=n
2014-07-25 08:16:09
773
原创 java并发体系结构
并发编程线程通信共享内存和消息传递线程同步控制不同线程的执行顺序java并发基于共享内存模型指令重排序编译器重排序处理器重排序cpu重排序写缓存区(cache、寄存器)内存屏障顺序一致性与Happens-before执行结果有序性volatile解决内存可见性问题锁lock 显示锁可中断可定时
2014-07-24 23:35:18
1549
翻译 定时器UNIX crontab vs Quartz
Using cron seems to add another entry point into your application, while Quartz would integrate into it. So you would be forced to deal with some inter-process communication if you wanted to pass
2014-07-19 10:38:58
1927
转载 深入理解Java内存模型(六)——final
深入理解Java内存模型(六)——final本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-6与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把
2014-07-14 17:03:15
793
转载 深入理解Java内存模型(七)——总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几
2014-07-14 17:02:20
674
转载 深入理解Java内存模型(四)——volatile
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-4volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例
2014-07-14 16:58:39
764
转载 深入理解Java内存模型(五)——锁
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-5锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExamp
2014-07-14 16:57:36
682
转载 hbase分区列压缩
Hbase 是一个分布式的、面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统。 Hbase不同于一般的关系型数据库(RDBMS)。是一种适用于非结构化数据存储的数据库,且Hbase是基于列的数据库。 下面的内容基于我们已经安装好hadoop、hbase。 一、hbase shell 介绍
2014-07-10 16:12:47
1973
原创 工作两周年个人习惯总结
* 时刻做笔记 * 自己的一点突发异想(服务崩溃异常,项目、系统、异常堆栈信息、解决方案) * 别人的博客、分享(党政史、经济、计算机。。。) * 日日review,周周review,月月review * 勤于整理资料 * 总结、反思、否定、归纳、上路 * 善于关联,有点物化成线,树,图 * 树立
2014-07-07 20:12:53
1506
转载 HBase 在淘宝的应用和优化
本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化。对Hadoop、HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结,分享给大家。目 录 [ - ]前言原因应用情况部署、运维和监控测试与发布改进和优化将来计划前言hbase是从 hadoop中分离出来的apache顶级开源项目。由
2014-07-02 08:20:52
887
转载 深入理解Java内存模型(三)——顺序一致性
深入理解Java内存模型(三)——顺序一致性本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-3数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排
2014-06-24 10:41:13
803
转载 双重检查锁定与延迟初始化
双重检查锁定的由来在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:public class UnsafeLazyInitialization { private static I
2014-06-24 10:36:24
589
转载 happens-before俗解
happens-before俗解学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁)访问临界区,但他们的第
2014-06-24 10:33:12
600
转载 面向 Java 开发人员的 Scala 指南: 深入了解 Scala 并发性
在 前一篇文章 中,我讨论了构建并发代码的重要性(无论是否是 Scala 代码),还讨论了在编写并发代码时开发人员面对的一些问题,包括不要锁住太多东西、不要锁住太少东西、避免死锁、避免生成太多线程等等。这些理论问题太沉闷了。为了避免读者觉得失望,我与您一起研究了 Scala 的一些并发构造,首先是在 Scala 中直接使用 Java 语言的并发库的基本方法,然后讨论 Scala API 中
2014-06-18 20:33:00
895
转载 深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后
2014-06-18 20:30:00
705
转载 深入理解Java内存模型(一)——基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必
2014-06-18 20:29:08
668
转载 深入理解java内存模型系列文章
深入理解java内存模型系列文章是本人在InfoQ发表的并发编程的连载文章。深入理解java内存模型(一)——基础深入理解java内存模型(二)——重排序深入理解java内存模型(三)——顺序一致性深入理解java内存模型(四)——volatile深入理解java内存模型(五)——锁深入理解java内存模型(六)——final深入理解java内存模型(七)——总结提纲jav
2014-06-18 20:28:21
973
转载 Hive SQL执行计划深度解析
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有
2014-06-17 11:12:58
7948
1
原创 java.util.concurrent并发包一览
并发容器阻塞队列BlockingQueue,阻塞队列接口BlockingDeque,双端阻塞队列接口ArrayBlockingQueue,数组构成的有界阻塞队列LinkedBlockingQueue,链表构成的有界阻塞队列LinkedBlockingDeque,链表结构的双端阻塞队列DelayQueue,使用优先级实现的无界阻塞队列,并且元素
2014-06-16 13:08:39
1487
原创 关于thread的几点认识
线程生命周期线程api详解线程执行start() - 使该线程开始执行,java虚拟机调用其run方法。run() - 如果该线程是使用独立的Runnable运行对象构造的,则调用其Runnable对象的run方法;否则该方法不执行任何操作并返回。线程阻塞sleep() - 让当前正在执行的线程休眠指定的时间(暂停执行)yiel
2014-06-16 13:08:03
733
原创 关于synchronized与volatile的一点认识
贪婪是一种原罪,不要再追求性能的路上离正确越来越远。内存模型java内存模型重排序锁synchronized什么是锁独占锁分拆锁分离锁分布式锁volatile内存模型java内存模型提到同步、锁,就必须提到java的内存模型,为了提高程序的执行效率,java也吸收了传统应用程序的多级缓存体系。在共享内存的多处理器体系架构中,每
2014-06-16 13:04:23
1561
转载 MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYIndex)。InnoDB是
2014-06-02 15:49:09
700
转载 朴素贝叶斯分类器的应用
生活中很多场合需要用到分类,比如新闻分类、病人分类等等。本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法。一、病人分类的例子让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。某个医院早上收了六个门诊病人,如下表。 症状 职业 疾病 打喷嚏 护士 感冒
2014-06-01 23:28:57
920
转载 蚂蚁变大象:浅谈常规网站是如何从小变大的
2005年,我开始和朋友们开始拉活儿做网站,当时第一个网站是在linux上用jsp搭建的,到后来逐步的引入了多种框架,如webwork、hibernate等。在到后来,进入公司,开始用c/c++,做分布式计算和存储。(到那时才解开了我的一个疑惑:C语言除了用来写HelloWorld,还能干嘛?^_^)。总而言之,网站根据不同的需求,不同的请求压力,不同的业务模型,需要不同的架构来给予支持。
2014-06-01 23:26:56
1260
转载 一致性 hash 算法( consistent hashing )
一致性 hash 算法( consistent hashing )张亮consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N
2014-06-01 23:22:21
619
转载 基于HBASE的并行计算架构之rowkey设计篇
1.大数据在HBASE存储、计算以及查询的应用场景海量数据都是事务数据,事务数据都是在时间的基础上产生的。数据的业务时间可能会顺序产生,也可能不会顺序产生,比如某些事务发生在早上10点,但是在下午5点才结束闭并生成出来,这样的数据就会造成存储加载时的时间连续性。另外海量数据的挖掘后产生的是统计数据,统计数据也有时间属性,统计数据如果进行保存必须保证在统计计算之后数据尽量不再变化,如果统计发
2014-05-30 11:35:57
863
原创 设计房屋测试用例
房子到期,出去找房子,看了15家,有感于找房子的艰辛,特设计测试用例交通周边交通,公交地铁,打的是否方便(特别夜晚)上班高峰期做电梯是否拥挤生活超市、菜市场、饭店、公园、医院米面粮油等所住楼附近有无垃圾场、广场舞、棋牌室等下雨天,小区排水设施是否吵闹,影响休息安全小区有无保安、物业周边派出所、居委会。。。所住房屋门窗是否结实、正常关闭房屋内部冰箱
2014-05-24 00:57:35
1817
原创 静态、动态、命令、函数式编程语言。。。
静态语言:编译阶段,确定变量的类型动态语言:运行阶段,确定变量的类型静态语言:关注变量的类型,动态语言关注的是类型的变量。Based on JVM有两个维度的语言的划分JVM 动态 or 静态;命令式 or 函数式 语言静态 && 命令式 JAVA静态 && 函数式 Scala动态 && 命令式 Groovy动态 && 函数式 Clousure
2014-05-06 13:14:37
951
原创 用JStack和Top分析Java进程CPU占用率
1、top查找出哪个进程消耗的cpu高 top -H 2、top中shift+h查找出哪个线程消耗的cpu高 top -H -p PID top -H -p 26514top -p PID,shift + h top -p 26514,线程按cpu排序3、.jstack
2014-05-06 13:04:57
1758
原创 mysql分组取前n条记录
要求:统计统计每天排名前三的手机系统版本单天统计:select log_date,type,total from dolphin_device_rel where log_date='2013-06-18' and biz_type='os' order by total desc;方法一:select log_date,type,total from (select log_
2014-05-06 12:56:03
1253
转载 mysql索引原理之聚簇索引
索引分为聚簇索引和非聚簇索引。以一本英文课本为例,要找第8课,直接翻书,若先翻到第5课,则往后翻,再翻到第10课,则又往前翻。这本书本身就是一个索引,即“聚簇索引”。如果要找"fire”这个单词,会翻到书后面的附录,这个附录是按字母排序的,找到F字母那一块,再找到"fire”,对应的会是它在第几课。这个附录,为“非聚簇索引”。由此可见,聚簇索引,索引的顺序就是数据存放的顺序
2014-05-06 12:53:53
944
站在hadoop上看hive
2014-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅