我在rails应用程序中使用单表继承,并希望显式设置实例的类型.
我有以下几点;
class Event < ActiveRecord::Base
class SpecialEvent < Event
Run Code Online (Sandbox Code Playgroud)
这是通过单表继承实现的.
SpecialEvent.new 按预期工作,但我希望能够做到这样的事情
Event.new(:type => 'SpecialEvent')
Run Code Online (Sandbox Code Playgroud)
所以我可以在应用程序中轻松创建不同的子类型.
然而,这并不工作,似乎设置:type到nil,没有价值我将其设置为; 我怀疑这是因为通过调用Event.new它会覆盖:type参数.
有没有人有这样做的好方法?
我有以下课程.
Class Item {
private BigDecimal amount;
....
}
Run Code Online (Sandbox Code Playgroud)
我如何可以验证量,它应该精度后只包含两个数字.即
2.19是正确的
和
2.292不正确
使用注释@javax.validation.constraints.Digits
以及如何显示自定义错误消息?
谢谢 :)
当一个事件没有出现在a +=或a 旁边时,编译器通常会窒息-=,所以我不确定这是否可行.
我希望能够通过使用表达式树来识别事件,因此我可以为测试创建事件监视器.语法看起来像这样:
using(var foo = new EventWatcher(target, x => x.MyEventToWatch) {
// act here
} // throws on Dispose() if MyEventToWatch hasn't fired
Run Code Online (Sandbox Code Playgroud)
我的问题有两个:
MyEventToWatch事件target?我有一个名为文件nochart.png在/drawable.
我怎样才能将其设置为ImageView?
chartImageView.setImageDrawable(R.drawable.nochart);
Run Code Online (Sandbox Code Playgroud)
不编译.
我将尝试简要描述我的Selenium框架,以便我可以解释我的问题.
我使用Selenium 2(当前版本2.3.1)+ testNG 5.14
我设置了testng.xml文件来并行运行测试套件中的测试,只有2个实例
出于日志记录的目的,我使用logback(我读过的是日志世界中最好的东西)
我的问题是,当检查应用程序日志时,我得到这样的东西:
18:48:58.551 [TestNG] INFO daastsetup.TestConfiguration - 从用户池中检索随机用户
18:48:58.551 [TestNG] INFO daastsetup.TestConfiguration - 从用户池中检索随机用户
18:48:58.551 [TestNG] DEBUG daastsetup.TestConfiguration - 创建用于访问DataBase的DataSource
18:48:58.551 [TestNG] DEBUG daastsetup.TestConfiguration - 创建用于访问DataBase的DataSource
18:48:58.552 [TestNG] DEBUG daastsetup.TestConfiguration - 启动SQL查询
18:48:58.552 [TestNG] DEBUG daastsetup.TestConfiguration - 启动SQL查询
18:48:59.613 [TestNG] TRACE daastsetup.TestConfiguration - 查询成功
18:48:59.613 [TestNG] TRACE daastsetup.TestConfiguration - 查询成功
正如您所看到的,无法看到同时运行的两个线程之间的差异.我的问题是,有没有办法我可以配置回溯设置,以便他们还添加一个数字或Id来识别正在运行的每个线程?
PD为了防止它有所帮助,我的logback.xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/selenium.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder> …Run Code Online (Sandbox Code Playgroud) 我希望这不是重复.我在这里检查了其他搜索,他们似乎都在谈论使用SimpleDateFormat以正确的TimeZone格式"显示"日期.
但是,我的问题是我获得了一个XMLGregorianCalendar对象,让我们在"CET"中说.
我必须从这个对象中找出格式,并将当前时间也发送到与服务器相同的TimeZone中.
例如:我需要一个XMLGregorianCalendar对象,以这种格式返回我(使用Timezone):
2012-09-19T15:23:36.421 + 02:00
所以我只是尝试了以下代码片段似乎只返回本地时区的时间:(
TimeZone utc = TimeZone.getTimeZone("CET");
GregorianCalendar gc = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
df.setTimeZone(utc);
System.out.println(" - Gregorian UTC [" + df.format(gc.getTime()) + "]")
XMLGregorianCalendar currServTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
System.out.println("currServTime is "+currServTime);
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要大量提高插入性能.示例:具有大约21K记录的文件需要超过100分钟才能插入.有理由可能需要一些时间,比如20分钟左右,但超过100分钟就太长了.
数据被插入3个表(多对多).Id是从序列生成的,但我已经用Google搜索并设置hibernate.id.new_generator_mappings = true并将allocationSize + sequence增量设置为1000.
此外,数据量根本不是特别的,文件是90 MB.
我已经用visual vm验证了大部分时间花在jdbc驱动程序(postgresql)和hibernate上.我认为该问题与子表中的唯一约束有关.服务层在插入之前进行手动检查(= SELECT).如果记录已存在,则重用它而不是等待约束异常.
因此,对于特定文件的总结,每个表将有1个插入(可能不同但不适用于此文件,这是理想(最快)的情况).这意味着总共60k插入+ 20k选择.仍然超过100分钟似乎很长(是的硬件计数,它是在一个简单的PC驱动器7200转,没有ssd或raid).然而,这是对先前应用程序(普通jdbc)的改进版本,在该应用程序上,此硬件上的相同插入大约需要15分钟.考虑到在两种情况下花费大约4-5分钟用于"预处理",增加是巨大的.
有什么提示可以改进吗?有没有批量加载功能?
如何在启动spring boot应用程序后自动启动浏览器.是否有任何侦听器方法回调以检查webapp是否已部署并准备好为请求提供服务,以便在加载浏览器时,用户可以看到索引页面并可以开始与webapp交互?
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
// launch browser on localhost
}
Run Code Online (Sandbox Code Playgroud) 如何使用java 8添加所有内容?
processeditemList is a Map<Integer, Map<Item, Boolean>>
Run Code Online (Sandbox Code Playgroud)
至于现在我在做:
List<Item> itemList = Lists.newLinkedList();
for (Map<Item, Boolean> entry : processeditemList.values()) {
itemList.addAll(entry.keySet());
}
return itemList;
Run Code Online (Sandbox Code Playgroud) 我想将MapStruct映射器与Spring的Conversion模型结合起来。因此,我将每个Mapper接口声明为Spring的扩展Converter:
@Mapper
public interface CarMapper extends Converter<Car, CarDto> {
@Override
CarDto convert(Car car);
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以通过注入standard来使用mapper bean ConversionService:
class CarWarehouse {
@Autowired
private ConversionService conversionService;
...
public CarDto getCarInformation(Car car) {
return conversionService.convert(car, CarDto.class);
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但是我想知道是否有一种方法可以避免通过uses属性直接将一些Mappers注入到其他对象中。我想要做的是告诉映射到use了ConversionService雇用其他制图。但是,由于ConversionService的convert方法与MapStruct的映射方法的标准模式不匹配,因此代码生成插件无法识别在寻找子映射时可以使用该服务。基本上,我想写的是
@Mapper(uses=ConversionService.class)
public interface ParentMapper extends Converter<Parent, ParentDto>
Run Code Online (Sandbox Code Playgroud)
代替
@Mapper(uses={ChildMapper1.class, ChildMapper2.class, ChildMapper3.class})
public interface ParentMapper extends Converter<Parent, ParentDto>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
编辑
既然有人问过了,可以说我有一个CarMapper上面的定义,它的类型Car和CarDto …
java ×4
spring ×2
android ×1
annotations ×1
bigdecimal ×1
bulkinsert ×1
c# ×1
drawable ×1
imageview ×1
java-8 ×1
java-stream ×1
linq ×1
logback ×1
mapstruct ×1
png ×1
spring-boot ×1
testng ×1
time ×1
timezone ×1
webdriver ×1