小编pfl*_*flz的帖子

Java:InputStream读取大文件太慢了

我必须按字符读取53 MB的文件.当我使用ifstream在C++中完成它时,它在几毫秒内完成,但使用Java InputStream需要几分钟.Java很慢或者我错过了什么是正常的吗?

另外,我需要用Java完成程序(它使用servlet,我必须从中调用处理这些字符的函数).我想也许用C或C++编写文件处理部分,然后用Java Native Interface将这些函数与我的Java程序连接......这个想法怎么样?

任何人都可以给我任何其他提示......我真的需要更快地阅读文件.我尝试使用缓冲输入,但它仍然没有提供甚至接近C++的性能.

编辑:我的代码跨越几个文件,它非常脏,所以我给出了概要

import java.io.*;

public class tmp {
    public static void main(String args[]) {
        try{
        InputStream file = new BufferedInputStream(new FileInputStream("1.2.fasta"));
        char ch;        
        while(file.available()!=0) {
            ch = (char)file.read();
                    /* Do processing */
            }
        System.out.println("DONE");
        file.close();
        }catch(Exception e){}
    }
}
Run Code Online (Sandbox Code Playgroud)

java java-native-interface inputstream large-files

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

我可以使用http隧道通过带防火墙的代理ping或traceroute吗?

我不知道是否有办法ping我的局域网代理之外的目标只通过squid代理接受Http请求...我在某处读到了处理这种问题的一种方法是使用一个http隧道,以便代理仍将请求视为Http请求.我可以使用它来ping,例如www.google.com,否则会出现以下错误,因为防火墙拒绝了请求:

$ ping www.google.com
ping: unknown host www.google.com
Run Code Online (Sandbox Code Playgroud)

如果是这样,它是如何完成的?

我已经安装了httptunnel.Any帮助如何使用它将非常感激.

networking tunneling http-tunneling

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

原始套接字问题:TCP数据包是否传递给原始套接字?

根据Unix网络编程Vol1,"收到的UDP数据包和收到的TCP数据包永远不会传递给原始套接字.如果进程想要读取包含UDP或TCP数据包的IP数据报,则必须在数据链路层读取数据包"...

但与此相反,在创建原始套接字时有一个IPPROTO_TCP协议选项,在我看来这是用于这个目的.任何人都可以指出我在理解这个问题时可能犯的任何错误吗?

sockets networking

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

为什么我们在引导程序开始时给出 ORG 7C00?

引导加载程序无论如何都会在该地址加载它?为什么要在程序中指定这个?

entry-point bootloader

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

有符号和无符号数据类型之间的区别?

main()
{
    char i=255;
    printf("\n%x\n",i);
}
Run Code Online (Sandbox Code Playgroud)

输出:ffffffff

main()
{
    u_char i=255;
    printf("\n%x\n",i);
}
Run Code Online (Sandbox Code Playgroud)

输出:ff

这里发生了什么?请通过一些好的链接向我解释输出.这是我猜的一个非常基本的事情,我真的很困惑......

c unsigned

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

ping广播地址有问题

当我尝试ping我的LAN上的广播地址时,它每次只显示来自3个主机的ICMP回复,即使有许多主机连接到LAN.

对于广播地址,我做到了

$ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:1b:38:09:0b:26  
          inet addr:172.30.120.152  Bcast:172.30.127.255  Mask:255.255.248.0
          inet6 addr: fe80::21b:38ff:fe09:b26/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:831096 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13022 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66620362 (66.6 MB)  TX bytes:3099025 (3.0 MB)
          Interrupt:21 Base address:0x2000 
Run Code Online (Sandbox Code Playgroud)

我使用Bcast addr 172.30.127.255来ping每个人......

$ping -b 172.30.127.255
WARNING: pinging broadcast address
PING 172.30.127.255 (172.30.127.255) 56(84) bytes of data.
64 bytes from 172.30.120.1: icmp_seq=1 ttl=255 time=0.809 ms
64 bytes from 172.30.120.62: icmp_seq=1 ttl=64 time=1.06 …
Run Code Online (Sandbox Code Playgroud)

networking ping broadcast icmp

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

原始套接字帮助:为什么内核UDP不接收原始套接字创建的UDP数据包?

我正在研究原始套接字.我使用IP_HDRINCL选项来构建自己的IP头.在IP标头之后,我正在构建UDP标头.然后我将数据包发送到我系统的环回地址.我有另一个程序正在运行,它将捕获UDP数据包.为了检查数据包是否正确形成和接收,我正在运行另一个正在读取原始IP数据报的进程.我的问题是虽然第二个进程(读取原​​始数据报)运行良好(所有IP和UDP字段似乎都没问题),但第一个进程(接收UDP)没有收到我创建的任何数据包.IP头中的协议字段是可以的,端口也匹配...我正在使用Linux 2.6.35-22.我想知道新内核中这是否正常?请检查下面的代码是否有任何错误.应该接收数据包的UDP进程正在侦听绑定到同一台机器上的端口50000的套接字...

unsigned short in_cksum(unsigned short *addr, int len)
{
    int nleft = len;
    int sum = 0;
    unsigned short *w = addr;
    unsigned short answer = 0;

    while (nleft > 1) {
        sum += *w++;
        nleft -= 2;
    }

    if (nleft == 1) {
        *(unsigned char *) (&answer) = *(unsigned char *) w;
        sum += answer;
    }

    sum = (sum >> 16) + (sum & 0xFFFF);
    sum += (sum >> 16);
    answer = ~sum;
    return (answer);
}


main()
{ …
Run Code Online (Sandbox Code Playgroud)

udp raw-sockets linux-kernel

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

关于Linux进程内存布局的问题

我说的是英特尔32位平台.Linux内核版本2.6.31-14.

#include <stdio.h>
#include <stdlib.h>

int init_global_var = 10;        /* Initialized global variable */
int global_var;                  /* Uninitialized global variable */
static int init_static_var = 20; /* Initialized static variable in global scope */
static int static_var;           /* Uninitialized static variable in global scope */

int main(int argc, char **argv, char **envp)
{
        static int init_static_local_var = 30;   /* Initialized static local variable */
    static int static_local_var;             /* Uninitialized static local variable */
    int init_local_var = 40;                 /* Initialized local …
Run Code Online (Sandbox Code Playgroud)

linux process memory-layout

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

路由器如何使用路由表来选择出局线路?

路由器如何知道哪个是发送数据包的最佳线路.我的意思是,路由表通常不包含IP数据包的目标网络号的条目.它只知道它附近或附近的目的地.它不知道地址是否存在.假设我向我的LAN代理请求stackoverflow.com.接下来,它将请求发送到路由器.如何使用最佳路径将数据包一直传输到美国的服务器,看到该路由器只知道附近的地址?先感谢您...

networking routing

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

如何使用Masm 5.10创建.com文件?

.model tiny
.code

org 100h

host:
    mov ah,9
    mov dx,offset hi
    int 21h

    mov ax,4c00h
    int 21h

hi db 'HELLO'
end host
Run Code Online (Sandbox Code Playgroud)

c:masm hello.asm

输出的结果表示预期在第1行上的操作数。请告诉我如何使用此版本的masm生成com文件...

masm

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

Linux内核:进程页表驻留在哪里?

由于仅由内核使用,因此它们只能位于 PAGE_OFFSET 以上的地址中。但我正在阅读这一页,在其末尾(在 IRC 会议中)我读到了以下几行内容,这让我很困惑:

 saxm> riel:  so where do page tables reside? Surely not below PAGE_OFFSET? Somewhere above PAGE_OFFSET+896mb then?

riel> they could reside anywhere

saxm> anywhere from 0->4gb (on x86 with no pae)?

riel> saxm: yeah
Run Code Online (Sandbox Code Playgroud)

我的意思是,为什么它们会位于 PAGE_OFFSET 下面?如果是这种情况,用户空间进程是否无法访问它们?

virtual-memory linux-kernel

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

堆栈粉碎代码无法在Linux内核2.6.38.7上运行...请帮忙

我一直在阅读"Shellcoders手册",并指的是这个链接,用于实现堆栈溢出.但似乎Linux内核开发人员已经使内核非常安全.这是我的问题.

1)这段代码

void function(int a, int b, int c) {
   char buffer1[8];
   char buffer2[10];
   int* ret;

   ret = buffer1 + 6;
   *ret+=8;
}

void main() {
  int x;

  x = 0;
  function(1,2,3);
  x = 1;
  printf("%d\n",x);
}
Run Code Online (Sandbox Code Playgroud)

给出输出

$ cc smash.c
smash.c: In function ‘function’:
smash.c:7:8: warning: assignment from incompatible pointer type
$ ./a.out
1
Run Code Online (Sandbox Code Playgroud)

用的线*ret+=8*ret=8给出以下输出

*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0xa86df0]
/lib/i386-linux-gnu/libc.so.6(+0xe5d9a)[0xa86d9a]
./a.out[0x8048448]
./a.out[0x8048477]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x9b7e37]
./a.out[0x8048381]
======= Memory …
Run Code Online (Sandbox Code Playgroud)

linux stack-overflow stack gcc

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