Java,XMLEvent位置字符

我正在使用StAX XMLEventReader解析以下String: final String xmlstr = “TheName”; 我正在观察event.getLocation().getCharacterOffset()值并得到一些奇怪的行为:虽然在元素声明之后的位置报告了START_ELEMENT的索引(例如,上下文元素的索引9),但是CHARACTERS事件为“据报道名称“在索引32上。为什么? 有没有办法纠正?

Javagenerics方法约束 – 从约束中排除类型以防止擦除问题?

我试图基于类型约束重载方法。 代码看起来像这样: protected static void addComponent(List factors, T component) { … } protected static void addComponent(List factors, T conditionalComponent) { …. } ComponentTemplate是一个抽象类, ConditionalComponent是一个接口。 这两种方法可以将组件添加到组件列表中。 在组件实现ConditionalComponent的情况下,将使用其他方法来确定是否应添加特定组件。 当对象未实现ConditionalComponent时,将使用完全不同的方法。 问题是这些方法具有相同的擦除(根据RAD,当然拒绝编译)。 有没有办法定义第一个方法,以便它排除任何扩展ComponentTemplate和ConditionalComponent对象? 我想象过这样的事情: protected static void addComponent(List factors, T component) { … } 但是,当然,这不起作用(它不是有效的语法)。 我正在尝试做什么,或者是否有解决方法?

如何访问证书扩展(信息)值?

我有一个由变量访问的X509Certificate … 当我试图获取证书的详细信息时,我设法通过提供的function轻松获得CriticalExtensions值。 但是我想要达到的是无关键扩展,它存储在certifcate中并由Object ID#2.5.29.32表示 我想要访问的是政策标识号,如下图所示: http : //i.stack.imgur.com/xo8zX.png 我使用了以下function cert.getExtensionValue(“2.5.29.32”); 但它没有给我价值..任何人都可以告诉我我做错了什么? PS:我正在使用java.security.cert.X509Certificate;

Java:检测给定字符编码的不可显示字符

我目前正在开发一个应用程序来validation和解析CSV文件。 CSV文件必须以UTF-8编码,尽管有时我们会以错误编码方式获取文件。 CSV文件很可能包含德语字母(Ä,Ö,Ü,ß)的特殊字符,因为CSV文件中的大多数文本都是德语。 对于validation器的一部分,我需要确保该文件是UTF-8编码的。 只要不存在特殊字符,解析时很可能没有问题。 到目前为止我所尝试的是将文件作为字节读取并使用一些库来检测(或猜测)编码。 我尝试了这篇博文的大部分可能性: http : //fredeaker.blogspot.com/2007/01/character-encoding-detection.html 但我尝试的所有库都没有返回正确的编码,因此我无法解析特殊字符。 现在问我的问题:有没有办法确定像UTF-8这样的给定字符编码来检测未正确编码的字符? 所以基本上(Eclipse)控制台中显示的字符作为问号标记。 或者有没有其他方法来正确确定字符编码? 我只需要知道它是否是UTF-8。 提前谢谢大家的帮助! 🙂 最诚挚的问候,罗伯特

使用变量值作为jstl中的参数调用另一个变量

逻辑是这样的: 因为${vehicle} = “car”值也是变量的名称,其值为“ferrari”,我使用${‘${vehicle}’}间接访问它,但它似乎不起作用。 有人可以帮我弄这个吗。 谢谢

java堆内存管理内存不足

当一个netty异步服务器和客户端项目在linux上运行时,它会耗尽所有可用的内存,如下所示: 所以我在Windows上运行它,JMC显示堆如下: 我的问题是:为什么Windows和Linux的行为不同,有没有我可以配置linux jvm以释放堆内存? 为什么在Windows(GC)中有一个堆释放? 如何找出占用如此多内存的可疑代码? 编辑 :linux是4G,windows是8G,但我不认为绝对值会导致运行结果的差异。 Project不直接处理raw bytebuff,它使用HttpServerCodec和HttpObjectAggregator进行bytebuf。 在linux中运行的命令是java -jar xx.jar 。 我不仅想知道为什么不同,为什么锯齿 ,还要知道如何找到占据如此多记忆的那个 。 JMC显示了另一个数字,我不知道为什么一个线程可以有这么高的块数。 netty线程IO有一个99行71ms。 更新:现在我想找到代码的哪一部分占用了这么多内存 。 JMC堆显示EDEN SPACE非常高,我发现它并发现EDEN SPACE是用于new对象的。 最初,该项目使用了spring-boot,它有tomcat servlet 3.0作为容器和apache httpclient池用于客户端,现在只使用netty异步服务器和netty异步客户端改变了这些部分,而其他部分仍然存在(仍然使用spring for豆管理)。 所有请求共享Netty服务器和客户端处理程序(处理程序是单例spring bean)。 由于这么小的变化,我不相信new对象的数量会显着增加,因为它以1.35G内​​存结束 更新分别运行netty和springboot项目后,我获得了更多的统计数据: OS内存8G。 springboot版项目:PS老一代:容量= 195MB; 二手= 47MB; 使用率为24%。 它有692,971个对象,总大小为41,848,384。 OS存储器16G。 netty版项目:PS老一代:容量= 488MB; 使用327MB; 67%使用。 它有1,243,432个对象,总大小为221,427,824。 netty版本:堆转储显示它具有279,255个类io.netty.buffer.PoolSubpage实例,而类似org.springframework.core.MethodClassKey类的第二个最多7,222个实例。 两个版本都有服务(我们自己的类)对象有限,不超过3000。 我试图在4G内存linux上运行-Xmx1024m ,仍然会导致同样的内存不足问题。

JSONObject.append到对象 – 结果是嵌套数组?

下面的代码生成一个嵌套数组,作为包含三个项的键的结果: import org.codehaus.jettison.json.JSONObject; // … JSONObject ret = new JSONObject(); for (Key key:keys) ret.append(“blocked”,key.id()); 结果是: {“blocked”: [[[“1″],”2″],”3”]} 这是预期的吗? 如果是,我如何构建一个逐项添加的普通数组?

如何改变键值对?

我有一组值需要在需要时进行洗牌。 我不知道哪种变量类型最适合我。 数据实际上是基于键值结构。 100 “white” 200 “black” 300 “red” 就像那样。 我想要做的是根据我还不知道更改键值对,一些算法。但是它们需要像这样改组,但是洗牌需要不是随机的 ,所以我可以在需要时还原数据。 100 “red” 200 “white” 300 “black” 我真的不知道我的方法应该如何解决。 我应该使用HashTable还是其他东西,我该如何动态地将它们混洗? 任何帮助表示赞赏

Java Swing:JWindow出现在所有其他进程窗口后面,并且不会消失

我正在使用JWindow在应用程序启动期间显示我的启动画面。 但它不会出现在所有窗口的前面,它也不会消失。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JWindow; public class MySplash { public static MySplash INSTANCE; private static JWindow jw; public MySplash(){ createSplash(); } private void createSplash() { jw = new JWindow(); JPanel content = (JPanel) jw.getContentPane(); content.setBackground(Color.white); // Set the […]

为按钮创建键盘快捷键

我有一个JTable ,它有一个删除按钮来删除它的行。 我想创建一个快捷方式,例如当用户选择一行并按下键盘上的“删除”按钮时,该行应该被删除。 我的JButton1完全删除了我的JButton1 。 if (e.getSource() == KeyEvent.VK_DELETE) { // Delete row Method } 但它不起作用。