自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蜗牛架构师

路走对了就不怕远。

  • 博客(47)
  • 资源 (6)
  • 收藏
  • 关注

转载 Java静态内部类

在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。   在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。   一、静态内部类的使用目的。   在定义内部类的时候,

2014-08-11 23:05:28 802

原创 Velocity模板引擎#set在#foreach中无法赋值null问题

在使用Velocity模板引擎作为Web应用页面渲染引擎,

2014-06-21 16:32:59 3782

转载 通过ServiceLoader实现链式处理

ServiceLoader与ClassLoader是Java中2个即相互区别又相互联系的加载器.JVM利用ClassLoader将类载入内存,这是一个类声明周期的第一步(一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况)。详情请参阅:详解Java类的生命周期那ServiceLoader又是什么呢?Serv

2014-05-16 18:40:31 1254

原创 Hive中join, outer join, semi join区别

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。最常用的就是多表关联查询,主要讲解下join、outer join和semi join的具体使用。join是最简单的关联操作,两边关联只取交集。outer join分为left outer join、rig

2014-05-05 14:12:36 16760 1

原创 BeanFactoryPostProcessor和BeanPostProcessor的区别

BeanFactoryPostProcessor和BeanPostProcessor

2014-05-04 16:23:21 13713

原创 你的梦想是什么?

工作快三年了,突然想起儿时的梦想,然后不经问自己,我现在的梦想是什么?思考了两天没有答案。你的梦想是什么?

2014-03-26 21:18:52 1512

原创 Maven之Surefire插件

在编写写Junit脚本后,进行全网回归的时候,肯定会接触Maven的surefire插件。基本配置如下: org.apache.maven.plugins maven-surefire-plugin -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m ${basedir}/target/te

2013-12-30 17:35:39 39164

原创 API通用设计原则

API通用设计原则

2013-12-13 10:53:37 4051 1

原创 接口与抽象

选择抽象类还是接口?如果要创建一个模型,且该模型将由紧密相关的对象采用,可以使用抽象类。如果要创建由不相关对象采用的功能,就使用接口。如果必须从多个来源继承行为,就使用接口。如果知道所有类都会共享一个公共的行为实现,就可以使用抽象类,并在其中实现该行为。总结:抽象类是模板;接口是规范。抽象类的功能要远超过接口,但定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是

2013-12-06 10:58:45 1117 1

原创 Eclipse安装greenUML插件-推荐

greenUML 快速解决Java类转换UML图。非常简单,快捷。Eclipse安装插件更新地址:http://www.cse.buffalo.edu/faculty/alphonce/green使用方式:1 在package包右键,找到 Green UML;2 点击 Add to New Class Diagram;3 点击具体的类,右键点击 Add to L

2013-11-26 14:02:06 10497 1

原创 Eclipse安装UML2

Eclipse插件实现Java类到UML类图,找了好几个,发现还是UML2最合适。安装步骤:1、通过Eclipse的更新来安装Help -> install New  Softwares -> Available site输入网址:http://www.soyatec.com/update在出现选项后全部勾选选择下一步即可。使用:1、选择File-> New ->Oth

2013-11-26 13:12:02 14812 3

原创 Grep使用正则

基础正则表达式grep 工具,以前介绍过。grep -[acinv]   '搜索内容串'   filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v 反向选择,即显示不包含匹配文本的所有行-h 查询多文件时不显示文件名-l 查询多文件时只输出包含匹配字符的文件名-s 不显示不存在或无匹配文本的错误信息g

2013-10-30 13:20:56 862

转载 RETE算法介绍

RETE算法介绍一、 rete概述Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。Rete是拉丁文,对应英文是net,也就是网络。Rete算法通过形成一个rete网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy)和结构相似性(structural similarity),提高系统模式匹配效率。二、 相关概念2.1

2013-10-29 22:06:03 2168

原创 instanceof, isinstance, isAssignableFrom 区别

instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类  返回true 例:String s=new String("javaisland"); System.out.println(s instanceof String);

2013-10-18 10:13:43 639

原创 Eclipse的maven插件最新地址

最新地址:http://download.eclipse.org/technology/m2e/releaseshttp://m2eclipse.sonatype.org/sites/m2e 这个地址已经不能用了。

2013-09-03 21:24:23 23944 7

转载 查看java内存情况命令

jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。 

2013-07-31 13:43:44 2059

原创 [函数式编程]之美--开篇

1 什么是函数式编程函数式编程(Functional Programming),顾名思义就是基于函数的编程模式,非过程、非对象。In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical fu

2013-04-24 14:05:43 1306

原创 Java[设计模式]之美——单例模式

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在,并通过这个唯一实例来向系统提供实例行为。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个

2013-04-18 14:06:22 907

原创 Java[设计模式]之美——开篇

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为

2013-04-18 14:04:57 1105

原创 微博短链接生成算法与简单实现

自从twitter推出短网址(shorturl),国内也有很多互联网公司推出短网址链接,比如微博等。下面是从网上找到了一些算法总结:算法一:最容易想到的算法可能是利用md5类的加密算法,然后针对加密后的字符串进行处理。1)将长网址md5生成32位签名串,分为4段, 每段8个字节;2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作,

2013-04-17 19:53:39 4055

原创 一种高并发流控程序的简单轻量实现

实现一个流控程序,控制客户端每秒调用某个远程服务不超过N次,客户端是会多线程并发调用。import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;import

2013-04-16 16:06:04 6254 2

原创 一段阻塞队列代码的纠错与优化

下面的代码在某处发现后,立马发现存在问题。public class BlockingQ { private Object notEmpty = new Object(); private Object notFull = new Object(); private Queue linkedList = new LinkedList(); private int maxLength

2013-04-16 14:16:17 1085

原创 一种简单线程并发控制的实现

/** * @author 天水 * @date 2013-4-12 下午05:08:49 */public class ConcurrentController implements Runnable { // 并发控制数 private int controlCount; // 并发控制超时时间 (second) private int controlTimeout; //

2013-04-12 18:18:08 981

原创 二进制流实现深复制

public static Object depthClone(Object srcObj) throws IOException, ClassNotFoundException{ Object cloneObj = null; ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream oo

2013-04-10 17:34:58 792

原创 无锁同步栈实现

public class ConcurrentStack {    private AtomicReference> top = new AtomicReference>();    ConcurrentStack(){    }        public void push(E item) {        Node newHead = new Node(item)

2013-04-10 16:57:27 1729

原创 一种简单无锁队列的实现

Disruptor是内存无锁并发框架,基于一个环数组作为缓冲,详见Disruptor-1.0。下面是自己设计的一个简易版,目前没有发现存在冲突或错误的测试用例。大家可以一起测试下。package tianshui.lockfree.queue;import java.io.Serializable;import java.lang.reflect.Array;import

2013-04-09 17:33:07 6712 1

转载 CAP理论十二年回顾:"规则"变了

CAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于

2013-04-09 10:36:51 996

原创 Java内存模型(上)

Jvm中内存分为两种:一种是栈内存,一种是堆内存。栈内存:存放对象,函数中基本类型的变量和对象的引用变量、静态类方法;特点:存在栈中的数据可以共享。堆内存:存放对象,用来存放由new创建的对象和数组;特点:由Java虚拟机的自动垃圾回收器(GC)来管理。Java 内存模型 ( java memory model ):根据Java Language Specification中的说明,j

2013-04-08 11:25:40 1062

转载 探秘Java虚拟机——内存管理与垃圾回收

本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索。1、Java虚拟机运行时的数据区2、常用的内存区域调节参数-Xms:初始堆大小,默认为物理内存的1/64(-Xmx:最大堆大小,默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制-Xmn:新

2013-04-08 10:02:46 806

原创 Java内存模型(下)

顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:    1

2013-04-07 14:54:30 842

原创 sun.misc.Unsafe

sun.misc.Unsafe是jdk并发类库java.util.concurrent包中使用的底层类,该类中的方法都是通过native方法调用操作系统命令。Unsafe类中直接提供操作系统调度命令park、unpark,减少信号量的开销,提高新能。Unsafe unsafe = Unsafe.getUnsafe(); 通过这样的方式获得Unsafe的实力会抛出异常信息,因为在unsafe的源

2013-04-07 13:33:04 1192

原创 线程池合理配置

合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。要想合

2013-04-02 14:08:57 869

原创 简析分布式计算框架:Hive HBase Hadoop HDFS

HiveHive是为简化编写MapReduce程序而生的,使用MapReduce做过数据分析的人都知道,很多分析程序除业务逻辑不同外,程序流程基本一样。在这种情況下,就需要Hive这样的SQL似的用户編程接口。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑表,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,转换成本

2013-03-29 09:50:50 1691

原创 缓存简析

一、缓存穿透在项目中使用缓存通常都是APP先检查缓存中是否命中,如果命中直接返回缓存内容;如果不命中就直接查询数据库然后回写缓存并返回结果。此时如果查询某个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,DB可能就会挂掉。如果碰到这样的问题可以在封装的缓存SET和GET部分增加个步骤,如果查询一个KEY不存在,就以这个KEY为前缀设定一个标识KEY;

2013-03-28 21:32:02 635

原创 NoSQL Data Models

引自:http://coolshell.cn/articles/7270.html

2013-03-27 09:24:41 1281

原创 理解CAP

CAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但可通过显式处理分区情形,做到优化数据一致性和可用性,进而取得三者之间的平衡。CAP理论主张任何基于网络的数据共享系统,都最多只能拥有以下三条中的两条:数据一致性(C),等同于所有节点访问同一份最新的数据副本;对数据更新具备高可用性(A);能容忍网

2013-03-26 14:12:37 743

原创 mysql之explain

explain命令用于查看执行效果。虽然这个命令只能搭配select类型语句使用,如果你想查看update,delete类型语句中的索引效果,也不是太难的事情,只要保持条件不变,把类型转换成select就行了。explain的语法如下:explain[extended] select ... from ... where ...如果使用了extended,那么在执行完expla

2013-03-26 10:55:04 658

原创 synchronized(class)、synchronized(this)与synchronized(object)

JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。synchronizedvoid f() { /* body */ }和void f(

2013-03-24 16:48:23 2789

原创 序列化Serializable的理解

序列化:简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。序列化情况:当你想把的内存中的对象状态保存到一个文件中或者数据库中时候。当你想用套接字在网络上传送对象的时候。当

2013-03-24 15:14:09 774

原创 设计模式简述

设计模式分为三种类型,共23类。创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。Abstract Factory(抽象工厂模式):提供一

2013-03-23 17:31:05 1060

麻省理工 算法导论(全)

《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。

2010-04-29

Udp穿透技术 资料整理 源代码

NAT(Network AddressTranslators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。

2010-04-24

MC算法C++实现 源代码

MC算法 -- 移动立方体算法。C++中调用OpenGL库是捷径。 MC算法是面绘制中构造等值面的方法中最具代表性的方法之一,已经得到了许多完善及改进。

2010-04-24

wpf程序设计指南(中文版)

WPF为Windows Presentation Foundation的缩写 ,其原来代号为“Avalon”,因“我佩服”拼音首字母组合一样,国内有人调侃地称之为“我佩服”。WPF是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。 程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Window

2010-04-24

计算机软件测试技术 郑人杰

这是一本软件测试方面很好的电子书,看过之后收获很大,所以给大家分享。

2009-05-09

空空如也

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

TA关注的人

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