Category Archives: Dev

使用IDEA开发Spark应用

IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能都非常棒,而且IDEA是目前Scala支持最好的IDE。IDEA分ultimate和free edition版,ultimate提供了J2EE等很多非常强力的功能,free edition我觉得已经对于我这样的初学者已经够用了。前面写过一篇配置IntelliJ IDEA 13的SBT和Scala开发环境,本文在这个基础上使用IDEA进行Spark应用的配置和开发。 Continue reading

Posted in Dev, Java|Scala, Spark.

Scala Review : Class & Trait

1. 类成员可见性有两种,private,protected和public(和java一样),private需要声明,public无需额外声明。private[this]是更严格的限定,使用这个限定的成员只对被实例可见。private[class_name]和private是一样的,这个成员对这个类的实例可见。而protected[this]允许子类实例访问这个成员。
示例如下:

Continue reading

Posted in Dev, Java|Scala.

node.js连接Oracle数据库

接触了Node.js大概有一周时间了。异步的非阻塞编程很适合服务器端大量数据库/IO等信息的获取,减少了服务器线程的数量和负载。
第一步是配置Oracle的连接,Oracle的node.js driver基本都依赖于OCCI(Oracle C++ Call Interface),一共有两三个实现。其中node-oracle应该是比较稳定的一个。通过npm编译安装连接Oracle有些麻烦,下面是安装配置的方法。 Continue reading

Posted in Dev, JavaScript, Oracle.

Percona Server 5.6源码编译

Percona现在没有对el7提供稳定的二进制发行包,所以今天小测一下mysql的源码编译,使用的源码为Percona Server 5.6.19-67,环境为CentOS 7.0。

1. 编译依赖

MySQL的编译依赖下面程序:
g++ MySQL从5.6开始需要使用g++来编译源码。
cmake MySQL从5.5开始,需要使用cmake 2.8+进行工程管理。
bison MySQL的语法解析器用于自动生成语法分析器程序,Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序
ncurses-devel 它提供了API,可以允许程序员编写独立于终端的基于文本的用户界面
libaio libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。
zlib MySQL压缩支持
libxml 用于XML输入输出方式的支持,MySQL的可选功能依赖这个包。
openssl 使用openssl 安全socket方式进行通信
使用yum来安装:

Continue reading

Posted in C|C++, Database, MySQL.

MongoDB Two-phase Commit

先恶补一下分布式事务中事务的各类提交机制:(关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究)
NoSQL并没有关系数据库那么严格的事务机制,所以在NoSQL中能否很好的实现事务功能体现了开发人员的功力。两段式提交保证了分布式XA规范的分布式事务的原子性。两段指prepare阶段和commit阶段:

Continue reading

Posted in Database, JavaScript, NoSQL.

MongoDB Replica Set

一个replica set可以看作一个带故障转移的Master-Slave复制集群,它在primary节点失效后(或者secondaries不能访问primary时)会自动选举secondary节点成为master。replica set需要保证实例之间相互了解生存状态,所以需要n*(n-1)*2条心跳检测链路。在集群有一定规模时增加了网络的负担。如果使用开发语言的Driver指定了replica set中的一些server,那么driver会自动引入replica set中所有的server并自动在primary失效后故障转移到其他节点。

Replica Set Members

Replica set最多可以有12个成员,但是只有7个成员能同时投票。成员的角色分为:
Primary 同master节点,可以执行write操作。
Secondary 同Slave节点,接收并复制Primary节点的操作。可以进行一些其他配置:如设置为Non-Voting或优先级
Arbiter 不进行数据复制,只在primary失效后参与投票。
Continue reading

Posted in Database, JavaScript, NoSQL.

MongoDB Aggregation

《Seven Database in Seven Weeks》提供了一个较好的数据实例:

那么最终生成的文档如下:

下面使用上面的文档来测试

统计得到的结果的数量

Continue reading

Posted in Database, JavaScript, NoSQL.

MongoDB Cursor

在Oracle这样的关系数据库中,游标是SQL的一个内存工作区,其作用就是用于临时存储从数据库中提取的结果数据块。Oracle的游标在PL/SQL编写存储过程时会经常用到,可以用于一些特殊的控制和曹走。而MongoDB也提供了游标这个定义—当然MongoDB的”存储过程”就是一段javascript的代码块。
Continue reading

Posted in Database, JavaScript, NoSQL.

Git In IDEA

1. 使用命令行来clone branch
安装git之后,使用下面方式来初始化git本地目录

clone spark源代码

2. IntelliJ配置git
File – Setting – Version Control – Github,配置github account
git-conf
分享项目Github上:
选择菜单”VCS — Import into Version Control — Share project on Github”
git-conf2
不必输出library,等到分享结束。
Successfully shared project on Github: sbtFirst..
3. 通过IntelliJ来checkout源代码
输入git URL:
git://github.com/apache/spark.git
完成后会提示你是否打开。
git-conf3

^^

Posted in Dev, Java|Scala, Spark.

Python Reading List (1)

从接触Python到现在也有四五年时间了,由于平时代码写的少,一直处于打游击的新手状态,缺乏系统的、原理的学习。这段时间陆续收藏了一些干货,借这个时间review一遍。
Python 3 正在毁灭 Python
Python 3打破了对Python 2向后兼容性,“Python 2的字节字符串(str)和Python 3的字节字符串(bytes)之间的根本不同。事实上会很难移植,并且需要一点移植技巧”。但从目前来看许多关键的第三方库都已经成功移植到3.3上。知乎上也对这个问题有着激烈的讨论:http://www.zhihu.com/question/23928496 。Python 3弥补了一些设计上的失误,大部分Python高手还是倾向于转战Python 3的。但是新的语法和规则的引入让我觉得完全在接触一个新的语言,带来的是太多学习的成本。虽然文章有一些危言耸听的成份,但转战Python 3对我来说还有有一些遥远。。
Continue reading

Posted in Dev, Python|R.