小编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
查看次数

bind()返回权限被拒绝C.

我正在尝试编写一个程序,它接收端口号作为命令行参数并启动HTTP服务器.我正在通过listenfd来接受()来做这件事.但是,我从open_listenfd()获取权限,然后从Accept()获取错误的描述符错误.

open_listenfd()和Accept()函数是从http://csapp.cs.cmu.edu/2e/ics2/code/src/csapp.c复制的.

我将端口100传递给程序:

int open_listenfd(int port)
{
   int listenfd, optval=1;
   struct sockaddr_in serveraddr;

   /* Create a socket descriptor */
   if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
      return -1;

   /* Eliminates "Address already in use" error from bind */
   if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval , sizeof(int)) < 0)
      return -1;

   /* Listenfd will be an endpoint for all requests to port on any IP address for this host */
   bzero((char *) &serveraddr, sizeof(serveraddr));
   serveraddr.sin_family = AF_INET; …
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming

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

带有 readLine() 的 while 循环

这是我的问题:正常的 while 循环看起来像这样 -

while(condition){statements} 
Run Code Online (Sandbox Code Playgroud)

and 语句执行直到条件变为false并且循环结束。我对这种陈述的逻辑感兴趣:

while((a=b.readLine) != null) { ... } 
Run Code Online (Sandbox Code Playgroud)

就我而言,它用于客户端 - 服务器通信。条件有时为真,有时为真,但循环看起来像是在永远测试条件,当为真时,{}执行语句。在我看来,循环等待条件为真,然后运行语句。它是否以某种方式与方式BufferedReaderInputStreamReader工作或什么有关?此外,这个循环似乎永远不会结束,它只是等待条件成立true,然后运行语句,然后再次等待条件成立true,等等。我将感谢您的任何澄清。

java readline while-loop bufferedreader inputstreamreader

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

Java Server 的 Swift RSA 加密公钥失败

我想创建公共密钥的base64RSA Private key使用Security框架。这是片段。

let tag = "com.example.keys.mykey"
public extension SecKey {
    static func generateBase64Encoded2048BitRSAKey() throws -> (private: String, public: String) {
        let type = kSecAttrKeyTypeRSA
        let attributes: [String: Any] =
            [kSecAttrKeyType as String: type,
             kSecAttrKeySizeInBits as String: 2048
        ]

        var error: Unmanaged<CFError>?
        guard let key = SecKeyCreateRandomKey(attributes as CFDictionary, &error),
            let data = SecKeyCopyExternalRepresentation(key, &error) as Data?,
            let publicKey = SecKeyCopyPublicKey(key),
            let publicKeyData = SecKeyCopyExternalRepresentation(publicKey, &error) as Data? else {
                throw error!.takeRetainedValue() as Error …
Run Code Online (Sandbox Code Playgroud)

rsa swift java-security

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

为什么编译器允许我将一个实现类转换为另一个实现类?

因此,我正忙于向下转换,试图找到有效的方法和无效的方法。我有三个类:基类Animal和两个派生类DogCat

private class Animal {
}

private class Dog extends Animal {
}

private class Cat extends Animal {
}
Run Code Online (Sandbox Code Playgroud)

出于明显的原因,编译器不允许以下代码:

Dog dog = s.new Dog();
Cat cat = (Cat) dog;
Run Code Online (Sandbox Code Playgroud)

这是因为我将一个派生类转换为另一派生类,这是不可能的。但是,如果我创建Animal一个接口类型和Cat一个接口类型,那么编译器会突然接受它,即使没有可能,也不会出现任何问题。

private interface Animal {

}

private class Dog implements Animal {

}

private interface Cat extends Animal {

}
Run Code Online (Sandbox Code Playgroud)

一旦运行与以前相同的代码,就会像预期的那样给我一个错误。

java inheritance downcast

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

Java:循环 Thread.sleep() 是否总是在同一个物理内核上运行?

我试图了解 Java 内部关于它们的调度和线程关联性。

问题是:

给定一个无限循环,在多核环境(例如 8)中的线程上运行:

while(true) Thread.sleep(1000);
Run Code Online (Sandbox Code Playgroud)
  1. 这个操作是否总是在同一个物理线程上运行?

  2. 有什么缘分吗?

  3. 如果它并不总是在同一个 CPU 上运行,JVM 如何决定实际将执行切换到新的 CPU?

  4. 有什么方法可以验证这种行为?

java cpu multithreading affinity

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