2014年1月 ’ 的文章存档

程序员的“横向发展”

在我小的时候,家长经常对胖孩子打趣说:哟,身体长得挺快,可惜就是横向发展了。看来在很多人的潜意识里,纵向发展是向上的,值得夸奖,横向发展则不是那么光彩的事情。但是我的工作经历和思考,却让我对“横向发展”有了新的认识。

程序员的发展,长期以来都是大家关心的问题。通常程序员的发展有两大方向,深度和广度。深度发展,就是精深自己的本事,研习新潮尖端的技术乃至学会“屠龙之术”,以绝招打遍天下;广度发展,就是拓宽自己的技能种类,比如学会更多的语言,以完成更多种类的任务。除去这两大方向,其它能选的发展方向似乎就只有“改行”了。
阅读全文

hbase介绍

一、简介

history 

started by chad walters and jim

2006.11 G release paper on BigTable

2007.2 inital HBase prototype created as Hadoop contrib

2007.10 First useable Hbase

2008.1 Hadoop become Apache top-level project and Hbase becomes subproject

2008.10 Hbase 0.18,0.19 released

hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。

它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。

与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

HBase中的表一般有这样的特点:

1 大:一个表可以有上亿行,上百万列

2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。

3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
阅读全文

Java NIO与IO的区别和比较

导读
J2SE1.4
以上版本中发布了全新的I/O类库。本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道。

一. 介绍NIO

NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。

1. Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。
2. Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。
3. Channels:包含socket,file和pipe三种管道,它实际上是双向交流的通道。
4. Selector:它将多元异步I/O操作集中到一个或多个线程中(它可以被看成是Unix中select()函数或Win32中WaitForSingleEvent()函数的面向对象版本)。

阅读全文

深入理解JavaScript定时机制

容易欺骗别人感情的JavaScript定时器

JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如

setTimeout(function() {
    alert('你好!');
}, 0);
setInterval(callbackFunction, 100);

认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义第二个参数意义为隔多少毫秒后,回调方法就会被执行. 这里设成0毫秒,理所当然就立即被执行了.
同理对setInterval的callbackFunction方法每间隔100毫秒就立即被执行深信不疑!
阅读全文

前端工程师必备:细数那些好用的网站开发工具

Web用户体验师Jake Rocheleau撰写了一篇文章分享他在Web开发中经常使用的网站和Web App,其中包含各类字体库、代码库、插件库、配色方案和测试工具。他同时指出,Web开发环境将慢慢转向云端。
阅读全文

新浪云第八期公开课:拥抱云服务,助飞新梦想

在1月4日举行的第八期新浪云计算公开课上,新浪云系统工程师们、新浪云合作伙伴们与数百位开发者齐聚一堂,围绕“拥抱云服务,放飞新梦想”这一主题,展开了深入的分享和交流。

经过2013年的精耕细作,新浪SAE(Sina App Engine)在平台的稳定性、可用性,服务的多样化,以及费用结构调整等方面,都做了许多工作。尤其是在服务方面,SAE力求成为一个最好用的云平台。目前已相继推出四十余种计算、存储、功能型服务,几乎覆盖web、mobile开发方方面面。在此次公开课上,新浪云计算的系统工程师陈峰、高级系统架构师司迎春也向大家介绍了新浪SAE新推出的Channel服务和即将推出的SDN服务。

DSC_0292

 

DSC_0061

新浪云计算总负责人 丛磊也出席了此次活动并发表讲话。

DSC_0280

在做好自身平台服务的基础上,新浪云计算也积极与国内优质Open API服务提供商接洽,目前安全宝、高德地图LBS开放平台、有道云笔记、科大讯飞语音云等都已经成功接入SAE平台,在此次公开课上各合作伙伴们也应邀出席,安全宝在线销售与客服支持部总监 周永成、有道云笔记高级产品经理 兰天、科大讯飞语音云资深工程师 吴伟、高德LBS开放平台总监 李乐也在公开课上作了精彩的演讲。

1

安全宝创始团队成员周永成,他说目前80%的网站都面临着一些威胁,安全宝与SAE此次合作将为大家提供更安全可靠的服务。

www

@有道云笔记 的高级产品经理兰天,他带来的主题是《移动应用如何迈向云端》,他说,创业时用现成的解决方案和经验去做最小化的实验是非常可取的一件事。

DSC_0201

科大迅飞语音云资深工程师吴伟为大家介绍了先进的智能语音技术。并对此次与SAE的合作前景非常看好。

lile

高德LBS开放平台总监李乐接下来与大家分享了如何基于高德地图SDK快速开发LBS应用。

除了各位技术精英们的干货分享,新浪云计算还为到场的参会者准备了Ipad air、Ipad mini、豆浆机、加湿器、红酒、U盘、拉卡拉、新浪公仔、新浪云抱枕、大眼睛抱枕等精美礼物,同时还全程提供饮料、水果、点心等。

DSC_0273

最后,新浪云计算公开课第八期活动在近4个小时的丰富议程后圆满结束,参会者都表示收获颇丰,期待下一次公开课。

rsync 的核心算法

作者:@左耳朵耗子

来源:http://coolshell.cn/articles/7425.html

————————————————————————————

rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync利用由Andrew Tridgell发明的算法。这里不介绍其使用方法,只介绍其核心算法。我们可以看到,Unix下的东西,一个命令,一个工具都有很多很精妙的东西,怎么学也学不完,这就是Unix的文化啊。

本来不想写这篇文章的,因为原先发现有很多中文blog都说了这个算法,但是看了一下,发现这些中文blog要么翻译国外文章翻译地非常烂,要么就是介绍这个算法介绍得很乱让人看不懂,还有错误,误人不浅,所以让我觉得有必要写篇rsync算法介绍的文章。(当然,我成文比较仓促,可能会有一些错误,请指正)
阅读全文

HBase数据迁移(3)-自己编写MapReduce Job导入数据

本篇文章是对数据合并的系列文章之三(共三篇),针对的情景模式就是将现有的各种类型的数据库或数据文件中的数据转入至HBase中。

系列之一    《HBase数据迁移(1)- 通过单个客户端导入MySQL数据》
系列之二    《HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据》

尽管在将文本文件加载入HBase时importtsv工具十分高效,但在许多情况下为了完全控制整个加载过程,你可能更想自己编写MapReduce Job向HBase导入数据。例如在你希望加载其他格式文件时不能使用importtsv工具。

HBase提供TableOutputFormat 用于在MapReduce Job中向HBase的表中写入数据。你也可以使用HFileOutputFormat 类在MapReduce Job中直接生成HBase自有格式文件HFile,之后使用上一篇(迁移2)中提到的completebulkload 工具加载至运行的HBase集群中。在本文中,我们将详细解释如何编写自己的MapReduce Job来加载数据。我们会先介绍如何使用TableOutputFormat,在更多章节中介绍在MapReduce Job中直接生成HBase自有格式文件HFile。
阅读全文

HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据

本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的各种类型的数据库或数据文件中的数据转入至HBase中。

HBase数据迁移(1)

HBase提供importtsv工具支持从TSV文件中将数据导入HBase。使用该工具将文本数据加载至HBase十分高效,因为它是通过MapReduce Job来实施导入的。哪怕是要从现有的关系型数据库中加载数据,也可以先将数据导入文本文件中,然后使用importtsv 工具导入HBase。在导入海量数据时,这个方式运行的很好,因为导出数据比在关系型数据库中执行SQL快很多。
importtsv 工具不仅支持将数据直接加载进HBase的表中,还支持直接生成HBase自有格式文件(HFile),所以你可以用HBase的bulk load工具将生成好的文件直接加载进运行中的HBase集群。这样就减少了在数据迁移过程中,数据传输与HBase加载时产生的网络流量。下文描述了importtsv 和bulk load工具的使用场景。我们首先展示使用importtsv 工具从TSV文件中将数据加载至HBase表中。当然也会包含如何直接生成HBase自有格式文件,以及如何直接将已经生成好的文件加载入HBase。
阅读全文

HBase数据迁移(1)-通过单个客户端导入MySQL数据

本篇文章是对数据合并的系列文章之一,针对的情景模式就是将现有的各种类型的数据库或数据文件中的数据转入至HBase中。

概述

将数据导入HBase中有如下几种方式:
使用HBase的API中的Put方法
使用HBase 的bulk load 工具
使用定制的MapReduce Job方式
阅读全文