我试图熟悉SCJP的Java线程,我有一个问题.
在下面编写的代码中,我简单地创建了:两个带有公共数据存储(一个数组)的Runnable和一个用于连续填充数据的同步write()方法,依次为每个Runnable(A和B)留下一个字母作为标记.
我知道代码很粗糙,可以更好地编写,但我正在寻求线程的道德.
所以现在当我运行它时,它永远不会终止,结果停在:
还好.A0.
但是,当我将wait()更改为wait(100)时,它可以正常计数从0到9并正常终止.有人可以解释一下这背后的原因吗?
谢谢.
public class ArrayThreads {
Object[] array = new Object[10];
boolean isA = true;
int position = 0;
int getIndex(){
return position;
}
class ThreadA implements Runnable{
synchronized void write(String value){
while(!isA){
try {
wait();
} catch (InterruptedException ex) {
System.out.println("An error in" + value);
ex.printStackTrace();
}
}
array[position] = value + position;
System.out.println(array[position]);
position++;
isA = !isA;
notify();
}
public void run() {
while(getIndex()<array.length){
if (getIndex()==9) return;
else
write("A");}
}
}
class ThreadB …
Run Code Online (Sandbox Code Playgroud) 如何设计和管理应与多个数据库管理系统(如Oracle和MS SQL Server)兼容的Web应用程序的开发?
如果您不能像NHibernate或EF 那样使用ORM,那么在开发过程中如何维护数据库模式?
我现在的方法是在SQL Server上建立一个开发数据库,并在发布测试补丁之前将其移植到Oracle(使用工具),以测试两个rdbms上的软件.(该工具还会生成应用程序用于升级数据库的文件)
这是一个好方法吗?那么Visual Studio 的数据库项目呢,它是保存我的数据库模式的更好方法吗?
编辑: 这个问题不是关于设计应用程序的体系结构(我已经有一个抽象的数据访问层),而是如何在开发过程中为不同类型的rdbms维护数据库模式.
在Telerik ASP.NET MVC TabStrip中,我希望页面记住最后选择了哪个选项卡,并通过多个页面请求保留选择.我所拥有的是一个部分视图,显示在多个页面中,它包含TabStrip.使用SelectedIndex,设置选项卡始终被选中,这将使用户的选择无效.
我已经为我的索引(haystack)添加了一个MultivaluedField,我需要搜索ManyToMany相关字段,但它不起作用.
该引擎是WHOOSH.
这是我的索引的样子:
class PostIndex(SearchIndex):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='author')
body = CharField(model_attr='body')
pub_date = DateTimeField(model_attr='publish')
regions = MultiValueField()
def prepare_regions(self, obj):
return [region.name for region in obj.regions.all()]
Run Code Online (Sandbox Code Playgroud)
这就是我的模型的样子:
class Post(models.Model):
title = models.CharField(_('title'), max_length=200)
author = models.ForeignKey(User, blank=True, null=True)
body = models.TextField(_('body'), )
allow_comments = models.BooleanField(_('allow comments'), default=True)
publish = models.DateTimeField(_('publish'), default=datetime.datetime.now)
categories = models.ManyToManyField(Category, blank=True)
tags = TagField()
objects = PublicManager()
regions = models.ManyToManyField(Region, blank=True)
Run Code Online (Sandbox Code Playgroud)
如果我使用SearchQuerySet().filter(region__in = words_list)它可以工作.问题是我不知道用户何时搜索某个区域或其他字段,因此我必须使用SearchQuerySet().filter(content__icontains = words_list).并且以这种方式找不到任何东西.
谢谢
谢谢!!
考虑编写可索引类的任务,该类自动将其状态与某些外部数据存储(例如文件)同步.为了做到这一点,需要让类知道可能发生的索引值的更改.不幸的是,重载operator []的常用方法不允许这样做,例如......
Type& operator[](int index)
{
assert(index >=0 && index < size);
return state[index];
}
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以区分被访问的值和被修改的值?
Type a = myIndexable[2]; //Access
myIndexable[3] = a; //Modification
Run Code Online (Sandbox Code Playgroud)
这两种情况都在函数返回后发生.有没有其他方法来重载operator [],这可能更有意义?
如果没有System.Random类,你怎么会生成一个随机数?
是否有任何已知的算法或你有没有设计过?
在完美转发中,std::forward
用于转换命名的右值引用t1
和t2
未命名的右值引用.这样做的目的是什么?inner
如果我们离开t1
&t2
作为左值,那将如何影响被调用的函数?
template <typename T1, typename T2>
void outer(T1&& t1, T2&& t2)
{
inner(std::forward<T1>(t1), std::forward<T2>(t2));
}
Run Code Online (Sandbox Code Playgroud) 我想从QString解析某种(或纯粹的)XML代码.
我的QString就像:
<a>cat</a>My cat is very nice.
Run Code Online (Sandbox Code Playgroud)
我想获得2个字符串:
猫,我的猫非常好.
我认为XML解析器可能不是必需的,但是将来我会在同一个字符串中有更多的标签,所以它也是一个非常有趣的点.
您好我的PHP项目是在远程测试机器上设置的.我需要使用eclipse IDE进行调试.我该如何进步.我开始知道我应该更喜欢Xdebug而不是zend调试器.
可能重复:
变量变量的实际用途是什么?
好吧,这个问题可能看起来有点点 - 白痴,但我真的很想知道:变量变量何时有用?我用PHP编程好几年了,但我从来没有用过它们.对我来说,它看起来很有趣而不是有用.
变量变量的一些现实生活中的例子是什么?
更新:
我对你的投票感到非常抱歉.除了一件事之外,链接的"重复"可能真的是一个骗局:那里列出的例子告诉我为什么不使用变量变量.