- 博客(21)
- 收藏
- 关注
原创 java 设计模式 - 组合优先于继承
组合通过创建一个由其他对象组合的对象来获得新功能的重用方法 新功能的获得是通过调用组合对象的功能实现的 有时又叫聚合 例如: 一个对象拥有或者对另外一个对象负责并且两个对象有相同的生命周期。(GOF) 一个对象包含另一个对象集合 被包含对象对其他对象是不可见的并且只能从包含它的对象中访问的特殊组合形式 组合的优缺点优点 被包含对象通过包含他们的类来访问 黑盒重用,因为被包含对象的内部细...
2013-07-07 11:14:50
787
原创 java 设计模式 - 开闭原则
开闭原则算是前5中原则的一个抽象总结,前五种是开闭原则的一些具体实现,所以如果使用开闭原则,其实有点虚,因为它没有一个固定的模式,但是最终保证的是提高程序的复用性、可维护性等要求。开闭原则(Open Closed Principle)开闭原则的核心是:对扩展开放,对修改关闭。白话意思就是我们改变一个软件时(比如扩展其他功能),应该通过扩展的方式来达到软件的改变,而不应爱修改...
2013-07-07 11:14:32
123
原创 java 设计模式 - 单一职责原则
有时候,开发人员设计接口的时候会有些问题,比如用户的属性和用户的行为被放在一个接口中声明。这就造成了业务对象和业务逻辑被放在了一起,这样就造成了这个接口有两种职责,接口职责不明确,按照SRP的定义就违背了接口的单一职责原则了。单一职责原则(Single Responsibility Principle),简称SRP。定义:There should never be more tha...
2013-07-06 14:42:41
108
原创 Java 设计模式 - 迪米特法则
迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高。形象一点的比喻类似于:监狱内的犯人是不应该跟外面的人接触的,当然或许会有探亲的。这里的监狱就是类,里面的犯人就是类内部的信息,而监狱里的狱警就相当于迪米特法则的执行者。迪米特法则(Law of emeter)定义:一个对象应该对其他对象了解最少迪米特法则的核心观念就是类间解耦,弱耦合,...
2013-07-06 14:28:38
108
原创 Java 设计模式 - 接口隔离原则
接口隔离原则要求的是在一个模块应该只依赖它需要的接口,以保证接口的小纯洁。而且需要保证接口应该尽量小,即设计接口的时候应该让接口尽量细化,不要定义太臃肿的接口(比如接口中有很多不相干的逻辑的方法声明)。首先看看接口隔离原则的定义,有两种定义第一种:Clients should not be forced to depend upon interfaces that they don't...
2013-07-06 14:27:36
79
原创 Java 设计模式 - 依赖倒置原则
而依赖倒置原则的本质骑士就是通过抽象(抽象类或接口)使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合。但是这个原则也是6个设计原则中最难以实现的了,如果没有实现这个原则,那么也就意味着开闭原则(对扩展开发,对修改关闭)也无法实现。依赖倒置原则(Dependence Inversion Principle),简称DIP定义High level modules should...
2013-07-06 14:25:54
61
原创 Java 设计模式 - 里氏置换原则
里氏置换原则(Liskov Substitution Principle),简称LSP。所有引用基类的地方必须能够透明的使用其子类对象。也就是说,只要父类出现的地方子类就能够出现,而且替换为子类不会产生任何错误或异常。里氏置换原则(Liskov Substitution Principle),简称LSP定义:Functions that use pointers or refere...
2013-07-06 14:23:31
231
原创 Linux 下查看文件编码以及编码转换
在linux下有时候需要编辑、查看windows下的文件,这样会经常遇到文件编码转换的问题,在windows中默认的文件格式在linux下看起来就有可能是乱码了(由于linux下的编码一般是utf-8的),这就需要进行编码转换。现在就来看下如何解决乱码问题。 一、查看文件编码。 在打开文件的时候输入:set fileencoding 即可显示文件编码格式。 二、文件...
2013-07-02 11:49:11
222
原创 i++, ++i 原理
最近网上看到一个面试题目是关于i++和++i,对于i++ 和++i 很多人都知道是不一样的,i=i++ 和 i=++i, 未必有人知道其中的奥妙,看了很多文章关于i++和++i的区别,都没有指出其中不一样的根本原因。有人说i++是线程安全的,有人说不是的,如果不是的那原因是什么呢?我们先看下面一个例子public class Test { public static v...
2013-05-09 00:00:52
258
原创 转载 在Linux中查看系统资源占用情况的命令
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。 top: 主要参数d:指定更新的间隔,以秒计算。q:没有...
2013-05-04 23:31:44
62
原创 Linux中统计文件行数
语法:wc [选项] 文件…说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。该命令各选项含义如下: - c 统计字节数。 - l 统计行数。 - w 统计字数。这些选项可以组合使用。输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并...
2013-05-04 23:09:55
145
原创 java 方法参数传递
Java方法参数,不管是原始类型还是引用类型,传递的都是一份副本,如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值。如果在函数中改变了副本的值不会改变原始的值。如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了...
2013-04-30 17:02:00
81
原创 数据库索引结构
数据库进阶系列之一:漫谈数据库索引 一、引言对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……] 二、B-Tree我们常见的数据库系统,其索引使用的数据结构多...
2013-04-17 21:55:50
79
原创 Oracle SQL performance tunning
我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(in...
2013-04-16 22:05:47
199
原创 Usage of grep
1.作用linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep [options]3.主要参数[options]主要参数:-c:只输出匹配行的计数。-I:不区分大小写(只适用于单字符)。-h:查询多文件时...
2013-04-10 23:37:12
95
原创 Difference between static and final static
static :我们都知道被static 修饰的变量都是静态变量,对于静态变量在JVM中存在于常量池中,常量池一般在perm heap 中. 对于static 变量的初始化是在类构造器clinit中。public class A { public String name="peter"; public static final int age=100; public st...
2013-04-06 23:49:30
94
原创 Spring Beanfactory initialize 源码浅析
We can create Beanfactory by ClassPathXmlApplicationContext. The following code will create new beanfactory instance.Beanfactory beanfactory = new ClassPathXmlApplicationContext("applicationContext...
2013-04-06 23:06:59
137
原创 Spring Beanfactory create
Spring的依赖注入容器的核心是Beanfactory。BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。创建BeanFactory 可以通过手工代码的方式也可以通过配置文件的方式。具体有以下几种方式: 1. ClassPathXmlApplicationContext:默认从classpath的xml配置...
2013-04-06 16:46:30
144
原创 The trap of Arrays.asList
The java.util.Arrays provide convenient way to create a fixed-size list initialized to contain several elements: public static <T> List<T> asList(T... a) { return new Array...
2013-04-02 13:52:54
86
原创 Usage of java.util.concurrent.atomic
First let's see what does Atomic mean?(see http://www.techopedia.com/definition/16246/atomic-java) Atomic is a toolkit of variable java.util.concurrent.atomic package classes, which assist in wr...
2013-04-02 11:39:22
110
原创 Java Reference 浅析
自从jdk 1.2 开始, Java的引用类型分就为四种, 强引用Strong reference, 软引用Soft reference, 弱引用weak reference,虚引用 phantom reference。Reference 是一个抽象类,而 SoftReference,WeakReference,PhantomReference 以及 FinalReference 都是继承它的...
2013-03-30 20:04:10
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人