- 博客(47)
- 收藏
- 关注
原创 网络游戏同步的原理
不知道大家是否碰到过这种情况,当某个玩家发出一个火球,这个火球有自己的运动轨迹,那么如何来判断火球是否打中了人呢?大部分情况,当策划提出这个要求的时候,一般会被程序否认,原因是:太麻烦了,呵呵。复杂点的还有包括两个火球相撞之类的事情发生。 那么网络游戏中,是否真的无法模拟实现这种模拟呢? 首先我们来看看模拟此种操作会带来什么样的麻烦: 1,服务器必须...
2011-09-22 20:01:34 275
原创 java中的io系统详解
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamW...
2010-09-16 23:21:54 126
原创 卸载Oracle的实现方法
1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务; 2、开始->程序 ->Oracle – OraDb10g_home1>Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除; 3、运行...
2010-09-02 17:45:55 194
原创 Firefox改变查看页面源代码的程序
我们使用Firefox火狐浏览器浏览网页时,当我们需要查看页面源代码时,Firefox默认是用他自己的源代码查看程序来显示源代码。由于这个页面查看程序的功能很少,我们可以用其他功能强大的编辑器来查看页面源代码。 可以有两种方法来实现此功能。 一. 使用扩展 有一个Firefox的扩展ViewSourceWith ,这个扩展的作用就是让用户使用自定义的应用程序来查看页面代码源文件。...
2010-08-31 22:03:11 252
原创 修改IE查看源代码编辑器
之前就遇到再IE下查看源代码发现很不爽,一直想换个编辑器来着。平时一般都用NotePad++。 找到两种方式修改IE的默认源代码编辑器。 方法一: 在IE中右键选择查看源代码时,默认使用启事本来打开网页的源代码,如果“查看源代码”菜单打开的编辑器是EmEditor、EditPlus 2、UltraEdit等编辑工具,不是更方便吗?本文介绍通过修改注册表的方法...
2010-08-27 22:54:40 142
原创 表现层、持久层、业务层
为了实现web层(struts)和持久层(Hibernate)之间的松散耦合,我们采用业务代表(Business Delegate)和DAO(Data Access Object)两种模式。DAO模式为了减少业务逻辑和数据访问逻辑之间的耦合,当一个持久曾框架被应用时,该模式将会减少业务对象和该框架之间的耦合,这样我们可以不修改业务对象而选择不同的持久层框架的实现。实际上在DAO模式中包...
2010-08-17 12:31:54 236
原创 出现java.lang.UnsupportedClassVersionError 错误的原因
出现java.lang.UnsupportedClassVersionError 错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。因为,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不同。这样,低版本的JVM无法解释执行这个.class文件,会抛出java.lang.Unsupported...
2010-08-16 23:11:10 93
原创 java中的日期处理类总结
java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类 网上转载的,地址已经忘记了,在此感谢作者的分享。 1、Date类(该类现在很少用了) Date类对象的创建: 创建一个当前时间 //默认是创建一个代表系统当前日期的Date对象 Date d = new Date(); 创建一个我们指定的时...
2010-08-08 20:35:11 102
原创 JNDI
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI到底起什么作用?要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”这个问题来探讨。没有JNDI的做法:程序...
2010-07-28 12:10:48 91
原创 关于Session的详细解释(二)
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这...
2010-05-25 12:12:44 112
原创 关于Session的详细解释(一)
一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的...
2010-05-25 12:10:53 330
原创 Oracle悲观锁和乐观锁
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提...
2010-05-25 12:08:26 84
POST方式发送ajax请求详解(转)
原贴地址: http://04101334.iteye.com/blog/637695 在开始讲解之前,我假设你已经对ajax的基本原理有一定的理解,如果还有哪位朋友不怎么了解的话,请点击这里 。 post和get 首先我们先讲解下post和get发送方式的特点, GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见; GET 方法提交的数据大小限制在255 个字符...
2010-04-13 12:23:07 169
体验J2SE 1.5新特性之增强For循环
J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。 在Java程序中,要“逐一处理”——或者说,“遍历”——某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环...
2010-04-08 14:49:34 94
全面剖析XMLHttpRequest对象
XMLHttpRequest对象是当今所有AJAX和Web 2.0应用程序的技术基础。尽管软件经销商和开源社团现在都在提供各种AJAX框架以进一步简化XMLHttpRequest对象的使用;但是,我们仍然很有必要理解这个对象的详细工作机制。 一、 引言 异步JavaScript与XML(AJAX)是一个专用术语,用于实现在客户端脚本与服务器之间的数据交互过程。这一技术的优点在于,它向开发者提供...
2010-04-02 11:45:23 73
XPath
XPath 简介XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。因此,对 XPath 的理解是很多高级 XML 应用的基础。 其实对些我们并不陌生,最与XPath相似的便是CSS的选择器.在CSS中使用CS...
2010-03-22 17:52:17 132
dom4j读写xml文件
首先我们给出一段示例程序:import java.io.File;import java.io.FileWriter;import java.util.Iterator;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j...
2010-03-22 16:53:15 99
Dom4j笔记总结《入门总结》
1. Parsing XML 2. 3. 或许你想要做的第一件事情就是解析一个某种类型的XML文档,用dom4j很容易做到。请看下面的示范代码: 4. 5. import java.net.URL; 6. 7. import org.dom4j.Document; 8. import org.d...
2010-03-22 16:45:00 70
使用JAXP API
为了让我们的应用程序不依赖于具体的解析器,让我们以统一的接口来访问XML文档,Sun公司开发了JAXP(Java API For XML Processing)API。 JAXP没有扩充解析器新的功能,它是对解析器的一个封装,使开发人员能够独立于具体的解析器,这样我们就可以在应用程序中任意更换解析器,而不用更改应用程序代码。现在主流的解析器都支持DOM和SAX,所以JAXP也都支持。JAX...
2010-03-22 16:31:50 149
通过Singleton单例模式,理解Java的类加载
通过Singleton单例模式,理解Java的类加载---------------------------------------------------------------------public class Singleton { private static Singleton obj = new Singleton(); //1 public static int counter1...
2010-03-22 16:26:46 106
XSL (eXtensible Stylesheet Language)-修饰XML
example.xml : <?xml version="1.0" encoding="GB2312"?><?xml-stylesheet type="text/xsl" href="student.xsl"?><学生信息> <学校>电脑学校</学校> &
2010-03-20 10:05:13 104
原创 全面总结Java泛型
虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋,所以才想到要创建一个新的语言,不过这仍然不妨碍我们学习Java泛型。毕竟即使听说Java泛型不好用,但好不好用还是得会用了才知道。下面是一些有关Java泛型的总结:普通泛型class Point< T>{ // 此处可以随便写标识符号,T是type的简称 private T var ;...
2009-10-25 12:19:59 67
原创 理解java String
要理解 java中String的运作方式,必须明确一点:String是一个非可变类(immutable)。什么是非可变类呢?简单说来,非可变类的实例是不能被修改的,每个实例中包含的信息都必须在该实例创建的时候就提供出来,并且在对象的整个生存周期内固定不变。java为什么要把String设计为非可变类呢?你可以问问 james Gosling :)。但是非可变类确实有着自身的优势,如状态单一,对象简...
2009-10-20 15:07:04 68
原创 字符串相关
Java代码 public class StringTest { public static void main(String[] args) { String str = new String("abc"); //语句(1) String str1 = "abc";//语句(2) ...
2009-10-20 15:06:01 62
原创 Java中"equals"和"=="的区别
一句话概括:==比较的是两个对象的引用(即内存地址)是否相等,而equals()比较的是两个对象的值(即内存地址里存放的值)是否相等。当然equals()在个别类中被重写了那就例外了。 详细论述:eqauls 与 = =之异同 1)比较方式角度:= =是面向过程的操作符;equals是面向对象的操作符= =不属于任何类,equals则是任何类(在Java中)的一个方法;...
2009-10-20 14:01:11 69
原创 关于Servlet的面试题
1、 Servlet与JSP有什么区别?Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。Servlet是纯Java代码,通常用于控制,不用于输出。在MVC模式中,J...
2009-10-09 19:13:10 75
原创 究竟什么是POJO?
POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。 我在做J2EE培训中发现我的很多学生问我什么是POJO,后来我在写书(《Spring2初学者实践教材》和《Spring3初学者实践教材》)的时候发现POJO这个概念无法回避。现在网上对于...
2009-05-15 12:19:46 99
原创 Java代码编写的30条建议
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。 Java包(Package)属于一种...
2009-05-14 22:21:04 76
原创 Tomcat请求处理(七) - Servlet实例的调用
Tomcat请求处理中Servlet实例的调用是和Filter的调用联系在一起的,是在StandardWrapperValve类的#invoke()方法中调用的,前面的文章中提到过,就是下面的这句: filterChain.doFilter(request.getRequest(), response.getResponse()); 它的源代码如下: Java代码 publ...
2009-05-07 11:36:52 117
原创 请求在Tomcat中传到了CoyoteAdapter的#service()方法中后,就要准备进入Pi
首先,来看一下Servlet的载入过程。 具体是在org.apache.catalina.core.StandardWrapper#allocate()这个方法中,源代码如下: public Servlet allocate() throws ServletException { if (unloading) throw new ServletExcepti...
2009-05-07 11:35:16 88
原创 Tomcat请求处理(五) -- 请求在容器间的流动
请求在Tomcat中传到了CoyoteAdapter的#service()方法中后,就要准备进入Pipeline了,如#service()方法中的这句所示: connector.getContainer().getPipeline().getFirst().invoke(request, response); 这里的Container是Engine,然后得到它的Pipeline对象,然后得到他的第...
2009-05-07 11:34:17 104
原创 Tomcat请求处理(四) -- Request, Response, 和Pipeline
1. Request和Response 当处理请求的时候,Tomcat使用org.apache.coyote.Request和org.apache.coyote.Response对象来封装对Socket的数据处理,就好像它们是输入流和输出流一样。 Request和Response是low-level的,并不是用于在开发中使用的,所以,Tomcat使用了适配器模式定义了两个类org.apache.c...
2009-05-07 11:33:02 117
原创 Tomcat请求处理(三) -- coyote请求处理
在上一篇文章文章中,Tomcat的请求处理到了JIoEndpoint$Worker#run()方法的handler.process(socket)这个调用中。 这个handler在JIoEndpoint中是这样定义的:protected Handler handler = null;这个Handler是在JIoEndpoint内部定义的一个接口,它的内部只有public boolean p...
2009-05-07 11:32:36 279
原创 Tomcat请求处理(二) -- 请求处理框架
书接上文。 当Tomcat的Acceptor监听到有请求到来时,就会结束阻塞,继续进行程序下面的动作。如下面的代码所示: public void run() { while (running) { while (paused) { try { Thread.sleep(1000); } catch (InterruptedExcep...
2009-05-07 11:30:57 55
原创 Tomcat请求处理(一) -- 服务器端口监听
其实tomcat在哪个类中监听请求的代码很容易找到: 在org.apache.tomcat.util.net.JIoEndpoint$Acceptor#run()中的这么一句: Socket socket = serverSocketFactory.acceptSocket(serverSocket); 可是ServerSocketFactory是个抽象类,我还是很想知道整个过程的来龙去脉的。 那...
2009-05-07 11:29:32 137
原创 Tomcat启动部分源代码分析(五) -- 应用程序加载
前面所叙述的tomcat启动中并没有webapps下边应用程序载入的内容,今天花了些时间在源代码中找到了一些相关的内容。 1. webapps下的应用程序的载入,要从Digester的HostRuleSet说起了: public void addRuleInstances(Digester digester) { digester.addObjectCreate(prefix ...
2009-05-07 11:28:24 71
原创 Tomcat启动部分源代码分析(四) -- 开启容器
四. 开启容器 最后是Bootstrap#start()方法的内容了,start()方法结束后,Tomcat就启动成功了。 下面来看一下Bootstrap#start()的内容: public void start() throws Exception { if (catalinaDaemon == null) init(); // 调用Catalina#star...
2009-05-07 11:27:17 66
原创 Tomcat启动部分源代码分析(三) -- 载入
二. 载入 2. Bootstrap的#Bootstrap#load(String[] arguments)方法。 方法的源代码如下述所示: private void load(String[] arguments) throws Exception { // 要调用的方法名 String methodName = "load"; // 参数名 Object param...
2009-05-07 11:23:57 92
原创 Tomcat启动部分源代码分析(二) -- 初始化
二. 初始化 1. 首先是Bootstrap的#init()操作。 public void init() throws Exception { // 设定Catalina setCatalinaHome(); setCatalinaBase(); // 初始化ClassLoader initClassLoaders(); // 设置...
2009-05-07 11:20:13 71
原创 Tomcat启动部分源代码分析(一) -- 概览
一. 概览 本文所涉及的Tomcat为6.0版本。 Tomcat的启动始于org.apache.catalina.startup.Bootstrap#main(),下面来列举一下相关的源代码: public static void main(String args[]) { if (daemon == null) { daemon = new Bootstrap(); ...
2009-05-07 11:17:45 149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人