Java中的Graphics.drawImage()在某些计算机上非常慢,而在其他计算机上则要快得多

我有一个奇怪的问题,基本上在Java Graphics.drawImage()在某些计算机上速度极慢而在其他计算机上速度更快。 这与计算机能力无关,一些较弱的计算机运行良好,而一些较强的计算机似乎在drawImage调用时窒息。 它可能与宽度和高度有关,也可能没有,我有一个非常非常大的宽度和高度定义(类似于5000乘2500)。 我不认为这是问题,除了我说它在某些计算机上以实时速度运行而在其他计算机上运行较慢并且似乎与计算机相对功率无关。 两台计算机都使用相同版本的Java,都使用Vista。 一个拥有1.83ghz Core 2 Duo,1GB内存和板载显卡(运行一切正常),另一个拥有2.53 ghz核心2 duo和9600GS(最新nVidia驱动程序)和4GB内存,它在drawImage调用上真的很明显。 有任何想法吗? 编辑:确定这真的很奇怪,我正在将图像绘制到Swing中的窗口,现在当我调整窗口大小并使其非常小时,图像也会缩小并且变小。 突然间,一切都顺利进行,当我将它缩放到它仍然平稳运行之前的大小! 它还有多个监视器问题,如果我执行resize技巧以使其在一个监视器上运行得更快,然后将其滚动到另一个监视器,当超过一半的窗口在新监视器中时它再次启动。 我必须再次调整窗口大小然后回到原来的大小以恢复速度。 如果我在一台显示器上进行resize的技巧,将它移动到另一台显然是chugs,但是如果我将它返回原来的显示器,我做了resize的技巧它100%工作 如果我打开两个摆动窗口(显示相同的图像),它们都运行缓慢,但如果我在一个窗口上执行resize的技巧,它们都会开始顺利运行(但情况并非如此)。 *当我说调整窗口大小时,我的意思是尽可能小到实际看不到图像的程度。 这可能是Java中的错误吗?

JFrame显示灰色,空白

我有一个问题,我的框架显示为灰色,但几秒后,它显示图像,因为我的for循环正在完成。 我需要这样做才能在打开图像时正确显示图像以显示循环。 这是我的整个代码,抱歉长度: import java.awt.*; import javax.swing.*; public class MainFrame extends JFrame{ public void MainFrame() { setTitle(“Game”); setSize(1300, 650); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setBackground(Color.WHITE); Dice diceObject = new Dice(); add(diceObject); } } import java.awt.*; import java.util.Random; import javax.swing.*; public class Dice extends JPanel { public static int pause(int n) { try { Thread.sleep(n); } catch(InterruptedException e) { […]

如何将java日期类型存储到mysql日期类型?

如何将java日期类型存储到mysql日期类型?

通过调用start()和run()来运行Thread,有什么区别?

这可能是一个基本问题,我对此感到困惑, 在一个文件中,我喜欢这样: public class MyThread extends Thread { @Override public void run() { //stuffs } } 现在在另一个文件中我有这个: public class Test { public static void main(String[] args) { Thread obj = new MyThread(); //now cases where i got confused //case 1 obj.start(); //it makes the run() method run //case 2 obj.run(); //it is also making run() […]

Java高负载NIO TCP服务器

作为我研究的一部分,我正在用Java编写一个高负载的TCP / IP echo服务器。 我想为大约3-4k的客户端提供服务,并且每秒可以看到我可以挤出的最大可能消息。 消息大小非常小 – 最多100个字节。 这项工作没有任何实际意义 – 只是一项研究。 根据我见过的众多演讲(HornetQ基准测试,LMAX Disruptor会谈等),真实世界的高负载系统往往每秒服务数百万次交易(我相信Disruptor提到大约6密尔和大黄蜂 – 8.5)。 例如, 这篇文章指出可以达到高达40M MPS。 所以我把它作为现代硬件应该具备的粗略估计。 我编写了最简单的单线程NIO服务器并启动了负载测试。 我很惊讶我在本地主机上只能获得大约10万MPS,在实际网络上只能获得25k MPS。 数字看起来很小。 我正在测试Win7 x64,核心i7。 查看CPU负载 – 只有一个核心正忙(在单线程应用程序上预期),而其余核心处于空闲状态。 然而,即使我加载了所有8个核心(包括虚拟),我的MPS也不会超过800k – 甚至不到接近4千万:) 我的问题是:向客户提供大量消息的典型模式是什么? 我应该在单个JVM内的几个不同套接字上分配网络负载,并使用某种负载均衡器(如HAProxy)将负载分配到多个内核吗? 或者我应该考虑在我的NIO代码中使用多个选择器? 或者甚至可能在多个JVM之间分配负载并使用Chronicle在它们之间建立进程间通信? 在像CentOS这样适当的服务器端操作系统上进行测试会产生很大的不同(可能是Windows会降低速度)吗? 下面是我的服务器的示例代码。 对于任何传入的数据,它总是以“ok”回答。 我知道在现实世界中,我需要跟踪消息的大小,并准备好一条消息可能在多次读取之间分配,但是我现在想让事情变得非常简单。 public class EchoServer { private static final int BUFFER_SIZE = 1024; private final static int DEFAULT_PORT […]

使单例成为Spring bean的正确方法

我正在将单例转换为Spring bean,因此如果单例无法初始化,则整个Web应用程序的spring上下文无法正确加载。 使Spring上下文无法正确加载的优点是人们会在部署期间注意并修复配置。 与使用’非spring bean’单例相反:当在初始化期间抛出exception时,没有人注意到……直到实际用户抱怨缺少function。 我的改变正在按预期进行..但我不确定我是否做了正确的事情。 有什么想法吗? 代码如下所示: public class MySingleton { private static MySingleton INSTANCE = null; private MySingleton(){} public static MySingleton getInstance(){ if(INSTANCE == null){ synchronized(MySingleton.class){ if(INSTANCE == null){ try{ doWork() }catch(Exception e){ throw new IllegalStateException(“xyz”, e); } INSTANCE = new MySingleton(); } } } return INSTANCE; } private static void doWork() { […]

使用Java加密和解密:无法获得相同的输出

我正在尝试学习和测试java 1.6加密/解密API。 我想知道我做错了什么以及我在知识方面缺少什么。 在下面的代码中,我创建了两个密码:一个用于加密,另一个用于解密。 当我使用这些密码时,我使用不同的SecretKey初始化它们,但我仍然能够获得相同的值。 为什么是这样? String algorithm = “DES”; SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algorithm); byte[] encBytes = “12345678”.getBytes(“UTF8”); byte[] decBytes = “56781234”.getBytes(“UTF8”); DESKeySpec keySpecEncrypt = new DESKeySpec(encBytes); DESKeySpec keySpecDecrypt = new DESKeySpec(decBytes); SecretKey keyEncrypt = keyFactory.generateSecret(keySpecEncrypt); SecretKey keyDecrypt = keyFactory.generateSecret(keySpecDecrypt); Cipher cipherEncrypt = Cipher.getInstance(algorithm); Cipher cipherDecrypt = Cipher.getInstance(algorithm); String input = “john doe”; cipherEncrypt.init(Cipher.ENCRYPT_MODE, keyEncrypt); […]

如何将类文件夹添加到Eclipse中?

Eclipse设置为编译到’bin’的构建目录。 我有一个包含各种Java .class文件(预编译)的文件夹结构,我想在编译时将其复制到文件夹’bin’中。 我如何告诉Eclipse自动执行此操作?

无法应用父类中的构造函数

我正在尝试编写一个程序,它采用不同形状的地毯,并创建一个地毯对象,其中包含在子类中定义的某些变量。 我的代码是 public abstract class Carpet{ protected int area = 0; protected double unitPrice = 0; protected double totalPrice = 0.0; protected String carpetID; public Carpet(String id, double thisPrice){ carpetID = id; unitPrice = thisPrice; } public String getCarpetId(){ return carpetID; } public String toString(){ String carpet = new String(“\n” + “The CarpetId:\t\t” + getCarpetId() […]

与碎片不兼容的类型错误

我正在尝试在我的主要活动中添加一个片段。 当我输入fragment = new CrimeFragment(); 我得到一个Incompatible types错误。 我尝试了new CrimeFragment(); 到Fragment ,但这不起作用。 package com.adamanteusstudios.officesmostwanted; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; public class MostWantedActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_most_wanted); //getting fragmentManager FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if(fragment == null){ ***fragment = new OffenseFragment();*** fm.beginTransaction().add(R.id.fragmentContainer, fragment).commit(); } […]