
JAVA技术
文章平均质量分 70
andycpp
做一名合格地java教师
展开
-
Java线程之fork/join框架
fork/join框架是用多线程的方式实现分治法来解决问题。fork指的是将问题不断地缩小规模,join是指根据子问题的计算结果,得出更高层次的结果。fork/join框架的使用有一定的约束条件:1. 除了fork() 和 join()方法外,线程不得使用其他的同步工具。线程最好也不要sleep()2. 线程不得进行I/O操作3. 线程不得抛出checked excepti原创 2013-05-10 17:55:26 · 14543 阅读 · 2 评论 -
Eclipse + Mysql + OpenJpa 开发环境搭建
1、要下载OpenJPA的具体实现,一共8个jar文件,一个都不能少,全部都要导入到Eclipse中2、下载 mysql-connector-java-5.1.7 ,导入到Eclipse中。3、实体的ID生成策略一定要设置为 IDENTITY4、数据库表中的ID字段,一定要设置为 AUTO_INCREMENT 配置文件: org.apache.openjpa原创 2009-07-05 18:14:00 · 3460 阅读 · 0 评论 -
获取html页面的字符集编码方式
利用Java来抓取网页的时候,页面的字符集编码特别重要,弄错了的话很有可能抓到的是乱码。俺写的这个代码在一般情况下还是能够正确识别页面的charset的,只是效率有点低。 public String getCharset(String link) { String result = null; HttpURLConnectio原创 2009-07-12 23:19:00 · 6487 阅读 · 1 评论 -
AJAX与java servlet结合使用的小例子
html页面代码(使用了jquery):html xmlns="http://www.w3.org/1999/xhtml">head>meta http-equiv="Content-Type" content="text/html; charset=utf-8" />script type="text/javascript" src="js/jquery-1.2.6.js">script>scr原创 2008-09-18 10:11:00 · 5257 阅读 · 1 评论 -
SQL语句学习(不断更新中。。。。。。)
1.在where字句中使用别名。//错误!!!!//直接这样写是不行的,where字句是不认识别名的 select sal as salary, comm as commission from emp where salary 5000//正确的方法,使用一个子视图select from ( select sal as salary, comm as commission fr原创 2008-09-08 17:34:00 · 1655 阅读 · 2 评论 -
Hibernian中各种保存方法的区别(转载)
原文地址如下:http://www.blogjava.net/dreamstone/archive/2007/07/29/133071.htmlhibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一、预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient、persistent、detached转载 2008-09-03 22:26:00 · 1161 阅读 · 0 评论 -
大型网站架构演变和知识体系(转载)
之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想转载 2008-09-04 09:46:00 · 1603 阅读 · 0 评论 -
在Eclipse中写第一个hibernate小例子
在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习。在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤。 首先,我们要创建一个数据库,并生成一个表,来供hibernate访问。在这里我们采用MySQL作为DBMS。我们的数据库取名为hbtest,生成一个名叫EVENTS的表。生成数据库的操作比较简原创 2008-08-30 13:12:00 · 3664 阅读 · 2 评论 -
调试开源项目:mvnForum论坛
最近在读一个开源论坛的源码,也就是mvnForum,发现源码是很难读懂的,应该对其进行调试,了解其运行时信息,这样有助于对源码的理解。但是我遗憾的发现,mvnForum的源码是基于ant脚本的,并不是一个eclipse工程,因此并不能直接借助eclipse对其进行调试。我试图将其转变为一个eclipse工程,但是配置方面有点问题,始终无法在eclipse中运行。于是我只能想一些其他的笨办法原创 2008-08-06 13:42:00 · 5081 阅读 · 0 评论 -
String.format函数使用方法介绍
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。原创 2007-08-18 16:10:00 · 38573 阅读 · 7 评论 -
Java范型浅析
从jdk1.5开始,Java中开始支持范型了。范型是一个很有用的编程工具,给我们带来了极大的灵活性。在看了《java核心编程》之后,我小有收获,写出来与大家分享。 所谓范型,我的感觉就是,不用考虑对象的具体类型,就可以对对象进行一定的操作,对任何对象都能进行同样的操作。这就是灵活性之所在。但是,正是因为没有考虑对象的具体类型,因此一般情况下不可以使用对象自带的接口函数原创 2007-08-17 20:18:00 · 16344 阅读 · 3 评论 -
重载与桥接函数
我们首先来看一看下面的代码: class Father ...{ public Object test() ...{ return new Object(); }}class Son extends Father ...{ public String test() ...{ return "asd"; }}原创 2007-08-15 21:36:00 · 1777 阅读 · 0 评论 -
JList用法小结
今天从《java核心编程》中学习了JList 的用法,写下自己的感受,以免时间久了又忘记了。 JList从含义上看是一个列表,有点和JComboBox相似。其实不然,JComboBox的内容只能用一列显示出来,而JList的内容可以多列显示,我想这就是JList存在的意义。 首先是JList的构造,没什么特别的,给他一个对象数组就可以了,代码说明原创 2007-08-11 01:02:00 · 43856 阅读 · 11 评论 -
理解JPA,第二部分:JPA中的关系
你用JAVA写的web程序非常依赖于数据之间的关系,如果你处理不好的话,结果将会变得非常糟糕。在这篇文章中,作者将向你展示,如何利用JPA的标注,在面向对象代码与关系数据之间创建一个透明的接口。最终的数据关系将会更容易管理,并且更具备可移植性。 数据对于任何一个应用程序来讲都是必不可少的,而数据之间存在的关系也具有同样的重要性。关系型数据库能够支持数据表之间的各种关系,并翻译 2009-07-04 18:23:00 · 3989 阅读 · 0 评论 -
理解JPA,第一部分:面向对象的数据持久化方案
很多JAVA项目在处理数据持久化的时候,都努力想寻找一种很自然的面向对象的方式。JPA,作为JSR220的一个产物,提供了一种标准化的操作方式。这个介绍JPA的系列文章一共有2部分,在第一部分里,您将了解到JPA是如何使得数据持久化操作融入到你的面向对象架构当中的。Why JPA? 对于许多JAVA开发者来说,都会问到同一个问题:翻译 2009-07-04 12:50:00 · 4251 阅读 · 0 评论 -
Eclipse编码问题汇总
在Eclipse中,默认编码是GBK当我们通过网络取得一些内容时,直接System.Out.println结果会显示不正确 keyWord = URLEncoder.encode(keyWord, "UTF-8"); URL url = new URL("http://www.google.com/search?q=" + keyWord + "&hl=en&ie=UTF-8&原创 2009-07-11 16:30:00 · 2365 阅读 · 0 评论 -
Java线程之CompletionService
当使用ExecutorService启动了多个Callable后,每个Callable会产生一个Future,我们需要将多个Future存入一个线性表,用于之后处理数据。当然,还有更复杂的情况,有5个生产者线程,每个生产者线程都会创建任务,所有任务的Future都存放到同一个线性表中。另有一个消费者线程,从线性表中取出Future进行处理。CompletionService正是为此而存在,它是原创 2013-05-08 22:03:00 · 14880 阅读 · 1 评论 -
Java线程之FutureTask
FutureTask是Future和Callable的结合体。传统的代码是这样写的Future f = executor.submit(new Callable());然后通过Future来取得计算结果。但是,若开启了多个任务,我们无从知晓哪个任务最先结束,因此,若要实现“当某任务结束时,立刻做一些事情,例如记录日志”这一功能,就需要写一些额外的代码。FutureTask正是为此而存在原创 2013-05-08 21:50:23 · 19550 阅读 · 1 评论 -
Java线程之立刻处理刚完成的任务
ExecutorService的invokeAll()方法可以一次启动多个线程,并将这些线程的执行结果放入一个List。这是一个很方便的方法,但有不足之处,那就是必须等待所有线程全部结束之后,才会返回List,之后才能处理线程的结果。若有些线程执行很快,比如几秒就结束了,另一些线程执行很慢,要几小时,那么短时间线程的执行结果仍然无法立刻获取,必须等几小时之后,所有线程都结束了,他们的执行结果才可用原创 2013-04-28 13:58:55 · 3860 阅读 · 0 评论 -
Java线程之ExecutorService.invokeAny()
有一类多线程编程模式是这样的:启动多个线程,相互独立的(无同步)去计算一个结果,当某一个线程得到结果之后,立刻终止所有线程,因为只需要一个结果就够了。实际应用场景:作为男生,电脑上必须有苍老师的爱情动作片。这种片子必须藏得非常隐蔽,隐蔽到什么程度呢?自己都忘了把它藏哪里了,这可咋办啊?编写多线程程序,针对每一个硬盘分区,启动一个线程,搜索该硬盘分区上的所有文件,找名字中含有“苍老师”的文件。由原创 2013-04-28 10:49:17 · 9481 阅读 · 8 评论 -
Java线程之ThreadLocal
ThreadLocal的功能是实现一个线程独立的全局变量。使用全局变量的好处是,程序的任何地方都可以使用它,而无需进行参数传递。在单线程环境下,将类的属性和方法定义为static,即可实现全局变量。但是在多线程环境下,普通的全局变量是线程间共享的,一个线程修改了全局变量的值,另一个线程可以看到这个修改。使用ThreadLocal实现全局变量,即保留了随处可用这一优点,又能做到线程间原创 2013-04-26 14:43:52 · 5106 阅读 · 0 评论 -
Java线程之Exchanger
Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行public class ThreadLocalTest { public static void main(Stri原创 2013-04-26 15:22:50 · 19012 阅读 · 2 评论 -
Java线程之Phaser
Phaser是一个灵活的线程同步工具,他包含了CyclicBarrier和CountDownLatch的相关功能 首先,来看一下如何用Phaser替代CountDownLatch。对于CountDownLatch而言,有2个重要的方法,一个是await()方法,可以使线程进入等待状态,在Phaser中,与之对应的方法是awaitAdvance(int n)。CountDownL原创 2013-04-23 11:27:36 · 13150 阅读 · 0 评论 -
Java线程之CyclicBarrier
CountDownLatch和CyclicBarrier都能在线程执行时设置中间等待位置,表面上看相似度很高,下面讲讲他们的区别: CountDownLatch是线程A等待B。它有着明确的顺序,A先执行,到中间等待位置后,A调用countDown()方法,激活B,B才开始执行。再强调一下,这个类强调顺序,A先,B后 CyclicBarrier是线程间互相等待,即A和B互相等待,原创 2013-02-19 20:53:27 · 4984 阅读 · 1 评论 -
Java线程之CountDownLatch
CountDownLatch是一个高级的线程同步工具,可以理解为一个闸门,先运行一些线程,计算出一些结果,满足条件后,开闸,然后另一些线程启动。换句话说,它将多个线程分为2类,一类开闸前运行,一类开闸后运行。对于开闸后运行的线程,调用await()方法后,进入等待状态,等待开闸。它内部有一个计数器,初始状态计数器为用户设定的正整数,当开闸前某个线程运行完毕后,调用它的countDown()方法原创 2013-02-15 23:12:02 · 2671 阅读 · 0 评论 -
Java线程之Semaphore
之前一直对Semaphore不是很理解,感觉它功能十分简单,用Lock加Condition完全可以轻易替代它,觉得它根本没有存在的必要。最近遇到一个例子,用Semaphore可以优雅的实现,用Lock加Condition却让我大费脑筋,主要原因是自己水平太菜。记录下来,免得以后忘了。例子:某单位有3台打印机,有10个用户提交打印任务,写程序模拟对打印机的管理。不废话,直接上代码publ原创 2013-02-13 21:15:19 · 2772 阅读 · 0 评论 -
如何重载equals方法
<br />1、参数是Object类型的,将参数命名为otherObject<br />2、检测两个引用是否指向同一个对象<br />if (this == otherObject) return true;<br />3、如果otherObject是null,则返回false<br />if (otherObject == null) return false; <br />4、比较两个对象是否属于同一个类<br />if (getClass() != otherObject.getClass()) re原创 2010-09-27 16:18:00 · 2808 阅读 · 0 评论 -
JAVA格式化字符串速查
<br />语法规则:<br />%[argument_index$][flags][width][.precision]conversion<br /><br />正规使用方法:<br />StringBuilder sb = new StringBuilder();Formatter formatter = new Formatter(sb, Locale.US);formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")<br原创 2010-09-25 22:17:00 · 3547 阅读 · 0 评论 -
Java实用经验总结--Swing篇
Java实用经验总结--Swing篇前言本文前言部分为我的一些感想,如果你只对本文介绍的Java实用技巧感兴趣,可以跳过前言直接看正文的内容。本文的写作动机来源于最近接给人家帮忙写的一个小程序,主要用于管理分期付款的货款的一系列管理,包括过期款的纪录,过期款利息的计算,为提前付款的用户提供一些返款奖励等等,这些与本文无关自不必细说。为了尽快完成任务,我自然选择了我用得最多的Java转载 2007-07-28 21:51:00 · 1881 阅读 · 0 评论 -
Java实用经验总结--日期、数字篇
Java实用经验总结--日期、数字篇1. 日期部分对 于像日期、时间和钱这样的对象来说,不同的国家、地区都有不同的显示格式。即便是同一地区,也可能存在差异。但是在不考虑国家化,时间格式相对固定的情形 下,对于时间的处理还是相对比较简单的。在我最近所作的一个小程序里面,遇到了一些与日期有关的且不考虑国际化和复杂格式的问题。例如如何求两个日期所差 的天数,所差的月数;将日期类转化为规定格式转载 2007-07-28 21:59:00 · 2186 阅读 · 0 评论 -
JFormattedTextField使用心得
文本框是使用率非常高的一个控件, 用于接收用户的输入信息。java中有一个最基本的文本框JTextField可以实现这一功能。但是绝大多数情况下,我们都需要对用户输入的内容做某些检测,这时候JTextField就不是那么好用了,实现起来就比较麻烦了。于是java又提供了一个复杂的文本框JFormattedTextField来帮助我们实现一些常用的功能,当然,如果你要实现的功能太复杂原创 2007-07-19 01:17:00 · 17987 阅读 · 7 评论 -
在Eclipse中使用JUnit4进行单元测试(高级篇)
通过前2篇文章,您一定对JUnit有了一个基本的了解,下面我们来探讨一下JUnit4中一些高级特性。一、 高级Fixture上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@After,我们来看看他们是否适合完成如下功能:有一个类是负责对大文件(超过500兆)进行读写,他的每一个原创 2006-10-10 20:16:00 · 78444 阅读 · 95 评论 -
在Eclipse中使用JUnit4进行单元测试(初级篇)
本文绝大部分内容引自这篇文章:http://www.devx.com/Java/Article/31983/0/page/1我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数原创 2006-10-09 13:16:00 · 482951 阅读 · 70 评论 -
在Eclipse中使用JUnit4进行单元测试(中级篇)
我们继续对初级篇中的例子进行分析。初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4。一、 包含必要地Package在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。最主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分原创 2006-10-09 15:29:00 · 73079 阅读 · 33 评论 -
使用Action创建一个JButton后,改变该按钮的名字可能会遇到意想不到的问题
我们来看一个简单的小例子 有2个按钮a和b,单击a会改变b的名字,单击b再把自己的名字改回来。下面是我写的代码:public class ATestPanel extends JPanel ...{ public ATestPanel() ...{ changeHisName = new JButton("把他的名字改为Jack");原创 2006-09-28 00:26:00 · 5679 阅读 · 1 评论 -
访问打包在Jar文件中的图片资源
当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用get原创 2006-09-16 17:51:00 · 8679 阅读 · 4 评论 -
让BoxLayout管理器尊重JTextField的实际尺寸
我比较喜欢使用BoxLayout布局管理器,因为他支持一些非可视化的元素来对控件间的距离进行设定,比如Box.createRigidArea(d)可以指定一个固定尺寸的间距,Box.createHorizontalGlue()可以指定一个弹性的间距,等等。但是他对不同的控件,提供的支持是不一样的。比如在一个横向布局的BoxLayout中,如果在两个JButton之间加入一个Box.crea原创 2006-09-07 11:26:00 · 7775 阅读 · 3 评论 -
在Struts中配置DBCP数据库连接池
首先,要去Apache的官方网站下载两个软件包,分别是:commons-dbcp-1.2.1和commons-pool-1.3将其中的jar文件拷贝到Struts项目的lib文件夹中。对struts-config文件进行配置,在其中加入如下内容: property="driverClassName" value="com.mysql.jdbc.Driver" />原创 2006-04-21 16:02:00 · 2109 阅读 · 0 评论 -
在Lomboz中配置Tomcat数据库连接池
本文使用的软件版本:tomcat 5.5.15MySql 5Eclipse 3.1正常情况下,配置一个数据库连接池比较简单,主要分3步:1、在tomcat中配置一个数据源,可以通过tomcat自带的工具进行配置,配置完成后,tomcat的server.xml中会多出如下内容: name="jdbc/mysql" type="javax.sql.DataSource"原创 2006-04-14 16:49:00 · 1993 阅读 · 0 评论 -
Tomcat5.5.15连接MySql5.0.18相关配置
1、tomcat数据库连接池配置首先进入tomcat的管理界面,然后进行如下设置:JNDI Name: jdbc/mysql Data Source URL: jdbc:mysql://192.168.1.28/test JDBC Driver Class: com.mysql.jdbc.Driver User Name: rootPassword: 123456然后将MyS原创 2006-03-07 17:12:00 · 1704 阅读 · 0 评论