- 博客(119)
- 资源 (3)
- 收藏
- 关注
翻译 多线程运行机制 概要
1.多线程运行特点 同一段Java程序,在不同虚拟机(JVM)的实现可能会有不同,尤其Java线程。学习线程时,最令我印象深刻的就是那种不确定性、没有保障性,各个线程的运行完全是以不可预料的方式和速度推进,有的一个程序运行了N次,其结果差异性很大,这全要归咎于JVM。 所谓的多任务是通过周期性地将CPU时间片切换到不同的子任务,虽然从微观上看来,单核的CPU上同时只运行一个子任
2008-12-06 09:29:00
6496
原创 线程:Lock接口和死锁
1.Lock接口 java.utils.concurrent包是jdk1.5新增的,用来处理多线程。实现java.util.concurrent.locks.Lock接口的类具有与synchronized关键字同样的功能,但是它更加强大一些。java.utils.concurrent.locks.ReentrantLock是较常用的实现了Lock接口的类。下面是ReentrantL
2008-12-05 22:09:00
5582
原创 线程:sleep()、wait()、yield()和join()方法
1.sleep()和wait() 这两个方法都可以让调用它的线程沉睡(sleep)/停止运行(wait)指定的时间,到了这个时间,线程就会自动醒来,变为可运行状态(RUNNABLE)。 public static native void sleep(long millis) throws InterruptedException; p
2008-12-05 20:59:00
18175
原创 线程的状态、实现与启动、实现同步的方法
1. 线程的状态public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } (1)NEW(新建状态:A thread that has not yet started is in this state.):实例化Th
2008-12-04 22:00:00
5718
原创 标准输入/输出/出错
大多数操作系统都有三个标准文件描述符:标准输入,标准输出,标准出错。 这三个标准文件描述符映射到编程语言的标准库中,往往加了一层包装,但是名字通常还是叫标准输入,标准输出,标准出错。在其它语言中的一般写法是:stdin,stdout,stderr(有的语言里大写,有的语言里小写)。对应Java中的System.in,System.out,System.err。 在语言层面的实现三个文件描述
2008-11-17 20:56:00
3294
原创 JDK和JRE的区别
1. 定义JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。JDK(Java Develop
2008-11-17 20:42:00
20938
5
原创 如果要求精确的答案,请避免使用float和double
1. 概述float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。float和double类型对于货币计算尤为不合适,因为要让一个float或者double精确地表示0.1(或者10的任何负数次方值)是不可能的,比如Syste
2008-10-10 19:27:00
7292
1
原创 struts2: Form表单有多个submit的提交问题
【第1步】多个submit的Form表单页面 or 在jsp页面中使用URL进行提交s:form action="UserAction"> s:submit中的method属性和struts.xml中action标签中的method属性一致(method属性指定了要调用的方法)。 在s:submit中可以为一个action设置多个meth
2008-10-07 20:59:00
8655
原创 struts2: include和global-results
先贴两段代码,在慢慢解释(1)struts-user.xmlstruts> package name="struts-user" extends="struts-default"> global-results> result type="redirect-action">UserAction_queryAl
2008-10-07 16:06:00
7970
6
原创 struts2: Constant Configuration
1. 先从Apache Struts 2 Documentation下摘录一些内容:Constants can be declared in multiple files. By default, constants are searched for in the following order, allowing for subsequent files to override previo
2008-10-07 10:04:00
4458
原创 Struts2中ActionContext介紹 && Struts2如何获得request
1. ActionContext在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest),响应(HttpServletResponse)操作. 我们需要在Action中取得request请求参数
2008-10-07 09:19:00
17410
原创 SSH整合(2) - struts-types
1. Struts2支持不同类型的返回结果:名字 说明Chain Result 用来处理Action链Dispatcher Result 用来转向页面,通常处理JSPFreeMarker Result 处理FreeMarker模板HttpHeader Result 用来控制特殊的Http行为Redirect Resul
2008-10-06 23:50:00
2990
原创 SSH整合(1)-最小整合框架
1. Spring和Hibernate整合:hibernate委托给spring托管。需要改动的地方:(1)需要导入的包:spring.jar + hibernate最小导入包 + commons-dbcp.jar/commons-collections.jar/commons-pool.jar(数据库缓冲池);(2)applicationContext.xml中增加两个bean:data
2008-10-06 23:06:00
3682
1
原创 AOP在spring中的简单实现
直接看代码package edu.hust.springProxy;//抽象角色 public interface RoleDAO { public void doSomething(); }package edu.hust.springProxy;//真实角色 public class RoleDAOImpl implements
2008-10-04 08:18:00
2754
原创 AOP
1.引言我们知道,J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么划分为J2EE容器和J2EE应用系统?通过对J2EE容器运行机制的分析,我们可以发现:实际上J2EE容器分离了一般应用系统的一些通用功能,例如事务机制、安全机制以及对象池或线程池等性能优化机制。这些功能机制是每个应用系统都需要的,而且其设计开发有一定难度,同时对运行的稳定性和快速性要求颇高,必须经过长时间调试和运行经
2008-09-25 22:14:00
3015
原创 代理
1.代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问(在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用).2.代理模式一般涉及到的角色有:(1)抽象角色:声明真实对象和代理对象的共同接口; (2)真实角色:代理角色所代表的真实对象,是我们最终要引用的对象; (3)代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真
2008-09-24 01:31:00
3073
原创 反射
1.问题的提出在Java运行时而非编译时环境中:(1)对于任意一个类,能否知道这个类有哪些属性和方法?(2)对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射机制主要提供了以下功能:(1)"在运行时"判断任意一个类所具有的成员变量和方法(当然在这之前需要 "在运行时
2008-09-24 01:03:00
3774
1
原创 装箱和拆箱
1.int、Integer、String三者的相互转换(不涉及Autoboxing/Auto-Unboxing)public static void main(String[] args) { int num; Integer integer; String numString; //(1) int转换为Integer:public
2008-09-21 23:14:00
3176
原创 Date相关
java.lang.Object |--java.util.Date |--java.sql.Date |--java.sql.Timestampjava.lang.Object |--java.text.Format |--java.text.DateFormat (抽象类, 不能通过构造函数构造对象, 只可以通过getDateTimeInstance()方
2008-09-21 16:27:00
3654
原创 struts2输入验证--补充
1.struts2怎么实现方法签名(类似于struts1的DispatchAction):在strust.xml中配置如下(1)struts2怎么实现分发验证:对应于每个方法签名,可以有相应的validate()方法如下public void validateRegister()public void validateLogin()public void validateInsert()(
2008-09-20 15:23:00
3944
原创 struts2 -- interceptor(如何配置Interceptor)
1.interceptor的配置方法1. 普通配置法struts> package name="struts2" extends="struts-default"> interceptors> interceptor name="myInterceptor" class="edu.hust.interceptor.MyInter
2008-09-20 13:57:00
17532
2
原创 struts2 -- interceptor(Interceptor怎么写)
interceptor是struts2的核心。我们也可以定义自己的interceptor。jdk代理模式是基于AOP的,struts2的interceptor也是基于AOP的。所以我们可以把interceptor理解为struts2对动态代理的一种封装,与手工实现jdk的动态代理相比,这种封装使得操作变得更为简单。1. implements Interceptor的自定义intercept
2008-09-20 12:41:00
2570
原创 struts2输入验证--验证框架(xml文件验证)
struts2验证框架分为字段(field校验--面向字段、字段优先)校验器和非字段(validator--校验面向validator、validator优先)校验器.通过验证框架验证,只需要删除掉原来validate()方法中的内容(这篇blog是基于"struts2输入验证--validate()验证"的),再增加一个xml文件即可:一个Action对应一个验证xml(RegisterAc
2008-09-20 11:29:00
7935
2
原创 struts2输入验证--validate()方法验证
1.action类package edu.hust.action;import java.util.Calendar;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport {
2008-09-20 10:14:00
4221
2
原创 struts2类型转换续
对于上一篇blog,如果输入多个Point,该如何处理:1.输入页面如下,假设输入3个Point,其name都相同。%@ page contentType="text/html;charset=GBK"%>%@ taglib prefix="s" uri="/struts-tags" %>s:form action="converter" method="post">
2008-09-20 10:01:00
1362
原创 struts2类型转换
1.先给一个PointBean,要求对这个bean进行类型转换public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x;
2008-09-20 09:33:00
1860
原创 struts2的action基础
看代码及注释LoginAction.javapackage edu.hust.action;import com.opensymphony.xwork2.ActionSupport;//strust2.0的Action可以不继承任何类(这个和struts1.3有很大区别). 此时struts2.0的Action类似一个JavaBean,只有getter、setter
2008-09-20 00:29:00
1808
原创 IoC详解
1.定义:IoC是一种模式。IoC(Inversion of Control)中文译为控制反转(即“不用你找,我来提供给你”)。控制反转意味着在系统开发过程中,设计的类将交由容器(spring中是通过applicationContext.xml控制的)去控制,而不是在类的内部去控制,类与类之间的关系将交由容器处理,一个类在需要调用另一个类时,只要调用另一个类在容器中注册的名字就可以得到这个类的实例
2008-09-18 09:15:00
3657
1
原创 工厂模式
1. 创建型设计模式总结: 创建型设计模式应该应用于那些"接口相对稳定但类型实体本身却经常面临需求变化"的场合。如果接口不稳定,创建型设计模式将无法设计;如果类本身变化不大,创建型设计模式也就没有必要。2. 工厂模式定义:定义一个创建对象的接口,并让子类来决定由哪个类实现这个接口。工厂模式将接口实例化交给子类完成。工厂模式是非常常见的模式,通常与动态类的加载相结合使用。常用的JDBC中,只
2008-09-18 09:04:00
1036
原创 string机制3
1.intern()定义public native String intern(); 这是一个本地方法。在调用这个方法时,JAVA虚拟机首先检查字符串池中是否已经存在与该对象值相等对象存在,如果有则返回字符串池中对象的引用;如果没有,则先在字符串池中创建一个相同值的String对象,然后再将它的引用返回。 换一种解释:存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。S
2008-09-14 11:52:00
789
1
原创 string机制2
先来推荐一个检测内存泄漏的软件:JProfiler。很不错。本篇博文用到了这个软件。接上一篇博文中那个经典面试问题。这里我用JProfiler对String对象的产生进行了监控。结果表明上篇博文的分析是正确的。public static void main(String[] args) { System.out.println("=====Start========");
2008-09-14 01:49:00
994
原创 string机制1
1.String类概念(1)String是final的,不可被继承。public final class String。String是的本质是字符数组char[], 并且其值不可改变。private final char value[];(2)Java运行时会维护一个String Pool(String池)。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一
2008-09-14 01:39:00
2405
原创 String、StringBuffer和StringBuilder
String是final的系统内置类型,不可被继承。String是不可变的对象(长度固定、值不可变)。因此在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,那速度是一定会相当慢的。举例:
2008-09-13 17:49:00
1255
原创 多线程为什么有同步的概念
线程同步:使隶属于同一进程的各线程协调一致地工作。虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取
2008-09-13 14:47:00
2291
原创 HashMap和TreeMap
1.AbstractMap抽象类和SortedMap接口AbstractMap抽象类:覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的
2008-09-13 14:26:00
16889
1
原创 容器简介
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap│ └LinkedHashMap└WeakHashMap容器类彼此间的关系请看下图legacy表示遗留过期的意思。1.容器类类库分为两类(1)Collection:最基本的集合接口,JDK不提供直接继承自Collect
2008-09-13 13:46:00
1064
1
原创 ArrayList、Vector和LinkedList
ArrayList、Vector和LinkedList实现了所有List接口的操作,并允许存储null值。1.实现方式ArrayList和Vector是List接口的可变长数组实现,即动态数组(Object类型的数组)。new ArrayList()时,底层会生成一个长度为10的数组来存放对象,如果预先知道list会存放多少个对象的话,最好通过new ArrayList(int lengt
2008-09-13 10:09:00
1401
原创 进程(Process)和线程(Thread)
进程(Process)和线程(Thread)1.Process特点(1)进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;(2)进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;(3)从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进
2008-09-12 20:09:00
2892
转载 sql注入解释
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQ
2008-09-11 00:20:00
1060
转载 struts1.3.8 -- 动态Action
使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。 首先,如果ActionForm对应的HTML表单添加或删除一些属性,ActionForm类就可能需要修改并重新编译; 其次,如果HTML表单是动态的,那么ActionForm更是无能为力了;
2008-09-11 00:13:00
1685
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人