小编hel*_*ava的帖子

在sql和应用程序中执行计算的优缺点是什么

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查询中完成.

上面的用例只是一个例子,在实际情况中,表可以有许多列需要处理类似的类.

你能告诉我哪种方法在性能和其他方面更好,为什么?

.net java sql postgresql performance

146
推荐指数
4
解决办法
8万
查看次数

如何分配线程来处理Servlet请求?

有人可以解释每个连接的每个请求和线程的线程是什么?servlet工作的模型是什么?如何分配线程来处理HTTP请求?是线程/请求还是连接?

让我们说如果我想在我ServletdoGet()方法中异步执行一个耗时的任务,我会使用Java执行程序启动一个新线程,以便在一个单独的线程中完成冗长的计算,并立即发送响应.

现在这样做是否确保我已经释放了处理我的线程,HttpServletRequest或者它仍然被使用,因为子线程仍在运行?

java multithreading servlets java-ee threadpool

52
推荐指数
1
解决办法
3万
查看次数

异步弹簧控制器与普通控制器

我想通过在普通控制器上启用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 spring-mvc spring-boot spring-web

11
推荐指数
1
解决办法
2163
查看次数

Spring AMQP Java客户端中的队列大小

我使用Spring amqp 1.1版本作为我的java客户端.我有一个大约有2000条消息的队列.我想要一个检查此队列大小的服务,如果它是空的,它将发出一条消息,说"所有项目已处理".

我不知道如何获得当前的队列大小?请帮忙

我用Google搜索并找到了早期版本1.0中出现的类"RabbitBrokerAdmin".我认为它现在不存在于1.1中.

获取当前队列大小的任何指针?

spring rabbitmq spring-amqp

9
推荐指数
2
解决办法
8079
查看次数

@Indexed嵌套属性不适用于mongo的Spring-data

我有以下对象结构:

@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上创建一个唯一索引.请帮忙.

java spring mongodb spring-data-mongodb

8
推荐指数
3
解决办法
7908
查看次数

如何在MongoDb中保存时间戳类型值 Java的

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)

java mongodb bson spring-data-mongodb

8
推荐指数
1
解决办法
2万
查看次数

Javascript URL验证正则表达式

我有以下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我得到了真.这是默认行为还是我错过了这里的东西?

javascript regex

5
推荐指数
1
解决办法
4万
查看次数

属性值中的连字符导致AngularJs验证中断

我只是注意到如果我在表单名称属性或输入的名称属性中有连字符,AngularJS验证不起作用.

如果我尝试验证字段,这不起作用

<form name="signup-form">
</form>
Run Code Online (Sandbox Code Playgroud)

以下工作完美

<form name="signupform">
</form>
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么AngularJs在第一种情况下不起作用吗?如果我们要" - "工作,我们怎么能这样做?

html javascript angularjs

5
推荐指数
1
解决办法
2070
查看次数

AMQP 0-9-1协议中0-9-1代表什么

我在 AMQP 0-9-1 协议中找不到 0-9-1 背后的确切逻辑。请有人解释一下。

spring middleware amqp rabbitmq spring-amqp

4
推荐指数
1
解决办法
714
查看次数

Spring Boot Web-在Jackson中将FAIL_ON_UNKNOWN_PROPERTIES设置为false

我已经阅读过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 jackson spring-boot

3
推荐指数
2
解决办法
7326
查看次数