小编Oha*_*had的帖子

死锁 - 在这个例子中它是如何发生的?

谁能解释一下:

  1. 为什么我们陷入僵局?
  2. Gaston怎么能在Alphonse退出之前进入功能弓?(它应该从函数返回bowBack()以退出函数bow()- 或)?

这是我得到的输出 - 然后程序卡住了!

阿方斯:加斯顿向我鞠躬致敬!

加斯顿:阿尔方斯向我鞠躬致敬!

public class Deadlock {
    static class Friend {
        private final String name;
        public Friend(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
        public synchronized void bow(Friend bower) {
            System.out.format("%s: %s"
                + "  has bowed to me!%n", 
                this.name, bower.getName());
            bower.bowBack(this);
        }
        public synchronized void bowBack(Friend bower) {
            System.out.format("%s: %s"
                + " has bowed back to me!%n",
                this.name, bower.getName());
        }
    }

    public static void …
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock synchronized

22
推荐指数
4
解决办法
3455
查看次数

动态内存分配 - 为什么程序结束时没有"删除"?

我有两个关于下面程序的问题:1.程序是否只创建动态元素(类型矩形和六边形),还是指向它们的指针是动态的?

2.为什么程序最后没有删除.例如这样的事情:(如果我正确地假设只有元素是动态的..)

for(i=0;i<3;i++)
    delete shapeArray[i];
Run Code Online (Sandbox Code Playgroud)

非常感谢,这个网站帮助了我很多老师无法帮助的事情!使然

该计划是:

 int main()
{
 // Create array of pointers to Shapes of various types.
 const int NUM_SHAPES = 3;

 Shape * shapeArray[] = { new Hexagon(),
 new Rectangle(),
 new Hexagon()
 };

 // Set positions of all the shapes.
 int posX = 5, posY = 15;
 for (int k = 0; k < NUM_SHAPES; k++)
     {
 shapeArray[k]->setPosition(posX, posY);
 posX += 10;
 posY += 10;
};

 // Draw all the shapes at their positions.
 for (int …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
2
解决办法
745
查看次数

多线程

我试图在Java中创建一个并行快速排序,我认为这是一个天真的(因为我还没有研究过接口执行器等)

所有线程完成后我需要一种打印排序数组的方法.但是我不知道我将提前有多少线程...所以我这样做的方式是每次递归等待使用join()方法..所以调用的第一个连接方法必须等到所有其他线程都完成..对吗?

这样当我在main()(打印数组)中执行我的最后两行时,我可以确定我的所有线程都已完成...

所以我有两个问题..

  1. 这是一个并行运行的多线程程序,对吧?或者我是否犯了一些错误,它实际上是以线性的方式线程运行?

  2. 我是否正确使用我在main方法中显示已排序数组的解决方案?

这是我的代码:

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> array = new ArrayList();
        //please assume that I have invoked the input for the array from the user 
        QuickSortWithThreads obj = new QuickSortWithThreads(array,0 ,array.size()-1 );
        for(int i = 0; i < array.size(); i++)
            System.out.println(array.get(i));
    }
}

public class QuickSortWithThreads {
    public QuickSortWithThreads(ArrayList <Integer> arr, int left, int right){  
        quicksort(arr, left, right);
    }

    static void  quicksort(ArrayList <Integer> arr, int left, int right)  { …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

将有符号字节数组转换为无符号字节

我有一个字节数组。

bytes[] = [43, 0, 0, -13, 114, -75, -2, 2, 20, 0, 0]
Run Code Online (Sandbox Code Playgroud)

我想在 Java 中将其转换为无符号字节。这就是我所做的:创建一个新数组并使用 & 0xFF 复制值:

    this.bytes = new byte[bytes.length];
    for (int i=0;i<bytes.length;i++)
        this.bytes[i] = (byte) (bytes[i] & 0xFF);
Run Code Online (Sandbox Code Playgroud)

but the values stay negative in the new array as well. what am I doing wrong?

java unsigned

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

构造函数的顺序 - 链继承

我运行下面的程序,在第一行main之后得到了这个输出:

1
6
1
6
13

任何人都可以解释为什么它进入的建设者GrandFather两次?

//base class 
class Grand{
public:
    Grand(){cout<<"1"<<endl;}
    Grand(const Grand & g){cout<<"2"<<endl;}
    virtual ~Grand  (){cout<<"3"<<endl;}
    virtual void fun1(Grand g){cout<<"4"<<endl;}
    virtual void fun3(){cout<<"5"<<endl;}
private:
    int m_x;
    };



//derived class 
    class Father: public Grand{
    public:
        Father(){cout<<"6"<<endl;}
        Father(const Father & f){cout<<"7"<<endl;}
        ~Father(){cout<<"8"<<endl;}
        void fun1(){cout<<"9"<<endl;}
        void fun2(Father & f){
            cout<<"10";
            f.fun3();
        }
        void fun3(){
            cout<<"11"<<endl;
        }
        virtual void fun4(){
            cout<<"12"<<endl;
        }
    };


sing namespace std;

//derived class 
        class Son: public Father{
        public:
            Son(){cout<<"13"<<endl;}
            Son(const Son& …
Run Code Online (Sandbox Code Playgroud)

c++

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

在 Prolog 中查找 Gcd 的程序

我试图在 Prolog 中编写代码来查找 GCD(不使用模)谁能告诉我这个程序有什么问题?

gcd(X,Y,Z):- X>=Y, X1=X-Y, gcd(X1,Y,Z).
gcd(X,Y,Z):- X<Y, X1=Y- X, gcd(X1,X,Z).
gcd(0,X,X):- X>0.
Run Code Online (Sandbox Code Playgroud)

prolog greatest-common-divisor

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

顺序算法的复杂性 - 最小后缀

在顺序算法(非并行)..

在数组的每个后缀中找到min的最佳复杂度是O(nlogn)?它可能是O(n)吗?如果不?为什么?

INPUT:
array={x1,x2....xn}

OUTPUT:
X= {min(x1,x2....xn),min(x2....xn),(x3,x4....xn)...........min(xn-1,xn),xn}
Run Code Online (Sandbox Code Playgroud)

complexity-theory time-complexity

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

如果字符串仅包含数字,则返回true的程序

如果字符串只包含Haskell中的数字,我想创建一个返回true的程序.

这是我的尝试:

checkNum :: String -> Bool
checkNum xs = ((length (filter isDigit xs )) == length (xs))
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

不在范围内:`isDigit'

我的代码出了什么问题?

haskell

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

这个函数在Haskell中做了什么?

Haskel的这个功能是做什么的?

我不明白递归在这里工作的方式

 f[]=[]
 f(x:xs)=x: [y|y <- f xs, x/=y]
Run Code Online (Sandbox Code Playgroud)

haskell

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

点燃apache使用vs mongo db使用 - 主要区别

Ignite vs mongo db

  1. 点燃apache和mongo db之间的主要区别是什么?

  2. 是mongo db我们保存在磁盘中的数据库并点燃我们保存在Ram中的内存吗?

  3. 你能一起使用吗?如果是的话,你将如何结合它们?

database bigdata mongodb ignite

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