自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

践行者John的专栏

改变不了世界,那就改变自己吧

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 手动编译Clojure

项目中使用clojure,一般会用leinigin或者maven插件进行编译,官网上对手动编译一笔带过,读起来有点抽象。以下为手动编译的方法。clojure环境:[JW-MacBook]:demo JohnWang$ ll $CLOJURE_HOMEtotal 9280drwxr-xr-x@ 14 JohnWang  staff      476  2  3 10:59 ./

2015-04-13 13:52:56 1763

原创 Apache Storm0.92版本集群搭建

http://blog.csdn.net/palainapplecattle/article/details/37495517

2014-07-07 18:31:35 1131

原创 Zookeeper集群部署

操作系统为centos,jdk版本为1.6,zookeeper版本为3.4.6

2014-07-07 08:14:45 596

原创 Zookeeper集群模式部署配置

一.服务器基本配置 以三台机器 1.添加domain

2014-07-04 15:01:15 542

原创 jQuery中的编程范式

浏览器前端编程的面貌自2005年以来已经发生了深刻的变化,这并不简单的意味着出现了大量功能丰富的基础库,使得我们可以更加方便的编写业务代码,更重要的是我们看待前端技术的观念发生了重大转变,明确意识到了如何以前端特有的方式释放程序员的生产力。本文将结合jQuery源码的实现原理,对javascript中涌现出的编程范式和常用技巧作一简单介绍。  1. AJAX: 状态驻留,异步更新  首

2014-02-25 11:36:19 701

原创 ssh免输入及多tab clone的脚本

1. 安装expect        $sudo apt-get install expect其他linux版本用户请酌情编译源码安装。  2.编写脚本        我放在了/home/xx/utils目录中,       $vi sshlogin.exp内容如下:   #!/usr/bin/expect# This script needs one argumen

2014-01-26 19:04:52 980

原创 protobuf安装及一个Demo

关于protobuf,google官网是如此介绍的:   Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols

2014-01-24 18:51:49 4877

原创 Python各种作用域中的函数

本文观点中系个人理解,如有错误请不吝指正。Python中的作用域(或者说上下文)           python这种混杂类型语言(动态类型\解析执行),采用了分离作用域的方式来避免重名问题,让我们能够更好的组织程序代码的结构,直观上来讲Python分为以下几种作用域:           1.包(Package):                     包含一些模块,需

2014-01-23 18:19:53 1222

翻译 Python多线程

原文地址http://www.tutorialspoint.com/python/python_multithreading.htm运行多个线程类似并发运行多个不同的程序,但是有以下好处:        1.同一进程下的多个线程与主线程共享数据空间,这样在互相共享信息、通信上比独立进程之间更容易。        2.线程通常也叫做轻量级进程(light-weight process

2014-01-22 18:38:40 1264

翻译 Django学习系列(二)--第一个App

本文翻译自https://docs.djangoproject.com/en/1.6/intro/tutorial01/本机环境:    操作系统:Ubuntu12.04    python2.7.3    Django-1.6.1一.关于Django    Django是一个Web开发框架,提供了划分明晰的MVC开发模型,最具吸引力的是其orm、admin模块、模板引擎,

2014-01-20 13:13:46 996

翻译 Django学习系列(一)--安装Django

本机环境:  操作系统:Ubuntu12.04  python2.7.31.下载安装wget https://www.djangoproject.com/m/releases/1.6/Django-1.6.1.tar.gztar -zxvf Django-1.6.1.tar.gzcd Django-1.6.1sudo python setup.py install

2014-01-20 10:15:35 583

原创 Ubuntu安装Thrift连接Hive

Thrift提供了一种通过代码生成引擎生成中间代码来实现跨语言调用的机制。本文介绍                    1.如何安装Thrift编译器,                   2.通过一个小例子展示如何使用python通过Thrift调用Hive必要前提条件:1.已安装配置jdk 2.已安装Hadoop,Hive并已启动、可使用。3.已安装gcc与g++并可使用。

2014-01-18 21:55:17 1667

原创 python学习-列表(list)

在python中对列表的实现类型是list,简写形式是[],可以通过如下几种方式创建一个列表实例。#l = list()#l=[1,2,3]#可以简单认为iterable类型就是常用的list\dict\tuple#具体参考http://www.ehow.com/how_8#598683_test-iterable-python.htmll=list(iterable)

2014-01-17 14:25:56 956

原创 python学习-sys模块

只写比较常用的,sys模块的其他DATA请参考help(sys).1.sys.argv   shell脚本通过$x(x为数字)获取被送入脚本的参数,而python通过sys.argv做这一点,代码如下:             #!/usr/bin/env python#*-*coding:UTF-8 *-*import sysif __name__=='__main__':

2014-01-17 11:47:23 612

原创 命令行翻译脚本

看英文文档遇到不认识的单词很纠结,猜又猜不出,用网页翻译不ok,所以写了一个脚本调用google翻译。#!/usr/bin/env python# -*- coding: utf-8 -*-import jsonimport reimport sysimport urllib2import typesres = 'http://translate.google.cn/tran

2013-12-20 18:35:30 904

原创 CommonLisp(四)----宏

宏的存在让我们能够创造出新语法。我们先看一下内置的宏。1.when  when的语法如下: (when (condition)            body )例子:#!/usr/bin/env clisp(defun foo (x y) ;when宏可以执行满足条件的多个表达式 (when ( > x y)

2013-12-16 01:58:39 657

原创 CommonLisp(三)---高阶函数与匿名函数(lambda演算)

我一直坚信,简单为美,如果一个概念不能够用数学或者简单的形式描述,那么其可用性就不能保证。一.高阶函数简而言之,使用函数作为参数的函数就是高阶函数。如果在较高的层面上抽象,函数也是数据,我们可以将函数作为数据在函数之间进行传递,并在某个合适的时刻执行该函数,有时候我们也将高阶函数叫做回调函数(callback)或者钩子函数(hook),这也体现在任何一种将函数作为数据看待的语言中,

2013-12-15 20:08:49 2799

原创 CommonLisp(二)----函数

一.函数声明使用defun宏创建函数,一个典型函数的格式如下:              (defun name (parameter) "function document." functionbody)我们可以定义一个实现两个数相加的函数:        #!/usr/bin/env clisp(defun verb

2013-12-15 19:24:28 699

原创 CommonLisp环境搭建及HelloWorld

$sudo apt-get install sbcl clisp slime暂时不用Emacs,而用viHello,World例子创建文件$vi helloworld.lisp输入内容:  定义hello-world函数并调用(defun hello-world()      (format t "Hello,World!"))(hello-wo

2013-12-15 02:58:13 1137

原创 mysql left join right join inner join例子

建表语句如下:    #--------------create table_a-----------create table table_a( id int(11) not null auto_increment, name varchar(20) not null, primary key(id))engine=InnoDB default charset=utf8;#

2013-12-01 23:48:05 830

原创 查看HDFS中LZO压缩文件内容的脚本

最近常常需要查看LZO文件里面的内容,这些文件通常很大,放在hdfs上。我没有好的方法,我以前偶尔查看其中内容都是直接get到本地然后用lzop解压缩然后再more的。这样做当你偶尔使用的时候即使文件稍微大点,也许也是可以接受的。但现在我需要常常grep里面的内容,就不那么欢乐了。所以写了个shell脚本lzoc[ lzo cat],用来专门查看HDFS里LZO文件的内容,正常情况下它不输出任

2013-11-29 15:04:58 4943 1

原创 Nexus搭建Maven私服

给出一种较为清爽的的搭建方式,将连接外网Maven库的工作委托给Nexus,Nexus会保证有缓存可以使用。1.下载nexus  wget http://download.sonatype.com/nexus/oss/nexus-2.7.0-03-bundle.tar.gz 解压,在nexus的bin目录中运行nexus脚本启动nexusnexus默认访问地址为 http://lo

2013-11-29 10:52:31 653

原创 Hadoop启用Lzo压缩

本文参考http://slaytanic.blog.51cto.com/2057708/1162287,感觉本地编译较为麻烦,所以总结了再Ubuntu上比较简洁快速的方式。关于lzo压缩与gzip、bzip2要所的异同优劣请查阅其他文档,本文只做配置。前提,假定所有hadoop节点都已部署完成,ant、maven、git都已安装完成并可用。1、2步骤需要在所有Hadoo

2013-11-28 18:15:12 2365

原创 Ubuntu安装pidgin及QQ插件

只介绍Ubuntu下的安转方法:       1.添加源:       sudo add-apt-repository ppa:lainme/pidgin-lwqq        2.更新 sudo apt-get update         3.安装QQ插件sudo apt-get install libpurple0 pidgin-lwqq       4

2013-11-28 13:41:27 4526

原创 爬虫(三)-NIO下载服务NIOFetcher的设计

之前写的一个爬虫下载部分使用HttpClient,效率相当不敢恭维,最近打算使用NIO实现该部分,记录一下设计及实现过程中遇到的的问题。一.基本思路        以下为可能会犯的错误         1.连接到同一服务器的SocketChannel数量过多            看到很多人用SocketChannel模拟Http请求实现方式几乎都是为每一个域名下的URL注册一个S

2013-11-11 18:32:09 1180

原创 关于rt.jar的源码问题

最近在写爬虫的下载模块,免不了涉及到nio下载的问题,因为Oracle提供的jdk中rt.jar的源码并没有打入到src.zip中,所以先要看sun.nio.ch中的代码必须换一个src.zip。解决方法:         1.windows             下载对应版本的openjdk,用openjdk中的src.zip替换原来的src.zip即可

2013-11-11 15:16:40 3117

原创 一个启动Java程序的shell脚本

附件是一个测试工程,未添加pid的处理。附件为一个测试工程。#!/usr/bin/env bash#-----------------------------------------------###-----------------------------------------------JVM_OPTIONS="-server -Xms20m -Xmx20m -XX:M

2013-11-09 11:33:52 1427

原创 散列表

散列表是一种以常数平均时间执行插入,删除,查找的数据结构。    插入、删除、查找时都会对key进行hash计算,以确定需要操作的条目。    我们在构造散列表时通常要考虑两个问题:1.如何将key均匀插入 2.如何解决key冲突。一.散列函数     散列函数主要用来解决均匀分布问题,该函数在操作散列表时执行频繁,所以我们需要的散列函数有以下需求:         a.执行速

2013-11-08 01:26:27 654

原创 树的概念及实现

一.树的概念及性质  1.树的概念定义               我们使用递归定义树,树是由一个root节点及0个或多个子树组成,每棵子树的root的节点都与整棵树的root节点通过一条有向边连接。  2.树的性质             一棵树有N个节点与N-1条边组成,对于边的计算很容易理解:除去root节点外每个节点由一条边连接root节点。  3.树的实现

2013-11-07 21:28:32 560

原创 队列的概念及实现

队列也是一种表,队列提供两种基本操作,即在队头(front)出队(Dequeue)与在队尾(rear)入队(Enqueue)。与栈相同,队列也有种实现方式,链表实现与数组实现。一.队列的链表实现         基本想法,在保留一个header节点作为定位front的指针,并在队列结构体中定义rear指针,同时为了在出队时方便获取上一个节点的指针,我们以时间换空间牺牲一点内存多

2013-11-07 06:46:56 506

原创 栈的概念及实现

栈是一种先入后出(后入先出)的数据结构,栈的这种性质被用于很多场景,如代码编译、代码语法检查、函数调用等。栈的实现方式有两种:用链表实现、用数组实现。一.链表实现    看过几本数据结构的书如《Data Structures and Algorithm Analysis in C》与《C Primer Plus》,也可能是由于写惯了Java代码,总是感觉书中的代码抽象的力度不够,所以自

2013-11-06 03:43:28 673

原创 一个使用命令处理文件的例子

对于含有以下内容的文件visited_url.dbhttp://www.csdn.nethttp://www.csdn.net/bloghttp://www.csdn.net/blog/201312http://www.csdn.net/infohttp://www.csdn.net/apphttp://www.csdn.net/infohttp://www.csdn.net

2013-11-06 02:41:08 726

原创 uniq命令

整理以作备忘。一.工作方式及默认功能 uniq命令操作的是相邻行。uniq命令只筛选相邻的匹配行并输出或写入文件,不附加任何选项时匹配行将在首次出现处被合并。如以下文件: http://www.csdn.nethttp://www.csdn.net/bloghttp://www.csdn.net/blog/201312http://www.csdn.net/info

2013-11-06 02:23:11 781

原创 sort命令

sort是排序命令,结合多个option可以实现多种排序功能。  工作原理         sort命令将文本的每一行作为一个处理对象,从字首字符向后按ASCII码比较排序后,默认按升序输出。        如有以下文件是爬虫的visited队列记录:http://www.csdn.nethttp://www.csdn.net/bloghttp://www.csdn.n

2013-11-06 01:37:51 702

原创 双向链表的概念及实现

在实现单链表时,查找当前节点的上一个节点较为麻烦,需要遍历链表进行查找,所以可以用在每个节点中存储指向上一个节点的指针的方式解决这个问题,这就是双向链表。在实现中依然保留header作为表头,NULL作为表尾。      代码如下:#ifndef _DOUBLE_LINKED_LIST_H#define _DOUBLE_LINKED_LIST_Htypedef int Eleme

2013-11-06 00:44:04 1030

原创 单链表概念及实现

单链表这种数据结构表现为:在内存中可以不连续存储,每一个节点存储一个指向下一个节点的next指针。单链表在search时以O(N)的时间运行,而在insert时以O(1)时间运行。       在实现方面,以C为例,一般会保留一个header作为表头,以NULL为表尾,废话不多说,上代码。 接口定义如下: #ifndef _List_H #define _List_H /

2013-11-05 22:51:33 728

原创 插入排序

插入排序的基本思想:每次将一个待排序的记录插入按照关键字的大小插入到前面已排序的子序列中,直到全部记录插入完成为止。比较常用的两种插入排序算法是直接插入排序与希尔排序。下面分别介绍两种排序算法的基本思想、具体实现、复杂度分析。一.直接插入排序   1.基本思想             直接插入排序假定将整个待排序序列分为两个部分:已排序子序列与待排序子序列。        

2013-11-05 01:43:55 620

原创 JVM系列(二)--垃圾收集

如果从垃圾收集进行分析,我觉得可以从两个方面进行: 1.如何判断某一个对象可以进行回收 2.在哪些Runtime Data Area进行回收 3.如何进行回收一.判断某个对象是否可以回收 主流的商用语言,如Java及C#甚至Lisp都是采用GC Roots Tracing(根搜索算法)判断某个对象是否可以进行回收。具体的做法是选定一些可以作为GC Roots的对象,如: a.JVM

2013-11-05 01:34:36 744

原创 JVM系列(一)--JVM运行时数据区

随着时间的推移,我觉得有必要将一些之前相对模糊但是对自身技术提高会有帮助的原理、概念、实现进行一下系统的整理,所以就从JVM系列开始吧。 本系列主要参考《Java虚拟机规范(第二版)》、周志明先生写的《深入理解Java虚拟机》,具体虚拟机主要参照Hotspot。一.Runtime Data Areas 在运营及维护我们的站点或者应用时,需要针对crash或者内存溢出、内存泄露定位问题以

2013-11-05 01:34:34 749

原创 布隆过滤器

Bloom Filter是一种空间利用率很高的随机数据结构,它用位数组很简洁地表示一个集合,并能判断一个元素是否包含于该集合。Bloom Filter用一定的代价换取这种高效:在判断一个元素是否包含于该集合时,有一定的几率(即误判率 false positive rate)产生误判(false positive)。因此,Bloom Filter不合适那些“零错误”的应用场合。在能容忍低错误率的应用

2013-11-05 01:34:32 604

shell脚本启动Java程序测试工程

shell脚本启动Java程序测试工程

2013-11-09

空空如也

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

TA关注的人

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