shopkeeper 表有以下字段:
id (bigint),amount (numeric(19,2)),createddate (timestamp)
Run Code Online (Sandbox Code Playgroud)
比方说,我有上表.我想获取昨天的记录并通过将金额打印到美分来生成报告.
一种方法是在我的java应用程序中执行计算并执行简单查询
Date previousDate ;// $1 calculate in application
Date todayDate;// $2 calculate in application
select amount where createddate between $1 and $2
Run Code Online (Sandbox Code Playgroud)
然后遍历记录并在我的java应用程序中将金额转换为美分并生成报告
另一种方法是在sql查询本身中执行计算:
select cast(amount * 100 as int) as "Cents"
from shopkeeper where createddate between date_trunc('day', now()) - interval '1 day' and date_trunc('day', now())
Run Code Online (Sandbox Code Playgroud)
然后遍历记录并生成报告
在某种程度上,我的所有处理都是在java应用程序中完成的,并触发了一个简单的查询.在其他情况下,所有转换和计算都在Sql查询中完成.
上面的用例只是一个例子,在实际情况中,表可以有许多列需要处理类似的类.
你能告诉我哪种方法在性能和其他方面更好,为什么?
有人可以解释每个连接的每个请求和线程的线程是什么?servlet工作的模型是什么?如何分配线程来处理HTTP请求?是线程/请求还是连接?
让我们说如果我想在我Servlet的doGet()方法中异步执行一个耗时的任务,我会使用Java执行程序启动一个新线程,以便在一个单独的线程中完成冗长的计算,并立即发送响应.
现在这样做是否确保我已经释放了处理我的线程,HttpServletRequest或者它仍然被使用,因为子线程仍在运行?
我想通过在普通控制器上启用Spring Boot中的异步控制器来分析我可能看到的改进
所以这是我的测试代码.一个API返回Callable,另一个API是普通控制器API.两个API都阻止了10个模拟长时间运行的任务
@RequestMapping(value="/api/1",method=RequestMethod.GET)
public List<String> questions() throws InterruptedException{
Thread.sleep(10000);
return Arrays.asList("Question1","Question2");
}
@RequestMapping(value="/api/2",method=RequestMethod.GET)
public Callable<List<String>> questionsAsync(){
return () -> {
Thread.sleep(10000);
return Arrays.asList("Question2","Question2");
};
}
Run Code Online (Sandbox Code Playgroud)
我用这个配置设置了嵌入式tomcat,即只有一个tomcat处理线程:
server.tomcat.max-threads=1
logging.level.org.springframework=debug
Run Code Online (Sandbox Code Playgroud)
对/ api/1的期望 因为只有一个tomcat线程,所以在10secs之后处理这个处理将不会受理另一个请求
结果: 满足期望
/ api/2的期望 因为我们立即返回一个可调用的,所以单个tomcat线程应该可以自由处理另一个请求.Callable将在内部启动一个新线程.因此,如果您点击相同的API,它也应该被接受.
结果: 这没有发生,直到可调用完全执行,没有进一步的请求被接受.
问题 为什么/ api/2表现不如预期?
我使用Spring amqp 1.1版本作为我的java客户端.我有一个大约有2000条消息的队列.我想要一个检查此队列大小的服务,如果它是空的,它将发出一条消息,说"所有项目已处理".
我不知道如何获得当前的队列大小?请帮忙
我用Google搜索并找到了早期版本1.0中出现的类"RabbitBrokerAdmin".我认为它现在不存在于1.1中.
获取当前队列大小的任何指针?
我有以下对象结构:
@Document(collection = "user")
@TypeAlias("user")
public class User {
@Id
private ObjectId id;
private Contact info = new Contact();
}
Run Code Online (Sandbox Code Playgroud)
这是联系人pojo:
public class Contact {
@Indexed(unique = true)
private String mail;
}
Run Code Online (Sandbox Code Playgroud)
但由于我不知道的一些原因,我没有看到Spring-data为属性info.mail创建一个唯一的索引
总而言之,我有这个用户对象的json结构: {_ id:xxxxx,info:{mail:"abc@xyz.shoes"}}
我想使用具有上述pojo结构的Spring数据在info.mail上创建一个唯一索引.请帮忙.
From Java driver, I want to save a document that looks like below json in MongoDb
{ "ts" : Timestamp(1421006159, 4)}
Run Code Online (Sandbox Code Playgroud)
Options I tried.
Option 1: Map doc= new HashMap(1);
doc.put("ts", new BSONTimeStamp());
Run Code Online (Sandbox Code Playgroud)
It results in the below not required format
{"ts" : {
"_inc" : 0,
"_class" : "org.bson.types.BSONTimestamp"
}}
Run Code Online (Sandbox Code Playgroud)
Option 2:
doc.put("ts",new Timestamp(new Date().getTime()));
Run Code Online (Sandbox Code Playgroud)
it results in :
{"ts" : ISODate("2015-01-12T05:36:43.343Z")}
Run Code Online (Sandbox Code Playgroud) 我有以下url验证正则表达式:
/(ftp | https?):// [^"] + $ /
这是来自ref: 用于URL验证的正则表达式(在JavaScript中)
这很好,包括像http://localhost:8080,但它也验证了我不想要的下面的情况.上面的正则表达式不应该通过以下网址
1. http://www.example..com
2. http://.com
3. http://.
4. http://www.example.
Run Code Online (Sandbox Code Playgroud)
请正确帮助我作为正则表达式的菜鸟
第二个问题,虽然与问题没有关系,但正则表达式是,当我验证null和未定义的正则表达式/ ^ [az] + $/i我得到了真.这是默认行为还是我错过了这里的东西?
我只是注意到如果我在表单名称属性或输入的名称属性中有连字符,AngularJS验证不起作用.
如果我尝试验证字段,这不起作用
<form name="signup-form">
</form>
Run Code Online (Sandbox Code Playgroud)
以下工作完美
<form name="signupform">
</form>
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么AngularJs在第一种情况下不起作用吗?如果我们要" - "工作,我们怎么能这样做?
我在 AMQP 0-9-1 协议中找不到 0-9-1 背后的确切逻辑。请有人解释一下。
我已经阅读过Spring boot doc(http://projects.spring.io/spring-boot/docs/docs/howto.html#message.converters),并提到如果你提供自己的JacksonConvertor,它会覆盖默认的一个.但我想它不能使用下面的代码.
我想要做的是将对象映射器的DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES设置为false.
@EnableAutoConfiguration
@ComponentScan("com.hjh")
@Configuration
public class App {
@Bean
@Primary
public MappingJackson2HttpMessageConverter jacksonConvertor(){
MappingJackson2HttpMessageConverter convertor= new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
convertor.setObjectMapper(mapper);
return convertor;
}
public static void main(String[] args) throws Exception {
ApplicationContext ctx = SpringApplication.run(App.class, args);
}
Run Code Online (Sandbox Code Playgroud)
有谁可以指出我在这里做错了什么?因为它一直试图从请求绑定未知道具.如果我删除未知道具,一切顺利
spring ×5
java ×4
javascript ×2
mongodb ×2
rabbitmq ×2
spring-amqp ×2
spring-boot ×2
.net ×1
amqp ×1
angularjs ×1
bson ×1
html ×1
jackson ×1
java-ee ×1
middleware ×1
performance ×1
postgresql ×1
regex ×1
servlets ×1
spring-mvc ×1
spring-web ×1
sql ×1
threadpool ×1