异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常(这里的异常包括错误概念),定义异常处理的规范,在1.4版本以后增加了异常链
系统 2019-08-29 23:50:12 2202
JAVA对象拷贝为什么需要有对象拷贝?对象拷贝相对的自然是引用拷贝。java初学者经常会问,我这个方法要改变一个对象的属性,可以把参数传进去了,为什么没有改变了?——基本数据类型传值,而对象传引用或引用的拷贝。而有时候我们要获取到一个当前状态的对象复制品,他们是两个独立对象。不再是引用或者引用拷贝(实质都是指向对象本身)。就是说a是b的拷贝,b发生变化的时候,不要影响a。对象拷贝有浅拷贝和深度拷贝两种。1)浅拷贝浅拷贝是指对象中基本数据类型得到拷贝,而引用
系统 2019-08-29 23:47:17 2202
开始之前,我想就本文即将讨论的主题和读者需要具备的起点知识做一些必需的描叙。本文的主题是讨论SOAP技术,我们将尽可能的讲得通俗易懂一些,所以,我们引入了一个普通的“HelloWorld”范例来给读者说明它们是怎么运作的,让读者知道它们的运作方式。我认为,如果光看官方文档是很难开始学习这门新技术的,官方文档中包含大量的范例,并解释了所有的特性和优点,但是没解释它们的运作方式。在这篇文章中,我不打算只肤浅的解释SOAP技术的定义,我们假设读者熟悉Java语言
系统 2019-08-29 23:31:45 2202
用java.util.Timer定时执行任务如果要在程序中定时执行任务,可以使用java.util.Timer这个类实现。使用Timer类需要一个继承了java.util.TimerTask的类。TimerTask是一个虚类,需要实现它的run方法,实际上是他implements了Runnable接口,而把run方法留给子类实现。下面是我的一个例子:classWorkerextendsTimerTask{publicvoidrun(){System.out
系统 2019-08-29 23:22:38 2202
本来上周双休日没什么事情,准备干点遗留了很久的正经事,结果半途忍不住手贱看新闻,于是被11.28事件触动,随大流的针对棒子及棒子粉抽疯了两天。没想到到星期一上班脖子就不得劲,顺便查了点资料,发现个山寨版的颈椎矫正图,觉得挺有意思。如下图:于是回家后想到自己也做个玩。问题是,咱爷们不说程序员吧,好歹也是个垒码的,直接PS文字图未免有碍观瞻,于是抽空写了个Java自动生成版的。代码如下:packageorg.test;importjava.awt.AlphaC
系统 2019-08-29 23:01:01 2202
如果您喜欢这些文章,欢迎点击此处订阅本Blog
系统 2019-08-29 22:29:04 2202
8.+=复合赋值问题x+=i与x=x+i等效吗,许多程序员都会认为第一个表达式x+=i只是第二个表达式x=x+i的简写方式,但这并不准确。Java语言规范中提到:复合赋值E1op=E2等价于简单赋值E1=(T)((E1)op(E2)),其中T是E1的类型。复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响,然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化
系统 2019-08-29 22:02:50 2202
volatile,用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价,主要由其覆盖范围决定,如果可以降低同步的覆盖范围,则可以大幅提升程序性能.而volatile的覆盖范围仅仅变量级别的.因此它的同步代价很低.volatile原理是什么?volatile的语义,其实是告诉处理器,不要将我放入工作内存,请直接在主存操作我.(工作内存详见java内存模型)因此,当多核或多线程在访问该变量时,都将直接操作主存,这从本质上,做到了变量共享.v
系统 2019-08-29 22:02:41 2202
1.数组的定义格式1.元素类型[]数组名=new元素类型[元素个数或者数组长度];int[]arr=newint[5];//推荐intarrs[]=newint[5];2.静态初始化方式不能写长度int[]arrs=newint[]{3,1,4,5,6,2};int[]arrs={3,1,4,5,6,2};//好像是在jdk5.0后才能使用3.boolean类型的数组默认值为false数组的操作publicstaticvoidmain(String[]ar
系统 2019-08-29 22:00:03 2202
1、java中用两种线程:1)守护线程守护线程(Daemon)是比较特殊的一种低级别线程,一般被用于在后台为其它线程提供服务。比如当用户编写Word文档时,不断进行拼写检查的线程就是个守护线程,它不会影响用户编辑文件。典型的守护线程例子是JVM中的系统资源自动回收线程,它始终在低级别的状态中运行,不需要占用大量的系统资源,多用于实时监控和管理系统中的可回收资源。可以通过调用方法isDaemon()来判断一个线程是否是守护线程,而将一个用户线程设置为守护线程
系统 2019-08-12 09:29:59 2202
http://www.oracle.com/technology/global/cn/pub/articles/brahms-tuning.html?_template=/ocom/print作者:CarlBrahms自动执行负载生成和性能优化过程为什么可以节省大量的时间和精力。2008年9月发布优化可能是一项非常艰巨而费时的工作,尤其对于需要最佳性能的环境来说更是如此。优化所带来的好处是使环境更稳定、故障更少、总体性能更佳。也许您幸运地拥有内部性能优化人
系统 2019-08-12 09:29:31 2202
在项目中,可能会遇到sybase移植到mysql的情况,因为sybase支持存储过程的可变参数,而mysql不能支持,所以,在调用mysql的时候,需要感知存储过程到底有几个参数,来合理的配置参数数量:如下是代码packagecom.xxx.util;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement
系统 2019-08-12 01:54:23 2202
原文:C#制作Java+Mysql+Tomcat环境安装程序,一键式安装要求:JDK、Mysql、Tomcat三者制作成一个安装包,不能单独安装,安装过程不显示三者的界面,安装完成要配置好JDK环境、Mysql服务、Tomcat服务目的:解决客户在安装软件的复杂配置和繁琐便于管理软件版本便于系统集成分析:由于不能使用软件的原始安装版本,故只能将JDK的安装目录拷贝出来,放在D盘的SoftSource文件夹,由于要管理三者,将这三个放进一个文件夹里面Mysq
系统 2019-08-12 01:32:23 2202
随着平台的容器支持、开发人员工具、培训资源和开发人员社区体验等方面的改善,推动组织采用Java™Platform,EnterpriseEdition5(JavaEE5)的动力正在稳定增长。本文从较高层面介绍JavaEE5中新的生产率特性和API改进,并通过一个Web服务示例展示简化的开发模型。简介JavaEE技术是Java语言平台的扩展,支持开发人员创建可伸缩的强大的可移植企业应用程序。它为应用程序组件定义了四种容器:Web、EnterpriseJavaB
系统 2019-08-29 23:50:46 2201
java读取配置文件的几种方法在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。一.读取xml配置文件(一)新建一个javabeanpackagechb.demo.vo;publicclassHelloBean...{privateStringhelloWorld;publicStringgetHelloWorld()...{r
系统 2019-08-29 23:46:34 2201