- 博客(57)
- 收藏
- 关注
转载 Lucene倒排索引原理 (zz)
因为今天被某公司搜索二面经理BS了~ 所以 特地回来查看了一下 Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下:0)设有两篇文章1和2文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.文章2的内容为:He once lived in Shangh
2009-10-27 00:48:00 367
原创 理解互斥量和信号量
理解互斥量和信号量理解互斥量和信号量 作者: JuKevin 互斥量(Mutex) 互斥量表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,它常用作保护从中断来的临界段代码并且在共享同步使用的资源。 Mutex本质上说就是一把锁,提供对资源的独占访问,所以Mute
2009-10-21 11:29:00 501
转载 学习servlet api (RequestDispatcher)(ZZ)
通常,在一个设计良好的Web应用中,都会综合使用Servlet和JSP技术。Servlet控制业务流转,JSP则负责业务处理结果的显示。此时,将大量用到重定向技术。重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写javascript脚本实现。本文主要探讨服务器端重定向技术的实现。服务器端的重定向相关类
2009-10-10 20:19:00 486
转载 对象的序列化和反序列化(ZZ)
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的
2009-10-10 20:06:00 324
转载 java关键字native,volatile,transient(zz)
1.volatile:为了获得最佳速度,java允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比,volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值,volatile关键字就是提
2009-10-10 20:02:00 378
转载 Daemon thread(zz)
1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程 2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。 虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
2009-10-10 18:59:00 452
转载 C++的64位整数 __int64 (zz)
在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。
2009-10-07 19:44:00 583
转载 设计模式 之 风趣篇 (zz)
因为很多人没有注意到这点,学完Java基础语言就直接去学J2EE,有的甚至鸭子赶架,直接使用起Weblogic等具体J2EE软件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解J2EE了吗?你在具体案例中的应用是否也是在延伸J2EE的思想? 如果你不能很好的延伸J2EE的思想,那你岂非是大炮轰蚊子,认识到J2EE不是适合所有场合的人至少是明智的,但我们更需要将J2EE用对
2009-10-06 21:31:00 291
转载 Java泛型扫盲(zz)
在Java SE1.5中,增加了一个新的特性:泛型(日本语中的总称型)。何谓泛型呢?通俗的说,就是泛泛的指定对象所操作的类型,而不像常规方式一样使用某种固定的类型去指定。泛型的本质就是将所操作的数据类型参数化,也就是说,该数据类型被指定为一个参数。这种参数类型可以使用在类、接口以及方法定义中。 一、为什么使用泛型呢?
2009-10-06 16:37:00 347
转载 多态(Polymorphism)的实现机制(下)--Java篇 (zz)
既然多态是面向对象的三大本质特征之一(其它两个是数据抽象和继承),那么C++为什么不将方法调用的默认方式设置为动态绑定,而要通过关键字virtual进行标记呢?Bruce Eckel在《Thinking inC++》中提到,这是由于历史原因造成的,C++是从C发展而来的,而C程序员最为关心的是性能问题,由于动态绑定比静态绑定多几条指令,性能有所下降,如果将动态绑定设定为默认
2009-10-06 16:34:00 380
转载 多态(Polymorphism)的实现机制(上)--C++篇 (zz)
多态(Polymorphism)是面向对象的核心概念,本文以C++为例,讨论多态的具体实现。C++中多态可以分为基于继承和虚函数的动态多态以及基于模板的静态多态,如果没有特别指明,本文中出现的多态都是指前者,也就是基于继承和虚函数的动态多态。至于什么是多态,在面向对象中如何使用多态,使用多态的好处等等问题,如果大家感兴趣的话,可以找本面向对象的书来看看。 为了方便说明,下
2009-10-06 16:31:00 312
转载 幕后英雄的用武之地 ——浅谈Java内部类的四个应用场景 (zz)
幕后英雄的用武之地 ——浅谈Java内部类的四个应用场景Java内部类是Java言语的一个很重要的概念,《Java编程思想》花了很大的篇幅来讲述这个概念。但是我们在实践中很少用到它,虽然我们在很多时候会被动的使用到它,但它仍然像一个幕后英雄一样,不为我们所知,不为我们
2009-10-03 01:23:00 338
转载 使用接口还是使用抽象类
很多人有过这样的疑问:为什么有的地方必须使用接口而不是抽象类,而在另一些地方,又必须使用抽象类而不是接口呢?或者说,在考虑Java类的一般化问题时,很多人会在接口和抽象类之间犹豫不决,甚至随便选择一种。 首先来了解一下接口和抽象类的一些具体的区别: 抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具
2009-10-02 21:37:00 1040
原创 Java 类加载器(三)
Java 语言是一种具有动态性的解释型编程语言,当指定程序运行的时候, Java 虚拟机就将编译生成的 . class 文件按照需求和一定的规则加载进内存,并组织成为一个完整的 Java 应用程序。 Java 语言把每个单独的类 Class 和接口 Impl
2009-10-02 17:05:00 1392 1
原创 Java 类加载器(二)
下面比较深入的介绍java类加载原理和过程,虽然很多情况你都不需要了解类加载的过程,但是如果你希望了解Java是如何工作的,或者希望定义自己的类加载器,就一定要了解类加载的过程,当然,无论你是否要参与类加载过程,了解这个过程对你都会有很大的帮助。 本文使用的JDK是sun的jdk_1.6版本,当然这里重在阐述原理,和JDK本身没有多大的关系。
2009-10-02 16:54:00 612
原创 Error Correction pku 2260
题目出处:pku 2260 http://acm.pku.edu.cn/JudgeOnline/problem?id=2260 joj 1322 http://acm.jlu.edu.cn/joj/showproblem.php?pid=1322 解题: import java.util.ArrayList;import java.util
2009-10-01 15:52:00 455
转载 C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONE
2009-09-30 17:26:00 10689
转载 Javaserver Faces 简介 — 什么是 JSF?
什么是 JSF? JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI)组件拖放到页
2009-09-29 23:16:00 495
原创 我的第一个JSF Demo -- Hello World
公司里面一直在做的项目就是用JSF框架做的,但是一直以来都在修复Bug, 当然也是UI上的bug,然而并没有很系统得去真正学这个JSF框架,当然也没有真正从整体的面貌中来看J2EE这一个部分。所以在图书馆看到了这本《JSF 实战 --JSF IN ACTION》之后,就借来,准备好好认真得学一下。无论对找工作或者接下去有什么帮助,我觉得都应该学一下。 首先说一下在公司修复Bug的时候,其
2009-09-29 22:36:00 3409 1
原创 h:panelGrid 属性详解(转)
一.页面布局:样式表基本概念:单元格样式: columnClasses="columnClasses1, columnClass2,..." ....行样式: rowClasses="rowClasses1, rowClasses2" ....样式: styleClass="" == 注: 无法实现多个表头单元.panelGrid 标签学习
2009-09-25 11:48:00 594
原创 JAVA的GC机制(4) ——内存泄漏
所有与main()进程不再有任何引用关系的对象都被JVM视作垃圾,并会被适时回收;而 如果在需要废弃一个对象的时候,引用关系解除得不彻底,就会发生非预期的内存占用,即泄露。有没有什么工具能帮忙查出某个对象是否确实不再被引用、仅仅只是在等待GC来吃?或者有什么办法实时地显示出JVM内部所有对象之间的引用关系?举例: 有一个全局范围的容器Collection c。在局部
2009-09-19 21:54:00 623
原创 JAVA中GC机制(3)——GC如何工作
经过前面对GC的一些基本介绍以及JAVA中数据存储位置的介绍,多少对GC有一些了解。那么现在具体了解一下GC究竟是如何工作的。我们首先会下意识地想到,GC要工作是针对那些存储在堆上的数据进行内存释放的。那么会涉及两个问题——如何发现?如何释放?其实我们了解到,在堆上进行内存的释放代价是非常昂贵的,也就是GC工作的时候代价是很高的。但是在堆上分配内存却提高了创建对象的速度。JAVA中对象
2009-09-19 21:50:00 800
原创 JAVA的GC机制(2) -- 对象存储
╬左岸の暧昧 发表于 2009-5-23 15:59:00其实要了解对象的释放,需要了解一下对象的存储,即对象是怎么样进行放置安排的呢?特别是内存中究竟是如何进行分配的呢?有五个不同的地方可以用来存储数据:寄存器。这是最快的存储区,因为它位于不同于其它地方的存储区位置——CPU内部。但是寄存器的数量是有限的,所以寄存器会根据需要进行分配。你
2009-09-19 21:49:00 632
原创 JAVA的GC机制(1) --GC的基本概述
一。谁在做Garbage Collection? 一种流行的说法:在C++里,是系统在做垃圾回收;而在Java里,是Java自身在做。 在C++里,释放内存是手动处理的,要用delete运算符来释放分配的内存。这是流行的说法。确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可以回收这块空间了。这个要求,对编码者来说,是件很麻烦、很难做到的事。随便上哪个
2009-09-19 21:49:00 1621
原创 Java的GC机制总结(0) ---finalize()方法
其实了解JAVA的人,都知道JAVA的GC机制是其的一大优点,它令程序员不需要主动去考虑内存溢出和垃圾回收的问题,不像c++具有显式的析构函数对整个对象进行内存清理以及需要调用delete才可以进行显示的销毁对象。 当然也有存在特殊的情况:假定你的对象(并非使用new方法)获得了一块“特殊”的内存区域,由于垃圾回收器只知道那些显示地经由new分配的内存空间,所以它不知道该如何释放这
2009-09-19 21:48:00 937
原创 ResourceBundle和Properties类的区别
一般来说,ResourceBundle类通常是用于针对不同的语言来使用的属性文件。而如果你的应用程序中的属性文件只是一些配置,并不是针对多国语言的目的。那么使用Properties类就可以了。通常可以把这些属性文件放在某个jar文件中。然后,通过调用class的getResourceAsStream方法,来获得该属性文件的流对象,再用Properties类的load方法来装载。示例
2009-09-19 21:46:00 1517
原创 学习如何有效地使用SoftRef/WeakRef/PhantomRef
Java 2 引用类使用指南学习如何有效地使用 SoftReference、WeakReference 和 PhantomReference Java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中。这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。Peter Haggar 在本文中分析了 SoftR
2009-09-19 21:43:00 486
原创 java中持有引用 --- 引用包java.lang.ref
前言:上次碰到个WeakHashMap,搞了一下,没明白, 碰到了引用包, 没太理解它的用处, 这次看JDK中Proxy的源码又碰到了,如鲠在喉, 一定要解决它对象的回收过程:标记阶段(此阶段, 一切工作必须停止, 如果有对象覆盖了finalize方法, 会先调用这个方法, 而暂时不做标记, 而推迟到下次gc的时候再做标记)清理阶段(此阶段和工作可能并行进行)这里大致为那些
2009-09-19 21:39:00 437
原创 关于容器涉及到的一些基本JAVA问题(1)
说到了元素相等性的比较,必然也要说到元素大小的比较:Comparator或Comparable 的比较 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。一、Comparator强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections
2009-09-19 21:38:00 251
原创 关于容器涉及到的一些基本JAVA问题(0)
最近在深入学习java中的容器问题,简单的问题就不给予探讨了,这里讲一些平时容易混淆的问题。加之csdn我的博客才开博不到一个月,不能一天发表两篇文章faint,同时还不具有edit功能,更faint。所以在此总结如下:===========================================================================第一个是关于比
2009-09-19 21:27:00 331
原创 Ajax 技术入门简介
Ajax 由 HTML、Javascript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本系列的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实。他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象。 五年前,如
2009-09-13 15:17:00 225
转载 JSF与Struts的异同
Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架,老外总是急吼吼说事件驱动型就比MVC模式框架好,何以见得,我们下面进行详细分析比较一下到底是怎么回事? 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Comma
2009-09-13 14:41:00 199
转载 JVM Class Loader
Java本身是一种设计的非常简单,非常精巧的语言,所以Java背后的原理也很简单,归结起来就是两点: 1、JVM的内存管理 理解了这一点,所有和对象相关的问题统统都能解决 2、JVM Class Loader 理解了这一点,所有和Java相关的配置问题,包括各种App Server的配置,应用的发布问题统统都能解决 App Class Loader |-----
2009-09-10 16:25:00 287
原创 The Staircases 1026
JOJ 1026解体的思路:这道题其实是将N不同拆分方法的方法个数,其实是一个全排列的问题。这道题目如果用搜索之类的方法去做就实在太傻了!因为这是根本不可能在规定时间内做出来的。更何况数据量仅仅是500.某一天的凌晨由于实在是太热了,于是睡不着的我干脆起来做题,就看到了这道题。Ok接下去讲一下做题目的思路: 我们首先可以得出放在第一阶上的方块最多不可以超过floor((N-
2009-09-02 00:09:00 564 2
原创 Eclipse Plugin 在 Console上打印出message
org.eclipse.ui.console 首先这里主要用到的是org.eclipse.ui.console这个包,所以现在顺道先来了解一下: org.eclipse.ui.console是一个可扩展的console视图插件,利用它可以实现各种console,并把它们显示出来。该插件本身就实现了一个Message Console,对于只需要进行消息输出的RCP应用来说,其功能已
2009-08-31 22:36:00 2647 2
原创 DOM4J
DOM4J官方网站:http://www.dom4j.org/DOM4J下载(SourceForge)http://www.dom4j.org/download.htmlhttp://sourceforge.net/projects/dom4j推荐一个APACHE的开源项目Digester,对象化解析XML
2009-08-27 15:43:00 455
转载 Java实现文件拷贝的4种方法
使用 java 进行文件拷贝 相信很多人都会用,,不过效率上是否最好呢?最近看了看NIO决定试一试 java NIO 到底有什么性能的提升. 第一种方法:古老的方式public static long forJava(File f1,File f2) throws Exception{ long time=new Date().getTime(); int l
2009-08-27 11:26:00 326
原创 Java 文件读写
package common.fileOperate;import java.io.*;public class FileRw { public FileRw() { } /** * 读取文件filePath中一行的数据,并返回这个数据 * * @param filePath * @return * @throws FileNotFoundExce
2009-08-27 11:24:00 385
转载 Java正则表达式的解释说明
表达式意义:1.字符x 字符 x。例如a表示字符a// 反斜线字符。在书写时要写为////。(注意:因为java在第一次解析时,把////解析成正则表达式//,在第二次解析时再解析为/,所以凡是不是1.1列举到的转义字符,包括1.1的//,而又带有/的都要写两次)/0n 带有八进制值 0的字符 n (0 /0nn 带有八进制值 0的字符
2009-08-27 11:23:00 218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人