我在遗留应用程序中有代码和测试用例,可归纳如下:
@Test
public void testParseDate() throws ParseException {
String toParse = "Mo Aug 18 11:25:26 MESZ +0200 2014";
String pattern = "EEE MMM dd HH:mm:ss z Z yyyy";
DateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.GERMANY);
Date date = dateFormatter.parse(toParse);
//skipped assumptions
}
Run Code Online (Sandbox Code Playgroud)
该测试通过Java 8及以下版本.然而,随着Java 10向上,这导致了一个java.text.ParseException: Unparseable date: "Mo Aug 18 11:25:26 MESZ +0200 2014"
.
备案:另外de_DE
,异常也抛出了语言环境
de_CH
,de_AT
,de_LU
.
我知道使用JDK 9(JEP 252)更改了日期格式.但是,我认为这是破坏向后兼容性的颠覆性变化.摘录:
在JDK 9中,Unicode Consortium的公共区域设置数据存储库(CLDR)数据作为默认区域设置数据启用,因此您可以使用标准区域设置数据而无需任何进一步操作.
在JDK …
从我们的发行说明了解到的Java 9是
应用程序类加载器不再是java.net.URLClassLoader的实例(在以前的版本中从未指定过的实现细节).假定ClassLoader :: getSytemClassLoader返回URLClassLoader对象的代码需要更新.
这会破坏旧代码,它会扫描类路径,如下所示:
Java <= 8
URL[] ressources = ((URLClassLoader) classLoader).getURLs();
Run Code Online (Sandbox Code Playgroud)
哪个遇到了
java.lang.ClassCastException:
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to
java.base/java.net.URLClassLoader
Run Code Online (Sandbox Code Playgroud)
因此,对于Java 9+,以下解决方法被提议作为Apache Ignite项目的PR,它在JVM运行时选项中进行调整时可以正常工作:--add-opens java.base/jdk.internal.loader=ALL-UNNAMED
.但是,如下面的评论所述,这个PR从未合并到他们的主分支.
/*
* Java 9 + Bridge to obtain URLs from classpath...
*/
private static URL[] getURLs(ClassLoader classLoader) {
URL[] urls = new URL[0];
try {
//see https://github.com/apache/ignite/pull/2970
Class builtinClazzLoader = Class.forName("jdk.internal.loader.BuiltinClassLoader");
if (builtinClazzLoader != null) {
Field ucpField = builtinClazzLoader.getDeclaredField("ucp");
ucpField.setAccessible(true);
Object ucpObject = …
Run Code Online (Sandbox Code Playgroud) 我有两个安装了数据库的Linux服务器(A
和B
)PostgreSQL 9.5
.我按照文档中的说明配置了热备用模式.在此设置中,配置为主设备,处于热备用模式.这样做效果很好,表现得像预期的那样.A
B
现在,我想Java EE
通过Hibernate
/ JDBC
通过TomEE
数据源连接一个独立的应用程序(在不同的机器上运行)到这个数据库设置.
在PostgreSQL驱动文档状态,使多台主机可以在JDBC连接URL指定:
jdbc:postgresql://host1:port1,host2:port2/database
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
A
是关闭并B
手动切换到正常操作模式,我的应用程序是否仍然可以使用jdbc连接URL继续进行数据库操作,如上所述?注意:从我学到的各种来源,PostgreSQL
它不支持自动故障转移(除非第三方软件参与该过程 - 请参阅下面的评论).出于这个原因,需要手动执行故障转移,这对于这个特定的用例是可以的.
编辑-1:
我决定测试pgBouncer
(如评论中所建议的)解决方法.它适用于我的用例.我写了一个看门狗脚本,它自动执行手动步骤:
A
仍然存在并侦听传入的连接.B
到正常操作模式并让它成为新的主服务器并重新启动服务.pgBouncer
设置更改为指向B
而不是A
重新启动服务.但是,如果有人没有第三方软件的经验,我仍然会感兴趣吗?
我的任务是通过Office Javascript API在与Word 2007或更高版本兼容的Word文档(.docx)中发表评论.
我发现,没有直接的方法可以通过Microsoft API执行此操作.
由于我能够将OOXML传递给Word文档,我认为我可以使用它来发表评论.
我对Word文档结构进行了一些研究,发现注释存储在一个名为"comments.xml"的单独XML文件中,然后通过"document.xml"中的ID引用(我附上了相应的示例).
有没有编辑这个方式comments.xml
通过API,以便将Word文档中的注释,或者这是不是可能呢?
示例"document.xml":
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
mc:Ignorable="w14 wp14">
<w:body>
<w:p w:rsidR="00A9590C" w:rsidRDefault="0058668B">
<w:r>
<w:t>I am text.</w:t>
</w:r>
</w:p>
<w:p w:rsidR="0058668B" w:rsidRDefault="0058668B">
<w:commentRangeStart w:id="0"/>
<w:r>
<w:t>I am text with comment.</w:t>
</w:r>
<w:commentRangeEnd w:id="0"/>
<w:r>
<w:rPr>
<w:rStyle w:val="Kommentarzeichen"/>
</w:rPr>
<w:commentReference w:id="0"/>
</w:r>
</w:p>
<w:sectPr w:rsidR="0058668B">
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708"
w:gutter="0"/>
<w:cols w:space="708"/>
<w:docGrid w:linePitch="360"/>
</w:sectPr>
</w:body>
Run Code Online (Sandbox Code Playgroud)
示例"comments.xml":
<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud) 在过去的几个月里,我重新组织(重命名)了我项目的Maven模块.我发现了一些关于Jenkins如何处理构建作业生成的过时Maven模块(即,它们不再存在于pom.xml文件中)的意外行为.
这在以下屏幕截图中描述:
可以看出,跳过了几个模块(=灰色气泡).遗憾的是,从用户界面来看,我没有机会以任何方式删除它们.删除工作区也没有帮助.实际上,如果在pom结构中进行一个或多个模块的重命名,则存在于其他构建工作中的问题.
下一个屏幕截图显示了德语版的菜单选项.
尽管我使用了最新的Jenkins版本(2.23),但似乎没有可能从这个项目中清除ui/modules.
有没有人知道如何在不重新设置整个项目甚至完整的构建服务器安装的情况下删除这些过时的工件.
编辑-1:
Jenkins项目有一个正式的问题,这个问题似乎在一天之内没有得到解决.
EDIT 2:
我已经尝试使用问题中提到的工作http://hudson-installation/job/the-project/deleteAllDisabledModules
来获取删除视图.但是,此页面不存在.
我正在构建一个CLI工具,它集成了几个EJB模块.出于这个原因,我需要构建一个fat jar
,然后作为独立的应用程序执行.
但是,使用以下堆栈跟踪执行此操作(注意:fat jar
与其位于同一目录中)失败:java -jar
conf/openejb.xml
fat jar
INFORMATION - PersistenceUnit(name=demo, provider=org.hibernate.jpa.HibernatePersistenceProvider) - provider time 2706ms
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/MEJB!javax.management.j2ee.ManagementHome")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/MEJB")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/openejb/Deployer!org.apache.openejb.assembler.Deployer")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/openejb/Deployer")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/openejb/ConfigurationInfo")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/DemoServiceImpl!com.github.rzo1.service.DemoService")
INFORMATION - Jndi(name="java:global/DemoMain/demo-shade-1.0-SNAPSHOT/DemoServiceImpl")
INFORMATION - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@557c8e7e
INFORMATION - Closing DataSource: demoDS
INFORMATION - Closing DataSource: demoDSNonJTA
Exception in thread "Thread-0" java.lang.RuntimeException: org.apache.openejb.OpenEjbContainer$AssembleApplicationException: javax.enterprise.inject.spi.DeploymentException: couldn't start owb context
at com.github.rzo1.DemoMain.run(DemoMain.java:116)
at java.lang.Thread.run(Thread.java:745)
Caused …
Run Code Online (Sandbox Code Playgroud) 目前我正在试图找出,然后使用OWL,然后使用UML来描述软件工程过程中感兴趣的域.
我阅读了Atkinson的这篇论文,它非常好地概述了OWL和UML在语义和句法层面的差异和等同性.
但是,它没有提供一个明确的指示,在哪些用例中使用OWL而不是 - 例如 - 一个UML类图表可能更好.
它可能是底层开发过程,它决定了建模语言(例如模型驱动=去UML,本体驱动=去OWL),但对我自己来说,这个差异还不清楚吗?
在这两种语言中,我都可以建立一个术语,我作为本体工程师可以重复使用,以便从中推断出新的知识.作为软件工程师,我使用这个术语来构建(单个)系统.
那么OWL和UML之间的差异只是研究领域吗?或者我可以使用OWL来描述我的(单个)软件系统的构造吗?
而且,这就提出了一个问题,即选择哪种建模语言的决定只是由我试图实现的目标驱动的?
我想在Postgres 9.4数据库系统上使用版本4.2.21中的Hibernate通过JPA 2.0执行本机SQL查询.
基本上,根据我在stackoverflow上的最新帖子,我尝试将大量对象/记录放入"临时"桶中.
设置可以简化为以下设置,其中包含带有id字段和给定时间戳的表"MyObject":
CREATE TABLE myobject
(
id bigint NOT NULL,
lastseen timestamp without time zone,
)
Run Code Online (Sandbox Code Playgroud)
我应该执行查询的代码是这样的:
Query q = getEntityManager().createNativeQuery(
"select count(id),date_part('day', :startDate - c.lastseen) AS " +
"difference from myobject c " +
"group by date_part('day', :startDate - c.lastseen) order by difference asc");
q.setParameter("startDate", startDate);
List<Object[]> rawResults = q.getResultList();
//process the reuslts
Run Code Online (Sandbox Code Playgroud)
通过pgAdmin3使用示例日期执行此查询将按预期返回结果.
但是,如果我尝试通过Hibernate执行相同的查询作为本机查询,它会失败并出现以下异常:
Run Code Online (Sandbox Code Playgroud)Caused by: org.postgresql.util.PSQLException: FEHLER: column „myobject.lastseen“ must appear in the group by clause or be used in …
我有一个MongoDB查询,它在所有属性中搜索搜索变量中定义的值.它的工作方式如下:
db.collection.findOne({
$where: function() {
var search = 'searchstring';
for (var key in this) {
if (this[key] === search) {
return true;
}
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我想在查询之外定义搜索变量.
但是当我这样做时,我得到一个错误,它没有被引用(即范围问题):
"ReferenceError: search is not defined near '[key] === search
Run Code Online (Sandbox Code Playgroud)
如何使用或将变量传递给查询过滤器?
我正在运行PostgreSQL 9.3
(在热备用设置中)Ubuntu 14.04 LTS
.
我希望随着时间的推移显示表格的增长(例如元组数量).该表不包含"timestamp"(或等效于历史原因)列.
他们是否PostgreSQL 9.3
可以查询有关表中元组插入时间的信息?
我的数据采用以下格式:
data = [['@datumbox', '#machinelearning'],
['@datumbox', '#textanalysis'],
['@things_internet', '#iot'],
['@things_internet', '#h...'],
['@custmrcom', '#analytics123'],
['@custmrcom', '#strategy...123'],
['@custmrcom', '#1knowledgetweet'],
['@tamaradull', '#@bigbrother']]
Run Code Online (Sandbox Code Playgroud)
我想检查hashtag是否包含任何非字母表.如果是,则删除相应的行.
所需的输出是:
data = [['@datumbox', '#machinelearning'],
['@datumbox', '#textanalysis'],
['@things_internet', '#iot']]
Run Code Online (Sandbox Code Playgroud)
我想我需要使用re.sub(例如,re.compile('[^ a-zA-Z]')).这是我到目前为止:
newdata = []
for item in data:
regex = re.compile('[^a-zA-Z]')
if regex.match(item[1]):
newdata.append([item[0], item[1]])
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?