Java
有关Java方面的文章,包含Java SE/Java EE。
周公
周金桥,csdn网站ID是zhoufoxcn,网名周公,微信订阅号:zhoujinqiaoIT,2008-2012年度微软最有价值专家(MVP)。Csdn网站论坛专家,荣誉专家,曾任微软山西.net俱乐部技术负责人。在世界500强软件公司和上市民企担任管理岗位,有超过18年的开发及管理经验,擅长于程序性能和安全优化。2008独自编著《ASP.NET夜话》一书(2009年8月出版),2010合著《程序员的成长之路》一书(2011年5月出版)。
展开
-
J2ME开发的一般步骤
最近一段时间发现身边有一本买了一年多的J2ME的书没看,于是抱起来大概看了一下,我的E72是Symbian系统,支持J2ME,所以做了几个简单的小玩意。在学习J2ME开发的过程中有一些简单的心得和体会,现在写下来备忘,如果有朋友也正在学习J2ME开发,觉得有帮助的话,那是最好不过的事情了。 1.开发环境安装配置 目前开发J2ME应用的环境有多种,有基于NetBean的,不过仍以Eclipse为原创 2011-06-12 23:17:00 · 8440 阅读 · 3 评论 -
WinXP下搭建适合Nokia开发的J2ME环境
说明,最近丢掉了4年前买的Moto L7手机,换了一个Nokia E72的手机,于是有给自己的手机开发软件的想法了。C++之类的语言本人只懂皮毛,所以只好使用Java来开发了。在网上参考了一篇文章之后搭配起来了开发环境,写下这篇文章记录下安装配置过程。本人在开发过程中使用到的软件有Eclipse、nS60_jme_sdk_3rd_e_FP1(S60 Platform SDKs for Symbian OS, for Java™)、MTJ(Mobile Tools for Java)。原创 2010-07-12 10:02:00 · 8153 阅读 · 8 评论 -
使用 JSF 架构进行设计
本文中,作者 Anand Joshi 使用 JSF 框架中的设计模式阐释了 JavaServer™ Faces (JSF) 体系结构。他讨论了 JSF 体系结构中使用的 GoF 设计模式,以及这些模式在 JSF 框架中的作用。任何对设计模式和 JSF 体系结构有一定了解的人都能从 Anand 详细的介绍中有所收获。*读者应该对 GoF 设计模式和 JSF 技术有很好的了解。设计模式可以帮助用户转载 2007-11-02 16:45:00 · 2449 阅读 · 0 评论 -
使用设计模式改善程序结构(三)
设计模式在某种程度上确实能够改善我们的程序结构,使设计具有更好的弹性。也正是由于这个原因,会导致我们可能过度的使用它。程序结构具有过度的、不必要的灵活性和程序结构没有灵活性一样都是有害的。本文将分析过度的灵活性可能造成的危害,并且结合一些实例来阐述使用设计模式改善程序结构应遵循的原则。1、 介绍 本系列文章的前两篇主要讲述了如何使用设计模式来改善我们的程序结构,大家可以看到经过调整的代转载 2007-11-02 16:39:00 · 2071 阅读 · 0 评论 -
使用设计模式改善程序结构(二)
1、 回顾 在上一篇文章中,我们给出了一个使用设计模式来改善程序结构的例子,着重介绍了设计模式的意图、动机在我们程序重构过程中的指导作用。现在,我们将关注设计模式的另一个重要方面:设计模式的适用性。解决同一个问题一般会有多种方案或者模式,但是这些模式所关注的是同一个问题的不同方面,解决不同的需求,有各自的优点和限制,各有各的解决之道。这就要求我们在选择设计模式时,对我们自己的问题有很好转载 2007-11-02 16:32:00 · 2075 阅读 · 0 评论 -
使用设计模式改善程序结构(一)
设计模式是对特定问题经过无数次经验总结后提出的能够解决它的优雅的方案。但是,如果想要真正使设计模式发挥最大作用,仅仅知道设计模式是什么,以及它是如何实现的是很不够的,因为那样就不能使你对于设计模式有真正的理解,也就不能够在自己的设计中正确、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)来看待设计模式,通过这种新的思路,设计模式会变得非常贴近你的设计过程,并且能够指导、简化你的设计转载 2007-11-02 16:24:00 · 2881 阅读 · 9 评论 -
从Java类库看设计模式(5)
有了前面诸多设计模式的基础,这儿可以提出一个比较特殊的模式MVC。MVC并不属于GOF的23个设计模式之列,但是它在GOF的书中作为一个重要的例子被提出来,并给予了很高的评价。一般的来讲,我们认为GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更为一般的低层的模式,在其上也可以通过组合来得到一些高级的模式。MVC就可以看作是一些模式进行组合之后的结果(实际上,MVC的出现要早于设计模式转载 2007-11-02 16:11:00 · 2104 阅读 · 0 评论 -
从Java类库看设计模式(4)
在上一部分中,介绍了两个结构型的模式:Bridge和Decorator。这一部分的内容,将会接着上面的讲解,继续我们的设计模式之旅。这一部分,除了还会介绍一个结构型的Composite模式之外,还会有两个行为模式登场。实际上在前面的内容中,我们已经接触到行为模式了:Observer和Command就是两个典型的行为模式。行为模式更多的注重于算法和对象建间职责的分配,也就是说,它会更多的关注于这转载 2007-11-02 16:09:00 · 1711 阅读 · 0 评论 -
从Java类库看设计模式(3)
上一次主要介绍了几个创建型的设计模式AbstractFactroy,FactoryMethod和Singliton。它们的共同的特点,都是用来创建对象的。这次接下来的内容,涉及到的是几个结构型的模式。所谓结构型模式,就是用来解决在创建系统结构的过程中,通过对类或者对象进行合理有效的组合,以获得更大的结构的方法。这儿主要讲到了Bridge模式和Decorator模式。对于Bridge模式可能需要更多转载 2007-11-02 15:58:00 · 2255 阅读 · 0 评论 -
从Java类库看设计模式(2)
在上一部分的内容中,我们讲到什么是模式,什么是设计模式,以及对一个设计模式Observer的详细阐叙。相信大家对于模式的概念应该是比较的理解了。这部分及以后的内容,将会步入正题,从Java类库的分析入手,来阐叙设计模式是如何应用到一个完美的设计中的。实际上,Java类库非常的庞杂,这儿不可能把所有能够找到的设计模式的例子一一列举,只是找了一些容易发现的例子。实际上也没有必要,因为只要对一个设计模式转载 2007-11-02 15:49:00 · 1993 阅读 · 0 评论 -
从Java类库看设计模式(1)
很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关重要的。好的经验给我们以指导,并节约我们的时间;坏的经验则给我们以借鉴,可以减少失败的风险。然而,从知识层面上来讲,经验只是作为一种工作的积累而存在于个人的大脑中的,很难被传授或者记录。为了解决这样的问题,人们提出了所谓的模式的概念。所谓模式,是指在一个特定背景下,反复出现的问题解决方案。模式是经验的文档化。软件模式转载 2007-11-02 15:40:00 · 2203 阅读 · 0 评论 -
在 Java 中应用设计模式 - Factory Method
基本概念FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时我们就需要用到Factory Method 模式了.简单说来,Factory Method可以根据不同的条件产生不同的实例,当然这些不同的实例通常是属于相同的类型,具有共同的父类.Factory Metho转载 2007-11-02 14:43:00 · 1722 阅读 · 0 评论 -
在 Java 中应用设计模式 -- Singleton
Singleton 是一种创建性模型,它用来确保只产生一个实例,并提供一个访问它的全局访问点.对一些类来说,保证只有一个实例是很重要的,比如有的时候,数据库连接或 Socket 连接要受到一定的限制,必须保持同一时间只能有一个连接的存在.再举个例子,集合中的 set 中不能包含重复的元素,添加到set里的对象必须是唯一的,如果重复的值添加到 set,它只接受一个实例.JDK中正式运用了Single转载 2007-11-02 14:32:00 · 1591 阅读 · 1 评论 -
用设计模式的思想来定制Java中的事件
随着JAVA的迅猛发展,JDK版本的不断更新,JAVA新的事件模型与旧的JDK模型也有了本质的区别,它的事件模型也有了很大的区别。由于现在的编程都是采用事件驱动,所以很有必要了解的事件模型,我们下面从定制事件的实际出发来具体讨论。比如你要实现一个定时器类,它的主要功能是在在一定的时间后,启动具体的处理事件因此我们可以设计两个类:定时器类(Timer)和调用类(Clock),对应的USE C转载 2007-11-02 14:22:00 · 1419 阅读 · 0 评论 -
Jive 中的设计模式
关于设计模式, 这篇文章并不详细解释, 只是结合 Jive 来看看设计模式在一个实际项目中的应用及其整体的设计思想. 所以在读这篇文章前, 假设您对设计模式有一个感性的认识, 对其具体应用以及实现方法有些疑问, 并渴望了解其思想,并使用过 Jive. 本文将一同来探讨这个问题. 为什么选择 Jive 而不是选择一个新的例子重新开始呢? 有以下两个原因: 1, 我们很多人对 bbs 这样一个事物比转载 2007-11-02 14:10:00 · 1524 阅读 · 0 评论 -
接口(interface)原来是可以被继承(extends)的
在传统的教科书或者书籍中都会灌输我们一个观念,那就是抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),接口也不能被继承(extends),但是今天这个观点有些地方被颠覆了。抽象类可以被继承(extends),接口可以被实现(implements),但是抽象类不能被实现(implements),这三个观点确实没有什么问题,但原创 2007-07-20 10:19:00 · 21644 阅读 · 4 评论 -
抽象类和接口的关系对比
抽象类抽象类主要用来定义一些抽象的属性和方法,留待子类根据自己的情况实现这些属性和方法抽象类不能生成实例,即不能new一个抽象类的实例抽象类可以被继承,除非继承该抽象类的子类仍声明为抽象的,否则就必须实现这个抽象类的所有抽象属性和方法一个类只能继承一个抽象类,如果需要实现多个类的抽象方法,必须使用接口子类与抽象类是is关系接口接口主要用来定义一些抽象的属性和方法,留待实现类根据自己的情况实现这些属原创 2007-04-06 11:42:00 · 4020 阅读 · 2 评论 -
J2ME资源:各厂商SDK和模拟器下载地址
现在支持Java的手机厂商很多,现将常用的手机厂商SDK和下载地址说明一下:1、 NokiaNokia不愧为手机行业的老大,对于j2me的支持也是一流的,有专门的网站提供SDK和各种文档说明。网址是:http://forum.nokia.com.cn/sch/index.html 2、 SiemensSiemens对于J2ME的支持也不错,它提供了SDK,模拟原创 2007-03-12 19:21:00 · 1637 阅读 · 0 评论 -
Java常用术语解释
名词 解释 AAA 认证(Authentication):验证用户的身份与可使用的网络服务;授权(Authorization):依据认证结果开放网络服务给用户;计帐(Accounting):记 录用户对各种网络服务的用量,并提供给计费系统。 简称AAA系统。 AWT Abstract Window Toolkit(抽象窗口工具包),第一代的 Java GUI工具包,现在基本已经不使用其中的组件原创 2007-02-10 00:45:00 · 2073 阅读 · 0 评论 -
关于try...catch...finaly机制
下面有这么一个程序,代码如下:public class ExceptionDemo...{ public static void createException()throws Exception...{ throw new Exception("An Exception is create"); } public static long get()...{ try ...{ create原创 2007-02-10 00:25:00 · 2052 阅读 · 0 评论 -
C#和Java中二维数组的区别
本人是从Java转向C#的,由于工作需要,感觉C#和Java的很多类似性,所以在使用C#的时候总喜欢套用Java的,因为他们太像了,然而今天却碰了一鼻子灰,原因就在使用二维数组上。在Java中使用二维数组可以如下代码:public class Array2D...{ public static void main(String[] args)...{ int myI原创 2007-02-01 12:20:00 · 3777 阅读 · 6 评论 -
Java初学者都必须理解的六大问题
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概...转载 2007-01-31 15:31:00 · 1265 阅读 · 0 评论 -
C#就是Java只不过差了一点点
C#和Java都是很不错的语言。他们通过类似的方式达到了类似的目的,尽管C#比Java多出来一些和句法相关的东西,例如foreach关键字和一些更加让人高兴的扩展/实现架构。不幸的是,这些改进的光芒被削弱的东西掩盖掉了。在本文里,我将比较两种语言,并尽量避免深入到JVM和CLR层。Java:无可争辩地具有C++所有的精华在比较Java和C#的时候,你不可能不注意到它们诸多的相似之处,这在原创 2007-01-29 19:41:00 · 2207 阅读 · 1 评论 -
21种代码的“坏味道”
1.Duplicated Code(代码重复) 代码重复几乎是最常见的异味了。他也是Refactoring 的主要目标之一。代码重复往往来自于copy-and-paste 的编程风格。与他相对应OAOO 是一个好系统的重要标志(请参见我的duplicated code 一文:http://www.erptao.org/download.php?op=viewsdownload&sid=6)。 2.翻译 2006-12-25 22:12:00 · 5907 阅读 · 0 评论 -
JAVA 和.NET在安全功能的比较
本文根据Denis Piliptchouk的文章翻译、摘录而来,有些术语翻译不太好理解,还请参考原文。第一部分 安全配置和代码封装安全配置两个平台的配置都是通过XML或纯文本文件,两个平台最大的区别在于处理安全配置体系的方式不同。在.NET平台,有图形接口和命令行二种方式来修改安全配置参数。Mscorcfg.msc是图形接口方式,Caspol.exe提供了命令行方式,适用于批处理或翻译 2006-11-25 13:24:00 · 6172 阅读 · 4 评论 -
JAVA 与.NET 在前途上面的比较
JAVA 与.NET JAVA语言发明已有10年历史,在IBM、SUN等公司的推动下已经比较稳定与成熟,获得了大规模企业的普遍应用。时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平台,吸引了400万开发者,在网络技术遍及全球的的今天,更有17.5亿台设备使用JAVA技术.同时, Mustang版本的J2EE正在紧锣密鼓的开发当中,按照惯例,每2年将发布一个全新的J2SE版本原创 2006-11-25 13:21:00 · 6841 阅读 · 1 评论 -
Java对战.NET,战争与和平的游戏
在软件世界里,Java与.NET无疑是两个旗鼓相当的对手,一再上演着一出又一出你来我往、拼力争夺的好戏。在这种争夺的过程中,有受益者,也有牺牲者。平心静气地想一想,微软和Sun公司都是兵器的制造者,软件人员才是斗士,用户们只好去做受益者或是牺牲品。 真的有那么凄惨吗?事实上,和平的曙光已经出现了。 战争与和平 很多人认为,Java和.NET不是殊途同归吗!为什么又会烽烟缭绕呢?当然是世原创 2006-11-25 13:20:00 · 2318 阅读 · 0 评论 -
垃圾回收算法历程
拓荒时代国内的程序员大多是在 Java 语言中第一次感受到垃圾收集技术的巨大魅力的,许多人也因此把 Java 和垃圾收集看成了密不可分的整体。但事实上,垃圾收集技术早在 Java 语言问世前 30 多年就已经发展和成熟起来了, Java 语言所做的不过是把这项神奇的技术带到了广大程序员身边而已。 如果一定要为垃圾收集技术找一个孪生兄弟,那么, Lisp 语言才是当之无愧的人选。 1960 年前转载 2006-11-04 09:49:00 · 4935 阅读 · 1 评论 -
好用的MessageFormat类
因为工作的原因,经常使用C#,对于C#的String.Format()方法非常喜欢,能够格式化字符串,省掉了拼接字符串的烦恼,因而在想在java中有没有一个类似的功能呢?早就知道Java有SimpleDateFormat这个类,可以格式化日期,查看Java API知道DateFormat 是SimpleDateFormat的父类,再追查下去,又发现DateFormat 的父类是java.tex原创 2006-10-15 20:40:00 · 13234 阅读 · 2 评论 -
Java与C#个人之比较
网上这方面的比较文章已经有不少了,不过大都是要么从很高的角度说的,要么就是从底层说的,本人就以自己这几年的编程经历中的感受,来谈谈自己的体会。相似性:Java和C#都是一门面向对象的语言,Java更多地借鉴了C++的优点,而摒弃了它的一些不太容易被人掌握的知识点(有些不能说是缺点),并且增加了一些自己的特点,而C#则是更多地借鉴了Java的优点,而增加了一些自己的特点。个人猜测,在Ja原创 2006-10-11 20:21:00 · 33132 阅读 · 17 评论 -
Java与C#执行效率之不科学比较
中午吃饭,闲来无事,分别用Java和C#实现了一个计算PI值的类,执行次数相同,为了避免一些偶然误差,姑设置了一个比较大的计算次数100000000,1亿次!Java代码如下:import java.util.*;public class CalcPI{ public static final int COUNT=100000000; public static void main(S原创 2006-09-15 14:48:00 · 12247 阅读 · 11 评论 -
解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)
在jsp(其它动态web页面好像也存在)中,如果要上传文件,表单的enctype就必须设定为"multipart/form-data"了,这样就能够传递文件数据,却无法传递参数,如下的表单:请选择上传的图片 这是本人程序中的一段代码,本人是想传递一个参数过去的,可是怎么都无法传递过去,request.getParameter("action")总是n原创 2006-09-14 00:13:00 · 23349 阅读 · 10 评论 -
关于Java中String类的split(String regex)方法的一点困惑
关于Java中String类的split(String regex)方法的一点困惑在JDK中文API里面对这个类有如下描述:public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。原创 2006-08-29 19:23:00 · 5766 阅读 · 6 评论 -
Tomcat jndi 数据库配置 连接池配置
在Tomcat 5.5/conf/Catalina/localhost/xxxxx.xml(xxxxx.xml为你自己的web的配置xml文件) 中添加resource type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" password="****原创 2006-09-19 11:28:00 · 4554 阅读 · 0 评论 -
JSP中out对象的方法总结
out对象被封装为javax.servlet.jsp.jspWriter接口,通过调用pageContext.getOut()方法可以获取out对象。1.public abstract void clear()清除缓冲区中的内容,不将数据发送至客户端。2.public abstract void clearBuffer()将数据发送至客户端后,清除缓冲区中的内容。3.public abstarct原创 2006-10-17 13:38:00 · 19167 阅读 · 2 评论 -
J2EE配置傻瓜篇(一):配置J2SE
1.1下载下载地址:可以到Sun公司网站去下载,网址是:http://java.sun.com。注意:下载的是Windows版本的。也可以到http://www4.skycn.com/soft/3116.html下载“Java 2 Standard Edition SDK 6.0 Build 66 RC Alpha”。只要是J2SDK1.5或者以上版本就可以。当然不一定非要到上原创 2006-11-07 23:39:00 · 3832 阅读 · 0 评论 -
J2EE配置傻瓜篇(二):安装MySQL
2.1下载2.1.1下载数据库软件数据库软件下载地址:http://download.mysql.cn/src/2006/0218/199.html2.1.2下载数据库驱动程序MySQL JDBC Driver数据库驱动程序下载地址:http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-3.1.1原创 2006-11-10 21:12:00 · 5141 阅读 · 0 评论 -
Java中的BoneCP数据库连接池用法
在2006年8月的时候我在项目中使用过Proxool这个Java数据库连接池,在当时的使用过程中遇到了一些问题,为此曾写过一篇名为《关于Proxool使用的一点问题》的博客,网址是http://blog.csdn.net/zhoufoxcn/archive/2006/08/30/1142685.aspx,博文发布以后有很多朋友在博文下面留言,因为它们也遇到了类似的问题。我记得我在2006年使用Pr原创 2010-12-01 13:43:00 · 23507 阅读 · 40 评论 -
Eclipse常用的一些设置
备注:最近在参与一些Java项目,用到了Ecplise作为开发工具,原创 2014-06-06 00:50:41 · 3793 阅读 · 9 评论 -
开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8并配置为service
题外话:直到今天开始写本系列的第三篇时本人才想好为这个系列取一个名字,本系列不是为Linux运维人员准备的,而是主要为开发人员准备的,包括但不限于:希望了解Linux的开发人员;需要在Linux上部署一些组件的开发人员,如Memcached/Nginx/Redis等;需要使用一些在Linux上部署运行效果可能会更好的效果的系统,如Jetkins、SVN、JavaMelody等。希望了解一些当前较热的技术,想在虚拟机里搭建个环境把玩一番的,如.Net Core/Hadoop等。因此在本系列文章中不会原创 2017-05-25 21:53:58 · 2524 阅读 · 0 评论