小编use*_*421的帖子

内存:编译器如何选择存储变量的位置?

给定两个函数func1和f2,具有以下签名:

void func1(){
    int baba = 12345;
    // printf the value of baba here
}

void f2(){
    int loo;
    //printf the value of loo here
}
Run Code Online (Sandbox Code Playgroud)

...如果我运行我的int main,它只有func1然后f2:

int main(){
      func1();
      f2();
}
Run Code Online (Sandbox Code Playgroud)

...那么baba和loo的印刷价值将是12345.所以我的问题如下:

  1. 这是定义的行为,还是我的机器所做的错误?

  2. 如果这不是我的计算机做的一些错误的事情,你能解释为什么编译器选择存储loo在同一地址baba?

编辑: 我想我应该问,如果我有这两个EXACT两个函数,baba和loo在任何机器上都有相同的值吗?

我知道厕所的价值是巴巴剩余比特的结果,我明白(至少在我的机器上)两者的堆叠正在布置,以便厕所重叠到巴巴的旧​​领土上. 是不是每台机器都会以baba和loo重叠的方式放置这两个功能堆栈?完全按照书面使用这两个功能,即......

c c++ memory compiler-construction runtime

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

领先的零如何改变Java中的数字文字?

看到它和答案之后,我和我的朋友们在Java中对这个说法感到困惑.这是如何运作的?

System.out.printf("%d", 077);
Run Code Online (Sandbox Code Playgroud)

等于63?

java

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

使用 nmap 检测特定 IP 地址的操作系统

我正在尝试使用nmap. 到目前为止,这是我的代码:

import java.io.*;

public class NmapFlags {
  public static void main(String[] args) throws Exception {
    try {

      String[] cmdarray = { "nmap", "-O", "66.110.59.130" };//

      // example trying to find the OS or device detials of this Ip address//
      Process process = Runtime.getRuntime().exec(cmdarray);
      BufferedReader r = new BufferedReader(new InputStreamReader(
          process.getInputStream()));
      String s;
      while ((s = r.readLine()) != null) {
        System.out.println(s);

      }

      r.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码输出后,我得到的是:

All 1000 scanned ports on …
Run Code Online (Sandbox Code Playgroud)

nmap

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

为什么在快速排序中选择随机主元

因此,随机选择一个主元在最坏情况下运行时间为 O(n 2 ),但是当将主元选择为列表的最小值和最大值的平均值时,您会得到最坏情况 O(n log n)。

当然,由于查找最小值和最大值,每次递归都会增加 2*O(n),而不是随机生成器的常数 O(1)。当将其实现为枢轴时,您将在递归树的叶子处对列表进行排序,而不是在标准算法中将元素从根到叶子进行排序。

当实现而不是枢轴作为列表上的值时,它只是一个与之比较的数字,所以这不是标准的快速排序,但我的问题仍然适用。

下面是我写得不好的伪代码:

func sort(List n):
    if n.length < 2
     return n;
    min = n.minValue
    max = n.maxValue
    avg = (min+max) /2 
    List left = list of elements in n less than avg
    List right = list of elements in n greater than avg
    sort(left)
    sort(right)
Run Code Online (Sandbox Code Playgroud)

sorting algorithm quicksort

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

servlet 响应何时提交或刷新?

根据javadoc:

在-request.getRequestDispatcher("/Test").forward(request,response);

forward 应该在响应提交给客户端之前调用(在响应正文输出被刷新之前)。响应缓冲区中未提交的输出在转发之前自动清除。

当提交或刷新此响应时,我感到困惑?

这是写作printlnprintwriter

java jsp servlets forward requestdispatcher

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

synchronized关键字如何在内部工作

我阅读了以下程序并在博客中回答.

int x = 0;
boolean bExit = false;
Run Code Online (Sandbox Code Playgroud)

线程1(未同步)

x = 1; 
bExit = true;
Run Code Online (Sandbox Code Playgroud)

线程2(未同步)

if (bExit == true) 
System.out.println("x=" + x);
Run Code Online (Sandbox Code Playgroud)

线程2是否可以打印" x=0"?
Ans:是(原因:每个线程都有自己的变量副本.)

你怎么解决它?
Ans:通过使用make两个线程在一个公共互斥锁上同步或使两个变量都是volatile.

我的疑问是:如果我们将2变量设置为volatile,那么2个线程将共享来自主存储器的变量.这是有道理的,但是在同步的情况下如何解决它,因为线程都有自己的变量副本.

请帮我.

java multithreading

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

“ p-持久csma”中的p是什么?

我只是通过CSMA的基础知识,遇到了“持久性方法”。Wiki定义如下:

P持久

这是介于1持久和非持久CSMA访问模式之间的一种方法。[2]当发送节点准备好发送数据时,它会感觉到传输介质处于空闲还是忙碌状态。如果空闲,则发送概率为p的帧。如果繁忙,则它将连续感测传输介质,直到它变得空闲为止,然后以概率p进行传输。如果节点不传输(此事件的概率为1-p),它将等待直到下一个可用时隙。如果传输介质仍然不忙,它将以相同的概率p再次传输。

你能告诉我这个概率p是多少?并基于它的计算结果?

networking protocols

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

如何发送参数值包含空格的GET请求?

我正在测试下面的代码以发送带有参数的 GET 请求,当参数的值是包含空格的字符串时,此代码会失败,例如:http://company.com/example.php?value=Jhon 123。如果我发送Jhon123(没有任何空格)就可以正常工作了。

为什么会出现这种情况?

private static void sendGet(String site, String params) throws Exception {

        site += params;
        URL obj = new URL(site);

        try {

            HttpURLConnection con = (HttpURLConnection) obj.openConnection();

            // optional default is GET
            con.setRequestMethod("GET");

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + site);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) { …
Run Code Online (Sandbox Code Playgroud)

java http get-request

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

TCP的欢迎端口与连接端口以及三次握手的目的

这是教科书 James F. Kurose、Keith W. Ross 的图片:计算机网络:自上而下的方法, ISBN-13:978-0-13-285620-1。ISBN-10:0-13-285620-4。

在此输入图像描述

从图中可以看出,欢迎端口与实际连接端口不同。(因为不同的socket分配了不同的端口号。假设Client正在初始化一个HTTP请求,那么Web服务器上的欢迎端口为80,然后实际连接端口与80不同?

第二个问题是,TCP握手的目的是什么?我只被告知为什么 TCP 需要握手,但实际上并不知道为什么握手是必要的。如果我们摆脱 TCP 的握手,我们仍然可以使 TCP 成为可靠的数据传输协议,不是吗?

sockets networking tcp

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

为什么在java中使用java.security.SecurityManager可以读取任何文件?

我只想在我的Java程序中读取和写入一些文件.所以我java.security.SecurityManager用来管理这个,但似乎并不令人满意.

Main.java文件如下

import java.io.*;
import java.util.*;
public class Main {
    static private final String INPUT = "in.txt";
    public static void main(String args[]) throws Exception {
        FileInputStream instream = null;
        BufferedReader reader = new BufferedReader(new FileReader(INPUT));
        String tempString = null;
        while ((tempString = reader.readLine()) != null) {
            System.out.println(tempString);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

/opt/java.policy下面的文件

grant {
    permission java.io.FilePermission "./out.txt", "write";
};
Run Code Online (Sandbox Code Playgroud)

然后我跑了

java -Xss64m -Xms16m -Xmx512m -Djava.security.manager -Djava.security.policy=/opt/java.policy Main
Run Code Online (Sandbox Code Playgroud)

但是没有错误,输出就是这样in.txt.我尝试了其他文件并获得了相同的结果.为什么会这样?

java securitymanager java-io

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