201501-15 Java程序员应该知道的10个调试技巧 试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用于NetBeansIDE,我们会把重点放在运行时上面。在开始之前,推荐大家去看看Eclipseshortcuts这篇文章,它将会给你带来很多方便。在本文中使用的是EclipseJuno版(Eclipse4.2),在开始前给大家提3点建议!不要使用System.out.println作为调试工具把所有涉及到的组件日志... 继续阅读 >
201501-14 Java解世界最难九宫格问题 芬兰数学家因卡拉花费3个月设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案。因卡拉说只有思考能力最快、头脑最聪明的人才能破解这个游戏。今日,一则腾讯的新闻称中国老头三天破解世界最难九宫格,虽然最后老人是改了一个数字,但是引起本人一时兴趣,想通过计算机程序求解该问题,于是在宿舍呆了一下午,终于成功求解,程序源码如下。packagenumberGame;publicclassPoint{privateintcol;//行号pr... 继续阅读 >
201501-14 Java编程中关于异常处理的10个最佳实践 在实践中,异常处理不单单是知道语法这么简单。编写健壮的代码是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践。这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码。这还是一个提供给java程序员编写健壮代码的便利手册。Java编程中异常处理的最佳实践这里是我收集的10个Java编程中进行异常处理的10最佳实践。在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能。在本文中,我们将尽量减... 继续阅读 >
201501-09 2014 Java发生的5件大事 1、2月1日:RedMonk分析师确认并宣布Java是最受欢迎和多样化的语言!2014年,Java生态圈伴随着引擎的轰鸣起步,随着FOSDEM年会的FreeJava会议一路飙升。除此之外,还有很多颇有深度的OpenJDK优秀技术演讲,以及(RedMonk分析师)SteveO’Grady带来的令人吃惊的业内相关主题演讲。Steve给出了2014年初Java受欢迎程度及领域排名领先数据。分析中指出的Java的使用范围,在RedMonk的博客中也被反复提到。Java位列编... 继续阅读 >
201501-09 Java 9中新的货币API JSR354定义了一套新的Java货币API,计划会在Java9中正式引入。本文中我们将来看一下它的参考实现:JavaMoney的当前进展。正如我在之前那篇Java8新的日期时间API一文中那样,本文主要也是通过一些代码来演示下新的API的用法。在开始之前,我想先用一段话来简短地总结一下规范定义的这套新的API的用意何在:对许多应用而言货币价值都是一个关键的特性,但JDK对此却几乎没有任何支持。严格来讲,现有的java.util.... 继续阅读 >
201501-06 java中文乱码解决之道 随着计算机的发展、普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号。为了解决这种不兼容的问题,伟大的创想Unicode编码应时而生!!UnicodeUnicode又称为统一码、万国码、单一码,它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨... 继续阅读 >
201501-06 Java NIO教程 前言 NIO是NewI/O的缩写,要了解它真正的内涵,需要掌握的知识还是比较多的。我努力在这几篇笔记里,勾勒出整个io的面貌。为大家的深入学习铺路。I/O简史想理解I/O的全部,java的I/O历史是必须要了解的。java的I/O历史也从一个侧面反应了java的发展史。JDK1.0-1.3在这个时期的java中,基本上可以说没有完整的I/O支持。因为这一时期的javaI/O操作是阻塞的,所以I/O效率是较为底下的,基本上想要有比较好的I/O解决方案,基本靠... 继续阅读 >
201501-06 在Java 8下更好地利用枚举 .article-entrypre{margin:15pxauto;font:12px/20px'couriernew';border:1pxsolid#ddd;border-left-width:4px;background:#fbfbfb;padding:10px15px;}在我们的云使用分析API中,返回了格式化过的分析数据(这里指生成分析图)。最近,我们添加了一个特性,允许用户选择时间段(最开始只可以按天选择)。问题是,代码中每天中的时间段部分高度耦合了……例如,下面这段代码:privatestaticList<DataPoint>createListW... 继续阅读 >
201501-03 Java中有关Null的9件事 对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java。我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针、操作符重载、多继承实现的原因,null却与此正好相反。好吧,我... 继续阅读 >
201412-30 Java Tcp协议socket编程学习 我学习到的主要步骤第一步:以特定端口(如4800)新建socket对象第二步:以系统输入设备构造BufferedReader对象,该对象用于接收系统键盘输入的字符第三步:以socket对象得到输出流来构造PrintWriter第四步:以socket对象得到输入流来构造相应的BufferedReader对象,该对象用于接收server端发送过来的信息我理解到的关闭socket:先开的后关闭,socket最后关闭。以下是客户端的代码实现:packagecom.fan.socket;importjava... 继续阅读 >
201412-28 深入理解java虚拟机-第12章Java内存模型与线程 Java内存模型 主内存与工作内存:java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存。工作内存中保存了该线程使用的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行。内存间交互操作:1lock作用于主内存的变量,它把一个变量标识为一个线程独占的状态。2unlock作用于主内存的变量,把锁定的变量释放出来3read作用于工作内... 继续阅读 >
201412-28 深入理解java虚拟机-第12章Java内存模型与线程 Java内存模型 主内存与工作内存:java内存模型规定了所有的变量都在主内存中,每条线程还有自己的工作内存。工作内存中保存了该线程使用的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行。内存间交互操作:1lock作用于主内存的变量,它把一个变量标识为一个线程独占的状态。2unlock作用于主内存的变量,把锁定的变量释放出来3read作用于工作内... 继续阅读 >
201412-28 深入理解java虚拟机-第13章-线程安全与锁优化 线程安全java语言中的线程安全1不可变。Immutable的对象一定是线程安全的2绝对线程安全一个类要达到不管运行时环境如何,调用者都不需要额外的同步措施,通常需要付出很大甚至是不切实际的代价,在javaapi中标注自己是线程安全的类,大多数都不是绝对的线程安全3相对线程安全 4线程兼容 对象本身不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象... 继续阅读 >
201412-27 Centos6.5搭建java开发环境 本文主要介绍关于CentOS系统下配置java开发环境的相关的一些基础知识。一、安装jdk1.查看Linux自带的JDK是否已安装java–version如果出现openjdk,最好还是先卸载掉openjdk,在安装sun公司的jdk.2.查看jdk信息rpm-qa|grepjava3.卸载OpenJDK,执行以下操作:rpm-e--nodepstzdata-java-2012c-1.el6.noarchrpm-e--nodepsjava-1.7.0-openjdk-1.7.0.45-1.45.1.11.1.el6.x86_644.新建java安装目录mkdir/usr/java5... 继续阅读 >
201412-23 java目录与classpath 目录结构描述jdkbin 编译器和工具demo 演示docs HTML格式的类库文档include 用于编译本地方法的文件jre java运行环境lib &... 继续阅读 >
201412-21 Java随机数的几种有趣用法 众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。我们从书本上学到什么?最明显的,也是直观的方式,在Java中生成随机数只要简单的调用:java.lang.Math.random()在所有其他语言中,生成随机数就像是使用Math工具类,如abs,pow,floor,sqrt和其他数学函数。大多数人通过书籍、教程和课... 继续阅读 >