随笔分类 -  JAVA

上一页 1 ··· 3 4 5 6 7 8 下一页
Java 动态代理
摘要:动态代理其实也是代理的一种,所谓动态在于我们的代理类可以适用于所有类型的被代理对象,这一点其实跟PHP的__call()方法是一样的。public interface Flyable { void fly();}public class Eagle implements Flyable { @Override public void fly() { System.out.println("I am eagle, I can fly in 100 km/h"); }}import java.lang.reflect.InvocationHandler;imp... 阅读全文
posted @ 2012-11-11 22:12 ZimZz 阅读(346) 评论(0) 推荐(1)
漫谈Java字符串
摘要:String, StringBuilder, StringBuffer通过一些例子说明String的运行机制,首先明确确定的字符串值会提前被放入1.最简单的常量赋值 public void test() { String test = "test"; }查看JVM字节码public void test(); Code: 0: ldc #2; //String test 2: astore_1 3: return解释:0: 从常量池获取常量#2(即"test")并将其压入栈顶2: 将栈顶字符串引用弹出并赋给本地变量 1 (即变量te... 阅读全文
posted @ 2012-11-10 16:37 ZimZz 阅读(830) 评论(0) 推荐(0)
浅谈Java内部类
摘要:Java的内部类可以获得其外围类的所有成员访问权限,可以很方便的对外围类进行操作。非static内部类都含有一个隐藏的外围类引用,这个引用可以通过 OuterClass.this 来获得使用。通常如果我们的一组操作需要遵循某些规范(例如接口,抽象类),就可以把这一组操作封装成一个内部类来供外部使用,而又不会脱离外围类。参见如下代码:public interface Selector<E> { boolean hasNext(); E next();}public class Sequence { private int[] seq; private Selector<I... 阅读全文
posted @ 2012-11-05 18:38 ZimZz 阅读(374) 评论(0) 推荐(0)
策略模式
摘要:策略模式记住一句话: 使用统一的接口,根据不同的参数产生不同的表现引用我上一篇的工厂,策略模式简单的如下实现就可以了DBContext.javapackage strategyfactory;import db.DataBase;public class DBContext { private DBContext() {} public static void connect(DataBase db) { System.out.println("Using " + db.getClass().getName()); db.connect(); }}... 阅读全文
posted @ 2012-11-02 02:11 ZimZz 阅读(222) 评论(0) 推荐(0)
从简单工厂到工厂方法
摘要:本例子背景为根据客户端不同的选择,生成不同的数据库连接0. 无工厂代码package nofactory;public class NoFactory { private static final short MYSQL = 0; private static final short SQLSERVER = 1; public static void connect(short dbType) { switch (dbType) { case MYSQL: System.out.println("MySQL c... 阅读全文
posted @ 2012-11-02 02:07 ZimZz 阅读(361) 评论(0) 推荐(0)
Java 变参函数的实现
摘要:Java的变参函数实现实际上参数是一个数组,其简单用法如下public class Test { private static void variableParam(Object... args) { for (Object v : args) { System.out.print(v.toString() + " "); } System.out.println(); } private static void variableParam2(int a, int... args) { System... 阅读全文
posted @ 2012-10-27 19:46 ZimZz 阅读(5974) 评论(0) 推荐(0)
Java 静态(static)与非静态语句执行顺序
摘要:Java中的静态(static)关键字只能用于成员变量或语句块,不能用于局部变量static 语句的执行时机实在第一次加载类信息的时候(如调用类的静态方法,访问静态成员,或者调用构造函数), static 语句和 static 成员变量的初始化会先于其他语句执行,而且只会在加载类信息的时候执行一次,以后再访问该类或new新对象都不会执行而非 static 语句或成员变量,其执行顺序在static语句执行之后,而在构造方法执行之前,总的来说他们的顺序如下1. 父类的 static 语句和 static 成员变量2. 子类的static 语句和 static 成员变量3. 父类的 非 static 阅读全文
posted @ 2012-10-27 19:36 ZimZz 阅读(6315) 评论(0) 推荐(1)
Java 的垃圾回收机制
摘要:先看一段转载,原文出自http://jefferent.iteye.com/blog/1123677虚拟机中的共划分为三个代:年轻代(Young Generation)、年老点(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。 年轻代: 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。年轻代分三个区。一个Eden区,两个 Survivor区(一般而言)。大部分对象在Eden区中生成。.. 阅读全文
posted @ 2012-10-27 17:19 ZimZz 阅读(352) 评论(0) 推荐(0)
第二章 一切都是对象
摘要:1. Java数据的存储1) 寄存器: 位于CPU,不可直接控制2) 堆栈(The Stack): 位于内存,用于存储基本类型和对象引用。可以通过堆栈指针获得处理器支持,其速度仅次于寄存器,Java系统需要知道存储在堆栈中所有项的生命周期。3) 堆(The Heap): 位于内存,用于存储Java对象,他更灵活,不需要知道对象的生命周期,但是分配和清理堆需要更多的时间4) 静态存储区: 存放静态(static)成员5) 常量存储去: 存放常量(final)成员6) 非RAM存储: 存放流对象和持久化对象参见这里:http://zmesky.blog.163.com/blog/static/20 阅读全文
posted @ 2012-10-26 16:38 ZimZz 阅读(211) 评论(0) 推荐(0)
Java 旋转数组查找旋转点和任意元素(元素可重复)
摘要:public class Test { // 已知数组A是由有序数组B(数组B未知)向右移动n(0<=n<=B.length)位得到 // 例如 A = {4, 5, 1, 2, 3} 由 B = {1, 2, 3, 4, 5} 向右移动2位得到 // 求在数组A中搜索元素x private static int search(int[] a, int h, int t, int x) { if (h > t) return -1; int result = -1; int mid = (h + t) / 2; i... 阅读全文
posted @ 2012-10-26 10:53 ZimZz 阅读(1434) 评论(0) 推荐(0)
Java 求最大连续子序列积及其起始结束坐标
摘要:public class Test { // 最大连续子序列积 // 假设有集合A,Max[n]表示从A[0]~A[n]的以A[n]结尾的最大连续子序列积, // Min[n]表示从A[0]~A[n]的以A[n]结尾的最小子序列积,则有如下递推式 // Max[n] = Max{ Max[n-1]*A[n], A[n], Min[n-1]*A[n] } // Min[n] = Min{ Max[n-1]*A[n], A[n], Min[n-1]*A[n] } private static void getMaxProduct(float[] a) { ... 阅读全文
posted @ 2012-10-25 00:51 ZimZz 阅读(1106) 评论(0) 推荐(0)
Ubuntu 安装 Java EE
摘要:JavaEE与JavaSE的JDK关系JavaEE其实属于JavaSE的扩展,里面包含Web开发的一些类库,比如servlet,jsp等所以说我们安装JavaEE需要先有JavaSE,但是现在oracle直接提供了JavaEE + JavaSE + GlassFish的打包下载http://www.oracle.com/technetwork/java/javaee/downloads/index.html往下看,找到Java EE 6 Development Kit Bundles with JDK这行大字,下面就是里面包含的东西Includes:JDK 7 Update 7GlassFis 阅读全文
posted @ 2012-10-20 22:41 ZimZz 阅读(3281) 评论(0) 推荐(0)
JAVA本地程序使用FileSystemXmlApplicationContext读取application-datasorce.xml进行数据库操作
摘要:使用绝对路径读取,就绝对不会出错程序代码如下,这个类是BookDaoTest 1 String appContextPath = BookDaoTest.class.getClassLoader().getResource("").getPath() + "../"; 2 File file = new File(appContextPath); 3 String abPath = null; 4 try { 5 abPath = file.getCanonicalPath()... 阅读全文
posted @ 2012-08-18 00:21 ZimZz 阅读(3515) 评论(0) 推荐(0)
JAVA睡眠理发师代码记录
摘要:源码下载 阅读全文
posted @ 2012-06-04 08:06 ZimZz 阅读(857) 评论(0) 推荐(0)
JAVA使用jar命令制作可执行GUI程序
摘要:jar命令简介JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包。当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你找成JAR包时,它会自动生成。JAR包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool.jar工具包中的类。这些细节就不用管它了。让我们看看它怎么么使用吧:一.jar命令参数:jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C目录]文件名...其中{ctxu}这四个参数必须选选其一。[v 阅读全文
posted @ 2012-06-04 07:57 ZimZz 阅读(1902) 评论(0) 推荐(0)
PHP的代理模式
摘要:代理模式与父类和接口的异同相同点:代理模式的作用和父类以及接口和组合的作用类似,都是为了聚合共用部分,减少公共部分的代码不同点:相比起父类,他们的语境不同,父类要表达的含义是 is-a, 而代理要表达的含义更接近于接口, 是 has-a,而且使用代理的话应了一句话"少用继承,多用组合",要表达的意思其实也就是降低耦合度了相比起接口,他们实现的功能又不太一样,语境都是has-a,不过接口是has-a-function,而代理对象时是has-a-object,这个object是has-a-function的object,此外,接口是为了说明这个类拥有什么功能,却没有具体实现,实 阅读全文
posted @ 2012-05-20 02:16 ZimZz 阅读(5286) 评论(0) 推荐(2)
PHP的匿名函数与JAVA的匿名类的应用
摘要:一般来说匿名函数与匿名类用于回调,因为你可能并不知道回调函数或方法的具体实现,并且可能需要根据实际情况进行改变,并且匿名函数不需要使用具体的对象,也减少了开销下面看看PHP的匿名函数应用实现 1 <html> 2 <body> 3 <?php 4 interface Comparator { 5 function compare($i, $j); 6 } 7 8 function getResult($i, $j, $comparator... 阅读全文
posted @ 2012-05-19 03:01 ZimZz 阅读(1176) 评论(0) 推荐(0)
JAVA中的泛型
摘要:泛型的作用在于限制参数类型,让代码更严谨,以后使用时对参数的调用不会出错来直接看看Java内部类泛型的实现 1 // IntelliJ API Decompiler stub source generated from a class file 2 // Implementation of methods is not available 3 4 package java.util; 5 6 public interface Map<K, V> { 7 8 int size(); 9 10 boolean isEmpty();11 12 ... 阅读全文
posted @ 2012-05-19 02:10 ZimZz 阅读(663) 评论(0) 推荐(0)
死锁机制
摘要:介绍: 死锁是由于不同的进程拥有对方需要的被锁资源,又在相互请求对方的被锁资源造成的无限等待局面1 JAVA中的死锁1.1 死锁示例两个死锁类 1 package deadlock; 2 3 import java.util.List; 4 5 public class A extends Thread { 6 private List listA; //A,B两个类共享同一个listA和listB 7 private List listB; 8 9 public A(List listA, List listB) {10 this.listA =... 阅读全文
posted @ 2012-05-16 12:02 ZimZz 阅读(1139) 评论(0) 推荐(0)
JAVA实现多线程生产者消费者模型
摘要:问题背景: 做一个爬虫,从网上爬书籍,爬下来以后插入数据库问题设计: 用多个线程同时从网上爬书,爬下来的书使用一个线程作为插入,这些线程共享同一个书籍队列,并且同时开始运行书籍POJO 1 package thread; 2 3 public class Book { 4 private Integer bookId; 5 private String bookName; 6 7 public Integer getBookId() { 8 return bookId; 9 }10 11 public void setBookId(I... 阅读全文
posted @ 2012-05-16 00:21 ZimZz 阅读(2239) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 下一页