编程技巧 - 文章列表

  • 而年老代仍旧使用串行收集

    1 java 的参数传递方式 : 都是值传递,没有指针传递或地址传递 都是传递的值副本 基本类型是直接传值的副本, 对象是传递的对象引用值的副本 Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这

  • 还要验证导入类的正确性

    工作以来,代码越写越多,程序也越来越臃肿,效率越来越低,对于我这样一个追求完美的程序员来说,这是绝对不被允许的,于是除了不断优化程序结构外,内存优化和性能调优就成了我惯用的“伎俩”。要对Java程序进行内存优化和性能调优,不了解虚拟机的内部原理(或者叫规范更严谨一点)是肯定不行的,这里推荐一本好书《深入Java虚拟机(第二版)》(Bill Venners著,曹晓刚 蒋靖 译,实际上本文正是作者阅读本书之后,对Java虚拟机的个人理解阐述)。当然了,了解Java虚拟机的好处并不仅限于上述两点好处。从更深一点的技术层面上看,了解Java虚拟机的规范和实现,将

  • 多态性是依靠动态绑定实现的

    如何理解Java多态性?通过类型转换,把一个对象当作它的基类对象对待。 从相同的基类派生出来的多个派生类可被当作同一个类型对待,可对这些不同的类型进行同样的处理。 这些不同派生类的对象响应同一个方法时的行为是有所差别的,这正是这些相似的类之间彼此区别的不同之处。 动态绑定将一个方法调用和一个方法主体连接到一起称为绑定(Binding)。 根据绑定的时机不同,可将绑定分为“早期绑定”和“后期绑定”两种。 如果在程序运行之前进行绑定(由编译器和链接程序完成),称为早期绑定。 如果在程序运行期间进行绑定,称为后期绑定,后期绑定也称为“动态绑定”或“运行时绑定”

  • 在读取大量数据时显得尤为重要

    1 从Excel文件读取数据表Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)import java.io.*;import jxl.*;… … … …try{//构建Workbook对象, 只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStream is = new FileInpu

  • 如此一来初始化语句就不会被执行了

    对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。 问题一:我声明了什么! String s = \\\"Hello world!\\\"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。 这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何

  • 这与以前的文件结构还是有些差距的

    1. 首先新建一个 Dynamic Web Project. 配置容器为 Apache Tomcat v5.5 Project 建成后,文件结构如下图,这与以前的文件结构还是有些差距的,不过大同小异 在 Java Resources:src 下先建一个 package , test ,在 test 下新建 java 文件 WebServiceTest.java ,代码如下 Java代码

  • 在JUnit中如果你要测试不同的参数

      当我给那些有经验的开发者上课时,我发现只有40%左右的人写测试。大约还有40%的人甚至从来没听说过JUnit,这其中更有一般人完全没有单元测试的概念。开发者通常处于在项目经理制定的紧促计划的压力中——而那些项目经理同样处于客户的压力之下,客户希望他们的软件能够被快速的开发出。不幸的是,测试是项目中的一个重要部分而很多人却轻易的将它砍掉。真是目光短浅,那种做法只会让你的应用成为bug的乐园而且会大大超出你的计划时间。  为什么会这样?因为写自动测试实际上省下了大量的运行时间。每个开发者都会出错而通过测试可以帮助找到这些错误。可能手工测试在某些方面要比自

  • 类分层结构java.io.DataInput

      类分层结构  java.lang.Object java.io.File (implements java.lang.Comparable T, java.io.Serializable )  java.io.FileDescriptor java.io.InputStream (implements java.io.Closeable )  java.io.ByteArrayInputStream java.io.FileInputStream java.io.FilterInputStream java.io.BufferedInputStrea

  • 这些请求都进入服务器

    一、前言在软件开发过程中,总会遇到一些瓶颈。开发效率瓶颈,人员技术瓶颈,运行效率瓶颈,服务器瓶颈,磁盘IO瓶颈,CPU、内存瓶颈。这些都限制了我们的软件无法尽善尽美。我们的目的就是为了克服和改善这些难题,使软件比想象中更完美。二、具体问题在数据库或者是流程工作时,很多操作都是由于最初软件设计的原因,或者是当初一些产品设计的原因,或者因为时间紧迫,或者逼不得已必须如此做,然后被设计成同步操作,导致工作效率产生瓶颈,没有充分发挥CPU和内存的功能,但是软件工作起来慢的要死。这时候就需要重构代码了。三、解决方案在CPU和内存还有磁盘IO并没有充分利用的时候,就

  • 最大空间(-Xmx)是物理内存的1/4

    Java的内存溢出,主要是两方面的异常:堆内存溢出、非堆内存溢出。一、 java.lang.OutOfMemoryError: Java heap space。 Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Genera