最近我在使用 java play 框架时遇到了一个问题。在路由文件中设置的路由附加到控制器中的方法。
当我查看日志时,我看到控制器中的方法被调用了两次,而只对服务器进行了一次调用以连接到附加路由。
这是框架的问题吗?
路线:
POST /production/publication/success controllers.Application.importDataAndUpdate()
Run Code Online (Sandbox Code Playgroud)
应用程序.java
Set<String> requestHeader = request().headers().keySet();
Iterator<String> it = requestHeader.iterator();
while (it.hasNext()) {
Logger.debug(request().getHeader(it.next()));
}
Run Code Online (Sandbox Code Playgroud)
当调用中的有效负载很大时,日志显示应用程序 java 中的方法被调用了两次。为什么会发生这种情况?
我想知道如何使用win32com客户端为python迭代excel表而不读取整个列.
使用S3服务我试图从所有桶中检索列表.虽然我这样做我得到一个例外.
我收到S3服务异常:java.lang.Long无法强制转换为java.lang.Integer.
这是代码:
String awsKey = "awskey";
String awsSecret = "secret";
AWSCredentials aws = new AWSCredentials(awsKey,awsSecret);
//communicate with s3
try{
S3Service service = new RestS3Service(aws);
//get buckets
S3Bucket[] buckets = service.listAllBuckets();
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
<code> org.jets3t.service.S3ServiceException: Request Error: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
at org.jets3t.service.S3Service.listAllBuckets(S3Service.java:1370)
at UploadToS3.main(UploadToS3.java:20) Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
at org.apache.http.params.AbstractHttpParams.getIntParameter(AbstractHttpParams.java:70)
at org.apache.http.client.params.HttpClientParamConfig.getRequestConfig(HttpClientParamConfig.java:54)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:806)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRequest(RestStorageService.java:334)
at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRequest(RestStorageService.java:281)
at org.jets3t.service.impl.rest.httpclient.RestStorageService.performRestGet(RestStorageService.java:981)
at org.jets3t.service.impl.rest.httpclient.RestStorageService.listAllBucketsImpl(RestStorageService.java:1373)
at org.jets3t.service.StorageService.listAllBucketsImpl(StorageService.java:1379)
at org.jets3t.service.StorageService.listAllBuckets(StorageService.java:563)
at org.jets3t.service.S3Service.listAllBuckets(S3Service.java:1367) …Run Code Online (Sandbox Code Playgroud) 我一直在编写一个多线程的java程序.在我进步之前,我在思考如何最好地编写程序.
我读了runnable和thread之间的区别以及我们应该使用什么和不应该使用什么.不过我有一个问题.即使线程不共享数据(即相同的可运行类对象),遵循runnable实现进行线程也是好的吗?
我最终会创建不同的可运行对象,从而占用内存.我的另一个想法是池化可运行对象并更改它们保存的值并将其分配给线程.从而仅具有一组可运行的对象,从而更好地利用存储器.
示例代码:
public class MrRunnable implements Runnable {
private String toFireUrl;
MrRunnable(String url){
}
@Override
public void run() {
// do some function here
}
}
public class Main {
public static void main(String[] args) {
// We will create 500 threads
for (int i = 0; i < 500; i++) {
Runnable task = new MrRunnable("some new url");
Thread worker = new Thread(task);
//start the thread
worker.start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里我创建了一个可运行对象的新实例,我的线程不共享数据.那么这种方式是否合理?或者更好的是创建一个可运行的对象池,我让我的线程操纵他们的内容并使用它?