谁能告诉我为什么
System.out.println("test".replaceAll(".*", "a"));
Run Code Online (Sandbox Code Playgroud)
结果是
aa
Run Code Online (Sandbox Code Playgroud)
请注意,以下结果相同:
System.out.println("test".replaceAll(".*$", "a"));
Run Code Online (Sandbox Code Playgroud)
我已经在java 6和7上测试了它,两者似乎都表现得一样.我错过了什么或者这是java正则表达式引擎中的错误吗?
(免责声明:我不是想象力的安全专家,也不是Windows专家)
建立:
理想情况下,我们希望在最后修复此问题,但如有必要,可以向客户提出修复.
客户端服务器必须通过HTTPS连接连接到我们的服务器,但它总是失败,wireshark显示以下对话:
> TLSv1: Client Hello
< TLSv1: Alert (21): Unexpected Message
Run Code Online (Sandbox Code Playgroud)
根据RFC(http://www.ietf.org/rfc/rfc2246.txt),警报(21)指的是解密失败,而且我在wireshark中看到的,客户端提出的密码都不是通过JRE 1.6(按照支持http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SupportedCipherSuites)在努力重现误差,以便能够检查它更接近,我测试了一些其他软件:
对于我未经训练的眼睛,这强化了这样一种观点,即不兼容的密码命题是Windows仅支持JVM不支持的密码套件的根本原因(对于TLSv1).我已经安装了充气城堡作为java.security文件中的附加提供程序无济于事.我搜索了高低,只找到了一个参考,可能是websphere支持TLSv1的Windows密码,但无法下载独立的提供程序来测试它.我们在JVM上运行的软件不支持JRE 1.7,因此升级不是一个选项(也许安全提供程序可以安全降级?但我还没有找到它的下载)我发现无法添加密码编写c ++代码(我已经玩过上面提到的注册表设置没有效果).
总而言之,我想知道以下事情之一是否会解决它以及如何实现它们:
当然也赞赏任何其他解决方案.
编辑
Java版本是Java version (64 bit): 1.6.0_19-b04.
建议的密码列表是:
安装了无限强度加密策略文件.我试图javax.net.debug=all从控制台设置和启动服务器,没有出现额外的输出.我已经sun.security.ssl.allowUnsafeRenegotiation=true无济于事了.
编辑2
事实证明,我们使用的软件使用HTTP的自定义堆栈而不是默认值.虽然我不确切知道TLS请求的哪一部分触发了错误(看到大多数TLSv1握手确实成功),但是发布了修复程序似乎解决了这个问题.
感谢您的反馈,如果徒劳无功,那将是一件非常有趣的事情.活到老,学到老.
我有基于网络的编程(php,jsf,...)的背景和swing和swt的最小背景.
目前我正在寻找一个新的桌面应用程序的java fx 2.x,我想知道有关构建实际GUI的最佳实践.我可以用fxml去声明路线,或者我可以去程序路线.目前对于一些快速原型设计我正在做后者,但我想知道是否有令人信服的理由使用fxml.
UPDATE
最后,我使用FXML路线进行平均大小的项目,即使场景构建器测试版在我的linux系统上仍然有些不稳定,但事实证明它远远优于原始程序原型.到目前为止,最大的优势是很多元素(尤其是hbox,vbox,标签,标签......)不再混乱我的代码,因为它们只存在于fxml中.
我正在创建一个依赖于动态创建/管理各种资源(如jms队列,Web服务端点,jdbc连接)的应用程序......我有一个java EE背景,我目前正在研究jboss 7服务器但是我发现以编程方式控制这些事情变得越来越困难.最难控制的事情似乎是网络服务.我需要能够动态生成WSDL(和XSD),管理端点,肥皂处理程序等,系统似乎似乎没有设置这样做.
其他应用程序服务器似乎并没有真正提供任何突破性的解决方案,所以我想知道是否Java EE不是解决这个特定问题的最佳解决方案?
是否有应用程序服务器允许您这样做?还有其他技术吗?我是否应该推出集成了所有单独模块的自定义解决方案(例如jms服务器,Web服务器等......)?
UPDATE
为了澄清,大多数Java EE内容是通过注释和XML配置的混合来完成的.但是,假设您有每个资源的POJO和/或jar/war/...
假设我有一个@WebServiceProvider bean,它可以重用于多个输入/输出组合(例如,因为它动态地重定向内容).我需要能够动态部署提供商的新"实例".这意味着我不想复制代码并重新部署它,我只想在类路径上获取一个现有bean,并使用不同的配置设置多次部署它.这也意味着我需要动态管理WSDL.最终结果应该是一个web服务,其工作方式非常类似于应用程序服务器上的标准Web服务,具有必要的集成安全性,SOAP处理程序,......
我想在应用程序服务器代码的某个时刻,必须有一个类"WebserviceManager",它有一个像"createWebservice(...)"这样的方法,只要它发现一个webservice注释,它就会被部署模块实际使用.我想访问该方法和类似的方法来创建jdbc连接,jms队列,...
内存映射文件(根据规范)在很大程度上取决于操作系统的实际实现,并且已经在javadoc中解释了许多这些未知方面.但是我有一些额外的问题,不知道在哪里寻求答案.
假设application A将文件映射到内存position=0中size=10.
我会假设操作系统需要连续的内存来映射它吗?或者这取决于实施?
现在假设我们有一个application B映射position=0到size=11.前10个字节是共享的还是完全不同的映射?这与连续记忆问题有关.
如果我们想要为IPC使用映射文件,我们需要知道数据如何在其他应用程序中反映出来,所以如果B写入内存,确实会A看到这个?
但是,当我阅读规范时,这取决于操作系统.这使得用于通用IPC变得危险,因为它会破坏可移植性吗?
另外假设操作系统确实支持它,所以B写入内存,A看到变化,如果我们这样做会发生什么:
B.write("something");
A.write("stuff");
A.read();
Run Code Online (Sandbox Code Playgroud)
到底会A读到什么?
或者换句话说:
如何管理文件指针?
如何使用并发,是否有跨应用程序锁定?
我们使用一个专注于Java的工具,它在内部使用JMS并与外部Java软件通信.我们现在必须为C#应用程序设置一个新接口.我们的JMS提供程序提供了一个应该可以工作的C#实现,但我不完全确定JMS是这种情况下的方法.它将在C#应用程序中引入新的特定于供应商的依赖关系,以用于实现的细节和客户端的支持.
一些谷歌搜索引导我到STOMP,这似乎是一个由多个支持JMS的消息代理(hornetq,activemq,...)支持的已建立的线级协议,但在C#中似乎明显缺乏实际的客户端(和java到在某种程度上).如果不深入研究,我也不能完全确定"文本"的重点在哪里发挥作用?它不支持二进制对象吗?
另一种解决方案可能是AMQP,这是另一种线级协议,但1.0规范尚未发布,我们厌倦了实施4年前的0.9.1规范,因为它似乎在1.0中发生了很大变化.
考虑到安全性,支持,事务性,标准合规性,可移植性等,哪种解决方案最适合语言间异步消息传递...请注意,具有适当WS-*的soap不适用于此特定接口.
编辑1:我见过跨平台,跨语言邮件系统等问题?但他们似乎专注于一种适用于多种语言的特定工具.我实际上正在寻找一个符合标准的协议,该协议可由多个供应商实施或由多个供应商实施.
默认的ByteArrayOutputStream似乎是一个相当浪费的实现,我想知道是否有任何具体原因.首先,它在后端保留1个固定阵列.如果它已满,它会创建一个新数组并将旧数组复制到其中(更多内存+更多开销).然后,如果你执行toByteArray(),它实际上会再次复制数组.
字节缓冲区很好,但也固定大小,它们只提供单个阵列上的一些,仅此而已.
我想知道创建一个使用一个或多个支持数组的类(或者它是否已存在,请指向我)是否有趣.它不是每次都要重复扩展数组,而是添加一个新的后备数组.要阅读您可以轻松创建一个类似inputstream的界面,同时您可以公开像outputstream这样的界面进行写入
关于这样的事情是否已经存在的任何反馈,如果没有:为什么?它有一些我不会看到的缺点吗?
我正在构建一些我希望作为OSGi包公开的模块,而没有任何与OSGi库的实际依赖关系.看来这可能是使用声明性服务选项.
但是因为我对OSGi很新(至少在创建捆绑包方面)我想测试它是否一切正常,为此我想建立一个小的嵌入式OSGi环境.
目前我有一个导出API的bundle,还提供了单个接口的stub实现.
我按照以下教程设置了一个环境:
嵌入式felix实现似乎正常工作,但有两个问题:
Bundle bundle = felix.getBundleContext().installBundle("/path/to/bundle.jar")
bundle.start();
System.out.println(bundle.getRegisteredServices());
Run Code Online (Sandbox Code Playgroud)
这打印出来,null所以当捆绑看起来好了,它似乎没有暴露任何服务.
其次,我想知道是否必须做一些特殊的事情才能使声明性服务更新并运行.我的maven依赖是:
<dependencies>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
基于此处的电子邮件主题:http://mail-archives.apache.org/mod_mbox/felix-users/201111.mbox/%3CAE48C9B8172EFC48A028B60E8D6F96660143A5F336@sausexmbp02.amd.com%3E
我试图将包添加到felix启动属性:
map.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "org.apache.felix.scr; version=1.6.2");
Run Code Online (Sandbox Code Playgroud)
然而,乍一看这似乎有点乐观.如何为嵌入式felix引擎启用声明性服务?
我在javafx寻找一个丰富的textarea.我已经尝试过Tomas Mikula的RichTextFX组件,但它对我的需求来说太麻烦了.
我在想是否可以使用SwingNode类插入一个swing JTextPane.
到目前为止,它实际上工作,我可以看到JTextPane中的文本和它周围的JScrollPane甚至工作.JTextPane上的mouselistener似乎也正确地为鼠标事件触发,但除此之外......没有任何效果.
没有光标指示当前位置,没有办法用鼠标"点击"改变位置,选择文字,...
关键事件根本没有到达(使用keylistener)
是否可以在javafx中使用JTextPane,如果是这样,我缺少什么?
我们使用apache poi 3.8来解析excels.我们需要能够检测(并跳过)隐藏的行,因为它们往往在我们的用例中包含垃圾数据.
这似乎应该工作:
row.isFormatted() && row.getRowStyle().getHidden()
Run Code Online (Sandbox Code Playgroud)
但似乎从来没有任何行级格式(getRowStyle()总是返回null).作为最后的手段,我们认为检查单元格样式可能有效:
for (int i = 0; i < row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell != null && cell.getCellStyle() != null && cell.getCellStyle().getHidden())
...
Run Code Online (Sandbox Code Playgroud)
但是对于我们获得的每一行(上面的for循环中的自定义输出):
Cell 0 is not hidden org.apache.poi.hssf.usermodel.HSSFCellStyle@1b9142d0 / false
Run Code Online (Sandbox Code Playgroud)
"getHidden()"不起作用还是不起作用?还有另一种检测隐藏行的方法吗?(隐藏的列也是一个很好的奖励,但相关性稍差的atm)