小编Mar*_*rga的帖子

如何在Vue2中实现去抖?

我在Vue模板中有一个简单的输入框,我想或多或少地使用debounce:

<input type="text" v-model="filterKey" debounce="500">
Run Code Online (Sandbox Code Playgroud)

但是,该debounce物业已在Vue 2中弃用.该建议仅说:"使用v-on:输入+第三方去抖功能".

你是如何正确实现它的?

我试图使用lodash,v-on:inputv-model来实现它,但我想知道是否可以不使用额外的变量.

在模板中:

<input type="text" v-on:input="debounceInput" v-model="searchInput">
Run Code Online (Sandbox Code Playgroud)

在脚本中:

data: function () {
  return {
    searchInput: '',
    filterKey: ''
  }
},

methods: {
  debounceInput: _.debounce(function () {
    this.filterKey = this.searchInput;
  }, 500)
}
Run Code Online (Sandbox Code Playgroud)

然后在computed道具中使用filterkey .

debouncing vue.js vuejs2

106
推荐指数
7
解决办法
7万
查看次数

使用Spring REST模板,创建太多连接或缓慢

我有一个非常快速的RESTful服务.我在localhost上测试它.客户端正在使用Spring REST模板.我开始使用一种天真的方法:

RestTemplate restTemplate = new RestTemplate(Collections.singletonList(new GsonHttpMessageConverter()));

Result result = restTemplate.postForObject(url, payload, Result.class);
Run Code Online (Sandbox Code Playgroud)

当我提出很多这些请求时,我收到以下异常:

Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:8080/myservice":No buffer space available (maximum connections reached?): connect; nested exception is java.net.SocketException: No buffer space available (maximum connections reached?): connect
Run Code Online (Sandbox Code Playgroud)

这是由连接未关闭并挂在TIME_WAIT状态引起的.当短暂的端口耗尽时,异常开始发生.然后执行等待端口再次空闲.我看到长时间休息的高峰表现.我得到的速度几乎是我所需要的,但当然,这些TIME_WAIT连接并不好.在Linux(Ubuntu 14)和Windows(7)上进行了测试,由于端口的不同范围,在不同时间得到了类似的结果.

为了解决这个问题,我尝试使用HttpClient和Apache Http Components库中的HttpClientBuilder.

RestTemplate restTemplate = new RestTemplate(Collections.singletonList(new GsonHttpMessageConverter()));
HttpClient httpClient = HttpClientBuilder.create()
        .setMaxConnTotal(TOTAL)
        .setMaxConnPerRoute(PER_ROUTE)
        .build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));

Result result = restTemplate.postForObject(url, payload, Result.class);
Run Code Online (Sandbox Code Playgroud)

有了这个客户,我看到没有例外.客户端现在只使用非常有限数量的短暂端口.但无论我使用什么设置(TOTAL和PER_ROUTE),我都无法获得所需的性能.

使用该netstat命令,我发现服务器连接的次数不多.我尝试将数字设置为数千,但似乎客户端从未使用过那么多.

如果不打开太多连接,我能做些什么来提高性能?


更新:我已经尝试将总路由和每个路由连接的数量设置为5000和2500,但它仍然看起来客户端不会创建超过一百(从判断netstat -n | wc …

java rest spring http apache-httpcomponents

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

方法链的优点和缺点以及由对象本身替换所有void返回参数的可能性

我最感兴趣的是Java,但我认为这是一个普遍的问题.最近我一直在使用Arquillian framework(ShrinkWrap),它使用了很多方法链接.方法链接的其他实例是在方法StringBuilder,StringBuffer.使用这种方法有明显的好处:减少详细程度就是其中之一.

现在我想知道,为什么并非所有将void返回参数实现为可链接的方法?链接必然存在一些明显和客观的缺点.因为如果所有方法都是可链接的,我仍然可以选择不使用它.

我不是要求改变Java中的现有代码,这可能会破坏某些地方的某些东西,但解释为什么不使用它也会很好.我更多地要求从未来的框架(用Java编写)设计视角.


我发现了一个类似的问题,但原来的提问者实际上想知道为什么它被认为是一种好的做法:方法链 - 为什么这是一个好的做法,或不是?


虽然有一些答案可用,但我仍然不确定链接的所有优点和缺点是什么,以及将所有void方法链接起来是否有用会被认为是有用的.

java design-patterns chaining

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

当使用position:absolute时,默认的top,left,botton或right值是什么?

在一个大项目中,很少有按钮在​​IE中被错误分配.我通过设置position: absolute没有任何参数找到了巧合.这让我想知道,这种立场的默认值是什么?我理解绝对定位是如何工作的以及包含元素的含义.但我不知道默认值来自何处.它们绝对不是top:0; left:0我原先预期的.

<!DOCTYPE html>
<html>
<head>
<style>
h1 {
position:absolute;
}
</style>
</head>

<body>
<h1>Absoulute pos</h1>
<p>Paragraph</p>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

这是一个简单的页面,这就是h1元素的最终定位的样子:

在此输入图像描述

css css-position

16
推荐指数
1
解决办法
6009
查看次数

如何使用MockMvcResultMatchers.jsonPath

MvcResult result = this.mockMvc.perform(
                MockMvcRequestBuilders.get(mockUrl))
                .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentType("application/    json;charset=UTF-8"))
                .andDo(MockMvcResultHandlers.print())
Run Code Online (Sandbox Code Playgroud)

给我以下内容:

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = {Content-Type=[application/json;charset=UTF-8]}
     Content type = application/json;charset=UTF-8
             Body = {"version":"0.1"}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []
Run Code Online (Sandbox Code Playgroud)

但是,测试它

MvcResult result = this.mockMvc.perform(
                MockMvcRequestBuilders.get(mockUrl))
                .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers.content().contentType("application/    json;charset=UTF-8"))
                .andExpect(jsonPath("$.version").value("0.1"))
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

java.lang.AssertionError: No value at JSON path "$.version", exception: net/minidev/json/writer/JsonReaderI

at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:245)
at org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:99)
at org.springframework.test.web.servlet.result.JsonPathResultMatchers$2.match(JsonPathResultMatchers.java:99)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171)
at com.vmware.skyscraper.rts.runbooks.RunbookControllerTest.testGetSingleRunbook(RunbookControllerTest.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mockito jsonpath

14
推荐指数
2
解决办法
4万
查看次数

如何检测我的方法等待的是什么?

我在Java中有一个方法可以调用其他几种方法.从固定线程池中的多个线程调用此方法.工作线程数与可用处理器(核心数)相同.

public void query() {
    method1();
    method2();
}
Run Code Online (Sandbox Code Playgroud)

当我使用VisualVM分析程序执行时,时间method1()method2()时间非常短,但query()自我时间很长.但除了两个调用之外,该方法没有其他代码.有可能是内部的同步method1()method2(),但没有明显的代码,我管了.

当我将池中的工作者数量减少到1时,这个自我时间几乎消失了.整个程序的单线程和多线程执行时间几乎相同.我认为这意味着我的方法query()正在等待某事.

没有死锁,执行完成得很好.这两种方法method1(),并method2()调用了很多其他的事情,包括在混淆罐库中的类,所以它是不容易的,我调试.但是query(),使用该方法直接从工作线程调用java.util.concurrent.ExecutorService.

java profiler multithreading

13
推荐指数
2
解决办法
400
查看次数

如何在Linux上找到Java Desktop API需要哪些库?

我试图找到一种方法来确定Java需要哪些库才能使Desktop API工作,特别是BROWSE函数.我阅读了一些指南,错误报告和解决方法,但它们都不起作用.

通过安装libgnome2-0gvfs-backends打包,我能够使它在Debian上运行.第一个通常是推荐的(由人们解决相同的问题),第二个是幸运的猜测,因为似乎桌面API需要vfs.但是,即使安装了这两个软件包,我也无法在Ubuntu 14.04上完成这项工作.

所以我的问题是:如何在Linux上找到Java Desktop API需要哪些库?特别是在Ubuntu 14.04上的Oracle JDK 8.是否有可能以某种方式捕获哪些库是桌面API使用或从本机代码获取一些错误输出?

编辑:我创建了一个尝试使用浏览的单行代码:

public class Main {
    public static void main(String[] args) throws URISyntaxException, IOException {
        Desktop.getDesktop().browse(new URI("http://www.google.com"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图运行一个命令来跟踪在执行测试期间请求的所有文件:

strace -e open,access -f -o browse java -jar BrowseTester.jar
Run Code Online (Sandbox Code Playgroud)

我得到了很多输出,表明正在寻找,发现和访问java native和linux本机库,但我不知道如何检测实际上缺少的内容.

输出示例:

30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/tls/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
30171 open("/usr/lib/x86_64-linux-gnu/gvfs/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or …
Run Code Online (Sandbox Code Playgroud)

java linux java-native-interface swing awt

13
推荐指数
1
解决办法
377
查看次数

Amazon Rekognition用于文本检测

我有收据的图像,我想分别在图像中存储文本.是否可以使用Amazon Rekognition从图像中检测文本?

amazon-web-services amazon-rekognition

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

如何在Hibernate上从JPA手动调用create-drop?

我需要这个进行集成测试.我的环境是JBoss 7,在Hibernate 4上使用JPA的EJB3,H2内存数据库和测试由Arquillian运行.我希望能够删除数据库并再次创建它将基于所有表persistence.xml和实体.我知道我可以在应用程序开始时通过指定:

<property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
Run Code Online (Sandbox Code Playgroud)

但是我需要在第一次删除后从代码中手动执行此操作并创建发生.

可能吗?什么是最简单的方法?

java hibernate jpa jboss-arquillian

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

如何在Gradle中连接多个文件?

有没有一种简单的方法可以在Gradle中将多个文本文件连接成一个文件?构建脚本应如下所示:

FileCollection jsDeps = files(
   'file1.js',
   'file2.js'
   // other files here
)

task concatenate << {
   // concatenate the files to file.js
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Gradle 2.3.

gradle

7
推荐指数
4
解决办法
7023
查看次数