小编Tim*_* N.的帖子

使一个类不变

我正在学习不可变的对象.我必须使下面的类不可变.我做得对吗?

import java.awt.Point;
public class MyImmutablePoint {
    Point point;

    public MyImmutablePoint(Point point) {
        super();
        this.point = point;
    }

    public MyImmutablePoint() {
        this (new Point (0,0));
    }

    public Point getPoint() {
        return point;
    }

    public void setPoint(Point point) {
        this.point = point
    }
}
Run Code Online (Sandbox Code Playgroud)

"不变"类:

public final class MyImmutablePoint {
    private final Point point;

    public MyImmutablePoint(Point point) {
        this.point = point;
    }

    public MyImmutablePoint() {
        this (new Point (0,0));
    }

    public Point getPoint() {
        return point;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我不确定这个toString方法.并且可能返回像Point这样的对象也可以像数组一样修改但不确定

java immutability

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

方法同步时需要波动?

我有多个线程访问class Aufzahlen和增加cc变量.我想知道我是不是把cc放在volatile上但我的同步方法是否有任何错误空间?由于cc变量一次只能访问一次.

线程是否仍然可以在自己的缓存中包含cc变量,因此它变得混乱?我一直在运行这段代码示例,到目前为止没有发现任何错误.

public class Aufzahlen {
private int cc=1;

  public synchronized void aufzahlen() throws InterruptedException {
    cc = cc +1;
  }


  public synchronized void printa() {
    // TODO Auto-generated method stub
    System.out.println("Thread: " + Thread.currentThread() + "Zahl: " + cc);
  }

{
Run Code Online (Sandbox Code Playgroud)

java multithreading volatile

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

构造函数java中的final double

我无法理解为什么double xx并将yy其放入final构造函数中.为什么不让我只是把它们double xxdouble yy.为什么他们必须final?我想这个目的的全部目的是创建一个immutable对象.

public class Point {
private final double x, y;
private double distance; 

 public Point(final double xx, final double yy) {
  this.x = xx;
  this.y = yy;
  this.distance = -1; 
 }

}
Run Code Online (Sandbox Code Playgroud)

java immutability

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

易失性和同步

我还有一些关于同步和不稳定的东西.

我理解一个线程可以在本地安全地更改.从我到目前为止所读到的是synchronized> volatile.

假设我有一个不长或双的参数,所以基本上是一个标准的整数(没有原子).

我有一个同步方法,我用这个Integer做了很多工作.所有线程都会获得此Integer的更新版本吗?或者我是否必须宣布它是不稳定的?

public class stackoverflow {

    private int x = 0;

    public synchronized void rechnen(){ 
        //dosomething   
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上在rechnen()完成后,我得到了10000个线程,所有都会获得x的更新版本,因为我的方法是同步的?或者我是否必须宣布它是不稳定的?

java multithreading volatile synchronized

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

使用java将两个整数转换为一个浮点数

我想把两个整数x和y变成一个像x,y一样的浮点数.所以基本上1和3的shud变成1,3

不知道怎么写这个:

float z = (float) x,y;
Run Code Online (Sandbox Code Playgroud)

java

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

带指针的C++漏洞问题

在测试文档中,我发现我被问到以下代码中的问题是:

#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

int main()
{
    char* a = (char*) malloc (20);
    char* b = (char*) malloc (20);
    strcpy(b, "Secure Coding");
    strcpy(a, "Insecure Coding");
    a = b;
    cout << a << endl;
    cout << b << endl << endl;
    free(a);
    free(b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它是什么?

c++ security memory-leaks

-10
推荐指数
1
解决办法
664
查看次数