我认为这是多线程Java应用程序的常见场景,因此我将尝试在此处进行描述.
在我的Java App中,我有一个threadExecutor对象,它定义了一个包含5个线程的Pool.
ExecutorService threadExecutor = Executors.newFixedThreadPool(5);
Run Code Online (Sandbox Code Playgroud)
一个sendCallables方法负责作业的列表分配给执行器.
我跟踪一个带有ObjectX的List.通过这种方式,如果用户想要中断/取消线程,我可以引用Futures列表.像这样的东西:
Map<ObjectX, List<Future<String>>> map = new HashMap<ObjectX, Future<String>>();
public void sendCallables(ObjectX referenceObj, List<Callable<String>> list) {
...
List<Future<String>> futureList = new ArrayList<Future<String>>();
for(Callable<String> myCallableJob : list) {
Future<String> future = threadExecutor.submit(myCallableJob);
futureList.add(future);
}
...
map.add(referenceObj, futureList);
...
}
public void cancelFutures(ObjectX referenceObj) {
...
List<Future<String>> list = map.get(referenceObj);
for(Future<String> future : list) {
future.cancel();
}
map.remove(referenceObj);
....
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
现在有些情况下不再需要执行提交的任务了.
在这些情况下,应用程序应智能/自动地取消取消任务.
当用户会话到期时或者在执行所有作业之前特定流程(与提交的任务相关)结束时,可以在Web应用程序中找到此类情况的示例.
所以基本上我每次都需要调用cancelFutures(referenceObj),因为我的应用程序没有意义继续执行Jobs.我应该在应用程序需要调用它时识别每种情况. …
因此经过多次辩论后,我想出了我认为可能是处理应用程序/系统错误与用户错误(即验证问题,权限问题等)的有效计划.
将使用自定义错误处理程序(通过set_error_handler())处理应用程序/系统错误.根据错误的严重程度,用户可能会被重定向到一般错误页面(即致命错误),或者可能只是默默地记录错误(即E_WARNING).
这些错误很可能是由用户控制之外的问题引起的(缺少文件,错误的逻辑等).
第二组错误是用户生成的错误.这些可能不会自动触发错误但会被视为一个错误.在这些情况下,我决定使用trigger_error()函数,并且通常会抛出一个减弱或通知,这将由错误处理程序静默记录.之后,由开发人员将用户重定向到另一个页面或显示向用户提供某种更有意义的消息.
这样就可以记录任何类型的错误,但是用户错误仍然允许开发人员以自己的方式自由处理它.即将它们重新定向回形式,并将其完全重新填充,并显示出错的信息.
有没有人看到这个有什么问题,或者有更直观的方式?我的错误处理方法通常是每个人都有自己的方式,但必须有一种方法.
我有一个填充项目的在线xml文件.
在启动时我检查我的互联网连接,如果是这样,我解析xml并将项目对象与我的sqlite数据库中的项目对象进行比较.其中一个项值是'lastupdated',这是一个php生成的字符串.
如果xml项的lastupdated值与数据库中的值不同,则需要将该项更新到数据库中.
我似乎有解析错误:因为我的数据库中的lastupdated值有10个字符,而我的xml文件中的那个似乎有11 ..当我输出两个时我得到以下内容:
2010-03-26 15:15:07.771 bbc_v1 [97647:207] 1269429166 2010-03-26 15:15:07.771 bbc_v1 [97647:207] 1269429166 2010-03-26 15:15:07.771 bbc_v1 [97647:207] lenght xml项目值:11 2010-03-26 15:15:07.771 bbc_v1 [97647:207]长度db值:10
看来我正在用空白解析问题并输入/返回东西?我该如何清理xml值?
在规则系统或任何通过前向链推理规则推断事实的推理系统中,你将如何修剪"不必要的"分支?我不确定正式的术语是什么,但我只是想了解人们在推理问题时如何能够限制他们的思路,而我所见过的所有语义推理者都无法做到这一点.
例如,在约翰麦卡锡的论文"自然语言理解的例子"和"人工智能问题提出的问题"中,他描述了使计划能够智能地回答有关纽约时报新闻文章问题的潜在问题.在第4节"非单调推理的需要"中,他讨论了使用奥卡姆的Razer在推理故事时限制事实的包含.他使用的样本故事是关于劫持家具店老板的劫匪.
如果要求程序在谓词演算中形成故事的"最小完成",则可能需要包括原始故事中未直接提及的事实.但是,它还需要某种方式知道何时限制其扣除链,以便不包括不相关的细节.例如,它可能希望包括该案件所涉及的警方的确切人数,但该文章没有提及,但它不想包括每个警官都有母亲的事实.
artificial-intelligence machine-learning expert-system semantic-analysis
如何获取有关Windows操作系统类型的信息?是32位还是64位?我如何以编程方式获取此信息?
我有一个QString.我需要创建一个这个QString的副本.在Delphi中这个功能 copy
function Copy ( Source : string; StartChar, Count : Integer ) : string;
Run Code Online (Sandbox Code Playgroud)
我在Qt中需要相同的东西.
谢谢.
我正在开发一个小型的roguelike游戏,对于任何不属于地图的对象/"事物"都是基于XEntity类.有几个依赖它的类,例如XPlayer,XItem和XMonster.
我的问题是,当我知道对象在项目中时,我想将指针从XEntity转换为XItem.我用来拿取物品的示例代码就是这样,当一个不同的实体拿起它所站立的物品时.
void XEntity::PickupItem()
{
XEntity *Ent = MapList; // Start of a linked list
while(true)
{
if(Ent == NULL) { break; }
if(Ent->Flags & ENT_ITEM)
{
Ent->RemoveEntity(); // Unlink from the map's linked list
XItem *Item = Ent // Problem is here, type-safety
// Code to link into inventory is here
break;
}
Ent = Ent->MapList;
}
}
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是在XEntity中创建一个方法,它将自身作为XItem指针返回,但它创建了无法解析的循环依赖项.
我对这个很难过.任何帮助是极大的赞赏.
我有一个名为实验的分支。
git checkout master
echo 'some changes' > a.txt
# now master branch has local changes which are not committed
git checkout experiment
Run Code Online (Sandbox Code Playgroud)
有时我注意到,如果我进行了本地更改,则不允许我切换到另一个分支。有时,如果我有本地更改,我可以切换到另一个分支。
我缺少什么?
我正在努力编写一个python脚本,自动抓取包含我所有谷歌日历的zip失败并将其存储(作为备份)在我的硬盘上.
我正在使用ClientLogin获取身份验证令牌(并成功获取令牌).
很遗憾,我无法通过https://www.google.com/calendar/exporticalzip检索该文件
它总是通过将登录页面返回为html(而不是zip)来再次询问我的登录凭据.
这是关键代码:
post_data = post_data = urllib.urlencode({ 'auth': token, 'continue': zip_url})
request = urllib2.Request('https://www.google.com/calendar', post_data, header)
try:
f = urllib2.urlopen(request)
result = f.read()
except:
print "Error"
Run Code Online (Sandbox Code Playgroud)
以前任何想法或做过的人?或者另一个想法如何备份我的所有日历(自动!)
只是另一个隐藏的功能和提示和技巧WIKI.
在看到eclipse,java,spring框架的隐藏功能后,我认为我们需要有一个功能列表,IntelliJ的TIPS也是最好的,而且智能IDE可用于java.
java ×2
32bit-64bit ×1
c++ ×1
calendar ×1
class ×1
delphi ×1
delphi-2007 ×1
future ×1
git ×1
ide ×1
iphone ×1
oop ×1
php ×1
pointers ×1
python ×1
qt ×1
sqlite ×1
type-safety ×1
whitespace ×1
xml ×1