??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久久超碰,国产一区二区三区在线视频,欧美成人中文字幕http://www.aygfsteel.com/yuweixia2008/archive/2010/02/01/311471.html?/dc:creator>?/author>Mon, 01 Feb 2010 02:38:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2010/02/01/311471.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/311471.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2010/02/01/311471.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/311471.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/311471.html
文档选项
打印机的版面设|成横向打印模式

打印本页

此作为电子邮件发? src=

此作为电子邮件发?/strong>

未显C需?JavaScript 的文档选项


U别Q?初

?鹏飞 (suipf@cn.ibm.com), 软g工程? IBM
?亦方 (wuyifang@cn.ibm.com), 软g工程? IBM

2009 q?3 ?11 ?/p>

本文向读者介l利?Java dump 诊断 JVM Crash ?CPU 饥饿{问题的Ҏ和技巧,以便使用h加全面的了解 Java dump 在故障诊断过E中的作用?/blockquote>

更多关于 Java dump q行 JVM 故障诊断的内容,请参考:

 

本文对上面的文章做了q一步的补充Q介l了如何利用 Java dump 诊断 JVM Crash ?CPU 饥饿{问题的Ҏ和技巧?/p>

引言

对于大型 java 应用E序来说Q再_的测试都难以堵住所有的漏洞Q即便我们在试阶段q行了大量卓有成效的工作Q很多问题还是会在生产环境下暴露出来Qƈ且很隑֜试环境中进行重现。JVM 能够记录下问题发生时pȝ的运行状态ƈ其存储在{?dump)文g中,从而ؓ我们分析和诊断问题提供了重要的依据。常见的转储文g包括 Java DumpQ?Heap dump ?System dump。这里我们主要介l?Java dump ?JVM 故障诊断中的应用?/p>

Java dumpQ也叫做 Thread dumpQ是 JVM 故障诊断中最重要的{储文件之一。JVM 的许多问题都可以使用q个文gq行诊断Q其中比较典型的包括U程dQCPU 使用率过高,JVM CrashQ堆内存不Q和c装载等问题。作Zƾ轻量Q与 Heap dump ?System dump 相比Q的转储文gQJava dump 的确是我们诊?JVM 问题的首选。本文将pȝ的介l?Java dump q行 JVM 故障诊断的方法和技巧,希望能够为大家提供一些帮助?/p>



回页?/strong>


Java dump 文g的格式和内容

Java dump 通常是文本格?.txt)Q因此可以通过一般的文本~辑器进行阅读,阅读旉要注意段与行的格式:

D|?/span>

Z便于大家的分析,Java dump 的每一D늚开_都会?#8220;-----”与上一D|昄区分开来。而每一D늚标题也会?#8220;=====”作ؓ标识Q这h们就能够很容易的扑ֈ每一D늚开头和标题部分Q如清单 1Q?/p>
清单 1. Java dump D|题示?/strong>
NULL --------------------------------
            0SECTION TITLE subcomponent dump routine
            NULL ===============================
            

行格?/span>

Java dump 文g中,每一行都包含一个标{,q个标签最多由 15 个字W组成(如清?中所C)。其中第一位数字代表信息的详细U别Q?Q?Q?Q?Q?Q,U别高代表信息详l;接下来的两个字符是段标题的羃写,比如Q?#8220;CI” 代表 “Command-line interpreter”Q?#8220;CL” 代表 “Class loader”Q?#8220;LK” 代表 “Locking”Q?#8220;ST” 代表 “Storage”Q?#8220;TI” 代表 “Title”Q?#8220;XE” 代表 “Execution engine”{等Q其余部分ؓ信息的概q?/p>
清单 2. Java dump 行标{֒内容CZ
1TISIGINFO Dump Event "uncaught" (00008000) Detail "java/lang/OutOfMemoryError" received

不同版本?JVM 所产生?Java dump 的格式可能会E有不同Q但基本上都会包含以下几个方面的内容Q?/p>

  • TITLE 信息块:描述 JAVA DUMP 产生的原因,旉以及文g的\径?
  • GPINFO信息块:GPF 信息?
  • ENVINFO 信息块:pȝq行时的环境?JVM 启动参数?
  • MEMINFO 信息块:内存的用情况和垃圾回收记录?
  • LOCKS 信息块:用户监视?Monitor)和系l监视器(Monitor)?
  • THREADS信息块:所?java U程的状态信息和执行堆栈?
  • CLASSES信息块:cd载信息?




回页?/strong>


利用 Java Dump q行 JVM 故障诊断

׃ Java dump 文g包含的内Ҏ较广泛,因此 JVM 的很多问题都可以通过 java dumpq行诊断。这些问题主要包括线E阻塞,CPU 使用率过高,JVM CrashQ堆内存不Q和c装载等问题?/p>

诊断U程d问题

U程d是我们在 java 多线E编E中l常遇到的问题。由于对后端有限资源的争用以及过度同步等问题Q经怼发现 Java dump 中某个资源(锁对象)下有太多的线E处于等待状态,q时候我们通常需要从以下三个斚w去诊断这个问题:

  • q个锁存在的目的是什么?有没有可能去掉这个锁或者羃这个锁保护的范_从而减线E等待问题发生的几率?
  • 有哪些线E需要用到这个锁Q有没有可能改用其它更好的替代方案?
  • 当前哪个U程正在持有q个锁,持有的时间是多长Q有没有可能~短持有的时间?

比线E阻塞更严重的是死锁问题Q当两个以上的线E互相等待对方的锁,从而Ş成一个环的时候,׃发生死锁。关于如何?Java dump 诊断死锁的问题,请参??WebSphere Application Server V6.1 应用E序中跟t死?/a> 一文,该文Ҏ问题做了较ؓ详细的介l?/p>

诊断 JVM Crash 问题

JVM Crash 是我们所到的最手的问题之一Q它Ҏ个系l的影响是致命的Qƈ且L让h防不胜防。导?JVM 崩溃的原因有很多Q通常都是一些底层的错误。比?JVM 本n?bugQ错误的 JNI 调用Q第三方原生模块Q比如数据库驱动E序Q中?bug {。JVM崩溃的原因复杂,q且大多都难以重玎ͼ所以诊断v来有一定的隑ֺ?/p>

一般来_JVM 崩溃的时候,pȝ一般会自动产生一?Java dump 文gQJVM 默认的设|参数就会触发)。这?Java dump 会帮我们记录?JVM 崩溃的原因,相关的信息会记录?TITLE 信息块,GPINFO 信息块和 THREADS 信息块中?/p>

  • TITLE 信息块:用于认问题产生的原因,x否是׃一些底层错误而导?JVM Crash?
  • GPINFO 信息块:用于查看问题的详l信息和问题定位?
  • THREADS信息块:用于了解问题U程的运行情c?

下面我们通过一个具体的例子来介l?JVM Crash 问题的诊断方法。TestJni 是一个简单的 Java 应用Q它通过 JNI 调用本地代码 CallJin.dll 中的 doSomeThing() 函数?/p>
清单 3. ?TestJni cM调用 CallJin.dll 中的函数
package test;
            public class TestJin {
            /**
            * @param args
            */
            public static void main(String[] args) {
            // TODO Auto-generated method stub
            TestJin testObj = new TestJin();
            testObj.work();
            }
            public void work() {
            CallJni.doSomeThing();
            }
            }
            package test;
            public class CallJni {
            static
            {
            System.loadLibrary("CallJni");
            System.out.println("Dll Loaded");
            }
            public native static void doSomeThing();
            }
            

CallJin.dll ?C++ ~写得本地库Q其源代码如清单 3 所C:


清单 4. CallJni.dll ?C++ 实现代码
#include <com_test_CallJni.h>
            /*
            * Class:     com_test_CallJni
            * Method:    doSomeThing
            */
            JNIEXPORT void JNICALL Java_test_CallJni_doSomeThing
            (JNIEnv *, jclass){
            int *i;
            *i = 100;
            }
            

在这D?C++ 代码中,整Ş指针 I q没有分配空间就被赋了|q是一个非怸重的错误。当?java 应用E序员ƈ不知道这一点,q且?java 应用E序中调用了 doSomeThingQ) q个 JNI 函数。结果导?JVM 发生了崩溃?/p>

在这D?C++ 代码中,整Ş指针 I q没有分配空间就被赋了|q是一个非怸重的错误。当?java 应用E序员ƈ不知道这一点,q且?java 应用E序中调用了 doSomeThingQ) q个 JNI 函数。结果导?JVM 发生了崩溃?/p>

下面?JVM 崩溃Ӟpȝ为我们生成的 Java dump 文g的片断?/p>
清单5. Java dump 文g片断
NULL           ----------------------------------------------
            0SECTION       TITLE subcomponent dump routine
            NULL           ===============================
            1TISIGINFO     Dump Event "gpf" (00002000) received
            1TIDATETIME    Date:                 2008/11/12 at 20:45:24
            1TIFILENAME Javacore filename:
            C:\eclipse\workspace\Serviceability\TestApps\SampleLeak\TestJin\
            javacore.20081112.204522.5656.txt
            

?TITLE 信息块中我们可以看到Q这?java 是由一?"gpf" 事g触发的,GPF ?General Protection Fault 的羃写,表明应用E序发生了一般性保护错误,q种错误常常D JVM H然崩溃?/p>

除了 "gpf" 之外QJava dump q可能由如下事g触发Q清?6Q?/p>
清单 6. 常见 Java dump 触发事g
user       SIGQUIT signal (Ctrl-Brk on Windows, Ctrl-\ on Linux, Ctrl-V on z/OS)
            abort      a controlled crash, as triggered by the abort() system call
            vmstart    the VM has finished initialization
            vmstop     the VM is about to shutdown
            load       a new class has been loaded
            unload     a classloader has been unloaded
            throw      a Java exception has been thrown
            catch      a Java exception has been caught
            uncaught   a Java exception was not handled by the application
            thrstart    a new thread has started
            thrstop    an old thread has stopped
            blocked    a thread is blocked entering a monitor
            fullgc      garbage collection has started
            

?TITLE 信息块,我们只能初步了解问题产生的原因,如果要进一步了解问题的详细信息Q还要查?GPINFO 信息块(清单 7Q:


清单7. GPINFO 信息?/strong>
NULL           ----------------------------------------------
            0SECTION       GPINFO subcomponent dump routine
            NULL           ================================
            2XHOSLEVEL     OS Level         : Windows XP 5.1 build 2600 Service Pack 3
            2XHCPUS        Processors -
            3XHCPUARCH       Architecture   : x86
            3XHNUMCPUS       How Many       : 2
            NULL
            1XHEXCPCODE    J9Generic_Signal_Number: 00000004
            1XHEXCPCODE    ExceptionCode: C0000005
            1XHEXCPCODE    ExceptionAddress: 412E136E
            1XHEXCPCODE    ContextFlags: 0001003F
            1XHEXCPCODE    Handler1: 7EFB04E0
            1XHEXCPCODE    Handler2: 7F057A80
            1XHEXCPCODE    InaccessibleAddress: CCCCCCCC
            NULL
            1XHEXCPMODULE  Module:
            C:\eclipse\workspace\Serviceability\TestApps\SampleLeak\TestJin\CallJni.dll
            1XHEXCPMODULE  Module_base_address: 412D0000
            1XHEXCPMODULE  Offset_in_DLL: 0001136E
            NULL
            1XHFLAGS       VM flags:00040000
            NULL
            

GPINFO 信息块中我们可以扑ֈ问题的异总码,ExceptionCode: C0000005 代表内存讉K错误或者非法的内存操作?code>Module: C:\eclipse\workspace\Serviceability\TestApps\TestJin\CallJni.dll 指明了发生问题的原生模块?CallJni.dll q个动态连接库是我们自q JNI 代码Q因此很Ҏ发现问题的所在。在一个复杂的 java q行环境下,很多时候异常是在第三方的代码库中生的Q我们没有办法查看源代码中的问题Q这时候只能通过文g名中的一些关键字来推问题发生的位置Q这些关键字包括Q清?8Q:


清单 8. 需要注意的关键?/strong>
GC = garbage collection/collector (how Java frees memory)
            JIT = just-in-time compiler, a feature of JVM
            JDBC = Java feature for database access
            ORB = object request broker, lower layer of app server
            JMS = java messaging service, feature of web server or add-on
            

例如QModule: C:\JDK\IBM\java1.5.0\jre\bin\j9jit23.dll

说明 JIT 模块发生问题Q用户可以?JITC_COMPILEOPT 变量?SKIP 选项用对当前方法进?JIT ~译Q然后再对系l的q行情况q行q一步的跟踪?/p>

JITC_COMPILEOPT=SKIP{failingPackage/failingClass}{failingMethod}

除此之外Q查?THREADS 信息块中当前U程的执行堆栈也有助于我们对问题的诊断。从清单 9 我们可以看到 main U程在执?CallJni.doSomeThing Ҏ数的q程中发生了问题Q据此我们可以返回源代码中查扄应的ҎQ进而确定问题的Ҏ?/p>
清单 9. Threads 信息?/strong>
NULL           ----------------------------------------------------
            0SECTION       THREADS subcomponent dump routine
            NULL           =================================
            NULL
            1XMCURTHDINFO  Current Thread Details
            NULL           ----------------------
            3XMTHREADINFO  "main" (TID:0x408C7C00, sys_thread_t:0x00366278, state:R,
            native ID:0x000016CC) prio=5
            4XESTACKTRACE          at test/CallJni.doSomeThing(Native Method)
            4XESTACKTRACE          at test/TestJin.work(TestJin.java:16)
            4XESTACKTRACE          at test/TestJin.main(TestJin.java:11)
            NULL
            

诊断 CPU 利用率过高问?/span>

CPU 使用率过高可能是׃某些U程陷入了死循环或者执行了不适当的操作引LQ其诊断Ҏ是这些线E找出来Q修正问题或者进行代码优化。由?Java Dump 中ƈ没有包含各线E的资源使用情况Q因此我们需要结合其他的操作pȝ命o/工具Qprstat、top、pslist {等Q,?CPU 使用率较高的U程映射?Java Dump 中,q分析这些线E的状态以及可能发生的问题?/p>

从下面这D?PSList 的输出结果中我们可以看到 jvm 内部每个U程消耗的ȝ“用户旉”?#8220;内核旉”Q比较几?PSList 的输出结果,我们p从中扑և那些 CPU 使用旉显著增加的线E,再将q些U程?TID 映射到Java Dump中,q而查看问题线E的详细信息?/p>
清单 10. PSList 的输出结?/strong>
pslist -d <Java PID>
            Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
            2908   8      2025   Wait:Executive  0:00:00.359   0:00:01.312    1:48:08.046
            4344  15       157     Wait:UserReq  0:00:00.218   0:00:00.015    1:48:07.921
            4836  15    415456     Wait:UserReq  0:00:00.000   0:00:00.000    1:48:07.921
            2496   8         1     Wait:UserReq  0:00:00.000   0:00:00.000    1:48:07.796
            4648   9         1     Wait:UserReq  0:00:00.000   0:00:00.000    1:48:07.796
            3116   9         7     Wait:UserReq  0:00:00.000   0:00:00.000    1:48:07.796
            5268   8       189     Wait:UserReq  0:00:00.015   0:00:00.000    1:48:07.796
            5220   7   6991523          Running  1:47:42.031   0:00:01.218    1:48:05.593
            3932   9         2     Wait:UserReq  0:00:00.000   0:00:00.000    1:48:05.125
            

与线E死锁问题不同,在分?CPU 利用率过高的问题Ӟ我们不需要关心那些处于等待状态的U程Q因为线E处于等待状态不需要消?CPU 资源。我们关注的重点应该?THREADS 信息块中那些正在q行Qstate:R 状态)的线E。很多时候ؓ了分析线E状态的一些变化,我们需要对比多?Java Dump 文gQ看哪些U程状态发生了变化Q哪些一直在执行相同的函敎ͼ从而找出那些可疑的问题U程?/p>

诊断堆内存不问?/span>

除了 Thread 相关的信息外QJava Dump q包?Memory ?GC {方面的信息Q虽然这些信息不?Heap Dump ?VerboseGC 那么详细Q但对于一些比较简单的问题定位q是很有帮助的。例如,下面?Java dump 清单中,Dump Event "uncaught" (00008000) Detail "java/lang/OutOfMemoryError" received 告诉我们问题是由于内存溢出引LQƈ且从 MEMINFO 信息块中可以扑ֈ当前堆中的空间用情况, 1ffa0 的剩余空间说明系l的可用堆内存已l严重不了Q需要我们扩大堆内存的大或者修改应用程序其占用更的内存?/p>
清单 11. MEMINFO 信息?/strong>
NULL         ----------------------------------------------------
            0SECTION     TITLE subcomponent dump routine
            NULL         ===============================
            1TISIGINFO  Dump Event "uncaught" (00008000) Detail "java/lang/OutOfMemoryError" received
            1TIDATETIME  Date:                 2008/04/20 at 19:13:50
            1TIFILENAME  Javacore filename:
            c:\Serviceability\AppServer\profiles\AppSrv01\javacore.20080420.185326.948.txt
            NULL           ----------------------------------------------------
            0SECTION       MEMINFO subcomponent dump routine
            NULL           =================================
            1STHEAPFREE    Bytes of Heap Space Free: 1ffa0
            1STHEAPALLOC   Bytes of Heap Space Allocated: 40000000
            

cd载问?/span>

常见的类加蝲问题包括Q?ClassNotFoundExceptionQJar 包冲H以及由c装入引发的其他问题Q例?jdk 1.4 中的内存片问题Q?Java Dump 文g?Classes 信息块的格式如清单中C,q些信息可以帮我们确定以下问题:

  • 当前pȝ中有哪些 Class 文g被加载进来?
  • 认某个 Class 是否被正的 ClassLoader 所加蝲Q即不同?ClassLoader 之间是否?Jar 包冲H?
  • 已经加蝲?Class 的个数。在IBM Jre1.4中,我们可以参考系l中 Class 的个数来讄 KCluster 的大?

清单 12. CLASSES 信息?/strong>
NULL     ---------------------------------------------------------
            0SECTION       CLASSES subcomponent dump routine
            NULL           =================================
            1CLTEXTCLLOS       Classloader summaries
            1CLTEXTCLLSS           12345678:
            1=primordial,2=extension,3=shareable,4=middleware,5=system,
            6=trusted,7=application,8=delegating
            2CLTEXTCLLOADER        p---st-- Loader *System*(0x008DA0B0)
            3CLNMBRLOADEDLIB        Number of loaded libraries 3
            3CLNMBRLOADEDCL            Number of loaded classes 347
            2CLTEXTCLLOADER        -x--st-- Loader sun/misc/Launcher$ExtClassLoader(0x008E5E38),
            Parent *none*(0x00000000)
            3CLNMBRLOADEDLIB        Number of loaded libraries 0
            3CLNMBRLOADEDCL            Number of loaded classes 0
            2CLTEXTCLLOADER        -----ta- Loader sun/misc/Launcher$AppClassLoader(0x008EF3E0),
            Parentsun/misc/Launcher$ExtClassLoader(0x008E5E38)
            3CLNMBRLOADEDLIB        Number of loaded libraries 0
            3CLNMBRLOADEDCL            Number of loaded classes 2
            1CLTEXTCLLIB       ClassLoader loaded libraries
            2CLTEXTCLLIB          Loader *System*(0x008DA0B0)
            3CLTEXTLIB               C:\JDK\IBM\java1.5.0\jre\bin\java
            3CLTEXTLIB               C:\JDK\IBM\java1.5.0\jre\bin\jclscar_23
            3CLTEXTLIB               C:\JDK\IBM\java1.5.0\jre\bin\zip
            1CLTEXTCLLOD       ClassLoader loaded classes
            2CLTEXTCLLOAD          Loader *System*(0x008DA0B0)
            3CLTEXTCLASS               java/io/ByteArrayOutputStream(0x40D40098)
            3CLTEXTCLASS               sun/nio/ByteBuffered(0x40D40330)
            3CLTEXTCLASS               java/lang/ref/PhantomReference(0x40DB9360)
            3CLTEXTCLASS               sun/misc/Cleaner(0x40DB94A8)
            





回页?/strong>


常见问题

关于 Java dumpQ下面是一些有可能让你产生困惑的问题:

Z么发?JVM Crash ӞJVM 没有自动生成 Java dump 文gQ?/em>

{:q种情况大多与系l的环境变量或?JVM 启动参数的设|有养I比如讄?DISABLE_JAVADUMP=trueQIBM_NOSIGHANDLER=true {等Q因此可以首先检查系l设|和 JVM 启动参数。当然也不排除因Z些不定因素D JVM 无法产生 Java dumpQ虽然这U可能性比较小?

JVM 在生?Java dump 的同时也生成?Heap dumpQ它们之间有没有什么联p?

{:有,但是关系不大。因?java dump 主要反映的是U程的运行状态,?Heap dump 则主要反映对象之间的引用关系Q所以两者之间没有太大的联系。有时候我们可以通过锁对象或?Class 对象的v始地址扑ֈ它在 Heap dump 中的位置Q但大多数时候这Ҏ障诊断ƈ没有多大意义?/p>

Z么有?java dump 的锁没有 owner?

{:q不是所有的锁都被其它线E持有,有些锁是用作d{待的,比如 sleep() Qwait()Qjoin() {,q些锁ƈ没有被其它线E占用,被它d的线E只是在{待通知Q即 “Waiting to be notified”。从U程状态上看,q些锁一般都处于 “CW” 状态?/p>

Java Dump 中的很多U程处于 state:CW ?state:B 状态,它们之间有何区别Q?/em>

{:两者都处于{待状态。不同是Q?/p>

CW - Condition Wait – 条g{待. q种{待一般是U程d{待或者正在进行某U?IO 操作Q而ƈ非等待其它线E释放资源。比?sleep() Qwait()Qjoin() {方法的调用?/p>

B – Blocked – U程被阻塞,与条件等待不同,U程被阻塞一般不是线E主动进行的Q而是׃当前U程需要的资源正在被其他线E占用,因此不得不等待资源释放以后才能l执行,例如 synchronized 代码块?/p>

Z么我?PsList 里看到的U程无法映射?Java dump 中?

{:׃很多操作pȝ工具和命令输出的U程?TID 都是十进制的Q映到 Java dump 旉先要其转换为十六进制数字,然后再到 Java dump 中查扑֯应的 native ID。Java dump 中每个线E都有两个ID, 一个是 java U程的TID, 另一个是对应操作pȝU程?native ID?/p>

阅读 Websphere Appliaction Server 产生?Java dump 文g有没有什么特别的技巧?

{:对于 WAS 应用E序来说Q线E信息往往要比一般的应用E序复杂的多。记住一些常见的 ThreadName 可以帮助我们更好的理解应用程序的q行状态,例如Q?/p>
U程? U程信息
Web Container: # WAS web container *
Alarm Thread # handles timer processing
Session.Transports.Threads:### servlet threads for processing HTTP requests
ORB.thread.pool:### ORB thread (ORB data)
P=437206:O=0:
StandardRT=19027:LocalPort=9001:RemoteHost=hostname.ibm.com:RemoteP
an ORB thread for receiving an EJB request or other ORB request
Thread-## JVM thread (default name)





回页?/strong>


l束?/span>

本文比较全面的介l了 Java dump ?JVM 故障诊断q程中的作用。正像你所看到的,Java dump 文g主要帮我们解决与U程相关的各U问题,但同时它qؓ我们提供了很多其它有用的信息Q比?JVM CrashQ,在某些情况下Q这些信息对于我们至关重要,所以充分的利用 Java dump 文g可以帮我们更快的扑ֈ解决问题的方向?/p>

参考资?

学习

获得产品和技?/strong>



]]>丁磊加盟杭州大学生创业联盟赠八字言http://www.aygfsteel.com/yuweixia2008/archive/2009/12/22/306901.html?/dc:creator>?/author>Tue, 22 Dec 2009 06:02:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/12/22/306901.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/306901.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/12/22/306901.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/306901.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/306901.html中新|杭?(记?汪恩?实习?沈兰)长江后浪推前,江山代有才h出。面对台下有志创业的“后浪”们,|易CEO丁磊今天?#8220;杭州大学生创业联盟成立A?#8221;?#8220;?#8221;?#8220;自信、坚持、认真、包?#8221;八字言?/p>

特别NQ创业的路上遍布着挫折

“回想我的创业之\Q我当年很幸q?#8221;作ؓ杭州大学生创业联盟特别顾问,丁磊很庆q在q轻的时候可以做自己喜欢的事情?#8220;创业是一个很热门的词。但是,我要提醒大家一件事Q创业的路上遍布着挫折?#8221;

对于自己抛出的八字箴aQ丁ؓ创业者作了详l的解释?#8220;首先Q你必须要自信。如果对自己做的事情都没有信心,那么你将很难获得成功。有自信你不一定能获得成功Q但没有自信你一定不会成功。其ơ,你必要学会坚持。我已经说过Q创业的路上会有很多挫折Q每一个成功的人都要经历挫折的考验。这个过E中需要坚持。另外,你还需要认真。也是_你要学会t踏实实做事情。最后,你还要学会包宏V认真是对自q要求Q包容则是对别h的。包容就是要我们能够宽恕别h的错误?#8221;

丁磊在最后强调了一点:“大学生创业要无时无刻保持一颗谦虚求知的心?#8221;

创业导师Q时间是属于q轻人的

创业导师代表田宁表示Q时间是属于q轻人的?#8220;60后可以分到房子,70后可以分到工作,那么我们q些80后和90后呢Q我们要靠自q双手创造一切。很多IT业的巨头Q你可以L他们的发家史Q很多都是大学生?#8221;

田宁Uͼq一代h是幸的?#8220;我们失去很多的同Ӟ也获得了很多。当60后和70后小时候只能玩泥土的时候,我们时候就可以玩电脑了?#8221;

“对于大学生创业,他们需要得到前辈们的指对{?#8221;田宁表示Q创业导师应该把自己痛苦的创业经历告诉他们?/p>

轮g席:创业体需?#8220;转型升”

“16q前Q我来到杭州开始创业。那时候的情况跟今天比较,真是今非昔比?#8221;杭州大学生创业联盟轮g席林东表C,那时候的创业L体q不是大学生?#8220;然而,他们依然撑v了现在的l济发展?#8221;

林东Uͼ现在需要的不仅是技术的转型升Q还需要创业群体的转型升?#8220;在十q以后,现在一些黑心商人的形象很看CQ更多的?a >李开?/a>q样的商人?#8221;

“创业充满了风险?#8221;林东表示Q创业导师的成长M开C会的支持,大家有义务和责Q帮助“朋友们”创业?#8220;有我们大家一L努力Q我怿一定会取得更大的辉煌?#8221;

杭州市长Q大学生创业应永不言?/strong>

“大学生创业应该永不言败!”杭州市长蔡奇表示Q创业带动就业,应该形成杭州的一面旗帜?#8220;杭州应该坚持人才强市战略Q抓住大学生创业为杭州积蓄力量,为天堂硅L蓄箋力量。千万不要小看大学生今天创业的弱和落魄Q通过他们能看到杭州的明天?#8221;

 

记者了解到Q杭州大学生创业联盟是根据杭州市委市政府提出“以创业带动就?#8221;的工作部|Ԍ成立服务大学生创业工作社团组l。创新工事长兼CEO李开复?a >阉K巴巴集团董事局d兼CEO马云、网易CEO丁磊、赛伯乐(中国)投资董事长朱敏加盟杭州大学生创业联盟ZQ特别N?/p>

蔡奇Uͼ杭州大学生创业联盟有三个特点?#8220;首先Q它是创业大学生集聚的组l。所有愿意创业的大学生,都可以从那里得到帮助。其ơ,它是整合资源的创业中心。特别值得一提的Q是创业投资基金也加入了q个l织里。最后,大学生创业联盟是个非政府机构。只靠政府是不够的,我们需要更多非政府l织参与Q来做政府做不到的事情?#8221;



]]>
蜗居的感?/title><link>http://www.aygfsteel.com/yuweixia2008/archive/2009/11/27/303886.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Fri, 27 Nov 2009 05:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/yuweixia2008/archive/2009/11/27/303886.html</guid><wfw:comment>http://www.aygfsteel.com/yuweixia2008/comments/303886.html</wfw:comment><comments>http://www.aygfsteel.com/yuweixia2008/archive/2009/11/27/303886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yuweixia2008/comments/commentRss/303886.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yuweixia2008/services/trackbacks/303886.html</trackback:ping><description><![CDATA[刚看蜗居W一集我忍不住哭了Qvq_诉v?#8220;现在是工作挑Z是h挑工作。。。。?#8221;惌v了自己当时找工作Q好像也是一LQ但是知道自p录用了心理的Ƣ喜。。。。。我觉得现在80?90后的人和他们的家镉K改看看,看看^复旦毕业Q结果呢。。。前两天有个同学l我打电话说她和她的男友在北京过的非常的难,告诉我他们ؓ了生zȝU种争吵? <img src ="http://www.aygfsteel.com/yuweixia2008/aggbug/303886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yuweixia2008/" target="_blank">?/a> 2009-11-27 13:33 <a href="http://www.aygfsteel.com/yuweixia2008/archive/2009/11/27/303886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更改aspx面~码格式http://www.aygfsteel.com/yuweixia2008/archive/2009/08/05/289951.html?/dc:creator>?/author>Wed, 05 Aug 2009 06:49:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/08/05/289951.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/289951.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/08/05/289951.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/289951.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/289951.html

如何更改Web.Config里默认的~码讄及其对于单个aspx面的编码格式的讄

把全球化讄Ҏq样会省下很多事Q?/p>

<globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/>

q样一来,使用Request.QueryString[""]的时候就不用手动索编码ƈ解码了!省事啊!

在Web.Config中设|单个aspx面的编码格?

   <location path="Member/MyShortMessage.aspx">
     <system.web>
       <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
     </system.web>
   </location>



]]>
中国电子商务现状及未来的20大猜?/title><link>http://www.aygfsteel.com/yuweixia2008/archive/2009/07/26/288446.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Sun, 26 Jul 2009 08:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/yuweixia2008/archive/2009/07/26/288446.html</guid><wfw:comment>http://www.aygfsteel.com/yuweixia2008/comments/288446.html</wfw:comment><comments>http://www.aygfsteel.com/yuweixia2008/archive/2009/07/26/288446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yuweixia2008/comments/commentRss/288446.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yuweixia2008/services/trackbacks/288446.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="postTitle"><a ></a> </div> <div id="wmqeeuq" class="postText"> <div>  <p _extended="true">本内Ҏ自于老邢q?q来的电子商务从业经验、派代网的运营体会及与众多电子商务相关h士交综合整理而得。其中,q?q重Ҏ了B2C、C2C和B2BQ同Ӟq有C֌的徏设、运营和UI/UE{?/p> <p _extended="true">本内容纯_Ҏ个h观点Q必然有偏颇之处Q看官仁者见仁,q望多多指正?/p> <p _extended="true"> </p> <p _extended="true"><strong _extended="true">W一部分 B2C的本?/strong></p> <div id="wmqeeuq" class="O" _extended="true" v:shape="_x0000_s1026"> <div _extended="true"><span lang="EN-US" _extended="true">1</span><span _extended="true">?/span><span _extended="true"> B2C</span><span _extended="true">本质上就是零售业Q所以,要做大,现金是命根子?</span></div> <div _extended="true"><span _extended="true">2、规模是零售企业撬动上下游资源的核心法宝之一QB2C也不例外Q?/span></div> <div _extended="true"><span _extended="true">3?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">要上规模Q就必须要标准化理Q如把hq的事情部分或全部交l机器(即程序)d?</span></div> <div _extended="true"><span _extended="true">4、网上零售和传统零售的核心区别:售前更近</span><span lang="EN-US" _extended="true">80</span><span _extended="true">cI即用h购物之前Q能知道用户的购物偏好,q个需要很强的技术作为支撑)Q?/span></div> <div _extended="true"> </div> <div _extended="true"><span _extended="true"><strong _extended="true">W二部分 用户体验</strong></span></div> <div _extended="true"><span _extended="true">5、眼前,中国?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">普遍不够重视|站?/span><span lang="EN-US" _extended="true">UI</span><span _extended="true">?/span><span lang="EN-US" _extended="true">UE</span><span _extended="true">{,光要性理同于市的货架及商品摆设{; </span></div> <div _extended="true"><span _extended="true">6、全备库是提高用戯物体验的核心办法之一Q即别指望在中国靠虚库也能做大(q个是阶D|问题,初期虚库或部分虚库是很务实和需要的的)Q?</span></div> <div _extended="true"><span _extended="true">7、物已是中?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">高速发展的金箍圈(其背后还q带着资金)Q也是媄响购物体验的障碍之一Q?</span></div> <div _extended="true"> </div> <div _extended="true"><span _extended="true"><strong _extended="true">W三部分 市场和运?/strong></span></div> <div _extended="true"><span _extended="true"><span _extended="true">8、中?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">和美?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">最大的区别Q美国是走在高速\上,而中国是土\</span><span lang="EN-US" _extended="true">+</span><span _extended="true">高速\Q?/span></span></div> <div _extended="true"><span _extended="true">9、中国不是一个市场,是由</span><span lang="EN-US" _extended="true">N</span><span _extended="true">多个消费观念差异巨大的市场组成; </span></div> <div _extended="true"><span _extended="true">10、网购h是个崭新的消费体Q切勿用其他传统的消费观念去套,q好比用</span><span _extended="true">“</span><span lang="EN-US" _extended="true">70</span><span lang="EN-US" _extended="true">”</span><span _extended="true">看不?/span><span _extended="true">“</span><span lang="EN-US" _extended="true">90</span><span lang="EN-US" _extended="true">”</span><span _extended="true">一P</span></div> <div _extended="true"><span _extended="true">11、中?span lang="EN-US" _extended="true">B2C</span><span _extended="true">仍然处于</span><span _extended="true">“</span><span _extended="true">推广</span><span _extended="true">”</span><span _extended="true">q代Q远谈不上营销及品牌管理;</span></span></div> <div _extended="true"><span _extended="true"><font face="Tahoma" _extended="true">12</font>、在中国电商界,低h是个杀手锏Q也是个双刃剑,但切勿忽略消费者对好h格无好服务的疲倦; </span></div> <div _extended="true"><span _extended="true"><font face="Tahoma" _extended="true">13</font>、仅?/span><span _extended="true">“</span><span _extended="true">电子</span><span _extended="true">”</span><span _extended="true">Q或仅重</span><span _extended="true">“</span><span _extended="true">商务</span><span _extended="true">”</span><span _extended="true">?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">公司要做大的概率不大Q但是,可以成ؓ一个养家糊口的生意Q?</span></div> <div _extended="true"><span lang="EN-US" _extended="true">14</span><span _extended="true">、意识和体制是传l渠道进入电子商务最大的障碍Q其背后是勇气和利益分割{;</span></div> <div _extended="true"> </div> <div _extended="true"><span _extended="true"><strong _extended="true">W四部分 未来猜测</strong></span></div> <div _extended="true"><span lang="EN-US" _extended="true">15</span><span _extended="true">、淘宝成׃中国的网购,也将成就中国?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">Q但未必能成p己; </span></div> <div _extended="true"><span lang="EN-US" _extended="true">16</span><span _extended="true">、中国出?/span><span _extended="true">“</span><span lang="EN-US" _extended="true">amazon</span><span lang="EN-US" _extended="true">”</span><span _extended="true">的概率近乎ؓӞ要有Q所q旉和金钱将?/span><span lang="EN-US" _extended="true">amazon</span><span _extended="true">的倍Q?nbsp;</span><span _extended="true"> </span></div> <div _extended="true"><span lang="EN-US" _extended="true">17</span><span _extended="true">、中?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">的机会,属于那些重视且具有营销、技术和理能力的企业; </span></div> <div _extended="true"><span lang="EN-US" _extended="true">18</span><span _extended="true">、中?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">已经上了高速发展的快R道,且这U高速度维持约</span><span lang="EN-US" _extended="true">5</span><span _extended="true">q左叻I </span></div> <div _extended="true"><span lang="EN-US" _extended="true">19</span><span _extended="true">?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">已逐步呈现出类gl零售的业态,有全国性的大连锁、区域连锁和区便利店; </span></div> <div _extended="true"><span lang="EN-US" _extended="true">20</span><span _extended="true">、中国电子商务未来的LQ不属于</span><span lang="EN-US" _extended="true">B2B</span><span _extended="true">Q也不属?/span><span lang="EN-US" _extended="true">C2C</span><span _extended="true">Q而必然属?/span><span lang="EN-US" _extended="true">B2C</span><span _extended="true">Q?/span></div> </div> </div> </div> <img src ="http://www.aygfsteel.com/yuweixia2008/aggbug/288446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yuweixia2008/" target="_blank">?/a> 2009-07-26 16:08 <a href="http://www.aygfsteel.com/yuweixia2008/archive/2009/07/26/288446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FlowLayout的另一U布局Ҏhttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287889.html?/dc:creator>?/author>Wed, 22 Jul 2009 09:38:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287889.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/287889.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287889.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/287889.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/287889.html

]]>
GridBagConstraintshttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287841.html?/dc:creator>?/author>Wed, 22 Jul 2009 05:45:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287841.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/287841.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/22/287841.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/287841.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/287841.htmlGridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)
lg的位|?Wgridx?Wgridy?此组件占gridwidth行单元格Q占gridheight列单元格QweightxQweighty剩余单元格的 anchor当组件小于其昄区域时用此字段

]]>
java讉Kpȝ托盘http://www.aygfsteel.com/yuweixia2008/archive/2009/07/07/285869.html?/dc:creator>?/author>Tue, 07 Jul 2009 14:01:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/07/285869.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/285869.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/07/07/285869.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/285869.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/285869.html 每个java应用E序都只有一个单一的SystemTray实例.所?一个程序不能创建只属于它自qSystemTray实例;而它必须用getSystemTray()Ҏ来取得已有的那个.
SystemTray包含有一个或多个TrayIcon.通过SystemTray的方法add(java.awt.TrayIcon)Ҏ可以d一个TrayIcon到托?通过remove(java.awt.TrayIcon)一个TrayIcon从托盘移?注意最q添加的试代码指明,如操作系l或者Java runtime不添加TrayIcon到托?add()Ҏ可能会抛出AWTException.例如,在X-Windows?如果托盘不存?它将抛出AWTException
下面的代码演CZ如果讉Kpȝ托盘:
final TrayIcon trayIcon;

if (SystemTray.isSupported()) {

    SystemTray tray 
= SystemTray.getSystemTray();
    Image image 
= Toolkit.getDefaultToolkit().getImage("tray.gif");

    MouseListener mouseListener 
= new MouseListener() {             
        
public void mouseClicked(MouseEvent e) {
            System.out.println(
"Tray Icon - Mouse clicked!");                 
        }
        
public void mouseEntered(MouseEvent e) {
            System.out.println(
"Tray Icon - Mouse entered!");                 
        }
        
public void mouseExited(MouseEvent e) {
            System.out.println(
"Tray Icon - Mouse exited!");                 
        }
        
public void mousePressed(MouseEvent e) {
            System.out.println(
"Tray Icon - Mouse pressed!");                 
        }
        
public void mouseReleased(MouseEvent e) {
            System.out.println(
"Tray Icon - Mouse released!");                 
        }
    };

    ActionListener exitListener 
= new ActionListener() {
        
public void actionPerformed(ActionEvent e) {
            System.out.println(
"Exiting...");
            System.exit(
0);
        }
    };    
    
    PopupMenu popup 
= new PopupMenu();
    MenuItem defaultItem 
= new MenuItem("Exit");
    defaultItem.addActionListener(exitListener);
    popup.add(defaultItem);

    trayIcon 
= new TrayIcon(image, "Tray Demo", popup);

    ActionListener actionListener 
= new ActionListener() {
        
public void actionPerformed(ActionEvent e) {
            trayIcon.displayMessage(
"Action Event"
                
"An Action Event Has Been Peformed!",
                TrayIcon.MessageType.INFO);
        }
    }; 
         
    trayIcon.setImageAutoSize(
true);
    trayIcon.addActionListener(actionListener);
    trayIcon.addMouseListener(mouseListener);

    
try {
        tray.add(trayIcon);
    } 
catch (AWTException e) {
        System.err.println(
"TrayIcon could not be added.");
    }

else {

    
//  不支持系l托?/span>

}
实现Tray Icon
pȝ托盘允许一个或多个java.awt.TrayIcond到它或从它移?一个TrayIcon对象代表着一个可以添加到pȝ托盘的托盘图?但是,TrayIcon的功能不止是一个显C在托盘里的图标.它还可以有工hC?tooltip),有一个AWT的弹?q有一pd相关的侦听器
 一个TrayIcon会生各U各LMouseEvent(pressed,released,和clicked).可以对它d相关的侦听器L收这些事件的通知.但是要注?在MouseEvent从TrayIcon接收到的坐标是相对于屏幕而不是TrayIcon它自q.TrayIcon它自己处理这些事?例如,默认情况?当右击TrayIcon?和它相关的弹单就会显C?当鼠标在它上面停留时,工具提示׃出现.TrayIcon也可以生ActionEvent.在一些^C,ActionEvent产生于用户通过鼠标或键盘选择该TrayIcon?一个实现良好的TrayIcon应该用不同的ҎLC弹单和选择托盘图标.
注意,Ҏ最新的javadocs,当一个鼠标事件被发送到它的侦听器时,它的component属?通过父类ComponentEvent.getComponent()获取)会被设|ؓnull.而source属?通过EventObject.getSource()获取)被讄TrayIcon
有用的特?br /> 用setImage()Ҏ可以在以后更新TrayIcon的图?
     trayIcon.setImage(updatedImage);
同样你可以更新工hC?
     trayIcon.setTooltip("I'm busy. Go away.");
TrayIcon有一个非常有用的自动调整大小的属?q个属性决定是否自动调整图片的大小以适应托盘的大?默认q个属性是false?如果囄的大不适合托盘的大?囄仍会以它原来的大绘制到托盘?也就是说,如果囄比分配的托盘I间?囄被剪切.另一斚w,如果自动调整大小被设为true,那么囄׾~以适应托盘图标的大?br />      trayIcon.setImageAutoSize(true);
最?如果你想偶尔用工hC通知用户E序的一些变?你可以用displayMessage()Ҏ.q个Ҏ弹出一个在托盘图标上弹Z个消?q个消息会在一D|间之?或者用户单d之后消失.单击它的时?Ҏpȝ的情?会生ActionEvent
     trayIcon.displayMessage("Finished downloading",
           "Your Java application has finished downloading",
           TrayIcon.MessageType.INFO);
W一个参数是标题.它通常在弹出消息里会以_体昄.W二个参数是要显C的消息.最?最后一个参数是TrayIcon的一个枚丄型TrayIcon.Message,有四个选择.q些选项可以用作军_在显C消息时,是否应执行某些图形操作或其他pȝ动作.四个选择如下:
TrayIcon.MessageType.ERROR   An error message
TrayIcon.MessageType.INFO   An information message
TrayIcon.MessageType.NONE   A simple message
TrayIcon.MessageType.WARNING   A warning message
===================================================
下面是我自己写的例子
 
package blog.swing;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.PopupMenu;
import java.awt.MenuItem;
import java.awt.Image;
import java.awt.AWTException;
import java.awt.Toolkit;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.text.SimpleDateFormat;
import java.util.Calendar;

class SystemTrayDemo 
{
    SystemTray systemTray;
    TrayIcon trayIcon;
    Image trayImage;
    String trayTip;
    PopupMenu trayPopupMenu;
    MenuItem trayMenuItem;
    ActionListener trayActionListener;
    ActionListener menuActionListener;
    MouseListener trayMouseListener;
    Thread displayTime;
    
public SystemTrayDemo() {
        
if( SystemTray.isSupported() ){
            trayMouseListener 
= new MouseListener() {             
                
public void mouseClicked(MouseEvent e) {
                    System.out.println(
"Tray Icon - Mouse clicked!");                 
                }
                
public void mouseEntered(MouseEvent e) {
                    System.out.println(
"Tray Icon - Mouse entered!");                 
                }
                
public void mouseExited(MouseEvent e) {
                    System.out.println(
"Tray Icon - Mouse exited!");                 
                }
                
public void mousePressed(MouseEvent e) {
                    System.out.println(
"Tray Icon - Mouse pressed!");                 
                }
                
public void mouseReleased(MouseEvent e) {
                    System.out.println(
"Tray Icon - Mouse released!");                 
                }
            };
            trayActionListener 
= new ActionListener(){
                
public void actionPerformed( ActionEvent e ){
                    System.out.println( 
"Tray Icon - Action event happened!" );;
                }
            }; 
            menuActionListener 
= new ActionListener(){
                
public void actionPerformed( ActionEvent e ){
                    System.exit(
0);
                }
            };
            trayPopupMenu 
= new PopupMenu();
            trayMenuItem 
= new MenuItem("exit");
            trayMenuItem.addActionListener( menuActionListener );
            trayPopupMenu.add( trayMenuItem );
            trayTip 
= "This is a SystemTray Demo";
            trayImage 
= Toolkit.getDefaultToolkit().getImage("images/leaf.gif");
            trayIcon 
= new TrayIcon( trayImage,trayTip,trayPopupMenu );
            trayIcon.addActionListener( trayActionListener );
            trayIcon.addMouseListener( trayMouseListener );
            trayIcon.setImageAutoSize( 
true );
            systemTray 
= SystemTray.getSystemTray();
            
try{
                systemTray.add( trayIcon );
            }
catch( AWTException e ){
                e.printStackTrace();
            }
        }
else{
            System.out.println( 
"SystemTray unsupported!" );
        }
        displayTime 
= new Thread(new Runnable(){
            
public void run(){
                Calendar now;
                SimpleDateFormat sdf 
= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String time;
                
while(true){
                    now 
= Calendar.getInstance();                    
                    time
= sdf.format( now.getTime() );
                    trayIcon.displayMessage(
"报时",time,TrayIcon.MessageType.INFO);
                    
try{
                        Thread.sleep(
60000);
                    }
catch( InterruptedException e ){
                        e.printStackTrace();
                    }
                }
            }
        });
        displayTime.start();
    }
    
public static void main(String[] args) 
    {
        
new SystemTrayDemo();
    }
}


]]>
struts相对路径http://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282887.html?/dc:creator>?/author>Wed, 17 Jun 2009 09:39:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282887.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/282887.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282887.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/282887.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/282887.html

]]>
Hibernian 一对多异常AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372http://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282886.html?/dc:creator>?/author>Wed, 17 Jun 2009 09:35:00 GMThttp://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282886.htmlhttp://www.aygfsteel.com/yuweixia2008/comments/282886.htmlhttp://www.aygfsteel.com/yuweixia2008/archive/2009/06/17/282886.html#Feedback0http://www.aygfsteel.com/yuweixia2008/comments/commentRss/282886.htmlhttp://www.aygfsteel.com/yuweixia2008/services/trackbacks/282886.html java.lang.NullPointerException
 at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
 at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
 at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
 at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
 at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
 at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
 at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
 at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
 at org.hibernate.type.EntityType.resolve(EntityType.java:303)
 at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
 at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
 at org.hibernate.loader.Loader.doQuery(Loader.java:717)
 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
 at org.hibernate.loader.Loader.doList(Loader.java:2145)
 at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
 at org.hibernate.loader.Loader.list(Loader.java:2024)
 at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
 at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
 at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
 at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
 at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
 at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
 at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832)
 at dao.daoImlHibernate.WordDaoImplHibernate.listAll(WordDaoImplHibernate.java:36)
 at service.serviceImpl.WordServiceImpl.listAll(WordServiceImpl.java:24)
 at com.yourcompany.struts.action.WordAction.listAll(WordAction.java:45)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
 at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
 at java.lang.Thread.run(Unknown Source)


解决Ҏ在从表中 <many-to-one name="usrs" class="model.Usrs" fetch="select" lazy="false">lazy=“false”
            <column name="usr_id" />
        </many-to-one>

]]>
վ֩ģ壺 | ɽ| Զ| ˶| | ²| ½| ɳ| ۽| ۩| | ̫| ½| û| ߴ| | | | ̨| Ϫ| | | | ʯ¥| ׿| | | | ˶| | | | | ƫ| | ƽ| | ٹ| ͩ| | |