自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pfnie的博客

学如逆水行舟,不行则退。以研究源码为乐趣,以写代码为疯狂。

  • 博客(13)
  • 收藏
  • 关注

原创 linux上Nginx+Tomcat搭建高性能负载均衡

1. 我们的目标大致如下: 2. 步骤 首先我们有三台linux机器,分别是npf1,npf2,npf3。 2.1 在npf1机器上面已经安装好nginx。具体细节查看:nginx在linux上的安装 。 2.2 我们需要在npf2机器和npf3机器上面安装tomcat。至于如何在linux上面如何安装tomcat,请查看:linux安装tomcat。 2.3 我们然后修改上

2016-08-28 17:42:00 755

原创 SpringMVC源码剖析(六)- HandlerInterceptor的来龙去脉

Spring MVC 中的Interceptor 拦截器的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆。类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。更准确的说,我更认为它更像Spring AOP里面的环绕通知,在我们调用处理器的前后进行处理。 其实整个spring mvc的大致请求过程如下所示: 那么Han

2016-08-27 08:38:13 850

转载 hadoop的心脏–shuffle过程解析

再上一次我们提到,shuffle是MapReduce的心脏,是奇迹发生的地方,这次我们来详细的探讨一下shuffle的真个过程。MapReduce确保每一个reducer是的输入都是按照键值Key排序的,这里排序主要是依据当前Key继承了Comparable类,有时候为了加快排序的速度,也会自定义一个内部类Comparator。系统执行排序的过程就是称为shuffle。学习shuffle的工作机制

2016-08-14 20:40:54 543

原创 Redis的Sorted Set的操作

一、介绍 和Set一样,Sorted Set 也是string类型元素的集合,不同的是每个元素都会关联一个权。通过权值可以有序的的获取集合中的元素。 该Sorted Set 类型适合的场景: 获取热门帖子(回复量)信息: select * from message order by backnum desc limit 5; (以上的需求可以通过简单的sql语句完成,但是sql语句比较耗费

2016-08-14 19:51:41 737 1

原创 【白话设计模式五】模板方法模式(Template Method)

1 场景问题 1.1 登录控制 几乎所有的应用系统,都需要系统登录控制的功能,有些系统甚至有多个登录控制的功能,比如:普通用户可以登录前台,进行相应的业务操作;而工作人员可以登录后台,进行相应的系统管理或业务处理。 现在有这么一个基于Web的企业级应用系统,需要实现这两种登录控制,直接使用不同的登录页面来区分它们,把基本的功能需求分别描述如下: 先看看普通用户登录前台的登录控制的功能:

2016-08-14 18:20:55 845 1

原创 【白话设计模式四】组合模式(Composite)

1 场景问题 1.1 商品类别树 考虑这样一个实际的应用:管理商品类别树。 在实现跟商品有关的应用系统的时候,一个很常见的功能就是商品类别树的管理,比如有如下所示的商品类别树: - 服装 - 男装 - 衬衣 - 夹克 - 女装 - 裙子 - 套装 仔细观察上面的商品类别树,有以下几个明显的特点:

2016-08-14 16:02:21 1403 1

原创 【白话设计模式三】迭代器模式(Iterator)

1 场景问题 1.1 工资表数据的整合 考虑这样一个实际应用:整合工资表数据。 这个项目的背景是这样的,项目的客户方收购了一家小公司,这家小公司有自己的工资系统,现在需要整合到客户方已有的工资系统上。 客户方已有的工资系统,在内部是采用的List来记录工资列表;而新收购的这家公司的工资系统,在内部是采用的数组来记录工资列表;但是幸运的是,两个系统用来描述工资的数据模型是差不多的。 要

2016-08-14 15:28:59 604

原创 【白话设计模式二】观察者模式(Observer)

1 场景问题 1.1 订阅报纸的过程 来考虑实际生活中订阅报纸的过程,这里简单总结了一下,订阅报纸的基本流程如下: 首先按照自己的需要选择合适的报纸,具体的报刊杂志目录可以从邮局获取; 选择好后,就到邮局去填写订阅单,同时交上所需的费用; 至此,就完成了报纸的订阅过程,接下去的就是耐心等候,报社会按照出报时间推出报纸,然后报纸会被送到每个订阅人的手里。 画个图来描述上述过程

2016-08-14 12:40:25 1558

原创 《深入理解mybatis原理(十一)》 Mybatis插件原理之实现细节

Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。 一、代理链的生成 Mybatis支持对Executor、StatementHandler、PameterHandler和ResultSetHan

2016-08-14 12:22:46 1794

原创 《深入理解mybatis原理(十)》 Mybatis插件原理简单分析

我们目前在Mybatis中,我们知道Mybatis的Mapper是一个接口,而不是一个实体类。在Java中接口是没有办法运行的。那么它是怎么运行的呢?它是通过动态代理运行。 一、MyBatis是怎么实现这个动态代理的 /** * Copyright 2009-2015 the original author or authors. * * Licensed under

2016-08-14 10:42:37 2817

原创 【白话设计模式一】代理模式(Proxy)

1 场景问题 1.1 访问多条数据 考虑这样一个实际应用:要一次性访问多条数据。 这个功能的背景是这样的;在一个HR(人力资源)应用项目中客户提出,当选择一个部门或是分公司的时候,要把这个部门或者分公司下的所有员工都显示出来,而且不要翻页,好方便他们进行业务处理。在显示全部员工的时候,只需要显示名称即可,但是也需要提供如下的功能:在必要的时候可以选择并查看某位员工的详细信息。 客户方是

2016-08-14 10:00:48 674

原创 Hive-0.12.0的安装及简单使用

1. 下载地址hive,这里我下载的版本是hive-0.12.0. 2. 我将hive的安装包上传到/usr/local/devtool/hive目录下面了,然后执行下面的命令。 3.进入到/usr/local/hive-0.12.0 4. 执行下面的命令。已经进入了hive的命令窗口。 5. 执行show databases;查看hive默认有哪些database

2016-08-06 20:17:46 1047

原创 动态上下线datanode节点及副本均衡机制

本篇博客继hadoop-2.4.1 HA 分布式集群安装部署,现在我们的状态如下: 此时我们的集群是好的。 1.现在我们通过Java程序向HDFS提交文件。 package com.npf.hadoop; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hado

2016-08-06 14:30:17 1373

空空如也

空空如也

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

TA关注的人

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