电脑移植版加上模拟器,可以玩最终幻想1-10代。其中最终幻想10是PS2模拟器,对电脑配置要求比较高,非双核电脑请不必尝试。
最终幻想1-6下载(包括各自对应的模拟器下载也可在该页面找到):
http://www.ffsky.com/ff/download.asp?dirID=129&layer=2 。
最终幻想7下载(PC汉化版):
http://search3.btchina.net/btsearch.php?query=%D7%EE%D6%D5%BB%C3%CF%EB7&type=0 。
最终幻想8下载:
http://www.92017.com/soft/340.html 。
汉化补丁:
http://star.qust.edu.cn/temp/0.7p1.rar 。
最终幻想9下载(包括了四张日文光盘、中文汉化补丁和模拟器,具体补丁使用方法详见说明):
http://bbs.emu-zone.org/newbbs/thread-521296-1-2.html 。
附模拟器配置指南:
http://bbs.ffsky.com/disp.aspx?ID=1651291&bid=4 。
最终幻想10下载:
国际版镜像+补丁(需要注册发帖):
http://bbs.emu-zone.org/newbbs/thread-534191-1-1.html 。
模拟器——PCSX2 0.94 整合版:
http://www.emu-zone.org/html/download/moniqi/jiayongjimoniqi/PS2/20071111/8776.html。
1 1/4-18 UNEF、1*1/4-18 UNEF 和 1又1/4-18 UNEF 这三个描述实际上是同一种螺纹规格,它们都表示具有 1 1/4 英寸直径和 18 螺纹每英寸的螺纹。
这种螺纹属于美制螺纹,UNEF 代表美制细螺纹(Unified National Extra Fine thread)。它不属于管螺纹,而是一种通用的螺纹规格。
1 1/4-18 UNEF 螺纹可以用于各种需要这种规格的螺纹连接的应用场景,例如机械设备、电子设备等。关于是否可用于汽车或摩托车,这取决于具体部件的设计和需求。如果某个部件需要这种规格的螺纹,那么它就可以使用。然而,在汽车和摩托车中,通常使用的螺纹规格可能因制造商和部件而异。因此,在选择螺纹规格时,应根据具体的设计需求和设备标准来判断。
美制螺纹(Unified Thread Standard,简称 UTS)是美国、加拿大和英国等国家采用的一种统一螺纹标准。美制螺纹有三种基本类型:UNC(Unified National Coarse thread,美制粗螺纹)、UNF(Unified National Fine thread,美制细螺纹)和 UNEF(Unified National Extra Fine thread,美制超细螺纹)。这些螺纹类型的主要区别在于螺纹密度(每英寸螺纹数)。
1 1/4-18 UNEF 螺纹是一种美制超细螺纹规格,具有较高的螺纹密度。这意味着在相同直径的情况下,UNEF 螺纹比 UNC 和 UNF 螺纹具有更多的螺纹。这种特性使得 UNEF 螺纹在某些需要较高扭矩传递或需要更高密封性能的应用场景中具有优势。然而,由于螺纹密度较高,UNEF 螺纹的加工难度相对较大。
1 1/4-18 UNEF 螺纹可以应用于各种需要这种螺纹规格的场景,包括但不限于:
机械设备:例如,需要高扭矩传递的传动装置、密封性能要求较高的阀门和接头等。
电子设备:例如,精密仪器中的固定部件、散热器安装等。
航空航天行业:例如,飞机和航天器上的连接部件、紧固件等。
汽车和摩托车:例如,引擎部件、悬挂系统等。
需要注意的是,在选择螺纹规格时,要考虑实际应用场景的需求,如承受载荷、密封性能、扭矩传递等。此外,不同制造商和行业可能有自己特定的设计规范和标准。
这个在dz的后台设置伪静态即可,都有提示的。
public class RandomNumber implements Runnable {。
private final byte[] lock; // 同步对象锁。
private Random random; // 用于生成随机数。
private int sum; // 用于计算产生的随机数总数。
public RandomNumber() {。
lock = new byte[1];。
random = new Random();。
}
@Override
public void run() {。
while (true) {。
int rd = random.nextInt(1001); // 产生0 - 10000的随机数。
if (rd == 0) {。
continue;。
} else {。
if (sum >= 10000) {。
return;。
}。
try {。
Thread.sleep(1); // 为了效果更明显,当前线程睡1毫秒。
} catch (InterruptedException e) {。
e.printStackTrace();。
}。
synchronized (lock) {。
// 获取到对象锁之后,需要判断sum的大小,因为此时sum可能已经为10000了。
if (sum < 10000) {。
sum++;。
System.out.println(Thread.currentThread().getName()。
+ " - 第" + sum + "个随机数:" + rd);。
}。
}。
}
}
}
// main测试函数。
public static void main(String[] args) throws Exception {。
RandomNumber rn = new RandomNumber();。
// 循环产生50个线程。
for (int i = 0; i < 50; i++) {。
new Thread(rn).start();。
}
}
有问题再追问,一起学习探讨
MyRunnable t1 = new MyRunnable();。
-----
这个语句表明实例化了一个MyRunnable对象t1,MyRunnable是一个Runnable接口的类。这点很好理解吧。
Thread thread1 = new Thread(t1, "MyThread1");。
------
这个语句也是实例化了一个Thread对象thread1,这点和t1是一样理解的,就是:生成了一个Thread对象放在内存里面,有一个指针thread1指向了它。
thread1.start();。
--------
这里,才是真正意义上的启动了“thread”。看看以下API对线程的定义:
“A thread is a thread of execution in a program. ”
线程是就是一段程序的执行过程。这个“过程”被抽象成一个对象(确切的说是类):java.lang.Thread。(面向对象的思想不就是这样的吗?)。
于是,Java的API就规定了这段“在你的程序里被执行的程序”必须是实现了java.lang.Runnable接口的类或者继承java.lang.Thread类,的run方法里的代码。
简单的说,你要启动一个线程,就必须实例化一个Thread对象,传入一个符合规定(实现Runnable或者继承Thread)“要运行的线程对象”MyJob,然后调用start()方法,告诉虚拟机:你帮我启动一个新的线程,执行MyJob里面的run方法的代码吧。
楼主如果还不理解,建议看看关于进程与操作系统相关的知识,对你有帮助的。