如何在Java中以高性能显示许多SVG

我想要的是 我的目标是能够在Java中的单个绘图区域上显示大量SVG图像,每个图像都有自己的平移/旋转/缩放值。 我正在寻找最简单的解决方案,可选择甚至使用OpenGL来加快速度。 我试过的 我最初的天真的方法是使用SVGSalamander直接在JPanel上绘制,但性能是可悲的。 我四处寻找,并了解到我应该做一些事情,比如手动将每个SVG转换为用createCompatibleImage创建的BufferedImage,然后进行我想要的转换,然后使用双缓冲绘制它。 我在这里遇到了一些麻烦,在我继续之前,我试图寻找框架来简化事情。 我看到了什么 我对可用的选项感到有些不知所措,这就是为什么我转向SO寻求帮助的原因。 我看过: 开罗 (可能是格利茨 ?) Libart – 不确定这是否真的支持SVG 通风柜 光滑 – 看起来很有希望,但有点矫枉过正 但是无法决定什么对我来说最适合开始工作,我希望有人在这里做任何类似事情的经验。

递归检查回文

我有一个类来检查字符串是否是回文。 我有两个问题。 1)这是检查回文的最有效方法吗? 2)这可以递归实现吗? public class Words { public static boolean isPalindrome(String word) { String pal = null; word = word.replace(” “, “”); pal = new StringBuffer(word).reverse().toString(); if (word.compareTo(pal) == 0) { return true; } else { return false; } } } 有一个测试课来测试这个…怀疑它需要但是在这里无论如何,如果有人关心尝试它能够帮助我解决上述两个问题中的任何一个… public class testWords { public static void main(String[] args) { if (Words.isPalindrome(“a”) […]

使用DefaultListModel从JList中删除元素时出错

我有一个标准的JList ,将在程序运行时更改。 为了让生活更轻松,我创建了一个DefaultListModel并将其分配给JList : JList CharList = new JList(); DefaultListModel CharListModel = new DefaultListModel(); CharList.setModel(CharListModel); 我能够将文件加载到列表中,稍后我可以将项添加到列表中,如下所示: File ChFile = new File (CharListFile); FileReader freeder = new FileReader (ChFile); BufferedReader breeder = new BufferedReader(freeder); String line; while((line=breeder.readLine())!=null) { int pos = CharList.getModel().getSize(); CharListModel.add(pos, line); } … … //and to add items.. int pos = CharList.getModel().getSize(); CharListModel.add(pos, […]

由于SearchFactoryIntegrator不在注册表中,因此无法在JBoss 7上查询Infinispan

TL:DR我收到以下错误,我看不出它的原因,索引已启用,SearchFactoryIntegrator在类路径上,需要查看它的所有内容。 此缓存未启用索引。 在注册表中找不到org.hibernate.search.spi.SearchFactoryIntegrator接口 长版: JBoss版本:7.1.1 FINAL Infinispan版本:5.16(从5.1.2 JBoss升级,试图解决问题) Java版本:1.7 我正在尝试构建一个简单的测试应用程序来运行针对Infinispan缓存的查询。 我成功地将对象添加到缓存中。 缓存定义为private org.infinispan.Cache cache; 代理是我自己的对象。 当尝试查询缓存时,我从SearchManager searchManager = Search.getSearchManager(cache);行获得以下错误SearchManager searchManager = Search.getSearchManager(cache); 17:35:43,873 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/SearchableCacheTest].[Faces Servlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.IllegalArgumentException: Indexing was not enabled on this cache. interface org.hibernate.search.spi.SearchFactoryIntegrator not found in registry at org.infinispan.query.impl.ComponentRegistryUtils.getComponent(ComponentRegistryUtils.java:40) [infinispan-query-5.1.6.FINAL.jar:5.1.6.FINAL] at org.infinispan.query.SearchManagerImpl.(SearchManagerImpl.java:56) [infinispan-query-5.1.6.FINAL.jar:5.1.6.FINAL] at […]

将<String,List >映射到Pair

使用Java 8 Stream API如何将一个Map到一Pair列表,其中左对值是映射键? 示例:如果给定地图是 1 => {1, 2, 3} 2 => {2, 4} 然后所需的输出是五对流: (1,1) , (1,2) , (1,3) , (2,2) , (2,4)

JavaFX按钮有透明背景

我在JavaFX中有一些经典的Button ,其中包含一些包含文本的框。 我需要没有那个盒子的按钮,只需要文本,当我hover按钮或用鼠标点击按钮时,它应该将颜色改变为不同的颜色。

Android:将XML从原始文件夹转换为字符串

我遇到了一个让我疯狂的问题xD ……(首先:大家好!由于某种原因,我无法在编辑开头的post开头加上“大家好”…) 用例如下:我有一个xml文件存储在我项目的原始文件夹中。 xml文件看起来像这样: Some text 我知道有一个名为xml的文件夹,但我需要的是一个字符串 – 而不是XmlResourceParser(调用context.getResources()。getXml(id)时得到的)。 现在,我要加载这个原始xml文件的方法是: context.getResources().openRawResource(R.raw.myfile) 这会返回一个InputStream,然后我尝试使用以下代码转换为String: try { byte[] buffer = new byte[stream.available()]; stream.read(buffer); stream.close(); return new String(buffer); } catch (IOException e) { // Error handling } 如果我现在将生成的String打印到logcat,我得到的就是一堆正方形,分布在几行上。 所以我想我必须在那里遗漏一些东西……我尝试了几种方法将这个输入流转换为String,并且所有这些方法都得到了相同的结果(见上图)… 在此先感谢和最诚挚的问候, zainodis 更新12.11.2011 我尝试使用扩展名.txt而不是.xml将xml文件保存在原始文件夹中。 现在转换失败,出现OutOfMemoryexceptionoO。 我尝试了使用此线程的建议转换数据的不同方法 – 所有这些都导致OutOfMemoryException: 11-12 06:09:22.671: I/TestRunner(652): java.lang.OutOfMemoryError 11-12 06:09:22.671: I/TestRunner(652): at java.util.Scanner.expandBuffer(Scanner.java:2183) 11-12 06:09:22.671: I/TestRunner(652): […]

年轻的GC导致Metaspace增加,而不是Old Gen

从JDK7迁移到JDK 8时,我开始看到频繁的Full GC(具有更高的GC延迟)。 在分析了gc之后,发现在年轻的GC之后,元空间的使用增加了,而旧的使用率仍然相同。 我已将最大元空间大小(等于JDK7中的Perm Gen)设置为256MB。 当使用率达到210 MB左右时,将触发完整的GC。 我已经尝试将元空间最大大小设置为512MB,然后我也看到Metaspace Threshold导致Full GC。 为什么Young GC会导致元空间大小增长? JDK8引发了GC延迟。 使用JDK7,GC延迟通常低于100毫秒,而使用JDK8的全GC启动时间为800-1000毫秒。 这会影响我的应用程序性能。 我正在使用并行GC算法。 我怀疑在metaspace上的GC比Old gen GC要耗费更多时间。 有关为JDK8调优JVM的任何建议都将非常有用。 年轻的GC: S0 S1 EOM CCS YGC GCT FGC FGCT GCT LGCC GCC 0.00 40.28 99.78 21.95 56.28 – 149 6.647 2 3.276 9.924 Allocation Failure No GC 54.17 0.00 0.66 21.95 57.63 – 150 […]

使用–jars的spark-submit yarn-cluster不起作用?

我试图通过以下命令向CDH纱线集群提交火花作业 我已经尝试了几种组合,但一切都行不通…我现在所有的poi jar都位于我的本地/ root,以及HDFS / user / root / lib,因此我尝试了以下 spark-submit –master yarn-cluster –class “ReadExcelSC” ./excel_sc.jar –jars /root/poi-3.12.jars, /root/poi-ooxml-3.12.jar, /root/poi-ooxml-schemas-3.12.jar spark-submit –master yarn-cluster –class “ReadExcelSC” ./excel_sc.jar –jars file:/root/poi-3.12.jars, file:/root/poi-ooxml-3.12.jar, file:/root/poi-ooxml-schemas-3.12.jar spark-submit –master yarn-cluster –class “ReadExcelSC” ./excel_sc.jar –jars hdfs://mynamenodeIP:8020/user/root/poi-3.12.jars,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-3.12.jar,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-schemas-3.12.jar 如何将jar传播到所有群集节点? 因为以上都没有工作,并且工作仍然以某种方式无法引用该类,因为我不断得到相同的错误: java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory 相同的命令与“–master local”一起使用 ,没有指定–jars,因为我已将我的jar复制到/ opt / cloudera / parcels / CDH / lib / […]

除了对System.exit进行单个检查调整之外,与NO安全管理器相同的java SecurityManager

我不熟悉java安全管理器,因此想确认我的理解: 我有一个java进程随机停止(关闭钩子运行),即使没有人杀死它的痕迹。 因此,我决定安装一个安全管理器并覆盖checkExit(int status)以确保stop的原因不是调用System.exit() 。 基本上我写了这个: System.setSecurityManager(new SecurityManager() { @Override public void checkExit(int status) { Thread.dumpStack(); super.checkExit(status); } }); 我期待我的程序将像往常一样运行,唯一的变化是如果调用System.exit()则会转储堆栈跟踪。 我发现事实并非如此。 它无法从此安全exception开始: java.security.AccessControlException: access denied (“java.util.PropertyPermission” “config” “read”) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[na:1.8.0_74] at java.security.AccessController.checkPermission(AccessController.java:884) ~[na:1.8.0_74] at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[na:1.8.0_74] at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294) ~[na:1.8.0_74] at java.lang.System.getProperty(System.java:717) ~[na:1.8.0_74] at Main.main(Main.java:161) ~[na:na] 似乎SecurityManager不会复制默认行为,在阅读之后,它似乎应用了${JAVA_HOME}/jre/lib/security/java.policy下的默认策略,这是非常严格的。 没有安全管理器时,Java的真正默认行为是什么? 它是“允许一切”还是还有其他事情发生? 除了上面的单一调整之外,如果我想复制默认行为,我应该作为安全管理器安装什么? 在最后一点,我可以看到System.setSecurityManager()实际上需要一个java.lang.SecurityManager实例,这意味着我被迫使用该实现(依赖于策略文件)。 在该类中重写方法以复制NO安全管理器的实际默认行为的最有效方法是什么? 编辑:根据下面的讨论,这似乎做到了 System.setSecurityManager(new SecurityManager() […]