随笔分类 -  Java基础

摘要:定义 23种设计模式之一,英文叫Decorator Pattern,中文也叫装饰模式、修饰模式。装饰模式是在不改变类文件和不使用继承的情况下,运行期动态扩展一个对象的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不... 阅读全文
posted @ 2012-11-20 15:10 高爽|Coder 阅读(445) 评论(0) 推荐(0)
摘要:定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 UML 实现 Strategy.java,策略类,定义算法的公共接口。 public abstract class Strat... 阅读全文
posted @ 2012-11-13 16:17 高爽|Coder 阅读(451) 评论(3) 推荐(3)
摘要:源起 最近在看程杰著作的《大话设计模式》,全书以小菜和大鸟对话的形势,由浅入深的讲解程序的设计思想,影射出一个个设计模式。我之前虽然也使用过一些设计模式,但没有系统的学习、整理、总结,现从该书入手,拟补自己技术领域的一块空白。该书虽以C#语言为基础,但对Java程序猿来说,却不影响阅读。本专栏记录自... 阅读全文
posted @ 2012-11-08 18:07 高爽|Coder 阅读(331) 评论(0) 推荐(0)
摘要:好久没有写文章了,这段时间事情比较杂,工作也比较杂乱,上周日刚搬完家,从自建房搬到了楼房,提升了一层生活品质,哈哈!不过昨天晚上在公交车上钱包被偷了,前段时间还丢个自行车,不得不感叹,京城扒手真多,还无人处理。言归正传,这一段时间我的工作主要是改进公司的调度器,调度器调度线程池执行任务,生产者... 阅读全文
posted @ 2012-10-25 12:13 高爽|Coder 阅读(389) 评论(0) 推荐(0)
摘要:最近在在翻看java的Garbage Collection,即大名鼎鼎的垃圾收集器GC的相关资料,整理了一下头绪,和朋友们共勉之。 Java的GC机制大名远扬,它大幅提高了程序员开发效率,省去了在c#中要显式的释放每一块内存的麻烦。我们常听到的“内存泄漏”实际上就是指无用的内存没有被及时回收。例如你... 阅读全文
posted @ 2012-08-14 10:06 高爽|Coder 阅读(316) 评论(0) 推荐(0)
摘要:上图简单的介绍了JNI的概念、应用场景、原理、使用步骤,下面通过JNI实现一个Hello world实例。 1. 在Java类中声明native方法,NativeTest.java。 package com.ghsau;public class NativeTest { public... 阅读全文
posted @ 2012-07-15 21:30 高爽|Coder 阅读(229) 评论(0) 推荐(0)
摘要:上一篇:Java线程(七) 接近一周没更新《Java线程》专栏了,主要是这周工作上比较忙,生活上也比较忙,呵呵,进入正题,上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象... 阅读全文
posted @ 2012-04-20 14:49 高爽|Coder 阅读(210) 评论(0) 推荐(0)
摘要:上一篇:Java线程(六) Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和syc... 阅读全文
posted @ 2012-04-14 22:29 高爽|Coder 阅读(288) 评论(0) 推荐(0)
摘要:上一篇:Java线程(五) 接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子:public class CallableAndFuture { public static void main(String[] ar... 阅读全文
posted @ 2012-04-11 22:47 高爽|Coder 阅读(200) 评论(0) 推荐(0)
摘要:上一篇:Java线程(四) 下一篇:Java线程(六) 自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1... 阅读全文
posted @ 2012-04-09 23:31 高爽|Coder 阅读(221) 评论(0) 推荐(0)
摘要:上一篇:Java线程(三) Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可... 阅读全文
posted @ 2012-04-08 00:43 高爽|Coder 阅读(278) 评论(0) 推荐(0)
摘要:上一篇:Java线程(二) 上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者模式是一个经典的线程同步以及通信的模型。 假设有这样一种情况,有一个盘子,盘子里只能放一个鸡蛋,A线程专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋,B线程专门从盘子里取鸡蛋,如果盘子里没鸡蛋,则一直等到盘子里有鸡蛋。这里盘子是一个互斥区,每次放鸡蛋是互斥的,每次取鸡蛋也是互斥的,A线程放鸡蛋,如果这时B线程要取鸡蛋,由于A没有释放锁,B线程处于等待状态,进入阻塞队列,放鸡蛋之后,要通知B线程取鸡蛋,B线程进入就绪队列,反... 阅读全文
posted @ 2012-04-06 22:46 高爽|Coder 阅读(197) 评论(0) 推荐(0)
摘要:上一篇:Java线程(一) 上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的,为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。拿上篇博文中的例子来说明,在多个线程之间共享了Count类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线程栈),工作内存存储了... 阅读全文
posted @ 2012-04-04 10:49 高爽|Coder 阅读(206) 评论(0) 推荐(0)
摘要:作为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果不使用或者不常常回顾,那么还不是自己的知识。大学零零散散搞了不到四年的Java,我相信很多人都跟我一样,JavaSE基础没打牢,就急忙忙、兴冲冲的搞JavaEE了,然后学习一下前台开发(htm... 阅读全文
posted @ 2012-04-02 12:13 高爽|Coder 阅读(225) 评论(0) 推荐(0)
摘要:前段时间做了个任务,是公司liunx机器上有个公司静态网站的文件夹,因为不定期的修改,修改完之后要同步到FTP服务器上,之前一直是手动使用FTP工具来同步,我的任务是开发一个能够同步静态网站的action,集成到ETL工具中,然后每天会自动运行这个action,这样就避免手动同步了。 之前没有做过FTP上传,百度之,做FTP上传有两个类库,一个sun的FtpClient,不过sun是不推荐使用这个类库的,而且引入的时候要指定rule,另一个是Apache的FTPClient,我先使用了sun的,出现了一些问题,没有找到解决方案,本文主要说明的是使用Apache的工具类,关于sun... 阅读全文
posted @ 2012-02-17 21:03 高爽|Coder 阅读(595) 评论(0) 推荐(0)
摘要:假分页,顾名思义,不是真正的在数据库里进行过滤,而是从数据库查询之后,取得全部结果,在展现的时候做些手脚。import java.util.ArrayList; import java.util.List; public class Pager { /** * 当前页码 */ private int currentPage; /** * 总页数 */ private int totalPage; /** * 总行数 */ private int totalRows; /** * 每页显示条数 */ private int avgRows =... 阅读全文
posted @ 2012-02-08 20:46 高爽|Coder 阅读(712) 评论(0) 推荐(0)