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最佳实践或模式.
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) 我比较了gcc汇编程序的输出
do{
//some code
}while(0);
Run Code Online (Sandbox Code Playgroud)
同
do{
//some code
break;
}while(1);
Run Code Online (Sandbox Code Playgroud)
输出是相等的,有或没有优化,但..
一直都是这样吗?
没有实验可以证明理论,它们只能证明它们是错误的
这是我防止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中,我不知道如何做.
欢迎任何其他想法!
我想编写播放音乐的节目(音频或midi甚至纯音都可以)
但我想用线程,线程播放声音,而其他线程播放其他声音.
我认为这里的难点在于我想要同时输出不同的声音,预处理这将是典型的方式,但如果声音的混合可以实时完成,它会变得非常有趣.
任何想法,经验,图书馆或信息都会有所帮助,在此先感谢!
有没有办法在等待更改的状态中持有线程?我的意思是等待发生的事情(更改var,调用方法等).也许它需要使用事件监听器或同步的对象/方法.
像这样的状态机通常的方法
这使用了一个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
我从未使用过JNLP,而且我没有运行web/war服务器所以我将从sratch安装它:
哪个用?
我想知道是否有人已经使用JNLP可以为服务器做任何推荐.
我只想要一个空白页面,中间有一个按钮,用于启动应用程序,仅此而已.
这是一个非常简单的例子,直接访问可能是危险的
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)
我相信你可以知道更好的方法=)
问候!
有这个方法
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方法是什么?
编辑
也许解决方案不是不输入任何内容,或者只是忽略警告..
我想用简单的哈希比较两个Java Map
.
每个对象都在不同的计算机上,因此通过网络发送哈希将比发送整个对象进行比较更便宜.
例如,我有两个HashMap
ExampleClass
Map<String,ExampleClass> One=new ...;
Map<String,ExampleClass> Other=new ...;
Run Code Online (Sandbox Code Playgroud)
我不需要确定所有元素都是相等的, 这足以让我信任哈希.
我正要在每一侧进行迭代并创建一个"自制哈希",然后将其发送到网络,最后比较一个int
或类似的东西.
如果每次从Collection中添加或删除对象时计算这个"哈希"会很好,这样可以避免迭代整个对象.我必须封装每次添加/删除Map
.有没有Java库可以做到这一点?
java ×8
c ×2
c++ ×2
constructor ×2
audio ×1
break ×1
collections ×1
compare ×1
comparison ×1
do-while ×1
exception ×1
final ×1
function ×1
hash ×1
jnlp ×1
netbeans ×1
optimization ×1
string ×1
synchronized ×1
warnings ×1
webserver ×1
while-loop ×1