Category: JavaSE

JAVA: Google Guice入门教程

Google Guice 是一个轻量级的依赖注入框架,它支持Java 5或者更高版本的JDK,得利于Java 5中提供的泛型 (Generics) 和注解 (Annotations) ,它可以使得代码类型安全 (type-safe) 。那么何时使用在代码中使用 Guice 进行注入呢?一般来说,如果在你的应用代码中业务对象 (Business Objects) 之间的关系或者依赖需要手动维护的话,你就可以使用Guice 进行注入。 该文章中,首先我将通过一些例子来初步的认识一下 Guice 框架,然后我将介绍下 依赖注入框架的理论知识 以及在应用程序中使用依赖注入的好处,同样我也会和大家探讨一下 Guice 提供的用于简化代码的 API (包… Read More

Java并发程序(进程)设计——wait(),notify(),notifyAll(),interrupt(),yield(),sleep(),join(),synchronized同步

Thread类 sleep:暂停当前正在执行的线程;(类方法) yield:暂停当前正在执行的线程,并执行其他线程;(类方法) join:等待该线程终止; interrupt:中断该线程,当线程调用wait(),sleep(),join()或I/O操作时,将收到InterruptedException或 ClosedByInterruptException; Object类 wait:暂停当前正在执行的线程,直到调用notify()或notifyAll()方法或超时,退出等待状态; notify:唤醒在该对象上等待的一个线程; notifyAll:唤醒在该对象上等待的所有线程; wait() 当在一个对象实例上调用… Read More

Java 异常处理的误区和经验总结

在写代码的过程中,我们往往会忽略一些异常处理的基础知识。本文旨在介绍 Java 异常的常见误区和一些细节处理,包括异常的选择、错误代码的利用、处理多层次的异常、以及如何添加有效信息到异常等。 本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。 误区一、异常的选择 图 1. 异常分类 图 1 描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用。由于非检测异常使用方便,很多开发人员就认为检测异常没什么用处。其实异… Read More

JAVA: 深入理解java异常处理机制

1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。 package Test; public class TestException { public TestException() { } boolean testEx() throws Exception { boolean ret = true;

Java 多线程编程讲解

Java 给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 这里定义和线程相关的另一个术语 – 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守候线程都结束运行后才能结束。 多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。 一个线程的生命周期 线程是一个动态执行的过程,它也有一个从产生到死亡的过程。 下图显示了一个线程完整的生命周期。 新… Read More

JAVA: Socket(套接字)讲解

什么是 Socket Socket(套接字):是在网络上运行两个程序之间的双向通信链路的一个端点。socket绑定到一个端口号,使得 TCP 层可以标识数据最终要被发送到哪个应用程序。 正常情况下,一台服务器在特定计算机上运行,​​并具有被绑定到特定端口号的 socket。服务器只是等待,并监听用于客户发起的连接请求的 socket 。 在客户端:客户端知道服务器所运行的主机名称以及服务器正在侦听的端口号。建立连接请求时,客户端尝试与主机服务器和端口会合。客户端也需要在连接中将自己绑定到本地端口以便于给服务器做识别。本地端口号通常是由系统分配的。 如果一切顺利的话,服务器接受连接。一旦接受,服务器获取绑定到相同的… Read More

Java 程序中的多线程

看一看开发和使用线程是多么容易 由于在语言级提供了线程支持,在 Java 语言中使用多线程要远比在 C 或 C++ 中来得简单。本文通过简单的程序示例展现了在 Java 程序中线程编程的简单性。在学习完本文后,用户应该能够编写简单、多线程的程序。 在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持。本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观。读完本文以后,用户应该能够编写简单的多线程程序。 为什么会排队等待? 下面的这个简单的 Java 程序完成四项不相关的任务。这样的程序有单个控制线程,控制在这四个任务之间线性地移动。此外,因为所需的资源 ― 打印机、磁盘、数… Read More

JAVA 并发: 进程(Processes )和线程(Threads)

进程和线程是并发编程的两个基本的执行单元。在 Java 中,并发编程主要涉及线程。 一个计算机系统通常有许多活动的进程和线程。在给定的时间内,每个处理器只能有一个线程得到真正的运行。对于单核处理器来说,处理时间是通过时间切片来在进程和线程之间进行共享的。 现在多核处理器或多进程的电脑系统越来越流行。这大大增强了系统的进程和线程的并发执行能力。但即便是没有多处理器或多进程的系统中,并发仍然是可能的。 进程 进程有一个独立的执行环境。进程通常有一个完整的、私人的基本运行时资源;特别是,每个进程都有其自己的内存空间。 进程往往被视为等同于程序或应用程序。然而,用户将看到一个单独的应用程序可能实际上是一组合作的进程… Read More

Java学习总结: Java语言中的修饰符

一、访问控制修饰符 Java语言有四种级别的访问控制修饰符,如下: l 公开级别:用public修饰,对外公开。 l 受保护级别:用protected修饰,向子类及同一个包中的类公开。 l 默认级别:没有访问控制修饰符,向同一个包中的类公开。 l 私有级别:用private修饰,只有类本身可以访问,不对外公开。 下表总结了这4种访问级别的可访问范围。 访问级别 访问控制修饰符 同类 同包 子类 不同的包 公开 public √ √ √ √ 受保护 protected √ √ √ — 默认 没有访问控制修饰符 √ √ — — 私有 private √ — — — 注意:成员变量、成员方法和构造方法可处于4个访问级别中的一个。顶层类只可以处于公开或默认访问级别,不能用priva… Read More

Java学习笔记:内部类/匿名内部类的全面介绍

编写java程序时,一般一个类(或者接口)都是放在一个独立的java文件中,并且类名同文件名(如果类是public的,类名必须与文件名一致;非public得,无强制要求)。如果想把多个java类放在一个java文件中,则只能有一个public类。如下面的两个类放在同一个文件中就会报错,无法编译通过。 可以看出,因为TestOne.java文件中已经有一个public类TestOne,这时再加了一个public类TestTwo就报错了。如果将类TestTwo前面的public修饰符去掉就没有问题了。 我们下面介绍内部类的概念和使用,所谓内部类,简单的说,就是一个类定义在另一个类的内部。与上面的两个类… Read More

Java中的两个关键字——super、this

一、super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器 使用super关键字注意事项: 1、当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super . 属性 2、 super只能应用在成员方法和构造方法中,不能用在静态方法中(和this是一样的) 3、如果在构造方法中使用必须放在第一行 4、在构造方法中this()和super()不能同时出现   super没有什么需要解释的地方,我们用代码来看看super具体的一些强大功能吧  … Read More

JAVA: null或空值的判断处理 (判断对象是否为空)

1,错误用法一: if (name == "") {      //do something } 2,错误用法二: if (name.equals("")) { //do something } 3,错误用法三: if (!name.equals("")) { //do something } 我们来解说一下: 上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里的语句永远也不会被执行。 上述用法二,用法三 的写法,是包括很多Java熟手也很容易犯的错误,为什么是错误的呢?也许你会感到纳闷。 对,它们的写… Read More

为 Eclipse For JAVA 部署常见的插件(Plugin)- PHP, WEB TOOLS, FTPS, Maven

  1. Install a Maven 依次选择Eclipse菜单栏的“Help”菜单à“Instance NewSoftWare”菜单项,就会弹出如下对话窗口: 选择“Add..”按钮,又会弹出如下对话框: 这个对话框就是用于添加一个插件地址的。在“Name”对应的输入框里输入该操作的一个标识名。在“Location”对应的输入框里输入这个插件的安装地址。注:Maven的Eclipse插件地址为:http://download.eclipse.org/technology/m2e/releases。输入后,如下图所示: 输入完成后,点击右下角的“OK”按钮,就会弹出如下对话框: 这里需要选择想要安… Read More