随笔分类 - Java
摘要:CopyOnWriteArrayList是java1.5版本提供的一个线程安全的ArrayList变体。 在讲解5.1.1ArrayList的时候,有说明ArrayList的fail-fast特性,它是指在遍历过程中,如果ArrayList内容发生过修改,会抛出ConcurrentModificat
阅读全文
摘要:WeakHashMap是种弱引用的HashMap,这是说,WeakHashMap里的key值如果没有外部强引用,在垃圾回收之后,WeakHashMap的对应内容也会被移除掉。 1.1 Java的引用类型 在讲解WeakHashMap之前,我们需要了解Java中引用的相关类: ReferenceQue
阅读全文
摘要:在讲解PriorityQueue之前,需要先熟悉一个有序数据结构:最小堆。 最小堆是一种经过排序的完全二叉树,其中任一非终端节点数值均不大于其左孩子和右孩子节点的值。 可以得出结论,如果一棵二叉树满足最小堆的要求,那么,堆顶(根节点)也就是整个序列的最小元素。 最小堆的例子如下图所示: 可以注意到,
阅读全文
摘要:为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在2004年10月发布泛型之前,Java就证明了它是可以实现运行时泛型的。早在2001年8月,有一门基于Ja
阅读全文
摘要:数组和泛型容器有什么区别 要区分数组和泛型容器的功能,这里先要理解三个概念:协变性(covariance)、逆变性(contravariance)和无关性(invariant)。 若类A是类B的子类,则记作A ≦ B。设有变换f(),若: 在Java中,数组具有协变性,而泛型具有无关性,示例代码如下
阅读全文
摘要:泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的。由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS名誉教授)首次提出,自实现始,就成为了ANSI/ISO C++重要标准之一。 Java自1.5版本开
阅读全文
摘要:上一篇关于面试的谈得太多,招聘只好另起一章。 以当前的现状来看,优秀的毕业生会先被知名的大企业刷过一轮,那么,相对不知名的企业招聘负责人要如何找到适合自己公司的技术人才呢?询问过一些毕业生之后,我总结了如下经验。 一场招聘会上公司林林总总,面试者要了解你公司,只有他晃过去的那几秒钟,一张意义鲜明的海
阅读全文
摘要:大约四年前,刚开始负责招聘的时候,偶会在面试者身上花去近40分钟的时间,面试完之后,又不能描绘出该应聘人的全貌,有了几次不成功的招聘之后,我做了一些总结,本篇文章将从应聘和招聘两个方面分别讨论。 (一)找工作指南 面试官在考察什么?专业知识,始终都是专业知识。 有一种常见的想法,“我有一个朋友/同学
阅读全文
摘要:万物皆对象。 如果面试官问你“什么是面向对象”,万物皆对象就是个很好的开场白。 在网上认识的一些新人(甚至部分有三五年经验的老鸟),在谈论到面向对象\面向过程的时候,就陷入了误区。 误区一,面向对象和面向过程是非此即彼的对立方,相互不兼容。 误区二,面向对象是种形而上的东西,“实际”开发中压根没用。
阅读全文
摘要:说几个风马牛不相及的词儿,spring的依赖注入定义,hibernate的数据映射定义,XML的DTD,再就是我们常说的报文格式。 如果对它们不甚了解,请参考章节一《想到哪儿写到哪儿》。有了基本的了解之后,应当隐约之中有一种感觉,“它们很相似”。 本篇文章要说的就是这个相似性,我管它叫做数据格式\元
阅读全文
摘要:说UI能延展出一丢丢的东西来,光java就有swing,swt/jface乃至javafx等等UI toolkit,在桌面上它们甚至都不是主流,在web端又有canvas、svg等等。 基于这些UI工具包\框架,又产生了大量通用的或者业务性的UI框架,比如Draw2d、GEF、easyUI乃至国内的
阅读全文
摘要:一、想到哪儿写到哪儿 给公司新员工培训,和网上的新手做交流,我最先强调的都是基础。 基础有什么用? 1、节省沟通成本 有天,java群里来了个新人,上来就提了一个问题: “我代码跑不起来,怎么办?” 这一看就是还没入门,没办法提供具体的信息。 于是有个有耐心的老鸟出来了,开始了一连串提问:异常栈看一
阅读全文
摘要:package practice;import java.io.BufferedInputStream;import java.util.Arrays;import java.util.Scanner;/** * * 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 * * 住户只可以沿...
阅读全文
摘要:1、动态代理只会调用(invoke)接口已有的方法2、如果有一个接口已有的方法被另外一个接口已有的方法调用,后者在被外部调用时,会触发动态代理的invoke,但前者不会触发。(估计是为了避免迭代以及提高效率)
阅读全文
摘要:在xml配置Hibernate hbm定义时候,catelog用于定义数据库\数据分区。如果该hbm中同时定义了one-to-one关系,会抛出异常。暂未找到原因,去掉catelog即可。
阅读全文
摘要:我们使用eclipse的java编辑器的时候,会经常用到alt+/触发的自动代码补全这个并不仅仅是SWT/JFACE框架下的内容更是属于eclipse先说明一下这个概念,现在的eclipse是基于osgi框架的,osgi是一个可热插拔的以bundle为基本元素的灵活管理规范。eclipse提供了一个osgi规范的实现叫做equinox,eclipse的插件(plugin)即是bundle。swt/jface则是用于构建eclipse的UI框架。但是,你所说的这个问题,其实看下eclipse的编辑器如何实现的就能明白了。去官网下载一个eclipse for rcp含源码版本,即可看到代码提示是怎
阅读全文
摘要:1、Maven打包时出现错误:Fileencodinghasnotbeenset, using platformencodingGBK解决方案:在<build>下加入<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>如果是maven3,则只需要<sourceEncoding>UTF-8</sourceEncoding>2、m2e打包时出现错误:Unable to locate the Javac Compiler in XXX\tool.jar我们知道m
阅读全文
摘要:重写WorkbenchPage的必要性在哪里?比如有一个需求,比如屏蔽编辑器的关闭功能,或者把关闭编辑器按钮的实际功能转为隐藏编辑器前一个功能还可以通过重写一系列的类来完成,后面这个功能几乎是无法完成的。我们可以通过扩展org.eclipse.ui.internalTweaklets来完成我们来看WorkbenchPage的初始化是怎样的:/******************************************************************************* * Copyright (c) 2008 IBM Corporation and others.
阅读全文
摘要:早前的时候写了一篇《在插件里应用hsqldb和hibernate》但是之前的方法只适用于equinox环境,并不能算是hibernate和osgi的完整整合,昨天终于完成了felix+hibernate的整合方式,现做一个完整记录。源码地址如下:SVN:http://ext-eclipse.googlecode.com/svn位置在trunck/mos下,主要是三个maven project: mos.hibernate,mos.hibernate.extender,mos.hibernate.manager还有一个demo: mos.hibernate.demo,该插件并不完善,只提供了基本
阅读全文
摘要:假如写这样的一段代码:int i;{ int j=1; i=j;}如果这段代码是存在于类定义区域,那么我们知道它是个普通的语句块,用于初始化类属性的内容,它会在类实例化的时候被调用,里面可以执行一些方法。在很多实例里,它会用于单例等模式,之前加上一个static,来为复杂的类初始化内容,可以避免一些由于加载顺序引起的运行期异常。但是,如果这段代码出现在方法里呢?它基本一点意义都没有。在我自己从前的想法里,它就是个把代码括起来的格式,没有其他。今天写了一点和“语句标签”相关的代码: label17: int i; int j; Thr...
阅读全文