Welcome 微信登录

首页 / 软件开发 / JAVA

Effective Java (4) 通过私有构造器强化不可实例化的能力

Effective Java (4) 通过私有构造器强化不可实例化的能力

Effective Java (4) 通过私有构造器强化不可实例化的能力2014-08-24一、背景对于有些工具类如java.lang.Math、java.util.Arrays等,它们只包含静态方法和静态域字段,对于这样的类实例化没有什么任何意义。但在实际使用中,如果不加任何特殊处理,这样的类还是可以像其他类一样可以被实例化。二、处理办法将构造函数设置为private,这样外部类无法实例化该类,同时在这个私有的构造函数中直接抛出异常,从而避免在类的内部实...
Effective Java (5) 避免创建不必要的对象

Effective Java (5) 避免创建不必要的对象

Effective Java (5) 避免创建不必要的对象2014-08-24一、引子一般来说,最好能重用对象而不是每次需要的时候就创建一个相同功能的新对象,特别是当对象不可变时,它始终可以被重用的。重用对象对程序性能起到重要作用。二、重用不可变对象对于同时提供了静态工厂方法和构造器的不可变类,通常可以使用静态工厂方法而不是构造器,以避免创建不必要的对象。Boolean b1 = Boolean.valueOf("test"); // ...
Effective Java (6) 如何消除过期的对象引用

Effective Java (6) 如何消除过期的对象引用

Effective Java (6) 如何消除过期的对象引用2014-08-24 未知 一、引言很多人可能在想这么一个问题:Java有垃圾回收机制,那么还存在内存泄露吗?答案是肯定的,所谓的垃圾回收GC会自动管理内存的回收,而不需要程序员每次都手动释放内存,但是如果存在大量的临时对象在不需要使用时并没有取消对它们的引用,就会吞噬掉大量的内存,很快就会造成内存溢出。二、Java的垃圾回收机制Java中的对象是在堆中分配,对象的创建有2中方式:new或者反射。...
Java内部类this$0字段产生的一个小bug

Java内部类this$0字段产生的一个小bug

Java内部类this$0字段产生的一个小bug2014-08-26首先查看下面一段代码,我指出了问题代码的所在,读者先自己思考一下这段代码会有什么问题。这是用clone方法完整拷贝一个二项堆(BinomialHeap)结构的代码。二项堆中包含一个内部类BinomialHeapEntry,这个内部类的对象即二项堆中的每一个结点,除了包含结点对应的关键字外,还记录父节点parent,下一个兄弟结点sibling和第一个孩子结点child三个指针。二项堆的根表...
java实现Google和Baidu的“您是不是要找”功能

java实现Google和Baidu的“您是不是要找”功能

java实现Google和Baidu的“您是不是要找”功能2014-08-26 博客园 巫峡背景 :在使用搜索引擎和电商的搜索功能时,大家一定遇到过这样的情景:我想搜索博客园,可不小心输成博客员了,不用担心搜不到你想要的结果,因为建立在大数据上的搜索引擎会帮你自动纠错,就这个例子Google和Baidu返回给我的分别是:显示以下查询字词的结果: 博客园 和 您要找的是不是: 博客园 ,他们都做到了自动纠错,关于自动纠错我之前也写过一篇陋文,当时是自己实现的...
浅谈中文文本自动纠错在影视剧搜索中应用与Java实现

浅谈中文文本自动纠错在影视剧搜索中应用与Java实现

浅谈中文文本自动纠错在影视剧搜索中应用与Java实现2014-08-26 博客园 巫峡1.背景:这周由于项目需要对搜索框中输入的错误影片名进行校正处理,以提升搜索命中率和用户体验,研究了一下中文文本自动纠错(专业点讲是校对,proofread),并初步实现了该功能,特此记录。2.简介:中文输入错误的校对与更正是指在输入不常见或者错误文字时系统提示文字有误,最简单的例子就是在word里打字时会有红色下划线提示。实现该功能目前主要有两大思路:(1) 基于大量字...
Eclipse不自动编译java文件的解决方法

Eclipse不自动编译java文件的解决方法

Eclipse不自动编译java文件的解决方法2014-08-26最近我的eclipse经常犯傻,项目中总是有很多,启动项目也是没有启动类。查了下项目中生成的class文件,我靠竟然没有,或者还是以前的。原来是eclipse犯傻了,它没帮我自动编译java文件。一般是如下几个步骤。但是还是不自动编译。最基本的解决办法--这是前提然后clean和refresh下项目。如果这样还是不行,用下面的方法吧,终极解决方案。。。。。。1:去除项目中的jre的class...
java中System.getenv和System.getProperties有什么区别

java中System.getenv和System.getProperties有什么区别

java中System.getenv和System.getProperties有什么区别2014-08-26System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦。System.getProperties获取的是系统的相关属性。在java api文档中已经列出了如下属性如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=z...
浅析java的SPI机制

浅析java的SPI机制

浅析java的SPI机制2014-08-261 SPI机制简介SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编...
Java枚举的反向查找

Java枚举的反向查找

Java枚举的反向查找2014-08-26 博客园 DoubleTenjava的枚举常常被用来替代常量值,每个枚举值代表一个特定的常数。在反序列化时有常常需要用到常数到枚举的转换,这就涉及到枚举的反向查找。1、从枚举名反向查找枚举这种方法是最先使用也最为简便的可以用到枚举的静态方法valueOf(String name)valueOf方法为内置方法,使用简便,但在查找不到枚举时会抛出异常。熟悉异常的同学可能知道异常抛出时,需要收集虚拟机的调用堆栈上下文信息...
Java网络学习(二) Servlet开胃酒

Java网络学习(二) Servlet开胃酒

Java网络学习(二) Servlet开胃酒2014-08-28在Tomcat初次尝试中,我们搭建了用于测试Servlet和JSP的基本环境。我们现在要转向网络应用的具体开发。厨师Web服务器的基本工作方式是请求-处理-回复。请求和回复是在网络上,以HTTP协议为基础的通信(参考HTTP协议)。请求是客户点菜,回复像是服务员上菜,而处理则是在后厨中,厨师根据请求的菜单,准备菜品的过程。厨师通常是服务器上的一个应用程序。这个应用程序可以提取请求中的信息,并根...
Java进阶学习(一) String类

Java进阶学习(一) String类

Java进阶学习(一) String类2014-08-28之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础。在Java进阶中,我将对Java基础进行补充,并转向应用层面。大部分编程语言都能够处理字符串(String)。字符串是有序的字符集合,比如"Hello World!"。在Java中,字符串被存储为String类对象。调用字符串对象的方法,可以实现字符串相关的操作。String类包含在java.lang包中。...
Java进阶学习(二) 异常处理

Java进阶学习(二) 异常处理

Java进阶学习(二) 异常处理2014-08-28程序很难做到完美,不免有各种各样的异常。比如程序本身有bug,比如程序打印时打印机没有纸了,比如内存不足。为了解决这些异常,我们需要知道异常发生的原因。对于一些常见的异常,我们还可以提供一定的应对预案。C语言中的异常处理是简单的通过函数返回值来实现的,但返回值代表的含义往往是由惯例决定的。程序员需要查询大量的资料,才可能找到一个模糊的原因。面向对象语言,比如C++, Java, Python往往有更加复杂...
<< 281 282 283 284 285 286 287 288 289 290 >>