随笔分类 - JAVA
Servlet Filter 示例
摘要:1. CityQuery.javapackage com.xxx.servlet;import com.google.common.collect.Lists;import com.xxx.data.HotelInfo;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOExcept
阅读全文
Java Web 项目获取运行时路径 classpath
摘要:假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么java文件夹和resources文件夹在运行时就是classpath的真实位置,如果有一个文件位于 src/main/resources/test.txt有一个类位于 src/main/java/com/qunar/MyClass.javaFILE_NAME = "test.txt"通过如下代码MyClass.class.getClassLoder().getResource(FILE_NAME).getPath();可以直接获取文件路
阅读全文
Junit Hamcrest Mockito单元测试
摘要:pom.xml配置 4.0.0 TestPractice TestPractice 1.0 junit junit 4.11 test ...
阅读全文
Maven配置浅析
摘要:4.0.0 xxx.common xxx-supom-generic 1.2.32 com.xxx.fresh maventest 1.0.0 war junit junit 4.1.0 ...
阅读全文
Guava API - FluentIterable Predicate Function Odering Range Splitter
摘要:这写API可解决的问题1. 集合元素的过滤 - FluentIterable Predicate Range Function1) 先说Predicate,这个相当与一个过滤原则,里面有个apply()方法,通过一定的条件返回true或false,依次判断元素需不需要过滤其中T表示待过滤集合里面的元素类型,举个例子package guavaexam.test;public class Man { private String name; private int age; public Man(String name, int age) { this.name =...
阅读全文
Guava的使用
摘要:package guava;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Comparator;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import com.google.common.base.CharMatcher;import
阅读全文
Java 构造 GET/POST 请求
摘要:package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;public class Test { public static void main(String[] args) throws IOException ...
阅读全文
Java Thread part 3
摘要:wait()和notify()的使用package threadtest3;public class Car { private boolean waxOn = false; /** * wait()和notify()方法必须在锁内,使用wait()时会释放锁 * notify()和notifyAll()只会唤醒释放他获得的锁的wait()方法 * notify()随机唤醒同一个锁的其中一个wait()方法 * notifyAll()唤醒同一个锁的所有wait()方法 */ public synchronized void wa...
阅读全文
Java Thread part 2
摘要:线程的四种状态1. 新建(new) : 在一个线程新建时会短暂的处于这种状态,之后调度器可以将其转为就绪或阻塞2. 就绪(runnable) : 这种状态下,线程在任意时间可以运行,也可以不运行3. 阻塞(blocked) : 这种状态下,线程被阻止运行。只有当其重新进入就绪状态才能继续运行4. 死亡(dead) : 线程不再可调度进入阻塞状态的原因1. sleep() 方法的调用2. Object类的wait()方法的调用,直到收到notify()或notifyAll()的消息3. 线程任务在等待输入4. 在调用同步方法而对象锁不可用时下面是一个阻塞线程的中断例子package thread
阅读全文
Java Thread part 1
摘要:package threadtest;/** * 事实上,Runnable类称作Task更加确切 * 真正的线程是执行单位,应该是Thread或Executor */public class TestThread extends Thread { private static int id = 1; @Override public void run() { System.out.println(this + " id: " + id++); }}package threadtest;import java.util.concurrent.Execut...
阅读全文
Java 注解
摘要:简单使用,利用反射获取注解值package annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** @Target标识该注解使用范围,Method表示用于方法声明处 */@Target(ElementType.METHOD)/** @Retention标志该注解的使用时机,RUNTIME表示VM运行时保留注解
阅读全文
职责链模式 Chain of Responsibility
摘要:职责链模式的作用在于职责转移,其实现实际上是一个链表package chainofres;public abstract class Handler { protected Handler successor; public abstract void action(int request); public void setSuccessor(Handler successor) { this.successor = successor; } }package chainofres;public class ConcurrentHandler...
阅读全文
Java Enum Part 1
摘要:Enum的简单使用package enumtest;public enum Enum1 { MONDAY, SUNDAY; public static void main(String[] args) { for (Enum1 e : Enum1.values()) { System.out.println(e); } }}输出MONDAYSUNDAY嵌套使用package enumtest;import java.util.Random;public enum Test { /** 注意此处枚举实例的写法 ...
阅读全文
命令模式
摘要:命令模式共有4个角色: Command, ConcurrentCommand, Reciever, InvokerCommand : 抽象命令类, 定义了Reciver成员和抽象方法executeCommand()用于执行命令ConcurrentCommand : 具体实现命令类, 继承自Command类并实现了抽象方法executeCommand()Reciver : 实际命令执行者, executeCommand()所产生的行为由Reciever实现Invoker : 定义了Command成员,是Command的调用者命令模式的优点是命令记录/撤销功能,可以批次执行命令,并且命令的产生与执
阅读全文
模板方法模式(Template Method)
摘要:模板方法模式:定义一个算法骨架,并将其中一部分具体实现延迟到子类。他使得子类可以不必改变一个算法结构即可重定义该算法的某些特定步骤。模板方法可以聚集方法实现里的公共部分,而把变化的部分延迟到了子类package templatemethod;public abstract class Salary { /** 算法骨架 */ public float realIncome(float salary) { System.out.println("公共部分"); return salary - tax(salary) - ensurance(salary); ...
阅读全文
eclipse.ini
摘要:eclipse.ini配置参数-Xms1g #初始堆大小-Xmx1g #最大堆大小-Xmn256m #年轻代大小-XX:PermSize=256m #持久代初始值-XX:MaxPermSize=256m #持久代最大值-XX:+DisableExplicitGC #关闭System.gc()-Xnoclassgc #关闭类垃圾回收-XX:+UseParNewGC #设置年轻代并行收集-XX:+UseConcMarkSweepGC #使用CMS垃圾收集机制-XX:CMSInitiatingOccupancyFraction=85 #年老代达到85%时进行CMS回收-Xverify:none #禁
阅读全文
详解Java HashMap
摘要:Map 接口package util;import java.util.Collection;import java.util.Set;public interface Map { int size(); boolean isEmpty(); boolean containsKey...
阅读全文
Java 享元模式(Flyweight)
摘要:当一个应用中使用了大量的对象,这些对象造成了很大的存储开销,而对象的大部分状态或参数都是相同(内部状态)的时候,可以考虑使用享元模式,使用享元模式可以是这些对象引用都共享相同的实例,降低存储开销,而对象之间的不同的状态参数(外部状态)则使用外部参数传入来实现。package flyweight;public abstract class WebSite { protected String type; public WebSite(String type) { this.type = type; } public String getTyp...
阅读全文
Java 泛型 (二)
摘要:Java与混型C++中存在一种叫混型的东西,他可以通过Template动态的构建继承链#include <string>#include <ctime>#include <iostream>using namespace std;template<class T> class TimeStamped : public T { long timeStamp;public: TimeStamped() { timeStamp = time(0); } long getStamp() { return timeStamp; }};template<
阅读全文
Java 泛型 (一)
摘要:泛型的分类1. 泛型类与接口2. 泛型方法package generic;import java.util.ArrayList;import java.util.List;/** * 泛型类及泛型方法 */public class GenericClass<E> { private E data; public E getData() { return data; } // 泛型方法 // 这个方法可以通过Class对象生成任意对象的List public <T> List<T> getT(Class<T> cls, int size)...
阅读全文
浙公网安备 33010602011771号