我用Java编写了一个数独求解器作为家庭作业,我目前正试图找出它可以面对的问题输入以使其更好.我用David Bau的数独生成器生成了几千个数独网格,现在我正在运行我的程序来对付它们.
问题在于,虽然大多数都是在非常合理的时间内完成的,但其中一些证明是有问题的,并使我的算法搜索变得疯狂,直到我用尽堆空间.所以我认为我应该将解决工作转移到辅助线程并以超时运行它.现在,我正在使用一个线程(以一种形式ExecutorService)的线程"池",我正在向Callable它提交.然后我尝试使用超时获取值:
Callable<Long> solveAndReturnTime = new Callable<Long>() { /* snip */ };
Future<Long> time = executor.submit(solveAndReturnTime);
try
{
long result = time.get(10, TimeUnit.SECONDS);
System.out.printf("%d millis\n", result);
}
catch (TimeoutException e)
{
System.err.println("timed out");
time.cancel(true);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,显然,人们不会简单地Future在Java中取消.Future<T>.cancel(boolean)显然不会马上打断任务.正因为如此,游戏池一直处于执行不间断任务的状态,随后的尝试会暂停,因为它们永远不会有机会运行.
向池中添加更多线程不是一种选择,因为我在有限的核心上运行,如果太多的任务顽固地运行,那么合法的线程将被不公平地放慢速度.我也不希望频繁检查任务是否从我的主算法中止.
我怎么能突然,无情地和残忍地终止任务?我愿意接受让我在主线程上恢复的任何东西.
编辑我的算法是完全顺序的,不使用全局对象,并且不包含锁.据我所知,如果任务随机取消,任何事情都不会出错; 即使它确实如此,也不是生产代码.我准备好走这条危险而危险的行走.
我正在使用二进制MIPS指令,我找到了这个有用的文档.但是,我需要澄清一下:所有分支指令都具有直接价值.这个直接值是否会延长?
大多数其他即时人员,如果不是这意味着向后跳跃基本上是不可能的,所以我非常怀疑是的.但是,我找不到另一个谈论MIPS指令的二进制格式来澄清的来源.
假设我有一个UltraGrid带有Foo和Bar列的Infragistic .是否可以过滤表格,以便只显示Foo和Bar不相等的行?
例如,如果我有这些数据:
Foo Bar
--------
0.1 0.1
0.1 0.2
0.2 0.2
Run Code Online (Sandbox Code Playgroud)
过滤器将隐藏第一行和第三行.
我正在使用UIImage转换为NSData.我希望将NsData转换为Byte Array,并在json Parser的帮助下将该Byte数组发布到服务器.
如果我将以下类型的静态字符串传递给服务器,则接受并存储.以下是示例字符串语法.我想要以下类型的字节数组将数据发布到服务器.
[255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,0,96,0,0,255,219,0,67,0,8,6,6,7,6 ,5,8,7,7,7,9,9,8,10,12,...]
对于上述结果,我将图像转换为数据如下:
UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *data = UIImagePNGRepresentation(image);
Run Code Online (Sandbox Code Playgroud)
现在我想将NSdata转换为字节数组,因为我正在使用以下代码:
NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
free(byteData)
Run Code Online (Sandbox Code Playgroud)
我也将它存储到NSdata.但不能得到结果.我也用循环键入代码,但每次它给出一个PNG作为结果.
我在上面的代码中做错了吗?
请给我一些帮助,并要求为此提供任何帮助.
提前致谢.
我已经被投入ColdFusion进行非常简单的任务.应用程序有一些逻辑来显示"帮助代码"(让我们不要进入什么是帮助代码),但是,逻辑是错误的,需要修复.给定一个两个字母的代码,一个1-4位的数字,以及另一个1-2位的数字,我需要像这样的printf调用那样显示它们:
printf("%s%04d%02d", letterCode, bigNumber, smallNumber);
Run Code Online (Sandbox Code Playgroud)
如果您不熟悉printf函数,它会接受格式字符串(第一个参数),并根据给定的格式将其他变量写入其中.%s意思是"写一个字符串",%d意思是"写一个数字"; %0zd表示"写一个数字并用零填充它所以它至少是z个字符长(所以%04d意味着"写一个数字并用零填充它所以它至少长4个数字).
以下是一些示例%s%04d%02d:
"AD", 45, 12: AD004512
"GI", 5121, 1: GI512101
"FO", 1, 0: FO000100
Run Code Online (Sandbox Code Playgroud)
但是,这是我第一次使用ColdFusion,我找不到任何类似printf或sprintf格式化字符串的东西.
另一个不再在这里工作的人使用(非工作)循环,我认为使用库代码而不是实际修复循环会更好,因为无论如何我可能需要再做类似的事情.
我的ColdFusion应用程序需要创建Word 2003文档,其中包含复杂的数据(如图像)(但只有一小部分文本需要是动态的).为了实现这一点,我保存了一个Word文档,我在"单文件HTML"(读取:MHT)中用作模板,我在ColdFusion脚本中的文件中的特定点插入数据.
通过MHT文件格式拖延引用的引用可打印的聪明,它实际上工作得很好.唯一的问题是我的Word文档中需要特殊(非ASCII)字符,显然,我的应用程序和Word都使用不同的非Unicode编码.
现在我有我的模板和我的程序,我不是很热衷于改变他们各自的编码.另一个要求是用户应该能够提交新模板,因此我不能只更改模板的编码,因为较新的模板会遇到同样的问题.
我认为解决问题的最简单方法是使用像PHP这样的函数htmlentities来转换HTML实体中的每个非ASCII字符.ColdFusion有这样的功能吗?
至少使用我的编译器,创建引用意味着不会解除引用.因此,代码如下所示:
int trivialExample(char* array, int length)
{
char& ref = array[6];
if (length > 6)
{
std::cout << ref << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,给定一个char数组及其长度(并假设像数组元素这样的一些小数都被初始化并且传递的长度是正确的),它将仅在它实际存在时打印第七个字符.
这是依赖于未定义的行为吗?
在Objective-C中,至少有两种方法可以获得(或创建?因此问题)一个选择器:@selector(foo:bar:),或NSSelectorFromString(@"foo:bar:").但是选择器的生命周期是多少?
由于选择器(至少)知道它们的名称,因此它们不太可能是可以在程序周围移动的固定大小的可复制值.这意味着有人需要分配并可能解除分配它们.来自Cocoa框架的大多数对象都具有retain-release语义,这使得它们的所有权显而易见并且相对容易跟踪.但是,我认为没有明确的选择权所有权概念.
我希望使用第一种语法获得的选择器在程序的整个生命周期中都是全局的(比如文字字符串),但是另一种呢?如果我创建/获取选择器NSSelectorFromString(@"foo:bar:"),它是否也适用于我的程序的整个生命周期?
我处于读取监视点非常方便的情况。查看lldb的帮助,我可以找到该watchpoint命令,但它似乎仅支持写观察点(通常承认写观察点有用得多,但在我的情况下不会这样做)。
我知道gdb有一个rwatch设置读取观察点的命令。lldb有什么等效的吗?
我刚开始在我的 php 站点中使用nl2br。基本上,我使用它来为“生物”字段提供一个很好的布局,以防用户按 Enter。
问题是它将确切的换行标记存储<br>在我的数据库中,当我将相同的数据从我的服务器显示到文本区域时,它也会这样做。
我如何防止 textarea 显示实际<br>标签,这是我的示例代码
//grabbing the data in the text area field
$bio = nl2br(htmlentities(trim($_POST['bio'])));
//displaying the value from the database
$row = mysql_fetch_array($my_select_query);
<textarea><?php echo $row['bio']?; ></textarea>
Run Code Online (Sandbox Code Playgroud)
我在我的 textarea 中得到了一些看起来像这样的东西

我怎样才能避免这种情况?
coldfusion ×2
objective-c ×2
bytearray ×1
c# ×1
c++ ×1
coldfusion-8 ×1
concurrency ×1
format ×1
gdb ×1
html ×1
infragistics ×1
iphone ×1
java ×1
lldb ×1
mips ×1
nl2br ×1
php ×1
pointers ×1
selector ×1
ultrawingrid ×1
watchpoint ×1
winforms ×1