我有一个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) 我有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) 我试图通过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) 我想在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表中.
我有一个基于 gradle 的项目。我必须运行与 mvn clean verify 等效的命令。因为我是 gradle 和 maven 的新手,并且只接触过 3 个命令。我想运行一个mvn clean verify 的 gradle 等价物。我在网站上搜索,但仍然没有得到答案。请帮助我知道什么是“mvn clean verify”的 gradle 等价物
我想将三个数据框合并为一个。所有数据框都有一列。
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 。
有人可以建议。
我有下面的代码,它可以使用 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 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 = 1和to = 100再拿到100个记录,直到from <= 131881.有没有办法在Elasticsearch中没有其他记录,我可以检查以100的集合获取记录.
我有 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) 假设我有一个名为 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 中是否存在文件夹。
我有以下代码,当我通过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)
我在这里做错了什么.
我对 Linux 内核开发非常陌生,并且在理解其功能时感到困惑create_singlethread_workqueue()。任何人都可以提供一个基本示例,说明它到底做什么create_singlethread_workqueue()以及它的工作是什么INIT_WORK。从我读到的解释来看,它说它为处理器创建一个队列并初始化工作。但无法理解什么是工作,也无法理解如何通过基本示例来理解。
java ×4
javascript ×3
rest ×3
express ×2
node.js ×2
python ×2
spring ×2
amazon-s3 ×1
aws-cli ×1
cookies ×1
csv ×1
dataframe ×1
gradle ×1
http ×1
http-headers ×1
http-post ×1
httprequest ×1
linux ×1
linux-kernel ×1
maven ×1
pandas ×1
pcap4j ×1
resttemplate ×1
sniffer ×1
spring-mvc ×1
wireshark ×1