Tag: 性能

Hibernate可以用于性能敏感的应用程序吗?

我发现检索多个与其他对象有很多关系的对象实例时出现性能问题。 我在MySQL中使用Spring和Hibernate的JPA实现。 问题是,在执行JPA查询时,Hibernate不会自动连接到其他表。 这导致n * r + 1个SQL查询,其中n是要检索的对象数,r是关系数。 例如,一个人住在一个​​地址,有很多爱好,并访问过许多国家: @Entity public class Person { @Id public Integer personId; public String name; @ManyToOne public Address address; @ManyToMany public Set hobbies; @ManyToMany public Set countriesVisited; } 当我执行JPA查询以获取名为Bob的所有人员时,数据库中有100个Bobs: SELECT p FROM Person p WHERE p.name=’Bob’ Hibernate将此转换为301 SQL查询: SELECT … FROM Person WHERE name=’Bob’ SELECT … FROM Address WHERE […]

GC调整 – 阻止完整GC

我正在尝试避免在生产中运行Tomcat中的Grails应用程序的Full GC(来自下面的gc.log示例)。 有关如何更好地配置GC的任何建议? 14359.317:[Full GC 14359.317:[CMS:3453285K-> 3099828K(4194304K),13.1778420 secs] 4506618K-> 3099828K(6081792K),[CMS Perm:261951K-> 181304K(264372K)] icms_dc = 0,13.1786310 secs] [次:user = 13.15 sys = 0.04,real = 13.18 secs] 我的VM参数如下: -Xms = 6G -Xmx = 6G -XX:MaxPermSize参数= 1G -XX:新尺寸= 2G -XX:MaxTenuringThreshold = 8 -XX:SurvivorRatio = 7 -XX:+ UseConcMarkSweepGC -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled -XX:+ CMSIncrementalMode -XX:CMSInitiatingOccupancyFraction = 60 -XX:+ UseCMSInitiatingOccupancyOnly […]

如何从set index开始迭代ArrayList?

我有一个ArrayList ,我想开始迭代它,比如索引100到结尾。 我怎么做?

开始我的服务?

我在启动时无法启动服务。 我有一个广播接收器应该在设备启动时调用(它不是),并启动我的服务。 不幸的是,该服务还没有开始! 我查看了这个页面,阅读了每个答案,然后按照每一步……但它仍然无法正常工作。 我想在手机重启/开机时启动我的服务。 package curlybrace.ruchir.myApp; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class BootUp extends BroadcastReceiver { private static final String TAG = “myTag”; @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. Log.v(TAG, “Hooray! Received boot! […]

集成图形上的慢Java2D绘图

我正在开发一个简单的2D游戏,通过Java2D API渲染。 我注意到,当我尝试在集成显卡上绘图时性能崩溃。 我已经在我的主钻机上测试了这款游戏,其中包括更新的ATI Radeon和我5岁的笔记本电脑,它还有一个(令人难以置信的过时)Radeon。 两者都得到了很好的FPS,但是当我尝试使用我的Intel i5的板载HD 4000显卡时,它的速度大约是20 FPS。 我正在使用全屏独占模式。 在任何特定时刻,我一次渲染大约1000张图像。 令人讨厌的是,当我尝试getAvailableAcceleratedMemory()时,它只返回-1这张卡,它似乎拒绝加速任何图像。 有没有人有任何想法如何解决这个问题? 渲染代码: Graphics g = bufferStrategy.getDrawGraphics(); g.drawImage(img, x, y, img.getWidth(), img.getHeight(), null) g.dispose(); bufferStrategy.show(); 图片加载代码: BufferedImage I = null; I = ImageIO.read(new File(currentFolder+imgPath)); imgMap.put(imgIdentifier, I); 图像存储在由字符串标识的BufferedImages的散列图中,因此当实体需要绘制并对其进行成像时,只需将其从散列图中取出并绘制它。 在当前情况下,实体主要是地板和墙砖,因此它们永远不会改变(因此不必从第一次以外的哈希图中获取图像)。 编辑 – 我已经合并了MadProgrammer的方法,但它没有改变我的FPS。

方法重复输出

对吊索和Java很新,所以我提前道歉。 但有没有人知道为什么当我在根部它输出我的路径两次? 奇怪的是它只发生在绝对根。 public static String generateTest(Page page, Page rootPage, String bc) { Page parent = page.getParent(); String bread = “”; bread += (parent != null) ? “” + parent.getTitle() + “” : “”; bread += “” + “” + page.getTitle() + “” + bc; return (ifAtRoot(parent , rootPage)) ? breadcrumb : generateTest(parent, rootPage, bread); […]

Android通过名称以编程方式连接到Open WiFi – 这是最佳解决方案?

我一直试图使用两种方法按名称以编程方式连接到开放的wifi(连接门户)。 我使用op1,但它只能使用80%的次数。 _____________________________________________________ op1: public static void connectToWifi(Context context, String networkSSID) { WifiConfiguration conf = new WifiConfiguration(); conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); wifiManager.addNetwork(conf); List list = wifiManager.getConfiguredNetworks(); for (WifiConfiguration i : list) { Log.d(TAG + ” |connectToWifi()”, “i.SSID=> ” + i.SSID); if (i.SSID != null && i.SSID.equals(“\”” + networkSSID + “\””)) { wifiManager.disconnect(); wifiManager.enableNetwork(i.networkId, […]

更改变量后,是否必须重新启动?

我有一个长期运行的服务,由两个线程组成。 //MY SERVICE: if(userEnabledProcessOne) //Shared preference value that I’m getting from the settings of my app based on a checkbox processOneThread.start(); if(userEnabledProcessTwo) processTwoThread.start(); 基本上,我通过复选框为用户提供启用/禁用这些进程的选项。 现在,如果用户在服务运行时决定禁用其中一个进程,是否需要使用更新的共享首选项重新启动我的服务? 像这样? //In the settings activity of my app public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if ( isChecked ) { // Change shared preferences to make the process enabled stopService(myService.class) […]

将Java对象设置为null是否会再执行任何操作?

我正在浏览一些旧书,并找到了Peter Hagger的“Practical Java”。 在性能部分中,建议在不再需要时将对象引用设置为null 。 在Java中,将对象引用设置为null提高性能或垃圾回收效率? 如果是这样,在什么情况下这是一个问题? 容器类? 对象组成? 匿名内部课程? 我经常在代码中看到这个。 这是现在过时的编程建议还是仍然有用?

for loop VS while while in programming language,c ++ / java?

哪个性能更好? 这可能与其他编程语言不一致,因此如果它们不同,或者您可以用您对特定语言的知识回答我的问题,请解释。 我将使用c ++作为示例,但我想知道它在java,c或任何其他主流语言中是如何工作的。 int x = 0; while (x < 10) { cout << x << "\n "; x++; } VS for ( int x = 1; x < 10; x++) cout << x << "\n "; 哪一个表现更好? 如果它是for循环,那么让我们说已经声明了我们可以在while循环增量中使用的整数,我们不需要仅为while循环创建? 例: int age = 17; //this was made for something else in the code, not […]