??xml version="1.0" encoding="utf-8" standalone="yes"?>国产系列电影在线播放网址,欧美日韩不卡一区二区,欧美女优在线 http://www.aygfsteel.com/zh-qi/一切从头开?/description>zh-cn Thu, 19 Jun 2025 11:43:34 GMT Thu, 19 Jun 2025 11:43:34 GMT 60 C指针 http://www.aygfsteel.com/zh-qi/archive/2009/11/04/301097.htmlW看风云 W看风云 Wed, 04 Nov 2009 08:50:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/11/04/301097.html http://www.aygfsteel.com/zh-qi/comments/301097.html http://www.aygfsteel.com/zh-qi/archive/2009/11/04/301097.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/301097.html http://www.aygfsteel.com/zh-qi/services/trackbacks/301097.html 阅读全文 ]]> 如何制作 MyEclipse 5.5/6.0 l色?/title> http://www.aygfsteel.com/zh-qi/archive/2009/09/08/294246.htmlW看风云 W看风云 Tue, 08 Sep 2009 01:13:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/09/08/294246.html http://www.aygfsteel.com/zh-qi/comments/294246.html http://www.aygfsteel.com/zh-qi/archive/2009/09/08/294246.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/294246.html http://www.aygfsteel.com/zh-qi/services/trackbacks/294246.html 另一U解x法是: Portable Java IDE 2.1 打包下蝲(12.7.2006更新)
我们知道 Eclipse 工具的最大缺? 是安装插g极其费劲, W一是需要手工复制安? W二呢如果插件版本和 Eclipse 版本不配? Ҏ(gu)q不了, W三呢如果插件Aq依赖于插gB(?Eclipse 官方|站众多插g的下载和安装, 例如 Visual Editor), 你还得去再把插gB下蝲一? 所以网上出C众多 Eclipse 插g的管理方? 例如 Link 目录安装? EasyEclipse ?EasyEclipse Free, open source, easy-to-use Eclipse distributions ), EasyEclipse q个是用 NSIS 来做单个插g的安装和卸蝲? 商业的解x? 集成了各U各L(fng)插g? 首推行?MyEclipse. 但是随着 MyEclipse 安装包的肥大, 安装一ơ也是相当的耗时, 其最后一步执?ANT 脚本?unpack200 解压~的q程, 如果?sh)脑ơ一点的? d半天没反? 重则q程挂掉, 重新安装. 虽然?Eclipse 本n我没啥说? 但是 Eclipse 装插件的是对初学者来说是个折? 废话说.首先? 我们需要去 MyEclipse ?All In ONE 版本, q样做绿色版好做一? 如果你不知道如何下蝲和安? 请参考本站视? MyEclipse 6 实战开发讲解视频入?0: 下蝲 安装 q行 HelloWorld
MyEclipse 5.5 + Tomcat 开发视? 下蝲,安装,配置,开发ƈq行W(xu)eb目
安装完毕后得C个完整的目录, 那么我们要做的就是修改一个配|文? 创徏一个启?BAT 文g后就可以实现 MyEclipse 6 的免安装q行? 换句话说我们可以攑֜Ud盘上启?当然注册码自己想办法搞定).
首先看安装后的目?
我们先在q个目录下新Z个文? MyEclipse 6.0.bat , 文g内容如下:
start eclipse\eclipse.exe -vm jre\bin\javaw.exe
接下来只需要改一个Eclipse插g的配|文件就可以实现l色版运行了, 我们用记事本{文本编辑器打开下面的这个文?com.genuitec.eclipse.MyEclipse.link:
文g原始内容如下所C?
path=d:\\Java\\MyEclipse6.0\\myeclipse
q个是指?myeclipse q个插g目录的位|的, 我们把它Ҏ(gu)相对路径卛_:
path=..\\myeclipse
OK, 完工? 把MyEclipse 6.0 整个目录复制C的移动硬盘上或者刻成光? 以后当你的系l重做后或者拿着Ud盘C一个根本没装过 Java 工具的电(sh)脑上? 双击批处理文件即可立卛_?MyEclipse 来工? 复制到硬盘上的Q何目?注意路径不要带空格或者汉?, 也可以同样启? 免去我们安装和配|之?
]]>Java多线E编Eȝ http://www.aygfsteel.com/zh-qi/archive/2009/05/18/271351.htmlW看风云 W看风云 Mon, 18 May 2009 07:43:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/05/18/271351.html http://www.aygfsteel.com/zh-qi/comments/271351.html http://www.aygfsteel.com/zh-qi/archive/2009/05/18/271351.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/271351.html http://www.aygfsteel.com/zh-qi/services/trackbacks/271351.html 一、认识多d、多q程、单U程、多U程
要认识多U程p从操作系l的原理说v?br />
以前古老的DOS操作pȝQV 6.22 Q是单Q务的Q还没有U程的概念,pȝ在每ơ只能做一件事情。比如你在copy东西的时候不能rename文g名。ؓ(f)了提高系l的利用效率Q采用批处理来批量执行Q务?br />
现在的操作系l都是多d操作pȝQ每个运行的d是操作pȝ所做的一件事情,比如你在听歌的同时还在用MSN和好友聊天。听歌和聊天是两个dQ这个两个Q务是“同时”q行的。一个Q务一般对应一个进E,也可能包含好几个q程。比如运行的MSN对应一个MSN的进E,如果你用的是 windowspȝQ你可以在d理器中看到操作pȝ正在q行的进E信息?br />
一般来_(d)当运行一个应用程序的时候,启动了一个进E,当然有些?x)启动多个进E。启动进E的时候,操作pȝ?x)?f)q程分配资源Q其中最主要的资源是内存I间Q因为程序是在内存中q行的。在q程中,有些E序程块是可以乱序执行的,q且q个代码块可以同时被多次执行。实际上Q这L(fng)代码块就是线E体。线E是q程中ؕ序执行的代码程。当多个U程同时q行的时候,q样的执行模式成为ƈ发执行?br />
多线E的目的是ؓ(f)了最大限度的利用CPU资源?br />
Java~写E序都运行在在Java虚拟机(JVMQ中Q在JVM的内部,E序的多d是通过U程来实现的。每用java命o(h)启动一个java 应用E序Q就?x)启动一个JVMq程。在同一个JVMq程中,有且只有一个进E,是它自己。在q个JVM环境中,所有程序代码的q行都是以线E来q行?br />
一般常见的Java应用E序都是单线E的。比如,用java命o(h)q行一个最单的HelloWorld的Java应用E序Ӟ启动了一?nbsp;JVMq程QJVM扑ֈE序E序的入口点main()Q然后运行main()Ҏ(gu)Q这样就产生了一个线E,q个U程UCZU程。当mainҎ(gu)l束后,ȝE运行完成。JVMq程也随即退?nbsp;?br />
对于一个进E中的多个线E来_(d)多个U程׃nq程的内存块Q当有新的线E生的时候,操作pȝ不分配新的内存,而是让新U程׃n原有的进E块的内存。因此,U程间的通信很容易,速度也很快。不同的q程因ؓ(f)处于不同的内存块Q因此进E之间的通信相对困难?br />
实际上,操作的系l的多进E实C多Q务ƈ发执行,E序的多U程实现了进E的q发执行。多d、多q程、多U程的前提都是要求操作系l提供多d、多q程、多U程的支持?br />
在JavaE序中,JVM负责U程的调度。线E调度是值按照特定的机制为多个线E分配CPU的用权?br />
调度的模式有两种Q分时调度和抢占式调度。分时调度是所有线E轮获得CPU使用权,q^均分配每个线E占用CPU的时_(d)抢占式调度是Ҏ(gu)U程的优先别来获取CPU的用权。JVM的线E调度模式采用了抢占式模式?br />
所谓的“q发执行”?#8220;同时”其实都不是真正意义上?#8220;同时”。众所周知QCPU都有个时钟频率,表示每秒中能执行cpu指o(h)的次数。在每个旉周期内,CPU实际上只能去执行一条(也有可能多条Q指令。操作系l将q程U程q行理Q轮(没有固定的顺序)分配每个q程很短的一D|旉Q不一定是均分Q,然后在每个线E内部,E序代码自己处理该进E内部线E的旉分配Q多个线E之间相互的切换L行,q个切换旉也是非常短的。因此多d、多q程、多U程都是操作pȝlh的一U宏观感受,从微观角度看Q程序的q行是异步执行的?br />
用一句话做ȝQ虽然操作系l是多线E的Q但CPU每一时刻只能做一件事Q和人的大脑是一L(fng)Q呵c(din)?br />
二、Java与多U程
Java语言的多U程需要操作系l的支持?br />
Java 虚拟机允许应用程序ƈ发地q行多个执行U程。Java语言提供了多U程~程的扩展点Qƈl出了功能强大的U程控制API?br />
在Java中,多线E的实现有两U方式:(x)
扩展java.lang.Threadc?br />
实现java.lang.Runnable接口
每个U程都有一个优先Q高优先U线E的执行优先于低优先U线E。每个线E都可以或不可以标记Z个守护程序。当某个U程中运行的代码创徏一个新 Thread 对象Ӟ该新U程的初始优先被设定ؓ(f)创徏U程的优先Qƈ且当且仅当创建线E是守护U程Ӟ新线E才是守护程序?br />
?nbsp;Java 虚拟机启动时Q通常都会(x)有单个非守护U程Q它通常?x)调用某个指定类?nbsp;main Ҏ(gu)Q。Java 虚拟Z(x)l箋执行U程Q直C列Q一情况出现时ؓ(f)止:(x)
调用?nbsp;Runtime cȝ exit Ҏ(gu)Qƈ且安全管理器允许退出操作发生?br />
非守护线E的所有线E都已停止运行,无论是通过从对 run Ҏ(gu)的调用中q回Q还是通过抛出一个传播到 run Ҏ(gu)之外的异常?br />
三、扩展java.lang.Threadc?br />
/**
* File Name: TestMitiThread.java
* Created by: IntelliJ IDEA.
* Copyright: Copyright (c) 2003-2006
* Company: Lavasoft( [url]http://lavasoft.blog.51cto.com/ [/url])
* Author: leizhimin
* Modifier: leizhimin
* Date Time: 2007-5-17 10:03:12
* Readme: 通过扩展Threadcd现多U程
*/
public class TestMitiThread {
public static void main(String[] rags) {
System.out.println(Thread.currentThread().getName() + " U程q行开? " );
new MitiSay( " A " ).start();
new MitiSay( " B " ).start();
System.out.println(Thread.currentThread().getName() + " U程q行l束! " );
}
}
class MitiSay extends Thread {
public MitiSay(String threadName) {
super (threadName);
}
public void run() {
System.out.println(getName() + " U程q行开? " );
for ( int i = 0 ; i < 10 ; i ++ ) {
System.out.println(i + " " + getName());
try {
sleep(( int ) Math.random() * 10 );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(getName() + " U程q行l束! " );
}
}
q行l果Q?br />
main U程q行开?/span>!
main U程q行l束!
A U程q行开?/span>!
0 A
1 A
B U程q行开?/span>!
2 A
0 B
3 A
4 A
1 B
5 A
6 A
7 A
8 A
9 A
A U程q行l束 !
2 B
3 B
4 B
5 B
6 B
7 B
8 B
9 B
B U程q行l束 !
说明Q?br />
E序启动q行main时候,java虚拟机启动一个进E,ȝEmain在main()调用时候被创徏。随着调用MitiSay的两个对象的startҎ(gu)Q另外两个线E也启动了,q样Q整个应用就在多U程下运行?br />
在一个方法中调用Thread.currentThread().getName()Ҏ(gu)Q可以获取当前线E的名字。在mianҎ(gu)中调用该Ҏ(gu)Q获取的是主U程的名字?br />
注意Qstart()Ҏ(gu)的调用后q不是立x行多U程代码Q而是使得该线E变为可q行态(RunnableQ,什么时候运行是由操作系l决定的?br />
从程序运行的l果可以发现Q多U程E序是ؕ序执行。因此,只有乱序执行的代码才有必要设计ؓ(f)多线E?br />
Thread.sleep()Ҏ(gu)调用目的是不让当前线E独自霸占该q程所获取的CPU资源Q以留出一定时间给其他U程执行的机?x)?br />
实际上所有的多线E代码执行顺序都是不定的,每次执行的结果都是随机的?br />
四、实现java.lang.Runnable接口
/**
* 通过实现 Runnable 接口实现多线E?br />
*/
public class TestMitiThread1 implements Runnable {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + " U程q行开? " );
TestMitiThread1 test = new TestMitiThread1();
Thread thread1 = new Thread(test);
Thread thread2 = new Thread(test);
thread1.start();
thread2.start();
System.out.println(Thread.currentThread().getName() + " U程q行l束! " );
}
public void run() {
System.out.println(Thread.currentThread().getName() + " U程q行开? " );
for ( int i = 0 ; i < 10 ; i ++ ) {
System.out.println(i + " " + Thread.currentThread().getName());
try {
Thread.sleep(( int ) Math.random() * 10 );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + " U程q行l束! " );
}
}
q行l果Q?br />
main U程q行开?/span>!
Thread- 0 U程q行开?/span>!
main U程q行l束!
0 Thread - 0
Thread- 1 U程q行开?/span>!
0 Thread - 1
1 Thread - 1
1 Thread - 0
2 Thread - 0
2 Thread - 1
3 Thread - 0
3 Thread - 1
4 Thread - 0
4 Thread - 1
5 Thread - 0
6 Thread - 0
5 Thread - 1
7 Thread - 0
8 Thread - 0
6 Thread - 1
9 Thread - 0
7 Thread - 1
Thread- 0 U程q行l束 !
8 Thread - 1
9 Thread - 1
Thread- 1 U程q行l束 !
说明Q?br />
TestMitiThread1c通过实现Runnable接口Q得该cL了多U程cȝ特征。runQ)Ҏ(gu)是多U程E序的一个约定。所有的多线E代码都在runҎ(gu)里面。Threadcd际上也是实现了Runnable接口的类?br />
在启动的多线E的时候,需要先通过Threadcȝ构造方法Thread(Runnable target) 构造出对象Q然后调用Thread对象的start()Ҏ(gu)来运行多U程代码?br />
实际上所有的多线E代码都是通过q行Thread的start()Ҏ(gu)来运行的。因此,不管是扩展Threadc还是实现Runnable接口来实现多U程Q最l还是通过Thread的对象的API来控制线E的Q熟(zhn)ThreadcȝAPI是进行多U程~程的基?br />
五、读解ThreadcAPI
static int MAX_PRIORITY
U程可以h的最高优先?br />
static int MIN_PRIORITY
U程可以h的最低优先?br />
static int NORM_PRIORITY
分配l线E的默认优先U?br />
构造方法摘?br />
Thread(Runnable target)
分配新的 Thread 对象?br />
Thread(String name)
分配新的 Thread 对象?br />
Ҏ(gu)摘要
static Thread currentThread()
q回对当前正在执行的U程对象的引用?br />
ClassLoader getContextClassLoader()
q回该线E的上下?nbsp;ClassLoader?br />
long getId()
q回该线E的标识W?br />
String getName()
q回该线E的名称?br />
int getPriority()
q回U程的优先?br />
Thread.State getState()
q回该线E的状态?br />
ThreadGroup getThreadGroup()
q回该线E所属的U程l?br />
static boolean holdsLock(Object obj)
当且仅当当前U程在指定的对象上保持监视器锁时Q才q回 true ?br />
void interrupt()
中断U程?br />
static boolean interrupted()
试当前U程是否已经中断?br />
boolean isAlive()
试U程是否处于zd状态?br />
boolean isDaemon()
试该线E是否ؓ(f)守护U程?br />
boolean isInterrupted()
试U程是否已经中断?br />
void join()
{待该线E终止?br />
void join( long millis)
{待该线E终止的旉最长ؓ(f) millis 毫秒?br />
void join( long millis, int nanos)
{待该线E终止的旉最长ؓ(f) millis 毫秒 + nanos U秒?br />
void resume()
已过时?nbsp;该方法只?nbsp;suspend() 一起用,?nbsp;suspend() 已经遭到反对Q因为它h死锁們。有x多信息,请参阅ؓ(f)?nbsp;Thread.stop、Thread.suspend ?nbsp;Thread.resume 遭到反对Q?br />
void run()
如果该线E是使用独立?nbsp;Runnable q行对象构造的Q则调用?nbsp;Runnable 对象?nbsp;run Ҏ(gu)Q否则,该方法不执行M操作q返回?br />
void setContextClassLoader(ClassLoader cl)
讄该线E的上下?nbsp;ClassLoader?br />
void setDaemon( boolean on)
该U程标记为守护线E或用户U程?br />
static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
讄当线E由于未捕获到异常而突然终止,q且没有U程定义其他处理E序时所调用的默认处理程序?br />
void setName(String name)
改变U程名称Q之与参数 name 相同?br />
void setPriority( int newPriority)
更改U程的优先?br />
void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
讄该线E由于未捕获到异常而突然终止时调用的处理程序?br />
static void sleep( long millis)
在指定的毫秒数内让当前正在执行的U程休眠Q暂停执行)?br />
static void sleep( long millis, int nanos)
在指定的毫秒数加指定的纳U数内让当前正在执行的线E休眠(暂停执行Q?br />
void start()
使该U程开始执行;Java 虚拟用该U程?nbsp;run Ҏ(gu)?br />
void stop()
已过时?nbsp;该方法具有固有的不安全性。用 Thread.stop 来终止线E将释放它已l锁定的所有监视器Q作为沿堆栈向上传播的未(g)?nbsp;ThreadDeath 异常的一个自然后果)。如果以前受q些监视器保护的M对象都处于一U不一致的状态,则损坏的对象对其他U程可见Q这有可能导致Q意的行ؓ(f)。stop 的许多用都应由只修Ҏ(gu)些变量以指示目标U程应该停止q行的代码来取代。目标线E应定期(g)查该变量Qƈ且如果该变量指示它要停止q行Q则从其q行Ҏ(gu)依次q回。如果目标线E等待很长时_(d)例如Z一个条件变量)Q则应?nbsp;interrupt Ҏ(gu)来中断该{待。有x多信息,请参阅《ؓ(f)何不赞成使用 Thread.stop、Thread.suspend ?nbsp;Thread.resumeQ》?br />
void stop(Throwable obj)
已过时?nbsp;该方法具有固有的不安全性。请参阅 stop() 以获得详l信息。该Ҏ(gu)的附加危险是它可用于生成目标U程未准备处理的异常Q包括若没有该方法该U程不太可能抛出的已(g)查的异常Q。有x多信息,请参阅ؓ(f)?nbsp;Thread.stop、Thread.suspend ?nbsp;Thread.resume 遭到反对Q?br />
void suspend()
已过时。该Ҏ(gu)已经遭到反对Q因为它h固有的死锁們。如果目标线E挂h在保护关键系l资源的监视器上保持有锁Q则在目标线E重新开始以前Q何线E都不能讉K该资源。如果重新开始目标线E的U程惛_调用 resume 之前锁定该监视器Q则?x)发生死锁。这cL锁通常?x)证明自己?#8220;ȝ”的进E。有x多信息,请参阅ؓ(f)?nbsp;Thread.stop、Thread.suspend ?nbsp;Thread.resume 遭到反对Q?br />
String toString()
q回该线E的字符串表CŞ式,包括U程名称、优先和线E组?br />
static void yield()
暂停当前正在执行的线E对象,q执行其他线E?br />
六、线E的状态{换图
U程在一定条件下Q状态会(x)发生变化。线E变化的状态{换图如下Q?br />
1 、新建状态(NewQ:(x)新创Z一个线E对象?br />
2 、就l状态(RunnableQ:(x)U程对象创徏后,其他U程调用了该对象的start()Ҏ(gu)。该状态的U程位于可运行线E池中,变得可运行,{待获取CPU的用权?br />
3 、运行状态(RunningQ:(x)qA状态的U程获取了CPUQ执行程序代码?br />
4 、阻塞状态(BlockedQ:(x)d状态是U程因ؓ(f)某种原因攑ּCPU使用权,暂时停止q行。直到线E进入就l状态,才有Z(x)转到q行状态。阻塞的情况分三U:(x)
Q一Q、等待阻塞:(x)q行的线E执行wait()Ҏ(gu)QJVM?x)把该线E放入等待池中?br />
Q二Q、同步阻塞:(x)q行的线E在获取对象的同步锁Ӟ若该同步锁被别的U程占用Q则JVM?x)把该线E放入锁池中?br />
Q三Q、其他阻塞:(x)q行的线E执行sleep()或join()Ҏ(gu)Q或者发ZI / OhӞJVM?x)把该线E置为阻塞状态。当sleep()状态超时、join(){待U程l止或者超时、或者I / O处理完毕ӞU程重新转入qA状态?br />
5 、死亡状态(DeadQ:(x)U程执行完了或者因异常退Zrun()Ҏ(gu)Q该U程l束生命周期?br />
七、线E的调度
1 、调整线E优先QJavaU程有优先Q优先高的U程?x)获得较多的q行Z(x)?br />
JavaU程的优先用整数表C,取D围是1 ~ 10 QThreadcL以下三个静态常量:(x)
static int MAX_PRIORITY
U程可以h的最高优先Q取gؓ(f)10?br />
static int MIN_PRIORITY
U程可以h的最低优先Q取gؓ(f)1?br />
static int NORM_PRIORITY
分配l线E的默认优先U,取gؓ(f)5?br />
ThreadcȝsetPriority()和getPriority()Ҏ(gu)分别用来讄和获取线E的优先U?br />
每个U程都有默认的优先。主U程的默认优先为Thread.NORM_PRIORITY?br />
U程的优先有承关p,比如AU程中创ZBU程Q那么B和Ah相同的优先?br />
JVM提供?0个线E优先Q但与常见的操作pȝ都不能很好的映射。如果希望程序能UL到各个操作系l中Q应该仅仅用ThreadcL以下三个静态常量作Z先Q这栯保证同样的优先采用了同L(fng)调度方式?br />
2 、线E睡眠:(x)Thread.sleep( long millis)Ҏ(gu)QɾU程转到d状态。millis参数讑֮睡眠的时_(d)以毫Uؓ(f)单位。当睡眠l束后,p{为就l(RunnableQ状态。sleep()q_UL性好?br />
3 、线E等待:(x)ObjectcM的wait()Ҏ(gu)Q导致当前的U程{待Q直到其他线E调用此对象?nbsp;notify() Ҏ(gu)?nbsp;notifyAll() 唤醒Ҏ(gu)。这个两个唤醒方法也是ObjectcM的方法,行ؓ(f){h(hun)于调?nbsp;wait( 0 ) 一栗?br />
4 、线E让步:(x)Thread.yield() Ҏ(gu)Q暂停当前正在执行的U程对象Q把执行Z(x)让给相同或者更高优先的线E?br />
5 、线E加入:(x)join()Ҏ(gu)Q等待其他线E终止。在当前U程中调用另一个线E的join()Ҏ(gu)Q则当前U程转入d状态,直到另一个进E运行结束,当前U程再由d转ؓ(f)qA状态?br />
6 、线E唤醒:(x)ObjectcM的notify()Ҏ(gu)Q唤醒在此对象监视器上等待的单个U程。如果所有线E都在此对象上等待,则会(x)选择唤醒其中一个线E。选择是Q意性的Qƈ在对实现做出军_时发生。线E通过调用其中一?nbsp;wait Ҏ(gu)Q在对象的监视器上等待。直到当前的U程攑ּ此对象上的锁定,才能l箋执行被唤醒的U程。被唤醒的线E将以常规方式与在该对象上主动同步的其他所有线E进行竞争;例如Q唤醒的U程在作为锁定此对象的下一个线E方面没有可靠的Ҏ(gu)或劣ѝ类似的Ҏ(gu)q有一个notifyAll()Q唤醒在此对象监视器上等待的所有线E?br />
注意QThread中suspend()和resume()两个Ҏ(gu)在JDK1.5中已l废除,不再介绍。因为有死锁們?br />
7 、常见线E名词解?br />
ȝE:(x)JVM调用E序mian()所产生的线E?br />
当前U程Q这个是Ҏ(gu)h的概c(din)一般指通过Thread.currentThread()来获取的q程?br />
后台U程Q指为其他线E提供服务的U程Q也UCؓ(f)守护U程。JVM的垃圑֛收线E就是一个后台线E?br />
前台U程Q是指接受后台线E服务的U程Q其实前台后台线E是联系在一P像傀(g)儡和q后操纵者一L(fng)关系。傀(g)儡是前台U程、幕后操U者是后台U程。由前台U程创徏的线E默认也是前台线E。可以通过isDaemon()和setDaemon()Ҏ(gu)来判断和讄一个线E是否ؓ(f)后台U程?br />
转自:http://lavasoft.blog.51cto.com/62575/27069
]]> Java Web应用中的d调度 http://www.aygfsteel.com/zh-qi/archive/2009/05/08/269644.htmlW看风云 W看风云 Fri, 08 May 2009 08:47:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/05/08/269644.html http://www.aygfsteel.com/zh-qi/comments/269644.html http://www.aygfsteel.com/zh-qi/archive/2009/05/08/269644.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/269644.html http://www.aygfsteel.com/zh-qi/services/trackbacks/269644.html 阅读全文 ]]> MyEclipse 快捷键大?/title> http://www.aygfsteel.com/zh-qi/archive/2009/04/24/267362.htmlW看风云 W看风云 Fri, 24 Apr 2009 07:08:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/04/24/267362.html http://www.aygfsteel.com/zh-qi/comments/267362.html http://www.aygfsteel.com/zh-qi/archive/2009/04/24/267362.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/267362.html http://www.aygfsteel.com/zh-qi/services/trackbacks/267362.html
MyEclipse 快捷键大?br />
Q?/span>1 QCtrl + M切换H口的大?br />
Q?/span>2 QCtrl + Q跛_最后一ơ的~辑?br />
Q?/span>3 QF2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标Ud时Tooltipq会(x)昄即Show Tooltip Description?br />
F3跛_声明或定义的地方?br />
F5单步调试q入函数内部?br />
F6单步调试不进入函数内部,如果装了金山词霸2006则要?#8220;取词开?#8221;的快捷键Ҏ(gu)其他的?br />
F7由函数内部返回到调用处?br />
F8一直执行到下一个断炏V?br />
Q?/span>4 QCtrl + Pg ~ 对于XML文g是切换代码和囄H口
Q?/span>5 QCtrl + Alt + I看Java文g中变量的相关信息
Q?/span>6 QCtrl + PgUp对于代码H口是打开“Show List”下拉框,在此下拉框里昄有最q曾打开的文?br />
Q?/span>7 QCtrl +/ 在代码窗口中是这U?/span>// ~注释?/span>
Ctrl + Shift +/ 在代码窗口中是这U?/span>/** //*~ */ 注释Q在JSP文gH口中是 <!--~--> ?br />
Q?/span>8 QAlt + Shift + O(或点dh中的Toggle Mark Occurrences按钮) 当点?yn)L个标记时可本页面中其他地方的此标记黄色凸显Qƈ且窗口的双框会(x)出现白色的方块,点击此方块会(x)跛_此标记处?br />
Q?/span>9 Q右ȝ口的左边框即加断点的地方选Show Line Numbers可以加行受?br />
Q?/span>10 QCtrl + I格式化激zȝ元素Format Active Elements?br />
Ctrl + Shift + F格式化文件Format Document?br />
Q?/span>11 QCtrl + S保存当前文g?br />
Ctrl + Shift + S保存所有未保存的文件?br />
Q?/span>12 QCtrl + Shift + M(先把光标攑֜需导入包的cd? 作用是加Import语句?br />
Ctrl + Shift + O作用是缺的Import语句被加入,多余的Import语句被删除?br />
Q?/span>13 QCtrl + Space提示键入内容即Content AssistQ此时要输入法中Chinese(Simplified)IME - Ime / Nonlme Toggle的快捷键Q用于切换英文和其他文字Q改成其他的如改成Ctrl + Shift + ZQ同时在“Text Service and Input Languages”对话框中删掉Chinese(PRC)下面的其他中文输入法只保留光输入法Q此时按Ctrl + Shift + Z在英文和光中文之间切换?br />
Ctrl + Shift + Space提示信息即Context Information?br />
Q?/span>14 QCtrl + D删除当前行?br />
Q?/span>15 Q双ȝ口的左边框可以加断点?br />
Q?/span>16 Q在.jap.?java{文件中右键?#8220;Campare With”?#8220;Replace With”可以扑ֈ所有操作的历史记录?br />
Q?/span>17 Q在菜单中选WindowQShow ViewQNavigator可调出导航功能窗?br />
Q?/span>18 QCtrl + 1 快速修?最l典的快捷键,׃用多说了)
Ctrl + Alt + ↓ 复制当前行到下一?复制增加)
Ctrl + Alt + ↑ 复制当前行到上一?复制增加)
Alt + ↓ 当前行和下面一行交互位|?特别实用,可以省去先剪?再粘贴了)
Alt + ↑ 当前行和上面一行交互位|?同上)
Alt + ← 前一个编辑的面
Alt + → 下一个编辑的面(当然是针对上面那条来说了)
Alt + Enter 昄当前选择资源(工程,or 文g or文g)的属?br />
Shift + Enter 在当前行的下一行插入空?q时鼠标可以在当前行的Q一位置,不一定是最?
Shift + Ctrl + Enter 在当前行插入I(原理同上?
Ctrl + Q 定位到最后编辑的地方
Ctrl + L 定位在某?nbsp;(对于E序过100的h有音?
Ctrl + M 最大化当前的Edit或View (再按则反?
Ctrl +/ 注释当前?再按则取消注?br />
Ctrl + O 快速显C?nbsp;OutLine
Ctrl + T 快速显C当前类的承结?br />
Ctrl + W 关闭当前Editer
Ctrl + K 参照选中的Word快速定位到下一?br />
Ctrl + E 快速显C当前Editer的下拉列?如果当前面没有昄的用黑体表示)
Ctrl +/ (键? 折叠当前cM的所有代?br />
Ctrl + ×(键? 展开当前cM的所有代?br />
Ctrl + Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt +/ 来代?
Ctrl + Shift + E 昄理当前打开的所有的View的管理器(可以选择关闭,Ȁzȝ操作)
Ctrl + J 正向增量查找(按下Ctrl + J?你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显C没有找C,查一个单词时,特别实用,q个功能Idea两年前就有了)
Ctrl + Shift + J 反向增量查找(和上条相?只不q是从后往前查)
Ctrl + Shift + F4 关闭所有打开的Editer
Ctrl + Shift + X 把当前选中的文本全部变呛_?br />
Ctrl + Shift + Y 把当前选中的文本全部变为小?br />
Ctrl + Shift + F 格式化当前代?br />
Ctrl + Shift + P 定位到对于的匚wW?譬如{}) (从前面定位后面时,光标要在匚wW里?后面到前?则反?
下面的快捷键是重构里面常用的,本hp己喜Ƣ且常用的整理一??一般重构的快捷键都是Alt + Shift开头的?
Alt + Shift + R 重命?nbsp;(是我自己最q的一个了,其是变量和cȝRename,比手工方法能节省很多力_?
Alt + Shift + M 抽取Ҏ(gu) (q是重构里面最常用的方法之一?其是对一大堆泥团代码有用)
Alt + Shift + C 修改函数l构(比较实用,有N个函数调用了q个Ҏ(gu),修改一ơ搞?
Alt + Shift + L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变?其是多处调用的时?
Alt + Shift + F 把Class中的local变量变ؓ(f)field变量 (比较实用的功?
Alt + Shift + I 合ƈ变量(可能q样说有点不妥Inline)
Alt + Shift + V Ud函数和变?不怎么常用)
Alt + Shift + Z 重构的后(zhn)药(Undo)
]]> 文g夹创?文g夹删?文gҎ(gu)?/title> http://www.aygfsteel.com/zh-qi/archive/2009/04/11/264957.htmlW看风云 W看风云 Fri, 10 Apr 2009 17:21:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/04/11/264957.html http://www.aygfsteel.com/zh-qi/comments/264957.html http://www.aygfsteel.com/zh-qi/archive/2009/04/11/264957.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/264957.html http://www.aygfsteel.com/zh-qi/services/trackbacks/264957.html 阅读全文 ]]> jquery基本教程之简单体?/title> http://www.aygfsteel.com/zh-qi/archive/2009/04/03/263747.htmlW看风云 W看风云 Fri, 03 Apr 2009 06:54:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/04/03/263747.html http://www.aygfsteel.com/zh-qi/comments/263747.html http://www.aygfsteel.com/zh-qi/archive/2009/04/03/263747.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/263747.html http://www.aygfsteel.com/zh-qi/services/trackbacks/263747.html Jquery是prototype之后又一个优U的Javascript框架。对prototype我用不多,单了解过。但使用上jquery之后Q马上被她的优雅吸引住了。有Z用这L(fng)一比喻来比较prototype和jqueryQprototype像JavaQ而jquery像ruby.实际上我比较喜欢javaQ少接触Ruby|了Q但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作ؓ(f)自已唯一的框架类包。用其间也有一点点心得Q其实这些心得,在jquery的文上面也可能有讲Q不q还是记下来Q以备忘|?nbsp;
一Q找C了!
q记?()q个东西吧?prototypeq是DWR都用了q个函数代替document.getElementById()。没错,jquery也跟风了。ؓ(f)辑ֈdocument.getElementById()的目的,jquery是这样写的:(x)
var someElement = $( " #myId " );
看v来比其他两个框架的要多了一?Q好Q看看下面的用法Q?br />
$( " div p " );( 1 )
$( " div.container " )( 2 )
$( " div #msg " );( 3 )
$( " table a " ,context);( 4 )
在prototype里看q这L(fng)写法吗?W一行代码得到所?/span>< div > 标签下的 < p > 元素。第二行代码得到class为container?/span>< div > 元素,W三行代码得?/span>< div > 标签下面id为msg的元素。第四行代码得到contextZ下文的table里面所有的q接元素?nbsp;
如果你熟(zhn)CSSQXpathQ你?x)觉得这些写法很眼熟Q对了。正是。看出奥妙了吧。jquery是通过q样的方式来扑ֈDom对象里面的元素。跟CSS的选择器相cM?nbsp;
二,Jquery对象Q?nbsp;
jquery提供了很多便利的函数Q如each(fn)Q但是用这些函数的前提是:(x)你用的对象是Jquer对象。一个Dom对象成ؓ(f)一个Jquery对象很简单,通过下面一些方式(只是一部分Q:(x)
var a = $( " #cid " );( 1 )
var b = $( " <p>hello</p> " );( 2 )
var c = document.createElement( " table " ); var tb = $(c);
三,代替body标签的onload
q个惯例Q也许是除了$()之外Q用得最多的地方了。下面一D代码:(x)
$(document).ready(function() {
alert( " hello " );
} );( 1 )
< body onload = " alert('hello'); " > Q?/span>2 Q?nbsp;
上面两段代码是等L(fng)。但代码1的好处是做到表现和逻辑分离。ƈ且可以在不同的js文g中做相同的操作,?(document).ready(fn)可以在一个页面中重复出现Q而不?x)冲H。基本上Jqeury的很多plugin都是利用q个Ҏ(gu),正因个特性,多个plugin共同使用hQ在初始化时不会(x)发生冲突?nbsp;
不管怎么_(d)q个惯例可以分离javascript与HTML。推荐用?br />
四,事g机制
我大量用的事g可能是button的onclick了。以前习(fn)惯在input 元素上写onclick = " fn() " ,使用jquery可以使javascript代码与html代码分离Q保持HTML的清z,q可以很L地绑定事Ӟ甚至你可以不知道“事g”q个名词?br />
$(document).ready(function() {
$( " #clear " ).click(function() {
alert( " i am about to clear the table " );
} );
$( " form[0] " ).submit(validate);
} );
function validate() {
// do some form validation
}
五,同一函数实现set & get
$( " #msg " ).html();
$( " #msg " ).html( " hello " );
上面两行代码Q调用了同样的函数。但l果却差别很大?nbsp;
W一行是q回指定元素的HTML|W二行则是将helloq串字符讄到指定元素中。jquery的函数大部分有这L(fng)Ҏ(gu)?br />
六,ajax
q是一个ajax横行的时代。多hQ了不了解ajax的都跟着用上一把。呵。用jquery实现ajax同样单异?br />
$.get( " search.do " , {id: 1 } ,rend);
function rend(xml) {
alert(xml);
} ( 1 )
$.post( " search.do " , {id: 1 } ,rend);
function rend(xml) {
alert(xml);
} ( 2 )
$( " #msg " ).ajaxStart(function() {
this .html( " 正在加蝲。。。?/span>" );
} );( 3 )
$( " #msg " ).ajaxSuccess(function() {
this .html( " 加蝲完成Q?/span>" );
} );( 4 )
q些都是较常用的Ҏ(gu)Qget和post用法一栗第一个参数是异步h的urlQ第二个为参敎ͼW三个回调方法?nbsp;
3 Q?的方法会(x)在指定的Dom对象上绑定响应ajax执行的事件。当?dng)jquery的AJAX相关的函C仅是q些Q有兴趣可以ȝI再多?br />
七,渐入淡出
$( " #msg " ).fadeIn( " fast " );
$( " #msg " ).fadeOut( " slow " );
没错Q上面两行代码已l分别实C一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一L(fng)动态加载通知条,用jquery那么简单。两个函数接受的参数除了快慢{,q可以接收整型,作ؓ(f)渐入或E出的完成旉Q单位ؓ(f)MS?br />
八,plugin
q也是一个插件的时代?nbsp;
jquery插gl我的感觉清一色的清洁Q简单。如JtipQ要使用它的功能Q只需要在你的元素的class上加上Jtip,q引入jtip.js?qing)其样式卛_以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已l有了很多很好,很精彩的插g?br />
]]> 列表框的左右上下Ud http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250712.htmlW看风云 W看风云 Fri, 09 Jan 2009 08:41:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250712.html http://www.aygfsteel.com/zh-qi/comments/250712.html http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250712.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/250712.html http://www.aygfsteel.com/zh-qi/services/trackbacks/250712.html 效果囑֦下:(x)
<% @ page language = " java " import = " java.util.* " pageEncoding = " utf-8 " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
< head >
< title > 列表框上下左x?/span></ title >
</ head >
< script language = " javascript " >
<!--
var ListUtil = new Object();
// 全部Ud
ListUtil.moveAll = function moveAll(oListboxFrom,oListboxTo) {
var options = oListboxFrom.options;
for (var i = 0 ; i < options.length; i ++ ) {
oListboxTo.appendChild(options[i]); // ???
i -= 1 ; // ???每删除一个选项后,每个选项的index?x)被重?nbsp;
}
}
// 单个或多个移?nbsp;
ListUtil.moveMuti = function moveMuti(oListboxFrom,oListboxTo) {
var options = oListboxFrom.options;
for (var i = 0 ; i < options.length; i ++ ) {
if (options[i].selected) {
oListboxTo.appendChild(options[i]);
i -= 1 ;
}
}
}
// 上移
ListUtil.shiftUp = function(oListbox) {
if (oListbox.selectedIndex > 0 ) {
var oOption = oListbox.options[oListbox.selectedIndex];
var oPrevOption = oListbox.options[oListbox.selectedIndex - 1 ];
oListbox.insertBefore(oOption,oPrevOption);
}
}
// 下移
ListUtil.shiftDown = function(oListbox) {
if (oListbox.selectedIndex < oListbox.options.length - 1 ) {
var oOption = oListbox.options[oListbox.selectedIndex];
var oNextOption = oListbox.options[oListbox.selectedIndex + 1 ];
oListbox.insertBefore(oNextOption,oOption);
}
}
// -->
</ script >
< body text = " #000000 " bgcolor = " #ffffff " link = " #0033cc " >
< form method = post action = " # " >
< table >
< tr >< td >
未选员?br />
< select name = " oListboxFrom " id = " oListboxFrom " size = " 10 "
multiple= " true "
style= " width: 100px; height: 250px; margin-left: 20px; float: left " >
< option value = " 1 " selected > 员工1 </ option >
< option value = " 2 " > 员工2 </ option >
< option value = " 3 " > 员工3 </ option >
< option value = " 4 " > 员工4 </ option >
< option value = " 5 " > 员工5 </ option >
</ select >
</ td >
< td align = " center " >
< input type = " button " value = " >>> "
onclick= " ListUtil.moveAll(oListboxFrom, oListboxTo); " />
< br />
< input type = " button " value = " >> "
onclick= " ListUtil.moveMuti(oListboxFrom, oListboxTo); " />
< br />
< input type = " button " value = " << "
onclick= " ListUtil.moveMuti(oListboxTo, oListboxFrom); " />
< br />
< input type = " button " value = " <<< "
onclick= " ListUtil.moveAll(oListboxTo, oListboxFrom); " />
< br />
< input type = " button " value = " ↑ "
onclick= " ListUtil.shiftUp(oListboxFrom); " />
< br />
< input type = " button " value = " ↓ "
onclick= " ListUtil.shiftDown(oListboxFrom); " />
</ td >
< td >
已选员?br />
< select name = " oListboxTo " id = " oListboxTo " multiple = " true "
size= " 10 "
style= " width: 100px; height: 250px; margin-left: 20px; float: left " >
< option value = " 319094784 " > 员工6 </ option >
< option value = " 320274432 " > 员工8 </ option >
< option value = " 322109440 " > 员工7 </ option >
</ select >
</ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
]]> Hibernate3~存理 http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250701.htmlW看风云 W看风云 Fri, 09 Jan 2009 07:58:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250701.html http://www.aygfsteel.com/zh-qi/comments/250701.html http://www.aygfsteel.com/zh-qi/archive/2009/01/09/250701.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/250701.html http://www.aygfsteel.com/zh-qi/services/trackbacks/250701.html 阅读全文 ]]> sql语句 http://www.aygfsteel.com/zh-qi/archive/2009/01/06/250054.htmlW看风云 W看风云 Tue, 06 Jan 2009 02:25:00 GMT http://www.aygfsteel.com/zh-qi/archive/2009/01/06/250054.html http://www.aygfsteel.com/zh-qi/comments/250054.html http://www.aygfsteel.com/zh-qi/archive/2009/01/06/250054.html#Feedback 0 http://www.aygfsteel.com/zh-qi/comments/commentRss/250054.html http://www.aygfsteel.com/zh-qi/services/trackbacks/250054.html 阅读全文 ]]>
վ֩ģ壺
ڽ |
|
|
Ӽ |
|
ʲ |
ں |
̨ |
Ѿ |
|
|
|
|
峣 |
пǰ |
˿ |
ຣʡ |
ɽ |
|
|
|
˳ |
|
|
Ӣɳ |
|
|
|
|
żҿ |
|
|
|
ƽ |
|
п |
书 |
|
|
|
ͬ |