异常处理在编写健壮的Java应用的过程中,扮演着一个重要的角色。它并不是应用的功能需求,且需要优雅的处理任何错误情况,例如资源不可用,错误的输入,null输入等等。Java提供几个异常处理功能,并通过try,catch和finally关键字内嵌在语言的本身。Java编程语言同样允许创建新的异常和使用throw和throws抛出该异常。在实践中,异常处理不单单是知道语法这么简单。编写健壮的代码是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践。这些J
系统 2019-08-29 22:03:54 1986
volatile,用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价,主要由其覆盖范围决定,如果可以降低同步的覆盖范围,则可以大幅提升程序性能.而volatile的覆盖范围仅仅变量级别的.因此它的同步代价很低.volatile原理是什么?volatile的语义,其实是告诉处理器,不要将我放入工作内存,请直接在主存操作我.(工作内存详见java内存模型)因此,当多核或多线程在访问该变量时,都将直接操作主存,这从本质上,做到了变量共享.v
系统 2019-08-29 22:02:41 1986
六十六、同步访问共享的可变数据:在Java中很多时候都是通过synchronized关键字来实现共享对象之间的同步的。事实上,对象同步并不仅限于当多个线程操作同一可变对象时,仍然能够保证该共享对象的状态始终保持一致。与此同时,他还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。Java的语言规范保证了读写一个变量是原子的,除非这个变量的类型为long或double。换句话说,读取一个非long或double类型的变量
系统 2019-08-29 22:02:40 1986
好东西分享final、finally和finalize的区别是什么?这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。这一次我们就一起来回顾一下这方面的知识。final关键字我们首先来说说final。它可以用于以下四个地方:定义变量,包括静态的和非静态的。定义方法的参数。定义方法。定义类。我们依次来回顾一下每种情况下final的
系统 2019-08-12 09:30:16 1986
一切来得太顺利,多亏有前人的经验安装好SQLserver2000,下载了个补丁sql2000_sp3补丁安装了jdk,netbeans6.1半个小时不到就在window下搭建好了数据库设计大作业的环境好顺利啊一切ok了最后打开zy写的工程进行密码修改run!!!ok不过为了以后方便还是搜了一下转自http://flovemayday.blog.com.cn/archives/2007/2164558.shtml呵呵,看到这个界面好面熟啊,以前也用过这个模板
系统 2019-08-12 01:52:12 1986
1importjava.sql.Connection;2importjava.sql.DriverManager;34privatestaticfinalStringURI="jdbc:oracle:thin:@localhost:1521:orcl";5//驱动路径6privatestaticfinalStringUSER="testUser";//数据库名7privatestaticfinalStringPWD="admin";//数据库密码8/--9
系统 2019-08-12 01:52:10 1986
本文介绍基于java的即时通信解决方案openfire3.6.4+spark2.5.8的完整的安装说明,并介绍了使用smack的java类库如何与im用户交互的例子,这样使得业务系统的消息可以通过smack编程将消息发送给spark客户端。spark2.5.8除了聊天之外还支持多人视频,语音,文件传输,截图,观看远程桌面,msn互联互通等功能。因本文图片太多,需要看图片的请下载资源或者访问http://code.google.com/p/openjweb/
系统 2019-08-12 01:33:16 1986
JavaNIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:Channel的实现这些是JavaNIO中最重要的通道的实现:FileChannel从文件中读写数据。DatagramChannel能通过UDP读写网络中的数据。SocketCh
系统 2019-08-29 23:17:48 1985
本文为原创,如需转载,请注明作者和出处,谢谢!上一篇:Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的
系统 2019-08-29 23:11:34 1985
一本非常棒的书,不愧“headfirst”的称谓。清晰的条理,生动的图示,偶尔来点老外的幽默——其实中国人不太能理解,阅读体验非常舒畅。oreilly的这个系列应该都很熟悉了,优点多多估计大家都知道,就不提了,说点不优的吧。如果你熟悉一门类似的静态面向对象语言(例如C#)那就不要看这个了,你会觉得有些罗嗦,因为大部分语言特性你都很清楚,没有必要看那么多示例、提示和比较等等;如果你是想全面的了解java语言,估计你会很失望,这本书里面甚至没有讲“反射”;如果
系统 2019-08-29 22:48:24 1985
1.简介:ava.util.logging,它可以对程序中的日志记录进行相当复杂的控制。例如:通过它可以指定日志的级别和日志的位置(控制台、文件、套接字、内存缓冲区),也可以创建子记录器,通过它可以用程序控制的方式来指定想记录的内容,也可以使用配置文件来指定,而不需要去改动程序。2.体系:3.实例:importjava.util.logging.Logger;importjava.util.logging.Level;importjava.util.log
系统 2019-08-29 22:27:15 1985
前言:项目中要做一个发送邮件的功能,在网上搜了一些代码,说的都不是很完善。自己就整理了一个可以运行的项目。需要注意的地方是:如果发送人的邮箱是qq邮箱,那么需要在设置->账户里面把√打上。spring里面的smtp.126.com要配置成smtp.qq.com126邮箱同理。步骤如下:用spring做一个javaMail功能。1、先建一个项目。java项目和web
系统 2019-08-29 22:21:42 1985
先看看设计的报表样式:reportTitle是新添加的一个参数,而其他的id和name是通过数据源得到的Filed。IReport在设置参数的时候需要先在左边新建一个parameter,然后再把该parameter托到右边的设计栏中。生成的XML文件为:
系统 2019-08-29 22:12:14 1985
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 1985
Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,特别是先学c、c++后学java的程序员。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。比如函数参数类型是自定义的类时,此时便是引用传递而不是值传递。以下是一个小例子:1publicclassA{2publicStringname;3}4publicclasstestClone{5publi
系统 2019-08-29 22:02:42 1985