- 浏览: 55487 次
- 性别:
- 来自: 武汉
最新评论
文章列表
java浅复制和深复制
- 博客分类:
- 经验总结
浅复制
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。
看下面的例子
School类
public class School implements Cloneable{
private String name;
public School(String name){
this.name = name;
...
设计模式在实际开发中的使用——模板方法模式
- 博客分类:
- 设计模式
模板方法模式,定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
下面看一个模板方法模式在实际中的例子:maven的生命周期管理。
maven的生命周期对所有的构建过程进行了抽象和统一。这个生命周期包含了初始化、编译、测试、打包、验证、部署和站点生成等几乎所有的构建步骤。
maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,实际的任务都交由插件来完成。这种思想与模板方法模式非常相似。模板方法模式在父类中定义算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为,这样既保证了算法有足够的可 ...
设计模式在实际开发中的使用——工厂模式
- 博客分类:
- 设计模式
工厂模式分为三类:1)简单工厂模式(Simple Factory)2)工厂方法模式(Factory Method)3)抽象工厂模式(Abstract Factory)可以将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例。
下面以发送邮件和发送短信为例实现这三种模式
简单工厂模式:
又称静态工厂方法模式,定义一个用于创建对象的接口。
接口类
public interface Sender {
void send();
}
两个实现类
public class SmsSender implements Sender {
public v ...
设计模式在实际开发中的使用——单例模式
- 博客分类:
- 设计模式
单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
Runtime类
Runtime是个单例类,表示当前JVM的运行环境。
可以看如下测试代码
Runtime runtime1 = Runtime.getRuntime();
Runtime runtime2 = Runtime.getRuntime();
System.out.println(runtime1.equals(runtime2));
返回true,两个Runtime的实例是一个对象。所以要用Runtime的对象时,不用像上面代码定义一个Runtime runtime1对象,而是 ...
设计模式在实际开发中的使用——代理模式
- 博客分类:
- 设计模式
代理模式,为其他对象提供一种代理以控制对这个对象的访问。
最典型的应用是Spring的AOP。
代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。
静态代理的实现
以代理用户Service为例
接口类
public interface UserService {
public void addUser();
}
实现类
public class UserServiceImpl implements UserService { ...
java的类加载器有3种:
引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoade ...
常用命令
进入/home/hadoop-2.4.0/bin目录
列出根目录:hadoop fs -ls
创建目录:hadoop fs -mkdir /root
删除目录:hadoop fs -rmr /root
本地文件到HDFS:hadoop fs -put /home/test.txt /root/test.txt
HDFS到本地文件:hadoop fs -get /root/test.txt /home/test.txt
查看文件:hadoop fs -cat /root/test.txt
目录赋权限: hadoop fs -chmod 777 /root
...
hadoop2.4环境搭建
- 博客分类:
- hadoop
hadoop官网http://hadoop.apache.org/,可以下载最新的hadoop版本,这里安装最新的hadoop-2.4.0.tar.gz。
采用集群方式安装hadoop,只有一台master服务器,有多个slave服务器,这里暂时定义一台slave服务器。master服务器的域名为master,slave服务器的域名为slave1。
准备条件
1.jdk安装
2.ssh安装
master需要通过ssh无密码访问slave。
执行下面3条指令,最后一条指令是将authorized_keys文件复制到域名为slave1的服务器上
ssh-keygen -t ...
mybatis复杂查询例子
- 博客分类:
- 框架使用
最近用到了mybatis框架,对于多表联合查询将结果集转化为复杂java对象。
现在写下这个例子,基本包括了多对多,一对多,多对一的复杂情况。
表结构和javabean
5张表:博客表blog,作者表author,文章表post,标签表tag,文章标签关联表post_tag。
每个博客对应一个作者,和多个文章。每个文章对应一个作者。文章和标签是多对多的关系。
建表sql语句
CREATE TABLE `blog` (
`blog_id` int(11) NOT NULL AUTO_INCREMENT,
`blog_title` varchar(100) ...
lucene入门例子
- 博客分类:
- 框架使用
lucene是一个开源的全文检索引擎工具包。在学习lucene之前需要对全文检索的原理有一定的了解,http://ye-liang.iteye.com/admin/blogs/new,这篇文章对了解原理很有帮助。
我这里只附上自学过程中写的一个例子。
lucene下载地址:http://lucene.apache.org/
lucene的核心功能两大块:创建索引和搜索
创建索引的代码
// 通过Analyzer的创建指定索引语言词汇的分析器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4 ...
使用CAS实现单点登录
- 博客分类:
- 框架使用
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架。
CAS的下载地址:http://www.jasig.org/cas/download 下载服务端cas-server-3.5.2-release.zip和客户端cas-client-3.2.1-release.zip
我们用3个web工程为例子演示CAS的使用。CA ...
JFace开发的Redis桌面客户端
- 博客分类:
- 框架使用
先介绍一下java桌面程序开发的几个名词。
SUN公司最开始提供了桌面程序开发库AWT,但AWT功能很弱。SUN后来又提供了AWT的升级版Swing。Eclipse提供了更加强大的工具SWT,JFace是对SWT的扩展,API更加简单,并提供了MVC的封装。
功能强弱关系:AWT->Swing->SWT->JFace
eclipse开发SWT需安装插件,具体过程请参考http://blog.csdn.net/powmxypow/article/details/11553395
Redis是一个高效的缓存,查看缓存的数据一般通过命令行,很不方便。
闲来无事,做 ...
SSL分为单向认证和双向认证。单向认证是客户端信任服务端,双向认证是客户端既要信任服务端而且服务端也要信任客户端。
不管是客户端还是服务端,都要存以下两样keystore
KeyStore:保存自己的公钥和私钥。
Trust KeyStore:保存对方的公钥证书。
如果是单向认证,服务器端的KeyStore存储自己的公钥和私钥,客户端的Trust KeyStore要导入服务器端的公钥证书。
如果是双向认证,在上面的基础上,客户端的KeyStore存储自己的公钥和私钥,服务器端的Trust KeyStore要导入客户端的公钥证书。
以上4个KeyStore可以通过 ...
场景:S要通过Internet发送一份文件给R,这份文件非常重要,不能有丝毫差错,而且不能被别人知道文件的内容。如何安全发送这份文件。
采用对称加密算法加密文件后传输。S用对称密钥加密明文后得到密文,通过Internet发 ...
Spring事务学习
- 博客分类:
- 框架使用
基本概念
spring可以通过下面两种方式实现事务
声明式事务:通过注解或XML配置文件指定事务信息
编程式事务:通过编写代码实现事务
使用声明式事务只需修改配置文件,不用编写侵入式的代码就能实现事务管理,这里只 ...