HBase实例演示

2015年3月4日 没有评论 35 人阅读  

HBase是用Java开发的,所以在实际项目中一般都使用Java来访问。下面我们通过一个实例来演示这种使用方法。
你可以在github上面获取这个项目的源代码:

https://github.com/hbaseinaction/twitbase.git

确保你是在linux系统上面操作,并且安装了必要的环境,比如JDK1.6,Maven,还有HBase已经运行起来了。

我们模拟一个twitter功能的项目,需要使用到用户users,推文twits以及用户之间的关系relations这三个基本表。
我们只对用户表users来举例说明,其他都是类似的。

先定义用户模型类:

package HBaseIA.TwitBase.model;

public abstract class User {

  public String user;
  public String name;
  public String email;
  public String password;
  public long tweetCount;

  @Override
  public String toString() {
    return String.format("<User: %s, %s, %s, %s>",
                         user, name, email, tweetCount);
  }
}

然后我们在一个UsersDAO类中封装所有跟用户相关的数据库操作: 阅读全文…

5 0
分类: Hadoop 标签:

HBase入门基础

2015年3月4日 没有评论 23 人阅读  

HBase简介:

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

hadoop生态系统图

上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。 阅读全文…

4 0
分类: Hadoop 标签:

Servlet Filter示例

2015年3月2日 没有评论 28 人阅读  

在写一个springmvc项目中想对用户的请求进行拦截,只有登录用户才能访问资源。这时候可以使用到SpringMVC的拦截器Intercepter,但是这个只能局限在SpringMVC中使用,如果想更加通用一点,最好使用Servlet Filter实现这个需求。

本文将通过几个实际的例子展示下Servlet中的Filter的使用。

1. 我们为什么需要使用Filter?

通常我们会使用session来保存登录用户的信息,通过从session中取出保存的属性值来判断用户是否登录,但是如果我们有大量的请求方法,每个人方法中都这样去判断就会有很多重复代码,将来我们想改动下逻辑,那得改动所有的请求方法实现,所以这个是不可取的。

这时候就是使用Servlet Filter的时候了,它是可插拔的,对于普通的action方法来讲是透明的。它会在执行其他方法之前或将结果返回给客户端之前来执行其他逻辑。

以下几种场景下我们会使用到Servlet Filter:

  • 将请求的参数写入日志文件
  • 对于资源的访问进行统一的授权与验证
  • 在请求到达实际Servlet之前格式化请求内容或请求头
  • 压缩返回数据后发送给客户端
  • 修改返回内容,增加一些cookie、header等信息

前面提到过,Servlet是可插拔的,可以通过在web.xml中配置是否使用。如果我们定义了多个Filter,就会形成一个过滤器链。
通过实现接口javax.servlet.Filter来创建一个过过滤器。

2. Filter接口 阅读全文…

5 0
分类: Web开发 标签:

SiteMesh使用

2015年2月28日 没有评论 21 人阅读  

简介
SiteMesh的介绍就不多说了,主要是用来统一页面风格,减少重复编码的。

它定义了一个过滤器,然后把页面都加上统一的头部和底部。

在maven工程的pom.xml中加入SiteMesh依赖:

<dependency>
    <groupId>opensymphony</groupId>
    <artifactId>sitemesh</artifactId>
    <version>2.4.2</version>
</dependency>

过滤器定义:

在web.xml中:

<filter>
    <filter-name>sitemeshFilter</filter-name>
    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>sitemeshFilter</filter-name>
    <url-pattern>*.html</url-pattern>
</filter-mapping>

阅读全文…

5 0
分类: Spring 标签:

使用PyInstaller打包Python程序

2015年1月14日 没有评论 236 人阅读  

PyInstaller介绍:
PyInstaller是一个能将Python程序转换成单个可执行文件的程序,操作系统支持Windows, Linux, Mac OS X, Solaris和AIX。并且很多包都支持开箱即用,不依赖环境。

环境为windows7操作系统,python2.7.8 virtual environment
官网:https://github.com/pyinstaller/pyinstaller

详细步骤:
1,win7下面先安装这个依赖:pywin32,下载下来后切换到venv2.7,然后使用easy_install xxx.exe安装

2,pip安装PyInstaller:

pip install pyinstaller

3,打包过程中可能会出现msvcp90.dll找不到的问题,去http://cn.dll-files.com/msvcp90.dll.html下载第三个zip文件,解压后放到C:\Windows\System32,如果是64位的还要放到C:\Windows\SysWOW64目录下。

4,再次运行报MSVCR90.dll找不到,同理去http://cn.dll-files.com/MSVCR90.dll.html下载MSVCR90.dll,放到C:\Windows\System32和C:\Windows\SysWOW64中。

5,将你的整个程序先复制到某个临时文件夹下面,比如D:\tmp\core-wxpython,此目录下有个main.py是执行入口

6,执行build命令,并添加必要的搜索路径,外加执行文件的图标:

cd D:\tmp\core-wxpython
pyinstaller -F -w -i d:\tmp\main.ico main.py

如果还想添加自定义的依赖库,就要加上-p参数:

pyinstaller -F -w -p D:\tmp\core-python\libs -i d:\tmp\main.ico main.py

参数说明:
-F 表示生成单个可执行文件
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标 阅读全文…

5 0
分类: Python 标签: ,

python函数装饰器详解

2014年12月26日 1 条评论 96 人阅读  

装饰器简介

python有着强大的表达式语法和函数特性,其中一个我的最爱便是装饰器。在设计模式中,装饰器能够在不使用子类的情况下动态的修改函数、方法或类的功能。
当你需要扩展某个函数的功能却不想直接修改这个函数的时候,装饰器就可以派上用场了。实现装饰器模式有很多种方法,但是python通过强大的语法支持来让这个变得相当容易。

在这篇文章中我将深入讲解Python的函数装饰器,并通过一系列的源码示例来彻底讲清楚这个东西。所有例子都在Python2.7下运行通过,不过只需要稍作改变就可以运行在Python3上了,甚至我猜测什么都不用改变都可以的,读者可以自己去试试。

本质上来讲,装饰器是以包装器形式工作的,其实就是在执行目标函数之前或之后加入自己的逻辑,而不需要改变目标函数本身就可以增强它的功能,也就是说装饰了它。

你需要知道的函数

在深入讨论之前,有一些基本的概念需要讲明清楚。在Python中,函数是一等公民,它们就是对象,因此我们可以使用它来做很多事。

1.把函数赋值给某个变量:

def greet(name):
    return "hello "+name

greet_someone = greet
print greet_someone("John")

# Outputs: hello John

2.在某个函数内部定义另外一个函数:

def greet(name):
    def get_message():
        return "Hello "

    result = get_message()+name
    return result

print greet("John")

# Outputs: Hello John

3.函数可以被当做参数传递给另外一个函数: 阅读全文…

4 0
分类: Python 标签: ,

Django1.7开发博客(10)- 全文搜索

2014年12月22日 1 条评论 398 人阅读  

博客已搬家,本文新地址:http://yidao620c.github.io/blog/20150421/simpleblog-10.html

4 0
分类: Django 标签: ,

通过七牛云存储缓存加速Gravatar头像

2014年11月14日 没有评论 71 人阅读  

最近访问博客有点慢,查了下原因貌似是Gravatar官网被qiang了,是在很无语啊,除了呵呵以外我又能怎样呢?不过我还是要解决这个问题。
如果你使用七牛云存储的话,可以通过七牛云存储缓存加速Gravatar头像以解决因某qiang导致的官方头像加载不了,速度慢的问题。对于WordPress博客速度上的提升绝对是非常可观的。

一、申请七牛账号。
下面的操作需要你有七牛账号,如果没有可以先去注册一个,很简单的。不然不想注册也可以直接进行第三步“修改WordPress的get_avatar函数”,本人可以免费为您提供改该域下的七牛云存储缓存加速Gravatar头像服务。话说回来,还是建议你注册一个账号,用自己的才是最放心的。

二、源站加速。
你申请七牛账号后应该会有个空间的,比如我的空间名叫yidaoblog。进入空间后,选择“空间设置”->“基本设置”->“镜像存储”,输入多说所在的gravatar.duoshuo.com
镜像存储新增 阅读全文…

3 0
分类: 朝花夕拾 标签:

Python正则表达式详解

2014年11月12日 没有评论 85 人阅读  

先介绍下最常见的元字符metacharacter:

符号 含义 示例
literal 匹配字符串的值 foo
re1|re2 匹配正则式re1或re2 foo|bar
. 匹配一个任何字符(换行符除外) b.b
^ 匹配字符串开始 ^Dear
$ 匹配字符串结束 /bin/*sh$
* 匹配前面出现的零次或多次 [A-Za-z0-9]*
+ 匹配前面出现的一次或多次 [a-z]+\.com
? 匹配前面出现的零次或一次 goo?
{N} 匹配前面出现的正则式N次 [0-9]{3}
{M,N} 匹配前面出现的M次到N次 [0-9]{5,9}
[…] 匹配字符组里出现任意一个字符 [aeiou]
[x-y] 匹配从字符x到y中的任意一个字符 [A-Za-z]
[^…] 匹配不在字符集中的任意一个字符 [^A-Za-z]
(*|+|?|{})? 用于上面出现的任何“非贪婪”版本重复匹配次数 .*?[a-z]
(…) 匹配封闭括号中的正则式并保存为子组 ([0-9]{3})?

接下来再介绍几个特殊字符: 阅读全文…

4 0
分类: Python 标签: ,

搭建个人WordPress博客笔记

2014年11月11日 没有评论 211 人阅读  

最近花了几个晚上时间搭建了一个WordPress博客,这是我搭建的第一个独立博客,相比以前用过的一些博客托管网站,现在终于有了点家的感觉。
博客搭建并不复杂,只是过程有点繁琐,适合喜欢折腾的人,主要有下面几个步骤:
1. 购买域名(Domain Name)
2. 注册一个主机空间(Web Host)
3. 域名解析(DNSPod)
4. 安装WordPress
5. 安装WordPress主题
6. 设置固定链接
7. 安装插件
8. 图片存储
9. 添加网站图标
完成这几个步骤之后,博客基本上就可以正常使用了,当然后面还要做一些优化,这方面这里不予讨论,下面针对每一项操作做具体的介绍。

购买域名
域名当然要去最有名的去他爹网站(goDaddy)购买了,作为全球最大的域名注册商,且支持支付宝付款,是我们购买域名的不二选择。
godaddy
域名后缀推荐买一级域名“.com”,虽然“.com”域名比其他的贵些,但是goDaddy会定期做优惠活动,Google上搜索“goDaddy优惠券”会出现很多相关链接,我的域名就是在做活动的时候买的,只花了1美元。如果选中了喜欢的域名,而暂时没有活动时,不妨加入购物车后等几天,相信你会收到打折邮件的。另外购买特价域名时只能用信用卡,所以一张双币信用卡也是必不可少的。 阅读全文…

4 0
分类: 朝花夕拾 标签: