小编Her*_*che的帖子

如何避免代码重复初始化最终属性?

public class Code{

//many properties
//...

final String NEWLINE;// ohh a final property!

void creation() //this method is for avoid repetition of code
{        

    //final initialization can't be put here =(

    Source= new StringBuffer();

   //many other commons new's ..
   //...
}

Code()
{
    NEWLINE = System.getProperty("line.separator");
    creation();
}

Code(String name, int numberr)
{
    NEWLINE = System.getProperty("line.separator");
    creation();

    name=new Someting(name);
    number = new Magic(number);
}
Run Code Online (Sandbox Code Playgroud)

}

java constructor final

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

非顺序任务中的Java异常处理(模式/良好实践)

有些任务不应该并行完成(例如打开文件,读取,写入和关闭,有一个订单......)

但是......有些任务更像是一个购物清单,我的意思是它们可能有一个理想的订单,但它不是必须的.​​.....例如通信或加载独立的驱动程序等.

对于这类任务,我想知道一个用于管理异常的java最佳实践或模式.

java的简单方法是:

 getUFO {
      try {
            loadSoundDriver();
            loadUsbDriver();
            loadAlienDetectorDriver();
            loadKeyboardDriver();    
  } catch (loadSoundDriverFailed) {
     doSomethingA;
  } catch (loadUsbDriverFailed) {
      doSomethingB;
  } catch (loadAlienDetectorDriverFailed) {
      doSomethingC;
  } catch (loadKeyboardDriverFailed) {
      doSomethingD;
  } 
}
Run Code Online (Sandbox Code Playgroud)

但是,如果在其中一个动作中有异常但想要 尝试下一个动作呢?

我认为这种方法,但似乎不是一个很好用的例外我不知道它是否有效,无所谓,这真的很糟糕!

getUFO {
       Exception ex=null;
 try {
       try{  loadSoundDriver();
       }catch (Exception e)  {  ex=e; }
       try{  loadUsbDriver();
       }catch (Exception e)  {  ex=e; }
       try{ loadAlienDetectorDriver();
       }catch (Exception e)  {  ex=e; }
       try{  loadKeyboardDriver()
       }catch (Exception e)  {  ex=e; }

       if(ex!=null)
       { …
Run Code Online (Sandbox Code Playgroud)

java exception-handling exception nonsequential

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

是"} while(0);" 总是等于"break;} while(1);"?

我比较了gcc汇编程序的输出

do{ 

//some code 

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

do{

//some code

 break; 
}while(1);
Run Code Online (Sandbox Code Playgroud)

输出是相等的,有或没有优化,但..

一直都是这样吗?

没有实验可以证明理论,它们只能证明它们是错误的

c c++ break while-loop do-while

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

防止在初始化之前使用函数,在C中使用类似构造函数

这是我防止funA,funB,funC等在初始化之前使用的方式

#define INIT_KEY 0xC0DE //any number except 0, is ok

static int initialized=0;

int Init()
{
  //many init task
  initialized=INIT_KEY;
}


int funA()
{
 if (initialized!=INIT_KEY) return 1;
 //..
}

int funB()
{
 if (initialized!=INIT_KEY) return 1;
 //..
}

int funC()
{
 if (initialized!=INIT_KEY) return 1;
 //..
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,如果在循环内调用其中一些函数,那么再次调用"if(initialized!= INIT_KEY)",尽管没有必要.

这是一个很好的例子,为什么构造函数是有用的哈哈,如果它是一个对象,我会确定它在创建时,初始化被调用,但在C中,我不知道如何做.

欢迎任何其他想法!

c optimization constructor initialization function

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

用于线程的音乐库

我想编写播放音乐的节目(音频或midi甚至纯音都可以)

但我想用线程,线程播放声音,而其他线程播放其他声音.

  • 线程1*可以播放不同强度和频率的纯音(形成更复杂的包络,创造声音的"音色"))
  • 线程2*一组线程1可以在给定的音色中播放不同的音符(从乐器声音形成和弦)
  • 线程3*一组线程2可以演奏不同音符的和弦(代表音乐家)
  • 线程4*一组线程3可以成为管弦乐队!=)

我认为这里的难点在于我想要同时输出不同的声音,预处理这将是典型的方式,但如果声音的混合可以实时完成,它会变得非常有趣.

任何想法,经验,图书馆或信息都会有所帮助,在此先感谢!

c++ java audio multithreading

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

Java中的线程状态机

有没有办法在等待更改的状态中持有线程?我的意思是等待发生的事情(更改var,调用方法等).也许它需要使用事件监听器或同步的对象/方法.

像这样的状态机通常的方法

statemachine的例子

这使用了一个do {..} while(true)循环,它可以用于单个线程(并且没有GUI)应用程序,但是它不能用于线程..(至少你想为每个线程状态机使用一个核心)

因此,为了避免处理器消耗任务一个简单(和丑陋)的方式是"定期检查",我的意思是添加一个Sleep其他想法是定义一个同步对象并使用等待而不是线程睡眠

例:

do{
    Switch(state)
    {         
        case STATE_A:
            //..A things                         
            break;

        case STATE_B:
            //..B things                         
            break;

        ...

        case STATE_Z:
            //..Z things                         
            break;
    }
    // Here!  =>   wait()?  Thread.sleep(TIME_CONST)? //Hold and yield
}while(powerOn);
Run Code Online (Sandbox Code Playgroud)

缺点是使用synchronized增加复杂性或者在TIME_CONST内发生的任何事情都是不可见的

我想知道其他想法,谢谢!

java multithreading synchronized state-machine switch-statement

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

推荐的JNLP服务器

我从未使用过JNLP,而且我没有运行web/war服务器所以我将从sratch安装它:

哪个用?

  • GlassFish的
  • Tomcat的
  • 阿帕奇
  • 码头
  • 另一个?

我想知道是否有人已经使用JNLP可以为服务器做任何推荐.

我只想要一个空白页面,中间有一个按钮,用于启动应用程序,仅此而已.

java jnlp webserver java-web-start

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

避免直接从同一个类访问私有属性

这是一个非常简单的例子,直接访问可能是危险的

class Something{

      public static final int MAX=123;

      private int prop;     

      final void riskyMethod()
      {
          this.prop=800; //this is wrong
      }    

      final void safeSetProp(int x)
      {
         if(x<MAX) 
         {
            prop=x;
         }
      }

}
Run Code Online (Sandbox Code Playgroud)

我知道可以将"prop"封装在另一个类中,并将其定义为私有,但这是很多无用的代码开销!

有没有办法强制使用方法来访问相同的类属性?

关键字?任何诡计?

我承认我做过这样的事情是为了避免同一个班级意外访问

private int IKWIDprop;          //IKWID = I Know What I am Doing
Run Code Online (Sandbox Code Playgroud)

我相信你可以知道更好的方法=)

问候!

java

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

从参数中将Java内容分配给Java中的新String

有这个方法

void doSomething(String input)
{
   //trick for create new object instead of reference assignment
   String workStr= "" + input; 

   //work with workStr
}
Run Code Online (Sandbox Code Playgroud)

这样做的java方法是什么?

编辑

  • 如果我使用输入变量作为输入=某事,那么Netbeans会警告为方法参数赋值
  • 如果我用新的String(输入)创建它,它会警告使用String构造函数

也许解决方案不是不输入任何内容,或者只是忽略警告..

java string warnings netbeans

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

通过散列比较java地图

我想用简单的哈希比较两个Java Map.

每个对象都在不同的计算机上,因此通过网络发送哈希将比发送整个对象进行比较更便宜.

例如,我有两个HashMapExampleClass

Map<String,ExampleClass> One=new ...;

Map<String,ExampleClass> Other=new ...;
Run Code Online (Sandbox Code Playgroud)

我不需要确定所有元素都是相等的, 这足以让我信任哈希.

我正要在每一侧进行迭代并创建一个"自制哈希",然后将其发送到网络,最后比较一个int或类似的东西.

如果每次从Collection中添加或删除对象时计算这个"哈希"会很好,这样可以避免迭代整个对象.我必须封装每次添加/删除Map.有没有Java库可以做到这一点?

java collections hash comparison compare

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