在webservice调用中,我想用这个JSON结构返回我的对象.
{
"date" : "30/06/2014",
"price" : {
"val" : "12.50",
"curr" : "EUR"
}
}
Run Code Online (Sandbox Code Playgroud)
我想将这个JSON代码映射到这个Java结构(使用joda-time和joda-money):
public class MyResponse {
LocalDate date;
Money price;
}
Run Code Online (Sandbox Code Playgroud)
我的网络服务目前看起来像这样:
@javax.ws.rs.POST
@javax.ws.rs.Path("test")
@javax.ws.rs.Produces({MediaType.APPLICATION_JSON})
@javax.ws.rs.Consumes({MediaType.APPLICATION_JSON})
public MyResponse test(MyRequest request) {
MyResponse response = new MyResponse();
response.setDate(LocalDate.now());
response.setMoney(Money.parse("EUR 12.50"));
return response;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我在哪里注册一个自定义处理程序来格式化我想要的日期以及货币表示?
我正在寻找Java中的diff实现.我已经看到Python有自己的SequenceMatcher(带有difflib),这正是我需要的...在Java中.
有什么搬运工具吗?或者是否有其他类/库在Java中执行相同的操作?
如果没有,我在哪里可以找到该difflib的源代码(如果在语音中是免费的)来在Java中自己实现SequenceMatcher?
不幸的是,Apache Commons Lang对我帮助不大.
谢谢!
我目前用于检查python中数字素数的算法可以减慢1000万到10亿之间的数字.我希望它得到改善,因为我知道我永远不会得到超过10亿的数字.
上下文是我无法获得足够快的解决方案来解决项目Euler的问题60:我在75秒内得到问题的答案,我需要在60秒内完成.http://projecteuler.net/index.php?section=problems&id=60
我的内存很少,所以我无法存储10亿以下的所有素数.
我目前正在使用以6k±1调谐的标准试验部门.还有什么比这更好的吗?我是否已经需要使用Rabin-Miller方法来获得如此大的数字.
primes_under_100 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
def isprime(n):
if n <= 100:
return n in primes_under_100
if n % 2 == 0 or n % 3 == 0:
return False
for f in range(5, int(n ** .5), 6):
if n % f == 0 or n % (f + 2) == 0:
return False …
Run Code Online (Sandbox Code Playgroud) Java规范是否定义了常量的原理,还是留给了推荐角色?
如果在规范中定义,它的定义是什么?
具体而言,以下任何或所有例子都被视为常数吗?如果确实存在部分或全部,是否按照规范或任何其他官方建议进行了考虑?
public static final int ONE = 1;
public static final double TWO = 2.0d;
public static final String THREE = "three";
public static final ImmutableList<Integer> ONE_TWO_THREE = ImmutableList.of(1, 2, 3);
public static final Logger logger = LogManager.getLogManager().getLogger(ThisClass.class);
Run Code Online (Sandbox Code Playgroud) 我有一个字符串代表日期(有或没有时间)喜欢13/12/2017
或13/12/2017 15:39:51
所以我正在尝试将java 8 DateTimeFormatter与可选部分一起使用.
该代码有效
LocalDateTime localDateTime = LocalDateTime.parse("13/12/2017 15:39:51",DateTimeFormatter.ofPattern("dd/MM/yyyy[ HH:mm:ss]"));
System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss")));
13/12/2017
15:39:51
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么那个没有
LocalDateTime localDateTime = LocalDateTime.parse("13/12/2017",DateTimeFormatter.ofPattern("dd/MM/yyyy[ HH:mm:ss]"));
Run Code Online (Sandbox Code Playgroud)
给我
Exception in thread "main" java.time.format.DateTimeParseException: Text '13/12/2017' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2017-12-13 of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
...
Run Code Online (Sandbox Code Playgroud)
甚至还有
LocalDateTime localDateTime = LocalDateTime.parse("13/12/2017",DateTimeFormatter.ofPattern("dd/MM/yyyy"));
Run Code Online (Sandbox Code Playgroud)
它不适用于相同的例外.
我有以下XSD结构:
<xs:schema xmlns:ns="http://abc/">
...
<xs:element name="abc">
<xs:complexType>
<xs:sequence>
<xs:element ref="map"/>
</xs:sequence>
</xs:complexType>
</xs:element>
...
<xs:element name="map">
<xs:complexType>
<xs:sequence>
<xs:element name="entry" type="ns:MapEntryType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="entry">
<xs:selector xpath="entry"/>
<xs:field xpath="key"/>
</xs:unique>
</xs:element>
<xs:complexType name="MapEntryType">
<xs:sequence>
<xs:element name="key" type="xs:string"/>
<xs:element name="value" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
这是在做它的工作.
map
现在必须根据包装器中的元素调用该元素,因此有时map
,有时properties
,有时options
等名称.
因此,我想要对该map
元素进行泛化.
我尝试过以下操作:
map
一个xs:complexType
和变化ref
来type
.
xs:unique
不被接受和失败map
一个xs:complexType
,换ref
到type
和移动xs:unique …
我有大约一百万个元素的订单List
,我正在寻找与特定条件匹配的最后一个元素,但条件计算起来很繁重,所以最好从末尾开始。总有大致log(n)
匹配的元素,最少为 1 个。
我可以手动完成:
List<Element> elements = ...;
Element element = null;
for (var it = elements.listIterator(elements.size()); it.hasPrevious(); ) {
var candidate = it.previous();
if (heavyConditionPredicate.test(candidate)) {
element = candidate;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用Stream
s 来编写此代码,这样就heavyConditionPredicate
不会针对列表中的每个元素进行测试?如果 HeavyConditionPredicate 的计算量不会那么大,我会使用替代方法,但我没那么幸运。
请注意,elements
可以是 的任何类型List
,并且我得到的不一定实现RandomAccess
,因此通过索引访问列表可能也很昂贵。
我目前有一个内部使用的自定义日志管理器java.util.Formatter
.主要问题是它不是很有用:每个应用程序在一个文件中的所有内容,无法在数据库中添加特定日志,无法发送邮件,......
所以我希望能够增加我们的日志记录系统的功能.经过几次测试后,Log4J正是我现在所需要的.但是我想避免将来再次重新改变它的痛苦,所以我打算在Log4J上使用slf4j.
即使我已准备好在我的所有代码库中进行大搜索/替换以使用slf4j,我还没准备好检查每个日志语句并重新格式化它以使用{}
slf4j 的格式.
所以我的问题是:如何使用slf4j接口并告诉它内部应该使用a java.util.Formatter
而不是默认值,最好是在一个地方(意味着不在每个类或包中)?
注意:所有关于表演的答案或说我不应该使用juFormatter的答案都将被抛弃:我需要一个务实的解决方案来解决我的问题,而不是开始辩论.
我有这个用例非常类似于Guice的机器人腿例子,除了我不知道我有多少"腿".因此,我无法使用机器人腿示例所需的注释.
我期望在带有Guice的Multibindings扩展的java.util.Set中收集所有这些"leg".
从技术上讲,在PrivateModule中,我想直接将实现作为Multibindings扩展提供的集合的元素公开.我只是不知道该怎么做.
有关参考和代码示例,请参阅此处的robot-legs示例:http://code.google.com/p/google-guice/wiki/FrequentlyAskedQuestions#How_do_I_build_two_similar_but_slightly_different_trees_of_objec
这是我的确切用例:
我有以下内容:
// Main application
public interface MyTree {...}
public interface MyInterface {
public MyTree getMyTree() {}
}
public abstract class MyModule extends PrivateModule {}
public class MyManager {
@Inject MyManager (Set<MyInterface> interfaces){ this.interfaces = interfaces }
}
public class MainModule extends AbstractModule {
public void configure () {
// Install all MyModules using java.util.ServiceLoader.
}
}
// In expansion "square.jar"
public class SquareTree implements MyTree {...}
public class SquareImplementation implements MyInterface { …
Run Code Online (Sandbox Code Playgroud) 我有这个相当大的代码库(+/- 500k行).我正在查找它以查找使用单个参数的所有方法调用,并且该参数是特定类型.
这意味着,我希望能够找到如下方法调用:
public class Foo { }
public class Bar { }
public class Doer{
public void doSomethingFoo(Foo foo) { }
public void doSomethingObject(Object object) { }
}
public class Usage {
Doer doer = new Doer();
public doSomething() {
Foo anObject = new Foo();
Bar bar = new Bar();
doer.doSomethingFoo(anObject);
doer.doSomethingObject(anObject);
doer.doSomethingObject(bar);
}
}
Run Code Online (Sandbox Code Playgroud)
由于两个doer.doSomethingFoo(anObject)
和doer.doSomethingObject(anObject)
被称为,这两个声明,应搜索将返回.同样,doer.doSomethingObject(bar)
不归还.当然,我不知道doer
存在.
我正在尝试使用IntelliJ的结构搜索来执行此操作.我使用了以下模板$Instance$.$Method$($Parameter$)
,其中包含以下参数:
$Instance$ -> Text/regexp = .*
$Method$ -> Text/regexp = .*
$Parameter$ -> …
Run Code Online (Sandbox Code Playgroud)