服务器套接字的工作原理是什么?当我创建一个java服务器套接字并在端口1234接受连接时.服务器是否实际使用端口1234用于所有客户端?我已经读过,当您编写网络服务器时,套接字实际上会在接受连接后打开另一个端口.
这是真的?如果是这样,为什么我没有在netstat中看到它?我看到很多像这样的连接
tcp 0 0 ::ffff:MY_IP:1234 ::ffff:97.37.134.95:39236 ESTABLISHED
tcp 0 0 ::ffff:MY_IP:1234 ::ffff:89.204.153.101:26117 ESTABLISHED
tcp 0 0 ::ffff:MY_IP:1234 ::ffff:195.240.16.70:26193 ESTABLISHED
tcp 0 0 ::ffff:MY_IP:1234 ::ffff:80.187.98.116:15012 ESTABLISHED
tcp 0 0 ::ffff:MY_IP:1234 ::ffff:218.78.248.190:30794 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
所以他们真的都在1234连接到我的服务器吗?如果是这样,这是不是意味着您的服务器将能够接受无限数量的连接?
我被告知我的服务器拒绝接受特定端口的客户端网络连接可能是由于缺少文件描述符.我查看了这一切,并在此处阅读:http: //www.netadmintools.com/art295.html
所以我测试了我的系统,我得到了这个:
cat /proc/sys/fs/file-nr
1088 0 331287
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我的限制很高但我有0个可用的文件描述符?为什么?我如何为我的服务器解决这个问题?
即使我关闭了我的服务器,第二列实际上仍然保持在0,甚至在启动后它甚至保持在0!
我有以下代码读取跟随文件,将\ r \n附加到每行的末尾并将结果放入字符串缓冲区:
public InputStream getInputStream() throws Exception {
StringBuffer holder = new StringBuffer();
try{
FileInputStream reader = new FileInputStream(inputPath);
BufferedReader br = new BufferedReader(new InputStreamReader(reader));
String strLine;
//Read File Line By Line
boolean start = true;
while ((strLine = br.readLine()) != null) {
if( !start )
holder.append("\r\n");
holder.append(strLine);
start = false;
}
//Close the input stream
reader.close();
}catch (Throwable e){//this is where the heap error is caught up to 2Gb
System.err.println("Error: " + e.getMessage());
}
return new StringBufferInputStream(holder.toString());
} …Run Code Online (Sandbox Code Playgroud) 我们有一个带512Mb内存的小文本框.我们想在这个框中看到我们可以用Java创建多少个线程.令我们惊讶的是,我们不能创造很多.基本上,您可以使用-Xss设置的最小堆栈大小为64k.简单的数学将告诉你64*7000将消耗430Mb所以我们只能将它达到大约7000个线程左右然后我们遇到了这个错误:
java.lang.OutOfMemoryError: unable to create new native thread.
Run Code Online (Sandbox Code Playgroud)
这是Java的真正限制吗?每512Mb的ram我们只能挤7k左右的线程?
我们有一个简单的整数列.我们想要为每一行添加值10.我们如何在sql中为MySQL数据库执行此操作?
实际上我们有另一个列需要做同样的事情,这是一个约会.我们需要在该日期添加一个月.怎么做?
我继承了这个尝试删除某些空格的sed脚本片段:
s/[\s\t]*|/|/g
s/|[\s\t]*/|/g
s/[\s] *$//g
s/^|/null|/g
Run Code Online (Sandbox Code Playgroud)
它运行在大约1Gb的文件上.此脚本在我们的unix服务器上运行2个小时.任何想法如何加快它?
注意\ s代表空格而\ t代表制表符,实际脚本使用实际空格和制表符而不是那些符号
输入文件是管道分隔文件,位于本地而非网络上.这4行是在用sed -f执行的文件中
我在 Spring Boot/Spring Data Rest 中有一个控制器,我的处理程序在其中下载这样的文件
@RequestMapping(method = GET, value = "/orderAttachments/{id}/download")
@ResponseStatus(HttpStatus.OK)
public ResponseEntity<StreamingResponseBody> downloadAttachment(@PathVariable("id") Long attachmentID, HttpServletRequest request)
throws IOException {
InputStream inputStream = fileManager.getInputStream(orderAttachment);
StreamingResponseBody responseBody = outputStream -> {
int numberOfBytesToWrite;
byte[] data = new byte[1024];
while ((numberOfBytesToWrite = inputStream.read(data, 0, data.length)) != -1) {
outputStream.write(data, 0, numberOfBytesToWrite);
}
inputStream.close();
};
return ResponseEntity
.ok()
.contentLength(orderAttachment.getFileSize())
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + orderAttachment.getFileName()+ "\"")
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(responseBody);
}
Run Code Online (Sandbox Code Playgroud)
我在控制台中收到此错误
!!!
An Executor is required to handle java.util.concurrent.Callable return values.
Please, …Run Code Online (Sandbox Code Playgroud) Using iPhone's SDK GPS API, how accurate can I get? Is it within a few meters or kilometers? I'm interested in the accuracy when it is indoor. My software will only be used in door.
如何在"界面"构建器中设置stretchableImageWithLeftCapWidth?
我们这里有一个简单的SQL问题.在varchar列中,我们希望在字段中的任何位置搜索字符串.实现此性能的最佳方法是什么?显然,一个指数在这里没有任何帮助,其他任何技巧?
我们使用MySQL并拥有大约300万条记录.我们需要每秒执行许多这些查询,因此我们真正尝试以最佳性能实现这些查询.
到目前为止,最简单的方法是:
Select * from table where column like '%search%'
Run Code Online (Sandbox Code Playgroud)
我应该进一步指定该列实际上是一个长字符串,如"sadfasdfwerwe",我必须在此列中搜索"asdf".所以他们不是句子而是试图匹配他们中的一个词.全文搜索仍然有用吗?
java ×3
file ×2
iphone ×2
linux ×2
memory ×2
mysql ×2
performance ×2
sockets ×2
sql ×2
file-io ×1
networking ×1
profile ×1
sed ×1
spring ×1
spring-boot ×1
spring-mvc ×1
unix ×1