小编Ram*_*Ram的帖子

为什么这个类可变?

public class Test {
    private final String url;
    public Test(String url) {
        this.url = url;
    }
    public String getUrl() {
        return url;
    }
}
Run Code Online (Sandbox Code Playgroud)

Test类有:

  1. 只有一个私有和最终的实例变量.
  2. 没有二传手.
  3. 初始化实例变量的唯一方法是通过构造函数.
  4. 一旦设置了URL,即使在getUrl中也不能修改它,即使该方法被Test的任何子类覆盖.

但是我正在阅读的一本书说上面的Test类是可变的,因为:

  • 这两个类都不是最终的,因此它可以扩展,并且子类可以覆盖实例方法.但Test类实际上没有构造函数以外的任何实例方法.

  • 构造函数也不是私有的.

你能帮我理解为什么Test类是可变的吗?

java immutability

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

wamp服务器无法启动:Windows 7,64位

我试图在Windows 7,64位操作系统上安装wamp服务器(以下是确切的设置名称).但它永远不会开始,图标保持橙色,这意味着某些服务无法启动.

wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64
Run Code Online (Sandbox Code Playgroud)

我没有找到任何解决方案.

No skype, port 80 is not in use.
Run Code Online (Sandbox Code Playgroud)

在Windows服务中,当我尝试手动启动wampapache服务时,它会抛出以下错误:

Windows无法在本地计算机上启动wampapache服务.
错误1053:服务未及时响应启动或控制请求.

apache_error.log is empty.
Run Code Online (Sandbox Code Playgroud)

事情在Windows XP中运行良好.

apache wamp windows-7-x64

24
推荐指数
2
解决办法
10万
查看次数

Docker 在管理员添加的规则之上插入 iptable Postrouting 规则

我必须在 NAT 表 POSTROUTING 链中添加一些 iptable 条目,以允许 docker 容器通过主机的不同源地址/源接口 (to_source) 访问互联网。

一切进展顺利。

前任:

target     prot opt source               destination
SNAT       all  --  100.100.8.0/22       10.1.2.3       to:100.64.0.5
Run Code Online (Sandbox Code Playgroud)

但是,当重新启动 docker 服务时,它会在我的条目之上插入 MASQUERADE 规则,因此我的上述修复被屏蔽。Docker 容器现在无法访问互联网。

前任:

target     prot opt source               destination
MASQUERADE  all  --  100.100.8.0/22       0.0.0.0/0
SNAT        all  --  100.100.8.0/22       10.1.2.3       to:100.64.0.5
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的 POSTROUTING 规则即使在 docker 重新启动后也始终保持在链的顶部?

linux networking iptables docker

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

在C中具有指针作为成员的结构的memcpy

如果这是一个愚蠢的问题,请不要投票给我,我只是想了解.

我有一个结构,有一些指针作为成员,我正在尝试做memcpy,我有人建议我不应该在这种情况下使用memcpy作为memcpy做一个浅拷贝(意思是它复制指针)相当深的拷贝(意味着复制什么指针)指向).

但我不确定为什么它在以下程序中没有任何区别:请查看代码和输出,并解释为什么在这种情况下它不是浅层副本?

#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct student {
    char *username;
    char *id;
    int roll;
};

void print_struct(struct student *);
void print_struct_addr(struct student *);
void changeme(struct student *);

int main (void) {
    struct student *student1;
    char *name = "ram";
    char *id = "200ABCD";
    int roll = 34;

    student1 = (struct student *)malloc(sizeof(struct student));
    student1->username = name; 
    student1->id = id;
    student1->roll = roll; 
    print_struct_addr(student1);
    print_struct(student1);
    changeme(student1);
    print_struct(student1);
    print_struct_addr(student1);
    return 0;
}

void print_struct(struct student *s) {
    printf("Name: %s\n", …
Run Code Online (Sandbox Code Playgroud)

c structure data-structures

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

系统调用返回值和错误

我在我的程序中使用以下系统调用:

recvfrom
sendto
sendmsg
Run Code Online (Sandbox Code Playgroud)

从上面提到的每个系统调用我检查它是否完成没有任何中断,如果它被中断,我重试.

例如:

recvagain:     
    len = recvfrom(fd, response, MSGSIZE, MSG_WAITALL, (struct sockaddr *)&from, &fromlen);
    if (errno == EINTR) {
           syslog(LOG_NOTICE, "recvfrom interrupted: %s", strerror(errno));
           goto recvagain;
    }
Run Code Online (Sandbox Code Playgroud)

这里的问题是我需要在每次失败时将errno值重置为0.或者如果recvfrom()成功,它会将errno重置为0吗?

recvfrom()手册页说:

成功完成后,recvfrom()以字节为单位返回消息的长度.如果没有可接收的消息且对等体已执行有序关闭,则recvfrom()返回0.否则该函数返回-1并设置errno以指示错误.

与sendto和sendmsg相同的情况.

我现在无法真正检查这个,因为我无法访问服务器 - 客户端设置.任何的想法?

谢谢

c linux operating-system system-calls systems-programming

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

在perl中访问数组哈希散列中的元素

my %PlannedPerWeek = (
                    September => {
                            Week1 => [80, 23, 199, 45, 19, 36],
                            Week2 => [78, 21, 195, 43, 18, 36],
                            Week3 => [76, 19, 191, 41, 17, 36],
                            Week4 => [74, 17, 187, 39, 16, 36],
                    }
    );
Run Code Online (Sandbox Code Playgroud)

我在perl prog中有上面的数组哈希哈希值.如何从上面的数据结构中访问元素'199'.

perl perl-hash perl-data-structures

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

float variables in C

May be this is a simple question but I am not sure about how float variables are stored in memory and why it is behaving in this way, can someone please explain about the following behavior.

#include<stdio.h>

int main ()
{
    int a = 9/5;
    printf("%f\n", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Output:

0.000000
Run Code Online (Sandbox Code Playgroud)

I have looked at some information on how float variables are stored in memory, it has stuff about mantissa, exponent and sign. But I am not getting how …

c format-specifiers

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

sed 提取两个模式之间的文本,其中第二个模式可以是其中之一

我正在尝试提取pattern1(固定)和pattern2(可以是p2-1/p2-2)之间的文本。您能告诉我如何通过单个命令实现此目的吗?

文件以或开头start和结尾endclose

File1:
======
junktest
data
start
stackoverflow
sed
close

File2:
======
data2
start
stackoverflow
end
Run Code Online (Sandbox Code Playgroud)

我可以从 File1 中提取文本

sed -n "/start/,/close/p"
Run Code Online (Sandbox Code Playgroud)

并从 File2 中

sed -n "/start/,/end/p"
Run Code Online (Sandbox Code Playgroud)

我需要一个 sed 命令来实现这两个目标..例如:

sed -n "/start/, /close or end /p"
Run Code Online (Sandbox Code Playgroud)

unix linux sed

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