Java
文章平均质量分 62
炼气散人
等儿子高考后,或许会回来
展开
-
Java IO两大体系
区别一套是input/output stream 体系,一套是reader/writer体系,两者的区别是stream负责的是字节流的数据,reader/writer负责的是字符流。设计模式decorator模式该模式主要用于在不改变已有的component设计和代码的情况下,不断的增加附属功能。打个比喻,就像你有一副画,为它配一个或者多个不同的画框。具体可以参考这里:http://www.cnb原创 2015-03-28 21:02:54 · 1802 阅读 · 0 评论 -
JSF2自定义组件编程系列 第八部分
JSF 自定义复合组件 国际化 Ajax原创 2011-01-09 20:06:00 · 4401 阅读 · 3 评论 -
JSF2自定义组件编程系列 第六部分
<br /> 在前一个例子中,我创建了一个Backing class:HtmlInput2,这是用来代表Composite Component的顶层对象NamingContainer的类。这给了一个机会让我可以覆盖encode/decode方法,从而用Java代码增强Composite Compnent的行为。<br /> 本例子更进一步,再创建一个Managed Bean,用来接收用户的输入,拦截点击按钮事件,并显示用户的输入。注意,这个新的Managed Bean在我的jsfex项目内原创 2011-01-07 15:10:00 · 3474 阅读 · 0 评论 -
JSF2自定义组件编程系列 第七部分
JSF Customized Composite Component,校验,日志以及debug信息原创 2011-01-07 21:25:00 · 3457 阅读 · 1 评论 -
JSF2自定义组件编程系列 第五部分
<br /> 在写这一章的时候,没有想到遇到很多的困难。现在简单的说一下:<br />1.添加taglib.xml文件里面的namespace看上去很美,但是带来了很大的困扰—EL表达式失效。这是我和另一位程序员在java.net上的帖子。<br />http://www.java.net/forum/topic/glassfish/glassfish-webtier/el-composite-component-taglib-jsf20<br />目前我的解决方案是绕过这个问题,只采用标准name原创 2011-01-06 20:22:00 · 6530 阅读 · 8 评论 -
JSF2自定义组件编程系列 第四部分
<br />第四部分 第一个简单的Composite Component<br /> 自己编写html标记的输出是繁琐的,更何况可能还要支持其他的客户端的标记语言。好在我们可以复用JSF2的标准tags.本节实现前一节HtmlInput tag的界面,称之为HtmlInput2 tag。完整的功能将在后面一节中实现。<br />首先,在src/main/resources/META-INF/下创建目录jsfex,在jsfex目录下创建HtmlInput2.xhtml文件,内容如下:<br />原创 2010-12-30 14:45:00 · 3732 阅读 · 2 评论 -
JSF2自定义组件编程系列 第三部分
JSF2 自定义组件原创 2010-12-30 11:33:00 · 5600 阅读 · 7 评论 -
JSF2自定义组件编程系列 第一部分
JSF2 Customize Component 自定义组件 Maven3原创 2010-12-27 20:23:00 · 8262 阅读 · 10 评论 -
JSF2自定义组件编程系列 第二部分
JSF2 自定义组件 Maven3原创 2010-12-28 14:16:00 · 4029 阅读 · 0 评论 -
UBuntu9.10配置Log4j日志服务器
1)下载Log4j的程序http://logging.apache.org/log4j/1.2/download.html解压后在我的机器下目录如下:~/work/apache-log4j-1.2.15如果要重新编译,需要安装maven2,可以参考INSTALL文件的内容。可以不用编译。2)在~/work/apache-log4j-1.2.15目录下添加一个Server原创 2009-11-26 20:13:00 · 3278 阅读 · 0 评论 -
UBuntu9.10开发Java程序拦截inotify文件事件
从这里获得最新版本http://code.google.com/p/inotify-java/,并参考下面的安装手册注意,当前版本号是0.1,所以[version]都要换成0.1并且还需要设置环境变量JAVA_HOME,可以只在编译用的终端设置export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15/要先安装过ant,然后进入解原创 2009-11-24 10:02:00 · 4710 阅读 · 0 评论 -
Java通过SSH2协议运行远程程序
我使用Ganymed库,访问http://www.ganymed.ethz.ch/ssh2/网页,下载最新版本的程序,解压后,在NetBeans下如下设置。然后在我们的Java应用程序中,加入Ganymed-ssh2-build2库。假定我在192.168.0.110的UBuntu Server 9.04系统的/home/chenshu目录下放了一个文件夹t原创 2009-11-17 20:04:00 · 11163 阅读 · 5 评论 -
Java运行shell脚本
利用Runtime.execute方法,我们可以在Java程序中运行Linux的Shell脚本,或者执行其他程序。参考了互联网上的这篇文章:http://lee79.javaeye.com/blog/418549(感谢一下),我重新整理了代码。现在通过CommandHelper.execute方法可以执行命令,该类实现代码如下:package javaapplication3;原创 2009-11-16 20:04:00 · 12224 阅读 · 1 评论 -
用NetBeans6.7.1开发iBATIS3程序
这真是一个艰难的探索,iBATIS也许是个不错的Framework,但是文档写的很不好,从头到尾都缺少一个完整的例子。如果习惯了微软MSDN和NetBeans.org上面的文章风格,你会觉得iBATIS的文章作者真的是不懂如何写文章。iBATIS文章中很多例子片段都不能使用,不知道为什么? 先交代一下开发环境:UBuntu9.10 AMD64 英文版 + NetBeans6.71. +原创 2009-11-06 22:42:00 · 2809 阅读 · 0 评论 -
在NetBeans下根据xml schema创建java类
在我的上篇文章"在NetBeans下将Java对象映射到XML文档",利用NetBeans模板代码将Person对象的数据序列化到一个xml文档中(后面称之为instant document)。本篇介绍如何使用NetBeans6.7.1从一个xsd文件(后面称之为xml schema)创建一个Java类。Person.xml内容大体如下(去掉第一行和最后一行)我们需要一个描述jav原创 2009-10-23 15:21:00 · 4338 阅读 · 0 评论 -
在NetBeans下将Java对象映射到XML文档
新建一个Java Application 工程Marshaller.创建一个类Person,代码如下:package freebird;/** * * @author Administrator */public class Person { private String name; private String sex;原创 2009-10-23 11:36:00 · 4174 阅读 · 0 评论 -
Java的深拷贝和浅拷贝
熟悉C++的朋友对这个话题应该很熟悉,浅拷贝就是指两个对象共同拥有同一个值,一个对象改变了该值,也会影响到另一个对象。深拷贝就是两个对象的值相等,但是互相独立。本来想把以前写的一篇文章扩充一下,没想到居然牵扯出很多复杂的问题。本文测试环境是windows xp sp3中文版、NetBeans6.7.1,JDK1.6-update16。这里抛砖引玉,希望大家能提宝贵意见。 首先,J原创 2009-09-19 15:16:00 · 15781 阅读 · 10 评论 -
升级到GlassFishV3.1
GlassFishV3.1 Maven UBuntu原创 2011-03-01 20:59:00 · 3503 阅读 · 0 评论 -
最佳程序设计探索之一:需求驱动编写自顶向下的代码
<br /><br /> <br />写一段文字描述程序要完成什么样的功能,然后将这段文字的名词转换成类或者类的属性,将动词转换成类的方法。这是80年代中期的经典做法。<br /> <br /><<设计模式解析>> 2nd 开篇就说,上述方式有局限性,因为只关注了如何实现对象,是不完整的解决方案。或许只应该是解决方案中的一部分。<br /> <br />我目前的做法是,仍然用一段文字来描述程序要完成什么样的功能,根据自己的经验(当然也包括名词和动词分析法)写出调用代码,然后再慢慢实现每个类。我这个方法有个出原创 2011-05-15 11:22:00 · 10158 阅读 · 22 评论 -
Ubuntu 13.10-14.10 安装Oralce JDK
每次下载,解压,设置环境变量,真是麻烦。还是apt-get 方便。下面的三行命令搞定:$ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-java7-installer原创 2013-10-24 15:50:52 · 4153 阅读 · 0 评论 -
MongoClient 操作MongoDB replica-set
对于MongoDB的Java驱动, 从2.10.0版本后,文档中提醒Mongo类将会被废除,现在开始都鼓励使用MongoClient类。下面演示一个Java程序如何使用最新的MongoClient类来对MongoDB写操作。首先假定已经有了一个Replica-set集群,分别是d1, d2和 d3三台虚拟机。然后创建一个Maven构建的Java应用程序。使用了maven exec plugin用来原创 2013-05-08 16:20:45 · 11774 阅读 · 0 评论 -
Java运行系统命令
之前写过一个版本的Java代码用来调用linux shell脚本,原文如下:http://blog.csdn.net/sheismylife/article/details/4817851不过没有试过windows下运行,试了一下,还是不错的,把代码做了一些调整,封装成对象,这样更方便多线程下调用,不用担心静态变量互相干扰的问题。先看一下怎么用: public static void mai原创 2013-04-26 10:45:43 · 3364 阅读 · 0 评论 -
启动Java程序为Linux服务
不想用别人封装的程序,比如wrapper service。用自己的脚本搞定。1.创建一个start.sh脚本,里面运行java程序:-UU-:----F1 master_rest 18% L25 (Shell-script[sh])-----------------------------------------------------------------------------原创 2012-11-29 16:28:12 · 7403 阅读 · 1 评论 -
Jersey创建standalone server 二
上一篇文章产生的工程就可立刻开发了。不过看一下pom.xml,什么jersey版本是1.8.太老了。用最新版本吧。呵呵,下面要折腾一下。第一,pom.xml要修改一下: com.sun.jersey jersey-server ${jersey-version} com.sun.jersey jersey-gr原创 2012-11-06 14:08:59 · 4005 阅读 · 0 评论 -
Jersey创建standalone server 一
有时候,我们需要创建一个web service,但是并不需要部署在某个容器中,而是像一个应用程序一样运行,自己监听端口,解析HTTP请求,发送HTTP响应。这样可以占用更少的资源,比如以前我碰到过一台租用的服务器由于核心线程数目的限制,Glassfish server都无法启动。现在有很多系统服务程序都是这样的实现,比如Gerrit2等。Jersey也提供了这种方式,内部集成了grizzly2.原创 2012-11-06 13:08:56 · 4733 阅读 · 0 评论 -
将properties文件放在Jar包并读取
有时候需要在一个library内部打包一个properties文件,包含一些配置信息,而不能部署在外部。在maven工程里面,将properties文件放在src/main/resources目录下。就会自动打包到classes目录下。然后在jar包的代码中想要读取这个文件,可以用类似下面的代码:public class Client { private final static Str原创 2012-06-29 11:38:33 · 11616 阅读 · 0 评论 -
Jackson应用三 对象属性的控制
通常都是通过第二篇介绍的Full Data Binding技术迅速享受Jackson带来的方便快捷。但是又很快就碰到一些小的问题,如何忽略某些属性,不让它参与序列化。(请别误会,这里不是谈Java serializable机制)还是蛮简单的,一个Annotation而已。修改一下Response.java文件,在message属性上加上@JsonIgnoreimport com.fasterxml原创 2012-04-06 15:22:06 · 8905 阅读 · 0 评论 -
Java wrapper service 使用
创建简单的Java程序执行下面的命令,创建Maven工程wrapper-test.mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.freebird.app -DartifactId=wrapper-test然后按照提示进行操作(Maven官方文档有点老旧,和最新的情况脱节):C原创 2012-03-20 20:26:26 · 11390 阅读 · 0 评论 -
Jackson应用二 Full Data Binding
Data Binding第二种应用是Full Data Binding.也就是可以支持自定义的Java类到JSON对象的互相转换。下面的代码演示了简单的使用方法:类Response的定义:import lombok.Getter;import lombok.Setter;/** * * @author chenshu */public class Response {原创 2012-04-06 15:03:16 · 4837 阅读 · 0 评论 -
Jackson应用一 Simple data binding
Jackson 是一个高性能的JSON Java 库,网址参考:http://wiki.fasterxml.com/JacksonHome先看看最简单的Simple data binding怎么使用。就是可以将属于Maps,Lists,Strings,Numbers,Nulls的Java对象转换成JSON对象,当然也可以从JSON对象转换成这些类型的对象。Simple data binding是D原创 2012-04-06 10:23:50 · 8742 阅读 · 0 评论 -
JDB远程调试Tomcat7
Tomcat7设置在catalina.sh文件头一行添加JPDA_SUSPEND='y'这会让Tomcat应用程序启动的时候暂停运行,等待jdb客户端连接后发出run命令才开始运行以远程调试模式启动Tomcat程序,默认监听端口8000./catalina.sh jpda startjdb连接在客户端,使用命令连接tomcat服务器jdb -attach 192.168.1.200:8000 -s原创 2011-11-29 17:44:37 · 6693 阅读 · 0 评论 -
JDBC 使用经验之谈
written by chenshu,郭春晓 为什么选择JDBCSSH架构在中国很流行,可是很多人都觉得Hibernate太慢了,所以有了MyBatis.从数据库开发技术上,EJB3大幅度借鉴了Hibernate技术,因此性能也不高。Spring的trasaction框架和原创 2011-08-08 11:43:10 · 5278 阅读 · 5 评论 -
MyBatis的SqlSessionFactory的创建问题
MyBatis SqlSessionFactory Singleton原创 2011-05-07 15:43:00 · 17633 阅读 · 0 评论 -
Helper 类在Java和C++中的设计
在Java和C++中,如何设计Helper类的探索原创 2011-05-04 14:28:00 · 14361 阅读 · 3 评论 -
Enum使用
主要参考自Effective Java 2nd原创 2011-04-09 11:26:00 · 5710 阅读 · 0 评论 -
Java文件格式
*.java文件是保存源代码的文本文件(*代表类名)使用javac *.java可以编译该文件使用java *可以运行该类*.class是用于保存Java类的二进制编码以及Class对象,每一个Java类都有一个解释该类特征的Class对象。*.jar文件是一种压缩文件格式 打包命令jar cv原创 2009-09-18 17:16:00 · 4631 阅读 · 0 评论 -
UBuntu9.04安装NetBeans6.7.1
1)从www.sun.com网站下载java-doc.zip文档复制到/tmp目录下,不要解压2)通过Synaptic PackManager(新立得)安装jdk1.6update16.注意不要安装openjdk.3)在www.netbeans.org网站下载netbeans6.7.1多国语言版。推荐NetBeans6.7.1,比Eclipse省了很多配置插件的步骤。原创 2009-09-18 17:12:00 · 2229 阅读 · 0 评论 -
ice:selectOneMenu应用
ice:selectOneMenu是一个下拉框列表,可以单选一个值。这个tag还是有点复杂,官方文档也不是很仔细,浪费了我不少时间。下面是例子代码: 配合f:selectItem,我们可以静态的提供下拉列表中的候选值。这里要注意的是,valueChangeListener事件的处罚必须要加上partialSubmit="true"这个条件。这是文档中没有描述的。immedia原创 2009-09-16 22:21:00 · 3294 阅读 · 2 评论 -
如何支持clone方法
1)实现Cloneable接口,因为Object的clone方法将检查类是否实现了Cloneable接口,如果没有将抛出异常CloneNotSupportedException对象。Cloneable接口没有任何方法,只是个标志,所以只需要简单得写上implements Cloneable即可。2)改写从Object继承而来的clone方法,使它的访问权限为public,因为为了防止原创 2007-09-19 14:44:00 · 1923 阅读 · 0 评论 -
内部类
匿名内部类,比如下面函数内部initialize定义了两个匿名类(红色代码部分): publicsynchronizedvoid initialize(Environment env, Detector detector,原创 2007-09-19 14:43:00 · 1825 阅读 · 0 评论