小编arp*_*shi的帖子

使用REST模板Java Spring MVC从服务器下载大文件

我有一个REST服务,它向我发送一个大的ISO文件,REST服务中没有问题.现在我已经编写了一个Web应用程序,它调用其余服务来获取文件,在客户端(Web应用程序)端我收到Out Of memory Exception.Below是我的代码

HttpHeaders headers = new HttpHeaders();//1 Line

    headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));//2 Line
    headers.set("Content-Type","application/json");//3 Line
    headers.set("Cookie", "session=abc");//4 Line
    HttpEntity statusEntity=new HttpEntity(headers);//5 Line
    String uri_status=new String("http://"+ip+":8080/pcap/file?fileName={name}");//6 Line

    ResponseEntity<byte[]>resp_status=rt.exchange(uri_status, HttpMethod.GET, statusEntity, byte[].class,"File5.iso");//7 Line
Run Code Online (Sandbox Code Playgroud)

我在7行收到内存异常,我想我将不得不缓冲并获取部分内容,但不知道如何从服务器获取此文件,文件大小约为500到700 MB.谁能请你帮忙.

异常堆栈:

  org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.OutOfMemoryError: Java heap space
    java.util.Arrays.copyOf(Arrays.java:3236)
    java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)
    java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
    java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
    org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:113)
    org.springframework.util.FileCopyUtils.copyToByteArray(FileCopyUtils.java:164)
    org.springframework.http.converter.ByteArrayHttpMessageConverter.readInternal(ByteArrayHttpMessageConverter.java:58)
    org.springframework.http.converter.ByteArrayHttpMessageConverter.readInternal(ByteArrayHttpMessageConverter.java:1)
    org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:153)
    org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:81)
    org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:627)
    org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1)
    org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:454)
    org.springframework.web.client.RestTemplate.execute(RestTemplate.java:409)
    org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:385)
    com.pcap.webapp.HomeController.getPcapFile(HomeController.java:186)
Run Code Online (Sandbox Code Playgroud)

我的服务器端REST服务代码工作正常

@RequestMapping(value = URIConstansts.GET_FILE, produces = { …
Run Code Online (Sandbox Code Playgroud)

java rest spring resttemplate

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

在Spring MVC REST中返回文件

我有REST服务代码下面的代码返回一个文件,现在问题是在PostMan客户端的响应体中我得到一个原始响应,我怎么能转换它以便它向客户端显示文件的内容,目标是将文件返回给用户.File Name是"File1.jpeg"

码:

@RequestMapping(value = URIConstansts.GET_FILE, produces = { "application/json" }, method = RequestMethod.GET)
public @ResponseBody ResponseEntity getFile(@RequestParam(value="fileName", required=false) String fileName,HttpServletRequest request) throws IOException{

    ResponseEntity respEntity = null;

    byte[] reportBytes = null;
    File result=new File("/home/arpit/Documents/PCAP/dummyPath/"+fileName);

    if(result.exists()){
        InputStream inputStream = new FileInputStream("/home/arpit/Documents/PCAP/dummyPath/"+fileName); 


        byte[]out=org.apache.commons.io.IOUtils.toByteArray(inputStream);

        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.add("content-disposition", "attachment; filename=" + fileName);

        respEntity = new ResponseEntity(out, responseHeaders,HttpStatus.OK);


    }else{

        respEntity = new ResponseEntity ("File Not Found", HttpStatus.OK);
    }


    return respEntity;

}
Run Code Online (Sandbox Code Playgroud)

java rest spring http spring-mvc

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

在javascript中发送HTTP POST请求中的cookie

我试图通过javascript向服务器(这是一个REST服务)发出POST请求,并在我的请求中我想发送一个cookie.我的下面的代码无法正常工作,因为我无法在服务器上接收cookie side.Below是我的客户端和服务器端代码.

客户端 :

var client = new XMLHttpRequest();
          var request_data=JSON.stringify(data);
var endPoint="http://localhost:8080/pcap";
var cookie="session=abc";
          client.open("POST", endPoint, false);//This Post will become put 
          client.setRequestHeader("Accept", "application/json");
          client.setRequestHeader("Content-Type","application/json");

          client.setRequestHeader("Set-Cookie","session=abc");
          client.setRequestHeader("Cookie",cookie);
          client.send(request_data);
Run Code Online (Sandbox Code Playgroud)

服务器端:

public @ResponseBody ResponseEntity getPcap(HttpServletRequest request,@RequestBody PcapParameters pcap_params ){

Cookie cookies[]=request.getCookies();//Its coming as NULL
        String cook=request.getHeader("Cookie");//Its coming as NULL
}
Run Code Online (Sandbox Code Playgroud)

javascript cookies http-post httprequest http-headers

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

Python列表到csv抛出错误:迭代预期,而不是numpy.int64

我想在csv中写一个列表,当我尝试这样做时,我收到以下错误

out.writerows(fin_city_ids)
_csv.Error: iterable expected, not numpy.int64
Run Code Online (Sandbox Code Playgroud)

我的代码如下

org_id.append([pol_id,bldest_id])
fin_ids=list(org_city_id['org_id'].unique())
print(fin_ids)

out = csv.writer(open("D:/dataset/fin_ids.csv","w"), delimiter='|')
out.writerows(fin_ids)
Run Code Online (Sandbox Code Playgroud)

以下是fin_ids的输出

[1002774, 0, 1000702, 1000339, 1001620, 1000710, 1000202, 1003143, 147897, 31018, 1001502, 1002812, 1003026, 1003280, 1003289, 1002714, 133191, 5252218, 6007821, 1002632]
Run Code Online (Sandbox Code Playgroud)

Org_id是一个包含重复ID的dataFrame .fin_ids是一个包含ids的unqiue值的列表.Fin ID是从数据框org_id派生的唯一ID的列表.

所需的输出是一个CSV,其中所有值都在不同的行中,因为我将在稍后将数据加载到sql表中.

python csv

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

相当于 mvn clean verify 的 Gradle

我有一个基于 gradle 的项目。我必须运行与 mvn clean verify 等效的命令。因为我是 gradle 和 maven 的新手,并且只接触过 3 个命令。我想运行一个mvn clean verify 的 gradle 等价物。我在网站上搜索,但仍然没有得到答案。请帮助我知道什么是“mvn clean verify”的 gradle 等价物

gradle maven

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

将一个数据框附加到另一个

我想将三个数据框合并为一个。所有数据框都有一列。

org_city_id=p.DataFrame(training_data['origcity_id'])
pol_city_id=p.DataFrame(training_data['pol_city_id'])
pod_city_id=p.DataFrame(training_data['pod_city_id'])
Run Code Online (Sandbox Code Playgroud)

全部都有 100 条记录,所以我的目标是将它们放入一个包含 300 条记录的数据框中。我下面的代码不起作用

org_city_id.append([pol_city_id,pod_city_id])
Run Code Online (Sandbox Code Playgroud)

org_city_id 中的记录总数仍然是 100 。

有人可以建议。

python dataframe pandas

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

使用 pcap4j 读取数据包内容

我有下面的代码,它可以使用 pcap4j 从接口捕获数据包,但我不确定如何打印数据包中存在的请求和响应数据。例如,如果我从邮递员那里进行 REST 调用,那么我想跟踪请求和响应。这与 Wireshark 相同。我被困在我能够捕获数据包的最后一部分,但不确定如何读取可以在控制台上打印的数据包内容。

try {
        
        InetAddress addr = InetAddress.getByName("10.227.178.25");
        PcapNetworkInterface device = Pcaps.getDevByAddress(addr);
        
        System.out.println("You chose: " + device);
        
        int snapshotLength = 64 * 1024; // in bytes   
        int readTimeout = 50; // in milliseconds                   
        final PcapHandle handle;
        handle = device.openLive(snapshotLength, PromiscuousMode.PROMISCUOUS, readTimeout);
        String filter = "tcp port 80";
        handle.setFilter(filter, BpfCompileMode.OPTIMIZE);
        // Create a listener that defines what to do with the received packets
        PacketListener listener = new PacketListener() {
            @Override
            public void gotPacket(Packet packet) {
                // …
Run Code Online (Sandbox Code Playgroud)

java sniffer wireshark packet-sniffers pcap4j

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

使用Java API从Elasticsearch获取所有记录

我试图使用Java API从Elasticsearch获取所有记录.但我收到以下错误

n [[Wild Thing] [localhost:9300] [indices:data/read/search [phase/dfs]]]; 嵌套:QueryPhaseExecutionException [结果窗口太大,+大小必须小于或等于:[10000]但是[10101].

我的代码如下

Client client;
try {
    client = TransportClient.builder().build().
            addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
    int from = 1;
    int to = 100;
    while (from <= 131881) {
        SearchResponse response = client
                .prepareSearch("demo_risk_data")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setFrom(from)
                .setQuery(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery("user_agent", "")))
                .setSize(to).setExplain(true).execute().actionGet();
        if (response.getHits().getHits().length > 0) {
            for (SearchHit searchData : response.getHits().getHits()) {
                JSONObject value = new JSONObject(searchData.getSource());
                System.out.println(value.toString());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

目前本记录总数是131881,所以我开始from = 1to = 100再拿到100个记录,直到from <= 131881.有没有办法在Elasticsearch中没有其他记录,我可以检查以100的集合获取记录.

java elasticsearch

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

NodeJS 从服务器下载文件

我有 Java 中的 REST 服务,它有一个端点将文件发送到客户端(HTTP GET、/file)。我的前端客户端是 NodeJS。我无法从 REST 服务下载该文件。我只能将文件存储在特定位置,但我想要一个下载对话框,用户可以在其中存储文件(就像任何其他下载对话框一样)。我的NodeJS代码如下:

router.get('/openFile',function(req,res){
    native_data_retrieval_rest_client.get("http://localhost:8080/file?fileName=presentation.pcap",function(data){
        var fileName="/home/files/presentation.pcap";
        res.download(data);//This doesnt open dialogue box 

        fs.writeFile(fileName, data, function (err) {
            if (err) {
                //Error handling
            } else {
                console.log('Done');
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

该文件静态保存在该位置/home/files/presentation.pcap

我的 REST 服务端响应如下:

response.setHeader("Content-Disposition", "attachment; filename="
                    + fileName);
            response.setHeader("Content-Type", type);

            reportBytes = new byte[131072];// New change
            OutputStream os = response.getOutputStream();// New change
            int read = 0;
            while ((read = inputStream.read(reportBytes)) != -1) {
                os.write(reportBytes, 0, read);
            }
            //System.out.println("Bytes sent" + reportBytes); …
Run Code Online (Sandbox Code Playgroud)

javascript rest node.js express

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

有没有办法使用aws cli检查s3中是否存在文件夹?

假设我有一个名为 Test 的存储桶,其中包含 Alpha/TestingOne,Alpha/TestingTwo 文件夹。我想使用 aws cli 检查我的存储桶中是否存在名为 Alpha/TestingThree 的文件夹。我确实尝试过 aws

s3api head-object --bucket Test --key Alpha/TestingThree

但似乎 head-object 是用于 files 而不是 folders 。那么有没有办法使用 aws cli api 检查 aws s3 中是否存在文件夹。

amazon-s3 aws-cli

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

对于nodejs中的post请求,Request Body为null

我有以下代码,当我通过postman发出一个Post请求时,我得到req.body as undefined

发布请求是 http:// localhost:1702/es

身体:

{"ip_a":"191.XXXX","pkts":34

}

和Content-Type:"application/json"我也使用了application/x-www-form-urlencoded但得到了相同的结果.

我的app.js是

{
  "ip_a":"191.X.X.XX",
  "pkts":34    
}
Run Code Online (Sandbox Code Playgroud)

我收到请求体null的文件是

var express = require('express');
var es=require('./routes/es');
var app = express();
app.post('/es',es.postesdata);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么.

javascript node.js express

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

Linux 中的 create_singlethread_workqueue

我对 Linux 内核开发非常陌生,并且在理解其功能时感到困惑create_singlethread_workqueue()。任何人都可以提供一个基本示例,说明它到底做什么create_singlethread_workqueue()以及它的工作是什么INIT_WORK。从我读到的解释来看,它说它为处理器创建一个队列并初始化工作。但无法理解什么是工作,也无法理解如何通过基本示例来理解。

linux linux-device-driver linux-kernel

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