小编Ano*_*non的帖子

如果UDP不可靠,为什么在传输层使用它

对不起,这是一个愚蠢的问题.

传输层的功能是可靠的消息传递.UDP本质上是不可靠的,为什么我们在传输层使用它呢?

谢谢

编辑:只是为了澄清,我已经阅读了Wiki和其他来源.我的问题是

UDP是不可靠的(我知道为什么以及它的优点和使用位置等),为什么不在其他层使用它(UDP),而不是意味着可靠性的传输层.

networking udp osi tcp-ip

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

可以从静态函数中调用构造函数吗?

如果以前有人问过这个问题,我很抱歉(我试图找到它但徒劳)。我正在http://sourcemaking.com/design_patterns/singleton/cpp/1上查看单例设计模式(代码是从那里复制的)

class GlobalClass
{
    int m_value;
    static GlobalClass *s_instance;
    GlobalClass(int v = 0)
    {
        m_value = v;
    }
  public:
    int get_value()
    {
        return m_value;
    }
    void set_value(int v)
    {
        m_value = v;
    }
    static GlobalClass *instance()
    {
        if (!s_instance)
          s_instance = new GlobalClass;
        return s_instance;
    }
};

// Allocating and initializing GlobalClass's
// static data member.  The pointer is being
// allocated - not the object inself.
GlobalClass *GlobalClass::s_instance = 0;

void foo(void)
{
  GlobalClass::instance()->set_value(1);
  cout << "foo: …
Run Code Online (Sandbox Code Playgroud)

c++ static constructor

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

EXIF喜欢视频的东西

有没有标准的方法从视频文件中获取信息?对于图像,我们有EXIF数据,可用于获取有关图像文件的日期/时间,大小等的信息.我想知道视频是否还有这样的东西.

用例是 - 我有很多从我的数码相机拍摄的视频.我想将它们重命名为更有意义的东西,比如YYYY-MM-DD而不是Video_N.YYYY-MM-DD应该是拍摄视频的日期和时间.

任何Python,C/C++,Perl的解决方案都会受到赞赏,但如果你有其他语言的解决方案,请告诉我.

谢谢.

c c++ python perl exif

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

用于在图中找到内部连接的节点簇的算法,其中没有边缘向外指向

我将我的图表表示为邻接列表.我想知道如何找到一个内部连接但没有边缘点的节点集群.有没有我可以使用的众所周知的算法?

对于egThis是我的图表.

1---->2
2---->1
2---->3
3---->1
3---->4
4---->5
5---->4
Run Code Online (Sandbox Code Playgroud)

节点4和5在内部连接.然而,没有外界优势.这将是我的答案.类似地,节点1,2,3即使它们形成一个循环,也不符合标准,因为外边缘从节点3发出.因此它与在邻接列表中找到循环不同.

可选阅读:(为什么我需要这个)我正在研究排名页面(搜索引擎)算法,像4和5这样的节点称为排名接收.

c++ algorithm search-engine code-search-engine graph-algorithm

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

不使用printf格式说明符的潜在问题

  #include <stdio.h>
  void wrapperPrint(char* s)
  {
      printf(s);
      return;
  }

  int main()
  {

          wrapperPrint("Hello world\n");
          wrapperPrint("This is a string");

      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

如果程序正确打印字符串(确实在gcc 4.6.3上测试过),为什么我们需要像%d,%s等格式说明符.或者换句话说,这个程序的潜在问题是什么.

c printf

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

A类在C类中不可见,但在主要部分可见.为什么?

class A {};

class B : private A {

};

class C : public B {
public:
    void f() {
        A a; // This line causes error, but works when it is in main() function
    }

};

int main()
{
    C c;
    // A a; --> This line works
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我猜这与B私人继承有关,A但不能把我的手指放在上面.

编辑:错误是"A类不可见".用g ++编译.

c++

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

谁首先捕获数据包 - 内核还是驱动程序?

我正在尝试使用tcpreplay和tcpdump将数据包从一台机器发送到另一台机器.

如果我写一个驱动程序直接从NIC捕获数据包,将遵循哪条路径?

1)N/W包---->网卡----> app(没有内核的作用)

2)N/W包----->内核----->网卡---> app

谢谢

networking kernel network-programming driver

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

此C程序的输出

这个C程序的输出应该是什么?

int main()
{
    int x=1,y=1,z;
    if (z=(y>0)) x=5;
    printf("%d %d",x,z);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如所料,输出X是5,Z是1.这是因为当表达y> 0时,它是真的,依此类推.现在问题在于这个程序:

int main()
{
    int x,y;
    for (y=1;(x=y)<10;y++)
    ;

    printf("%d %d",x,y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出不应该是一个无限循环?原因是,(x = y)总是返回true(1),总是小于10?

c

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

为什么sizeof(a)16?(sizeof int是4)

#include <stdio.h>

int main() {
    int *a[2]; // an array of 2 int pointers
    int (*b)[2];
    // pointer to an array of 2 int (invalid until assigned) //
    int c[2] = {1, 2}; // like b, but statically allocated

    printf("size of int %ld\n", sizeof(int));
    printf("size of array of 2 (int *) a=%ld\n", sizeof(a));
    printf("size of ptr to an array of 2 (int) b=%ld\n", sizeof(b));
    printf("size of array of 2 (int) c=%ld\n", sizeof(c));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

a是一个由2个整数指针组成的数组,所以大小不应该是2 * 4 …

c gcc sizeof

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

输出说明

我的节目

class Building {
Building() {
    System.out.print("b ");
}

Building(String name) {
    this();
    System.out.print("bn " + name);
}
};

public class House extends Building {
House() {
    System.out.print("h "); // this is line# 1
}

House(String name) {
    this(); // This is line#2
    System.out.print("hn " + name);
}

public static void main(String[] args) {
    new House("x ");
}
}
Run Code Online (Sandbox Code Playgroud)

我们知道编译器会将调用写super()为子类构造函数中的第一行.因此输出不应该是:

b (在第2行之前从编译器调用super()调用

b (再次从编译器写入调用super(),在第1行之前)

h hn x
Run Code Online (Sandbox Code Playgroud)

但输出是

b h hn x
Run Code Online (Sandbox Code Playgroud)

这是为什么?

java output

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

可能是16位机器上的32位整数吗?

只是想知道是否可能.如果是,除编译器仿真层之外还有其他方法吗?

谢谢

c compiler-construction embedded

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